mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Updated example mod scripts
This commit is contained in:
Binary file not shown.
@@ -1,85 +1,104 @@
|
||||
procedure start;
|
||||
procedure GetBoozes;
|
||||
procedure update_shader;
|
||||
|
||||
variable perception;
|
||||
variable boozes;
|
||||
variable shader1;
|
||||
variable shader2;
|
||||
variable shader3;
|
||||
variable shader4;
|
||||
variable drunk_level;
|
||||
variable next_reduction;
|
||||
variable begin
|
||||
perception;
|
||||
boozes;
|
||||
shader1;
|
||||
shader2;
|
||||
shader3;
|
||||
shader4;
|
||||
drunk_level;
|
||||
next_reduction;
|
||||
booze_pids;
|
||||
end
|
||||
|
||||
procedure start begin
|
||||
variable new_pe;
|
||||
variable new_booze;
|
||||
variable drunk_count;
|
||||
if (metarule(22,0)) then return;
|
||||
variable new_pe, new_booze, drunk_count;
|
||||
|
||||
if (metarule(22, 0)) then return; //is_loading_game
|
||||
if (game_loaded) then begin
|
||||
if(not graphics_funcs_available) 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);
|
||||
// pid list of the items for the mod to apply the effect
|
||||
booze_pids := [/*124,*/ 125];
|
||||
|
||||
fix_array(booze_pids);
|
||||
//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;
|
||||
perception := get_pc_extra_stat(1);
|
||||
boozes := GetBoozes;
|
||||
|
||||
set_global_script_repeat(50);
|
||||
set_global_script_type(1);
|
||||
|
||||
shader1 := load_shader("booze1.fx");
|
||||
shader2 := load_shader("booze2.fx");
|
||||
shader3 := load_shader("booze3.fx");
|
||||
shader4 := load_shader("booze4.fx");
|
||||
//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
|
||||
new_pe := get_pc_extra_stat(1);
|
||||
new_booze := GetBoozes;
|
||||
if ((perception != new_pe) orElse (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;
|
||||
if ((perception > new_pe) andAlso (boozes > new_booze)) then begin
|
||||
variable pe_diff := perception - new_pe;
|
||||
variable booze_diff := boozes - new_booze;
|
||||
if (pe_diff < booze_diff) then begin
|
||||
drunk_count := pe_diff;
|
||||
end else begin
|
||||
drunk_count:=boozes - new_booze;
|
||||
drunk_count := booze_diff;
|
||||
end
|
||||
drunk_level:=drunk_level + (drunk_count*10);
|
||||
drunk_level += (drunk_count * 10);
|
||||
//display_msg("Increasing booze count: " + drunk_level);
|
||||
call update_shader;
|
||||
next_reduction:=game_time + game_ticks(6);
|
||||
next_reduction := game_time + game_ticks(6);
|
||||
end
|
||||
perception:=new_pe;
|
||||
boozes:=new_booze;
|
||||
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);
|
||||
if ((next_reduction != 0) andAlso (game_time >= next_reduction)) then begin
|
||||
drunk_level -= 1;
|
||||
if (drunk_level == 0) then
|
||||
next_reduction := 0;
|
||||
else
|
||||
next_reduction += game_ticks(6);
|
||||
call update_shader;
|
||||
//display_msg("Decreasing booze count: " + drunk_level);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
procedure GetBoozes begin
|
||||
variable pid, count_booze := 0;
|
||||
foreach (pid in booze_pids) begin
|
||||
count_booze += obj_is_carrying_obj_pid(dude_obj, pid);
|
||||
end
|
||||
return count_booze;
|
||||
end
|
||||
|
||||
procedure update_shader begin
|
||||
if(drunk_level >= 100) then 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
|
||||
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
|
||||
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
|
||||
end else if (drunk_level > 0) then begin
|
||||
activate_shader(shader1);
|
||||
deactivate_shader(shader2);
|
||||
deactivate_shader(shader3);
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,264 @@
|
||||
procedure start;
|
||||
|
||||
variable rainshaderdef;
|
||||
variable snowshaderdef;
|
||||
variable sandshaderdef;
|
||||
variable rainshaderesc;
|
||||
variable snowshaderesc;
|
||||
variable sandshaderesc;
|
||||
variable rainshaderinv;
|
||||
variable snowshaderinv;
|
||||
variable sandshaderinv;
|
||||
variable rainshadermap;
|
||||
variable snowshadermap;
|
||||
variable sandshadermap;
|
||||
variable rainshaderskd;
|
||||
variable snowshaderskd;
|
||||
variable sandshaderskd;
|
||||
|
||||
variable cshader;
|
||||
variable active;
|
||||
|
||||
procedure update_shader(variable shader) begin
|
||||
if (shader == cshader) then begin
|
||||
return;
|
||||
end
|
||||
if (cshader == 1) then begin
|
||||
deactivate_shader(rainshaderdef);
|
||||
deactivate_shader(rainshaderesc);
|
||||
deactivate_shader(rainshaderinv);
|
||||
deactivate_shader(rainshadermap);
|
||||
deactivate_shader(rainshaderskd);
|
||||
end else if (cshader == 2) then begin
|
||||
deactivate_shader(snowshaderdef);
|
||||
deactivate_shader(snowshaderesc);
|
||||
deactivate_shader(snowshaderinv);
|
||||
deactivate_shader(snowshadermap);
|
||||
deactivate_shader(snowshaderskd);
|
||||
end else if (cshader == 3) then begin
|
||||
deactivate_shader(sandshaderdef);
|
||||
deactivate_shader(sandshaderesc);
|
||||
deactivate_shader(sandshaderinv);
|
||||
deactivate_shader(sandshadermap);
|
||||
deactivate_shader(sandshaderskd);
|
||||
end
|
||||
if (shader == 1) then begin
|
||||
activate_shader(rainshaderdef);
|
||||
activate_shader(rainshaderesc);
|
||||
activate_shader(rainshaderinv);
|
||||
activate_shader(rainshadermap);
|
||||
activate_shader(rainshaderskd);
|
||||
end else if (shader == 2) then begin
|
||||
activate_shader(snowshaderdef);
|
||||
activate_shader(snowshaderesc);
|
||||
activate_shader(snowshaderinv);
|
||||
activate_shader(snowshadermap);
|
||||
activate_shader(snowshaderskd);
|
||||
end else if (shader == 3) then begin
|
||||
activate_shader(sandshaderdef);
|
||||
activate_shader(sandshaderesc);
|
||||
activate_shader(sandshaderinv);
|
||||
activate_shader(sandshadermap);
|
||||
activate_shader(sandshaderskd);
|
||||
end
|
||||
|
||||
cshader := shader;
|
||||
|
||||
if (shader == 0) then begin
|
||||
force_graphics_refresh(0);
|
||||
end else begin
|
||||
force_graphics_refresh(1);
|
||||
end
|
||||
end
|
||||
|
||||
procedure on_game_load begin
|
||||
variable tmp;
|
||||
if (graphics_funcs_available) then begin
|
||||
display_msg("Weather mod: Shader functions available");
|
||||
end else return;
|
||||
|
||||
rainshaderdef := load_shader("weather\\rain-def.fx");
|
||||
snowshaderdef := load_shader("weather\\snow-def.fx");
|
||||
sandshaderdef := load_shader("weather\\sand-def.fx");
|
||||
rainshaderesc := load_shader("weather\\rain-esc.fx");
|
||||
snowshaderesc := load_shader("weather\\snow-esc.fx");
|
||||
sandshaderesc := load_shader("weather\\sand-esc.fx");
|
||||
rainshaderinv := load_shader("weather\\rain-inv.fx");
|
||||
snowshaderinv := load_shader("weather\\snow-inv.fx");
|
||||
sandshaderinv := load_shader("weather\\sand-inv.fx");
|
||||
rainshadermap := load_shader("weather\\rain-map.fx");
|
||||
snowshadermap := load_shader("weather\\snow-map.fx");
|
||||
sandshadermap := load_shader("weather\\sand-map.fx");
|
||||
rainshaderskd := load_shader("weather\\rain-skd.fx");
|
||||
snowshaderskd := load_shader("weather\\snow-skd.fx");
|
||||
sandshaderskd := load_shader("weather\\sand-skd.fx");
|
||||
|
||||
if (rainshaderdef == -1 or snowshaderdef == -1 or sandshaderdef == -1) then begin
|
||||
display_msg("Weather mod error: Could not load default shaders");
|
||||
return;
|
||||
end
|
||||
if (rainshaderesc == -1 or snowshaderesc == -1 or sandshaderesc == -1) then begin
|
||||
display_msg("Weather mod error: Could not load escape shaders");
|
||||
return;
|
||||
end
|
||||
if (rainshaderinv == -1 or snowshaderinv == -1 or sandshaderinv == -1) then begin
|
||||
display_msg("Weather mod error: Could not load inventory shaders");
|
||||
return;
|
||||
end
|
||||
if (rainshadermap == -1 or snowshadermap == -1 or sandshadermap == -1) then begin
|
||||
display_msg("Weather mod error: Could not load automap shaders");
|
||||
return;
|
||||
end
|
||||
if (rainshaderskd == -1 or snowshaderskd == -1 or sandshaderskd == -1) then begin
|
||||
display_msg("Weather mod error: Could not load skilldex shaders");
|
||||
return;
|
||||
end
|
||||
|
||||
tmp := get_shader_texture(rainshaderdef, 2);
|
||||
set_shader_texture(rainshaderesc, "tex2", tmp);
|
||||
set_shader_texture(rainshaderinv, "tex2", tmp);
|
||||
set_shader_texture(rainshadermap, "tex2", tmp);
|
||||
set_shader_texture(rainshaderskd, "tex2", tmp);
|
||||
|
||||
tmp := get_shader_texture(snowshaderdef, 2);
|
||||
set_shader_texture(snowshaderesc, "tex2", tmp);
|
||||
set_shader_texture(snowshaderinv, "tex2", tmp);
|
||||
set_shader_texture(snowshadermap, "tex2", tmp);
|
||||
set_shader_texture(snowshaderskd, "tex2", tmp);
|
||||
|
||||
tmp := get_shader_texture(sandshaderdef, 2);
|
||||
set_shader_texture(sandshaderesc, "tex2", tmp);
|
||||
set_shader_texture(sandshaderinv, "tex2", tmp);
|
||||
set_shader_texture(sandshadermap, "tex2", tmp);
|
||||
set_shader_texture(sandshaderskd, "tex2", tmp);
|
||||
|
||||
tmp := get_shader_texture(rainshaderdef, 1);
|
||||
set_shader_texture(snowshaderdef, "tex1", tmp);
|
||||
set_shader_texture(sandshaderdef, "tex1", tmp);
|
||||
|
||||
tmp := get_shader_texture(rainshaderesc, 1);
|
||||
set_shader_texture(snowshaderesc, "tex1", tmp);
|
||||
set_shader_texture(sandshaderesc, "tex1", tmp);
|
||||
|
||||
tmp := get_shader_texture(rainshaderinv, 1);
|
||||
set_shader_texture(snowshaderinv, "tex1", tmp);
|
||||
set_shader_texture(sandshaderinv, "tex1", tmp);
|
||||
|
||||
tmp := get_shader_texture(rainshadermap, 1);
|
||||
set_shader_texture(snowshadermap, "tex1", tmp);
|
||||
set_shader_texture(sandshadermap, "tex1", tmp);
|
||||
|
||||
tmp := get_shader_texture(rainshaderskd, 1);
|
||||
set_shader_texture(snowshaderskd, "tex1", tmp);
|
||||
set_shader_texture(sandshaderskd, "tex1", tmp);
|
||||
|
||||
set_shader_mode(rainshaderdef, 30653); // 0x77bd
|
||||
set_shader_mode(snowshaderdef, 30653);
|
||||
set_shader_mode(sandshaderdef, 30653);
|
||||
set_shader_mode(rainshaderesc, 30645); // 0x77b5
|
||||
set_shader_mode(snowshaderesc, 30645);
|
||||
set_shader_mode(sandshaderesc, 30645);
|
||||
set_shader_mode(rainshaderinv, 26557); // 0x67bd
|
||||
set_shader_mode(snowshaderinv, 26557);
|
||||
set_shader_mode(sandshaderinv, 26557);
|
||||
set_shader_mode(rainshadermap, 22461); // 0x57bd
|
||||
set_shader_mode(snowshadermap, 22461);
|
||||
set_shader_mode(sandshadermap, 22461);
|
||||
set_shader_mode(rainshaderskd, 14269); // 0x37bd
|
||||
set_shader_mode(snowshaderskd, 14269);
|
||||
set_shader_mode(sandshaderskd, 14269);
|
||||
|
||||
set_shader_mode(rainshaderesc, 2147483656); // 0x80000008
|
||||
set_shader_mode(snowshaderesc, 2147483656);
|
||||
set_shader_mode(sandshaderesc, 2147483656);
|
||||
set_shader_mode(rainshaderinv, 2147487744); // 0x80001000
|
||||
set_shader_mode(snowshaderinv, 2147487744);
|
||||
set_shader_mode(sandshaderinv, 2147487744);
|
||||
set_shader_mode(rainshadermap, 2147491840); // 0x80002000
|
||||
set_shader_mode(snowshadermap, 2147491840);
|
||||
set_shader_mode(sandshadermap, 2147491840);
|
||||
set_shader_mode(rainshaderskd, 2147500032); // 0x80004000
|
||||
set_shader_mode(snowshaderskd, 2147500032);
|
||||
set_shader_mode(sandshaderskd, 2147500032);
|
||||
|
||||
//set_global_script_repeat(50);
|
||||
end
|
||||
|
||||
procedure update_region begin
|
||||
variable tmp;
|
||||
variable rain := 50;
|
||||
variable snow := 25;
|
||||
variable sand := 25;
|
||||
|
||||
snow += rain;
|
||||
sand += snow;
|
||||
|
||||
tmp := random(1,100);
|
||||
if (tmp <= rain) then begin
|
||||
display_msg("It's raining");
|
||||
active := 1;
|
||||
end else if (tmp <= snow) then begin
|
||||
display_msg("It's snowing");
|
||||
active := 2;
|
||||
end else if (tmp <= sand) then begin
|
||||
display_msg("It's sandstorming");
|
||||
active := 3;
|
||||
end else begin
|
||||
display_msg("No weather");
|
||||
active := 0;
|
||||
end
|
||||
|
||||
//call update_shader(active);
|
||||
end
|
||||
|
||||
procedure update_weather begin
|
||||
variable tmp = random(10, 90) / 100.0;
|
||||
|
||||
call update_shader(active);
|
||||
|
||||
if (active == 1) then begin
|
||||
set_shader_float(rainshaderdef, "speed", 500 - (tmp * 300));
|
||||
set_shader_float(rainshaderdef, "multi", 1.5 + tmp * 6.5);
|
||||
set_shader_float(rainshaderesc, "speed", 500 - (tmp * 300));
|
||||
set_shader_float(rainshaderesc, "multi", 1.5 + tmp * 6.5);
|
||||
set_shader_float(rainshaderinv, "speed", 500 - (tmp * 300));
|
||||
set_shader_float(rainshaderinv, "multi", 1.5 + tmp * 6.5);
|
||||
set_shader_float(rainshadermap, "speed", 500 - (tmp * 300));
|
||||
set_shader_float(rainshadermap, "multi", 1.5 + tmp * 6.5);
|
||||
set_shader_float(rainshaderskd, "speed", 500 - (tmp * 300));
|
||||
set_shader_float(rainshaderskd, "multi", 1.5 + tmp * 6.5);
|
||||
end else if (active == 2) then begin
|
||||
set_shader_float(snowshaderdef, "speed", 800 - (tmp * 200));
|
||||
set_shader_float(snowshaderdef, "multi", 0.5 + tmp * 0.5);
|
||||
set_shader_float(snowshaderesc, "speed", 800 - (tmp * 200));
|
||||
set_shader_float(snowshaderesc, "multi", 0.5 + tmp * 0.5);
|
||||
set_shader_float(snowshaderinv, "speed", 800 - (tmp * 200));
|
||||
set_shader_float(snowshaderinv, "multi", 0.5 + tmp * 0.5);
|
||||
set_shader_float(snowshadermap, "speed", 800 - (tmp * 200));
|
||||
set_shader_float(snowshadermap, "multi", 0.5 + tmp * 0.5);
|
||||
set_shader_float(snowshaderskd, "speed", 800 - (tmp * 200));
|
||||
set_shader_float(snowshaderskd, "multi", 0.5 + tmp * 0.5);
|
||||
end else begin
|
||||
set_shader_float(sandshaderdef, "speed", 400 - (tmp * 200));
|
||||
set_shader_float(sandshaderdef, "multi", tmp);
|
||||
set_shader_float(sandshaderesc, "speed", 400 - (tmp * 200));
|
||||
set_shader_float(sandshaderesc, "multi", tmp);
|
||||
set_shader_float(sandshaderinv, "speed", 400 - (tmp * 200));
|
||||
set_shader_float(sandshaderinv, "multi", tmp);
|
||||
set_shader_float(sandshadermap, "speed", 400 - (tmp * 200));
|
||||
set_shader_float(sandshadermap, "multi", tmp);
|
||||
set_shader_float(sandshaderskd, "speed", 400 - (tmp * 200));
|
||||
set_shader_float(sandshaderskd, "multi", tmp);
|
||||
end
|
||||
|
||||
//display_msg("Shader active: "+tmp);
|
||||
end
|
||||
|
||||
procedure start begin
|
||||
variable tmp;
|
||||
if (game_loaded) then begin
|
||||
call on_game_load;
|
||||
call update_region;
|
||||
call update_weather;
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user