procedure start; procedure update_shader; variable perception; variable boozes; variable shader1; variable shader2; variable shader3; variable shader4; variable drunk_level; variable next_reduction; procedure start begin variable new_pe; variable new_booze; variable drunk_count; if (metarule(22,0)) then return; if (game_loaded) then begin if(not graphics_funcs_available) then begin display_msg("ERROR: You must set sfall to use graphics mode 4 or 5 to use this mod"); return; end else begin //new_pe:=create_object_sid(125, 0, 0, -1); //add_mult_objs_to_inven(dude_obj, new_pe, 10); perception:=get_pc_extra_stat(1); boozes:=obj_is_carrying_obj_pid(dude_obj, 125); set_global_script_repeat(25); set_global_script_repeat(-1); shader1:=load_shader("booze1.fx"); shader2:=load_shader("booze2.fx"); shader3:=load_shader("booze3.fx"); shader4:=load_shader("booze4.fx"); drunk_level:=0; next_reduction:=0; //display_msg("Init: " + perception + ", " + boozes); end end else begin new_pe:=get_pc_extra_stat(1); new_booze:=obj_is_carrying_obj_pid(dude_obj, 125); if( (perception != new_pe) or (boozes != new_booze) ) then begin //display_msg("var change: " + perception + ", " + boozes + " -> " + new_pe + ", " + new_booze); if ( (perception > new_pe) and (boozes > new_booze) ) then begin if ( (perception - new_pe) < (boozes - new_booze) ) then begin drunk_count:=perception - new_pe; end else begin drunk_count:=boozes - new_booze; end drunk_level:=drunk_level + (drunk_count*10); //display_msg("Increasing booze count: " + drunk_level); call update_shader; next_reduction:=game_time + game_ticks(6); end perception:=new_pe; boozes:=new_booze; end if( (next_reduction != 0 ) and (game_time >= next_reduction) ) then begin drunk_level:=drunk_level - 1; if(drunk_level == 0) then next_reduction:=0; else next_reduction:=next_reduction + game_ticks(6); call update_shader; //display_msg("Decreasing booze count: " + drunk_level); end end end procedure update_shader begin if(drunk_level >= 100) then begin deactivate_shader(shader1); deactivate_shader(shader2); deactivate_shader(shader3); activate_shader(shader4); end else if(drunk_level >= 50) then begin deactivate_shader(shader1); deactivate_shader(shader2); activate_shader(shader3); deactivate_shader(shader4); end else if(drunk_level >= 25) then begin deactivate_shader(shader1); activate_shader(shader2); deactivate_shader(shader3); deactivate_shader(shader4); end else if(drunk_level > 0) then begin activate_shader(shader1); deactivate_shader(shader2); deactivate_shader(shader3); deactivate_shader(shader4); end else begin deactivate_shader(shader1); deactivate_shader(shader2); deactivate_shader(shader3); deactivate_shader(shader4); end end