Added MW3 Scripts

This commit is contained in:
InfinityLoader
2023-10-27 03:47:01 -04:00
commit d559c1d414
981 changed files with 539970 additions and 0 deletions

View File

@ -0,0 +1,128 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: common_scripts\_artcommon.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 10
* Decompile Time: 147 ms
* Timestamp: 10/27/2023 2:15:29 AM
*******************************************************************/
//Function Number: 1
artstartvisionfileexport()
{
common_scripts\utility::fileprint_launcher_start_file();
}
//Function Number: 2
artendvisionfileexport()
{
return common_scripts\utility::fileprint_launcher_end_file("\\share\\raw\\vision\\" + level.script + ".vision",1);
}
//Function Number: 3
artstartfogfileexport()
{
common_scripts\utility::fileprint_launcher_start_file();
}
//Function Number: 4
artendfogfileexport()
{
return common_scripts\utility::fileprint_launcher_end_file("\\share\\raw\\maps\\createart\\" + level.script + "_art.gsc",1);
}
//Function Number: 5
artcommonfxprintln(param_00)
{
common_scripts\utility::fileprint_launcher(param_00);
}
//Function Number: 6
setfogsliders()
{
}
//Function Number: 7
translatefogsliderstoscript()
{
level.fogexphalfplane = getdvarfloat("scr_fog_exp_halfplane");
level.fognearplane = getdvarfloat("scr_fog_nearplane");
level.fogcolor = getdvarvector("scr_fog_color");
level.fogmaxopacity = getdvarfloat("scr_fog_max_opacity");
level.sunfogenabled = getdvarint("scr_sunFogEnabled");
level.sunfogcolor = getdvarvector("scr_sunFogColor");
level.sunfogdir = getdvarvector("scr_sunFogDir");
level.sunfogbeginfadeangle = getdvarfloat("scr_sunFogBeginFadeAngle");
level.sunfogendfadeangle = getdvarfloat("scr_sunFogEndFadeAngle");
level.sunfogscale = getdvarfloat("scr_sunFogScale");
level.fogexphalfplane = limit(level.fogexphalfplane);
level.fognearplane = limit(level.fognearplane);
var_00 = limit(level.fogcolor[0]);
var_01 = limit(level.fogcolor[1]);
var_02 = limit(level.fogcolor[2]);
level.fogcolor = (var_00,var_01,var_02);
level.fogmaxopacity = limit(level.fogmaxopacity);
level.sunfogenabled = limit(level.sunfogenabled);
var_00 = limit(level.sunfogcolor[0]);
var_01 = limit(level.sunfogcolor[1]);
var_02 = limit(level.sunfogcolor[2]);
level.sunfogcolor = (var_00,var_01,var_02);
var_03 = limit(level.sunfogdir[0]);
var_04 = limit(level.sunfogdir[1]);
var_05 = limit(level.sunfogdir[2]);
level.sunfogdir = (var_03,var_04,var_05);
level.sunfogbeginfadeangle = limit(level.sunfogbeginfadeangle);
level.sunfogendfadeangle = limit(level.sunfogendfadeangle);
level.sunfogscale = limit(level.sunfogscale);
}
//Function Number: 8
limit(param_00)
{
var_01 = 0.001;
if(param_00 < var_01 && param_00 > var_01 * -1)
{
param_00 = 0;
}
return param_00;
}
//Function Number: 9
updatefogfromscript()
{
if(!getdvarint("scr_fog_disable"))
{
if(level.sunfogenabled)
{
setexpfog(level.fognearplane,level.fogexphalfplane,level.fogcolor[0],level.fogcolor[1],level.fogcolor[2],level.fogmaxopacity,0,level.sunfogcolor[0],level.sunfogcolor[1],level.sunfogcolor[2],level.sunfogdir,level.sunfogbeginfadeangle,level.sunfogendfadeangle,level.sunfogscale);
return;
}
setexpfog(level.fognearplane,level.fogexphalfplane,level.fogcolor[0],level.fogcolor[1],level.fogcolor[2],level.fogmaxopacity,0);
return;
}
setexpfog(1215752192,1215752193,0,0,0,0,0);
}
//Function Number: 10
artfxprintlnfog()
{
common_scripts\utility::fileprint_launcher("");
common_scripts\utility::fileprint_launcher("\t//* Fog section * ");
common_scripts\utility::fileprint_launcher("");
common_scripts\utility::fileprint_launcher("\tsetDevDvar( \"scr_fog_disable\", \" + getdvarint("scr_fog_disable") + "\" + " );");
common_scripts\utility::fileprint_launcher("");
if(!getdvarint("scr_fog_disable"))
{
if(level.sunfogenabled)
{
common_scripts\utility::fileprint_launcher("\tsetExpFog( " + level.fognearplane + ", " + level.fogexphalfplane + ", " + level.fogcolor[0] + ", " + level.fogcolor[1] + ", " + level.fogcolor[2] + ", " + level.fogmaxopacity + ", 0, " + level.sunfogcolor[0] + ", " + level.sunfogcolor[1] + ", " + level.sunfogcolor[2] + ", (" + level.sunfogdir[0] + ", " + level.sunfogdir[1] + ", " + level.sunfogdir[2] + "), " + level.sunfogbeginfadeangle + ", " + level.sunfogendfadeangle + ", " + level.sunfogscale + " );");
return;
}
common_scripts\utility::fileprint_launcher("\tsetExpFog( " + level.fognearplane + ", " + level.fogexphalfplane + ", " + level.fogcolor[0] + ", " + level.fogcolor[1] + ", " + level.fogcolor[2] + ", " + level.fogmaxopacity + ", 0 );");
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,634 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: common_scripts\_createfxmenu.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 25
* Decompile Time: 423 ms
* Timestamp: 10/27/2023 2:15:42 AM
*******************************************************************/
//Function Number: 1
menu(param_00)
{
return level.create_fx_menu == param_00;
}
//Function Number: 2
setmenu(param_00)
{
level.create_fx_menu = param_00;
}
//Function Number: 3
create_fx_menu()
{
if(common_scripts\_createfx::button_is_clicked("escape","x"))
{
_exit_menu();
return;
}
if(menu("creation"))
{
if(common_scripts\_createfx::button_is_clicked("1"))
{
setmenu("create_oneshot");
draw_effects_list();
return;
}
if(common_scripts\_createfx::button_is_clicked("2"))
{
setmenu("create_loopfx");
draw_effects_list();
return;
}
if(common_scripts\_createfx::button_is_clicked("3"))
{
setmenu("create_loopsound");
var_00 = common_scripts\_createfx::createloopsound();
finish_creating_entity(var_00);
return;
}
if(common_scripts\_createfx::button_is_clicked("4"))
{
setmenu("create_exploder");
var_00 = common_scripts\_createfx::createnewexploder();
finish_creating_entity(var_00);
return;
}
if(common_scripts\_createfx::button_is_clicked("5"))
{
setmenu("create_interval_sound");
var_00 = common_scripts\_createfx::createintervalsound();
finish_creating_entity(var_00);
return;
}
return;
}
if(menu("create_oneshot") || menu("create_loopfx") || menu("change_fxid"))
{
if(common_scripts\_createfx::button_is_clicked("m"))
{
increment_list_offset();
draw_effects_list();
}
menu_fx_creation();
return;
}
if(menu("none"))
{
if(common_scripts\_createfx::button_is_clicked("m"))
{
increment_list_offset();
}
menu_change_selected_fx();
if(entities_are_selected())
{
var_01 = get_last_selected_entity();
if(!isdefined(level.var_818) || var_01 != level.var_818)
{
display_fx_info(var_01);
level.var_818 = var_01;
}
if(common_scripts\_createfx::button_is_clicked("a"))
{
common_scripts\_createfx::reset_fx_hud_colors();
setmenu("add_options");
return;
}
return;
}
return;
}
if(menu("add_options"))
{
if(!entities_are_selected())
{
common_scripts\_createfx::clear_fx_hudelements();
setmenu("none");
return;
}
display_fx_add_options(get_last_selected_entity());
if(common_scripts\_createfx::button_is_clicked("m"))
{
increment_list_offset();
return;
}
return;
}
}
//Function Number: 4
_exit_menu()
{
common_scripts\_createfx::clear_fx_hudelements();
common_scripts\_createfx::clear_entity_selection();
common_scripts\_createfx::update_selected_entities();
setmenu("none");
}
//Function Number: 5
get_last_selected_entity()
{
return level.var_81F[level.var_81F.size - 1];
}
//Function Number: 6
menu_fx_creation()
{
var_00 = 0;
var_01 = undefined;
var_02 = common_scripts\_createfx::func_get_level_fx();
for(var_03 = level.var_822;var_03 < var_02.size;var_03++)
{
var_00 = var_00 + 1;
var_04 = var_00;
if(var_04 == 10)
{
var_04 = 0;
}
if(common_scripts\_createfx::button_is_clicked(var_04 + ""))
{
var_01 = var_02[var_03];
break;
}
if(var_00 > level.var_823)
{
break;
}
}
if(!isdefined(var_01))
{
return;
}
if(menu("change_fxid"))
{
apply_option_to_selected_fx(get_option("fxid"),var_01);
level.var_822 = 0;
common_scripts\_createfx::clear_fx_hudelements();
setmenu("none");
return;
}
var_05 = undefined;
if(menu("create_loopfx"))
{
var_05 = common_scripts\utility::createloopeffect(var_01);
}
if(menu("create_oneshot"))
{
var_05 = common_scripts\utility::createoneshoteffect(var_01);
}
finish_creating_entity(var_05);
}
//Function Number: 7
finish_creating_entity(param_00)
{
param_00.v["angles"] = vectortoangles(param_00.v["origin"] + (0,0,100) - param_00.v["origin"]);
param_00 common_scripts\_createfx::post_entity_creation_function();
common_scripts\_createfx::clear_entity_selection();
common_scripts\_createfx::select_last_entity();
common_scripts\_createfx::move_selection_to_cursor();
common_scripts\_createfx::update_selected_entities();
setmenu("none");
}
//Function Number: 8
menu_init()
{
level.var_82A = [];
addoption("string","fxid","The FX","nil","fx");
addoption("float","delay","Repeat rate/start delay",0.5,"fx");
addoption("float","fire_range","Fire damage range",0,"fx");
addoption("string","flag","Flag","nil","exploder");
addoption("string","firefx","2nd FX id","nil","exploder");
addoption("float","firefxdelay","2nd FX id repeat rate",0.5,"exploder");
addoption("float","firefxtimeout","2nd FX timeout",5,"exploder");
addoption("string","firefxsound","2nd FX soundalias","nil","exploder");
addoption("float","damage","Radius damage",150,"exploder");
addoption("float","damage_radius","Radius of radius damage",250,"exploder");
addoption("float","delay_min","Minimimum time between repeats",1,"soundfx_interval");
addoption("float","delay_max","Maximum time between repeats",2,"soundfx_interval");
addoption("int","repeat","Number of times to repeat",5,"exploder");
addoption("string","exploder","Exploder","1","exploder");
addoption("string","earthquake","Earthquake","nil","exploder");
if(!level.mp_createfx)
{
addoption("string","rumble","Rumble","nil","exploder");
}
addoption("string","ender","Level notify for ending 2nd FX","nil","exploder");
addoption("string","soundalias","Soundalias","nil","all");
addoption("string","loopsound","Loopsound","nil","exploder");
if(!level.mp_createfx)
{
addoption("int","stoppable","Can be stopped from script","1","all");
}
level.var_822 = 0;
level.var_823 = 10;
level.var_82C = [];
level.var_82C["all"] = [];
level.var_82C["all"]["exploder"] = 1;
level.var_82C["all"]["oneshotfx"] = 1;
level.var_82C["all"]["loopfx"] = 1;
level.var_82C["all"]["soundfx"] = 1;
level.var_82C["all"]["soundfx_interval"] = 1;
level.var_82C["fx"] = [];
level.var_82C["fx"]["exploder"] = 1;
level.var_82C["fx"]["oneshotfx"] = 1;
level.var_82C["fx"]["loopfx"] = 1;
level.var_82C["exploder"] = [];
level.var_82C["exploder"]["exploder"] = 1;
level.var_82C["loopfx"] = [];
level.var_82C["loopfx"]["loopfx"] = 1;
level.var_82C["oneshotfx"] = [];
level.var_82C["oneshotfx"]["oneshotfx"] = 1;
level.var_82C["soundfx"] = [];
level.var_82C["soundfx"]["soundalias"] = 1;
level.var_82C["soundfx_interval"] = [];
level.var_82C["soundfx_interval"]["soundfx_interval"] = 1;
}
//Function Number: 9
get_last_selected_ent()
{
return level.var_81F[level.var_81F.size - 1];
}
//Function Number: 10
entities_are_selected()
{
return level.var_81F.size > 0;
}
//Function Number: 11
menu_change_selected_fx()
{
if(!level.var_81F.size)
{
return;
}
var_00 = 0;
var_01 = 0;
var_02 = get_last_selected_ent();
for(var_03 = 0;var_03 < level.var_82A.size;var_03++)
{
var_04 = level.var_82A[var_03];
if(!isdefined(var_02.v[var_04["name"]]))
{
continue;
}
var_00++;
if(var_00 < level.var_822)
{
continue;
}
var_01++;
var_05 = var_01;
if(var_05 == 10)
{
var_05 = 0;
}
if(common_scripts\_createfx::button_is_clicked(var_05 + ""))
{
prepare_option_for_change(var_04,var_01);
break;
}
if(var_01 > level.var_823)
{
var_06 = 1;
break;
}
}
}
//Function Number: 12
prepare_option_for_change(param_00,param_01)
{
if(param_00["name"] == "fxid")
{
setmenu("change_fxid");
draw_effects_list();
return;
}
common_scripts\_createfx::createfx_centerprint("To change " + param_00["description"] + " on selected entities, type /fx newvalue");
level.var_832 = 1;
set_option_index(param_00["name"]);
setdvar("fx","nil");
level.var_833[param_01 + 3][0].color = (1,1,0);
}
//Function Number: 13
menu_fx_option_set()
{
if(getdvar("fx") == "nil")
{
return;
}
var_00 = get_selected_option();
var_01 = undefined;
if(var_00["type"] == "string")
{
var_01 = getdvar("fx");
}
if(var_00["type"] == "int")
{
var_01 = getdvarint("fx");
}
if(var_00["type"] == "float")
{
var_01 = getdvarfloat("fx");
}
apply_option_to_selected_fx(var_00,var_01);
}
//Function Number: 14
apply_option_to_selected_fx(param_00,param_01)
{
for(var_02 = 0;var_02 < level.var_81F.size;var_02++)
{
var_03 = level.var_81F[var_02];
if(mask(param_00["mask"],var_03.v["type"]))
{
var_03.v[param_00["name"]] = param_01;
}
}
level.var_818 = undefined;
common_scripts\_createfx::update_selected_entities();
common_scripts\_createfx::reset_fx_hud_colors();
}
//Function Number: 15
set_option_index(param_00)
{
for(var_01 = 0;var_01 < level.var_82A.size;var_01++)
{
if(level.var_82A[var_01]["name"] != param_00)
{
continue;
}
level.var_837 = var_01;
return;
}
}
//Function Number: 16
get_selected_option()
{
return level.var_82A[level.var_837];
}
//Function Number: 17
mask(param_00,param_01)
{
return isdefined(level.var_82C[param_00][param_01]);
}
//Function Number: 18
addoption(param_00,param_01,param_02,param_03,param_04)
{
var_05 = [];
level.var_82A[level.var_82A.size] = var_7B;
}
//Function Number: 19
get_option(param_00)
{
for(var_01 = 0;var_01 < level.var_82A.size;var_01++)
{
if(level.var_82A[var_01]["name"] == param_00)
{
return level.var_82A[var_01];
}
}
}
//Function Number: 20
display_fx_info(param_00)
{
if(!menu("none"))
{
return;
}
common_scripts\_createfx::clear_fx_hudelements();
common_scripts\_createfx::set_fx_hudelement("Name: " + param_00.v["fxid"]);
common_scripts\_createfx::set_fx_hudelement("Type: " + param_00.v["type"]);
common_scripts\_createfx::set_fx_hudelement("Origin: " + param_00.v["origin"]);
common_scripts\_createfx::set_fx_hudelement("Angles: " + param_00.v["angles"]);
if(entities_are_selected())
{
var_01 = 0;
var_02 = 0;
var_03 = 0;
for(var_04 = 0;var_04 < level.var_82A.size;var_04++)
{
var_05 = level.var_82A[var_04];
if(!isdefined(param_00.v[var_05["name"]]))
{
continue;
}
var_01++;
if(var_01 < level.var_822)
{
continue;
}
var_02++;
common_scripts\_createfx::set_fx_hudelement(var_02 + ". " + var_05["description"] + ": " + param_00.v[var_05["name"]]);
if(var_02 > level.var_823)
{
var_03 = 1;
break;
}
}
if(var_01 > level.var_823)
{
common_scripts\_createfx::set_fx_hudelement("(m) More >");
}
common_scripts\_createfx::set_fx_hudelement("(a) Add >");
common_scripts\_createfx::set_fx_hudelement("(x) Exit >");
return;
}
var_01 = 0;
var_03 = 0;
for(var_04 = 0;var_04 < level.var_82A.size;var_04++)
{
var_05 = level.var_82A[var_04];
if(!isdefined(param_00.v[var_05["name"]]))
{
continue;
}
var_01++;
common_scripts\_createfx::set_fx_hudelement(var_05["description"] + ": " + param_00.v[var_05["name"]]);
if(var_01 > level.var_83E)
{
break;
}
}
}
//Function Number: 21
display_fx_add_options(param_00)
{
common_scripts\_createfx::clear_fx_hudelements();
common_scripts\_createfx::set_fx_hudelement("Name: " + param_00.v["fxid"]);
common_scripts\_createfx::set_fx_hudelement("Type: " + param_00.v["type"]);
common_scripts\_createfx::set_fx_hudelement("Origin: " + param_00.v["origin"]);
common_scripts\_createfx::set_fx_hudelement("Angles: " + param_00.v["angles"]);
var_01 = 0;
var_02 = 0;
var_03 = 0;
if(level.var_822 >= level.var_82A.size)
{
level.var_822 = 0;
}
for(var_04 = 0;var_04 < level.var_82A.size;var_04++)
{
var_05 = level.var_82A[var_04];
if(isdefined(param_00.v[var_05["name"]]))
{
continue;
}
if(!mask(var_05["mask"],param_00.v["type"]))
{
continue;
}
var_01++;
if(var_01 < level.var_822)
{
continue;
}
if(var_02 >= level.var_823)
{
continue;
}
var_02++;
var_06 = var_02;
if(var_06 == 10)
{
var_06 = 0;
}
if(common_scripts\_createfx::button_is_clicked(var_06 + ""))
{
add_option_to_selected_entities(var_05);
menunone();
level.var_818 = undefined;
return;
}
common_scripts\_createfx::set_fx_hudelement(var_06 + ". " + var_05["description"]);
}
if(var_01 > level.var_823)
{
common_scripts\_createfx::set_fx_hudelement("(m) More >");
}
common_scripts\_createfx::set_fx_hudelement("(x) Exit >");
}
//Function Number: 22
add_option_to_selected_entities(param_00)
{
var_01 = undefined;
for(var_02 = 0;var_02 < level.var_81F.size;var_02++)
{
var_03 = level.var_81F[var_02];
if(mask(param_00["mask"],var_03.v["type"]))
{
var_03.v[param_00["name"]] = param_00["default"];
}
}
}
//Function Number: 23
menunone()
{
level.var_822 = 0;
common_scripts\_createfx::clear_fx_hudelements();
setmenu("none");
}
//Function Number: 24
draw_effects_list()
{
common_scripts\_createfx::clear_fx_hudelements();
common_scripts\_createfx::set_fx_hudelement("Pick an effect:");
var_00 = 0;
var_01 = 0;
var_02 = common_scripts\_createfx::func_get_level_fx();
if(level.var_822 >= var_02.size)
{
level.var_822 = 0;
}
for(var_03 = level.var_822;var_03 < var_02.size;var_03++)
{
var_00 = var_00 + 1;
common_scripts\_createfx::set_fx_hudelement(var_00 + ". " + var_02[var_03]);
if(var_00 >= level.var_823)
{
var_01 = 1;
break;
}
}
if(var_02.size > level.var_823)
{
common_scripts\_createfx::set_fx_hudelement("(m) More >");
}
}
//Function Number: 25
increment_list_offset()
{
level.var_822 = level.var_822 + level.var_823;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,595 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: common_scripts\_fx.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 28
* Decompile Time: 449 ms
* Timestamp: 10/27/2023 2:15:48 AM
*******************************************************************/
//Function Number: 1
initfx()
{
if(!isdefined(level.func))
{
level.func = [];
}
if(!isdefined(level.func["create_triggerfx"]))
{
level.func["create_triggerfx"] = ::create_triggerfx;
}
common_scripts\utility::create_lock("createfx_looper",20);
level.var_7CD = ::common_scripts\utility::exploder_before_load;
waittillframeend;
waittillframeend;
level.var_7CD = ::common_scripts\utility::exploder_after_load;
level.var_7CF = 0;
if(getdvarint("serverCulledSounds") == 1)
{
level.var_7CF = 1;
}
if(level.createfx_enabled)
{
level.var_7CF = 0;
}
if(level.createfx_enabled)
{
level waittill("createfx_common_done");
}
if(isdefined(level.var_3FF))
{
wait level.var_3FF;
}
for(var_00 = 0;var_00 < level.createfxent.size;var_00++)
{
var_01 = level.createfxent[var_00];
var_01 common_scripts\_createfx::set_forward_and_up_vectors();
if(var_01.v["type"] == "loopfx")
{
var_01 thread loopfxthread();
}
if(var_01.v["type"] == "oneshotfx")
{
var_01 thread oneshotfxthread();
}
if(var_01.v["type"] == "soundfx")
{
var_01 thread create_loopsound();
}
if(var_01.v["type"] == "soundfx_interval")
{
var_01 thread create_interval_sound();
}
}
}
//Function Number: 2
print_org(param_00,param_01,param_02,param_03)
{
if(getdvar("debug") == "1")
{
}
}
//Function Number: 3
oneshotfx(param_00,param_01,param_02,param_03)
{
}
//Function Number: 4
exploderfx(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C,param_0D,param_0E,param_0F,param_10,param_11)
{
if(1)
{
var_12 = common_scripts\utility::createexploder(param_01);
var_12.v["origin"] = param_02;
var_12.v["angles"] = (0,0,0);
if(isdefined(param_04))
{
var_12.v["angles"] = vectortoangles(param_04 - param_02);
}
var_12.v["delay"] = param_03;
var_12.v["exploder"] = param_00;
if(isdefined(level.createfxexploders))
{
var_13 = level.createfxexploders[var_12.v["exploder"]];
if(!isdefined(var_13))
{
var_13 = [];
}
level.createfxexploders[var_13.v["exploder"]] = var_7B;
}
return;
}
var_14 = spawn("script_origin",(0,0,0));
var_14.origin = param_04;
var_14.angles = vectortoangles(param_06 - param_04);
var_14.script_exploder = param_02;
var_14.script_fxid = param_03;
var_14.script_delay = param_05;
var_14.script_firefx = param_07;
var_14.script_firefxdelay = param_08;
var_14.script_firefxsound = param_09;
var_14.script_sound = param_0A;
var_14.script_earthquake = param_0B;
var_14.script_damage = param_0C;
var_14.script_radius = param_11;
var_14.script_soundalias = param_0D;
var_14.script_firefxtimeout = var_12;
var_14.script_repeat = param_0E;
var_14.script_delay_min = param_0F;
var_14.var_7E6 = param_10;
var_14.var_7E7 = var_13;
var_15 = anglestoforward(var_14.angles);
var_15 = var_15 * 150;
var_14.targetpos = param_04 + var_15;
if(!isdefined(level.var_7E9))
{
level.var_7E9 = [];
}
level.var_7E9[level.var_7E9.size] = var_14;
common_scripts\_createfx::createfx_showorigin(param_03,param_04,param_05,param_06,"exploderfx",var_14,undefined,param_07,param_08,param_09,param_0A,param_0B,param_0C,param_0D,param_0E,param_0F,param_10,param_11,var_12);
}
//Function Number: 5
loopfx(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
var_07 = common_scripts\utility::createloopeffect(param_00);
var_07.v["origin"] = param_01;
var_07.v["angles"] = (0,0,0);
if(isdefined(param_03))
{
var_07.v["angles"] = vectortoangles(param_03 - param_01);
}
var_07.v["delay"] = param_02;
}
//Function Number: 6
create_looper()
{
self.looper = playloopedfx(level._effect[self.v["fxid"]],self.v["delay"],self.v["origin"],0,self.v["forward"],self.v["up"]);
create_loopsound();
}
//Function Number: 7
create_loopsound()
{
self notify("stop_loop");
if(isdefined(self.v["soundalias"]) && self.v["soundalias"] != "nil")
{
if(isdefined(self.v["stopable"]) && self.v["stopable"])
{
if(isdefined(self.looper))
{
self.looper thread common_scripts\utility::loop_fx_sound(self.v["soundalias"],self.v["origin"],0,"death");
return;
}
thread common_scripts\utility::loop_fx_sound(self.v["soundalias"],self.v["origin"],0,"stop_loop");
return;
}
if(isdefined(self.looper))
{
self.looper thread common_scripts\utility::loop_fx_sound(self.v["soundalias"],self.v["origin"],0);
return;
}
var_00 = 0;
if(level.var_7CF == 1 && isdefined(self.v["server_culled"]))
{
var_00 = self.v["server_culled"];
}
thread common_scripts\utility::loop_fx_sound(self.v["soundalias"],self.v["origin"],var_00);
return;
}
}
//Function Number: 8
create_interval_sound()
{
self notify("stop_loop");
if(!isdefined(self.v["soundalias"]))
{
return;
}
if(self.v["soundalias"] == "nil")
{
return;
}
var_00 = undefined;
var_01 = self;
if((isdefined(self.v["stopable"]) && self.v["stopable"]) || level.createfx_enabled)
{
if(isdefined(self.looper))
{
var_01 = self.looper;
var_00 = "death";
}
else
{
var_00 = "stop_loop";
}
}
var_01 thread common_scripts\utility::loop_fx_sound_interval(self.v["soundalias"],self.v["origin"],var_00,undefined,self.v["delay_min"],self.v["delay_max"]);
}
//Function Number: 9
loopfxthread()
{
common_scripts\utility::waitframe();
if(isdefined(self.var_7F6))
{
level waittill("start fx" + self.var_7F6);
}
for(;;)
{
create_looper();
if(isdefined(self.timeout))
{
thread loopfxstop(self.timeout);
}
if(isdefined(self.var_7F8))
{
level waittill("stop fx" + self.var_7F8);
}
else
{
return;
}
if(isdefined(self.looper))
{
self.looper delete();
}
if(isdefined(self.var_7F6))
{
level waittill("start fx" + self.var_7F6);
continue;
}
}
}
//Function Number: 10
loopfxchangeid(param_00)
{
self endon("death");
param_00 waittill("effect id changed",var_01);
}
//Function Number: 11
loopfxchangeorg(param_00)
{
self endon("death");
for(;;)
{
param_00 waittill("effect org changed",var_01);
self.origin = var_01;
}
}
//Function Number: 12
loopfxchangedelay(param_00)
{
self endon("death");
param_00 waittill("effect delay changed",var_01);
}
//Function Number: 13
loopfxdeletion(param_00)
{
self endon("death");
param_00 waittill("effect deleted");
self delete();
}
//Function Number: 14
loopfxstop(param_00)
{
self endon("death");
wait param_00;
self.looper delete();
}
//Function Number: 15
loopsound(param_00,param_01,param_02)
{
level thread loopsoundthread(param_00,param_01,param_02);
}
//Function Number: 16
loopsoundthread(param_00,param_01,param_02)
{
var_03 = spawn("script_origin",param_01);
var_03.origin = param_01;
var_03 playloopsound(param_00);
}
//Function Number: 17
gunfireloopfx(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
thread gunfireloopfxthread(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07);
}
//Function Number: 18
gunfireloopfxthread(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
level endon("stop all gunfireloopfx");
common_scripts\utility::waitframe();
if(param_07 < param_06)
{
var_08 = param_07;
param_07 = param_06;
param_06 = var_08;
}
var_09 = param_06;
var_0A = param_07 - param_06;
if(param_05 < param_04)
{
var_08 = param_05;
param_05 = param_04;
param_04 = var_08;
}
var_0B = param_04;
var_0C = param_05 - param_04;
if(param_03 < param_02)
{
var_08 = param_03;
param_03 = param_02;
param_02 = var_08;
}
var_0D = param_02;
var_0E = param_03 - param_02;
var_0F = spawnfx(level._effect[param_00],param_01);
if(!level.createfx_enabled)
{
var_0F willneverchange();
}
for(;;)
{
var_10 = var_0D + randomint(var_0E);
for(var_11 = 0;var_11 < var_10;var_11++)
{
triggerfx(var_0F);
wait var_0B + randomfloat(var_0C);
}
wait var_09 + randomfloat(var_0A);
}
}
//Function Number: 19
gunfireloopfxvec(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
thread gunfireloopfxvecthread(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 20
gunfireloopfxvecthread(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
level endon("stop all gunfireloopfx");
common_scripts\utility::waitframe();
if(param_08 < param_07)
{
var_09 = param_08;
param_08 = param_07;
param_07 = var_09;
}
var_0A = param_07;
var_0B = param_08 - param_07;
if(param_06 < param_05)
{
var_09 = param_06;
param_06 = param_05;
param_05 = var_09;
}
var_0C = param_05;
var_0D = param_06 - param_05;
if(param_04 < param_03)
{
var_09 = param_04;
param_04 = param_03;
param_03 = var_09;
}
var_0E = param_03;
var_0F = param_04 - param_03;
param_02 = vectornormalize(param_02 - param_01);
var_10 = spawnfx(level._effect[param_00],param_01,param_02);
if(!level.createfx_enabled)
{
var_10 willneverchange();
}
for(;;)
{
var_11 = var_0E + randomint(var_0F);
for(var_12 = 0;var_12 < int(var_11 / level.fxfireloopmod);var_12++)
{
triggerfx(var_10);
var_13 = var_0C + randomfloat(var_0D) * level.fxfireloopmod;
if(var_13 < 0.05)
{
var_13 = 0.05;
}
wait var_13;
}
wait var_0C + randomfloat(var_0D);
wait var_0A + randomfloat(var_0B);
}
}
//Function Number: 21
setfireloopmod(param_00)
{
level.fxfireloopmod = 1 / param_00;
}
//Function Number: 22
setup_fx()
{
if(!isdefined(self.script_fxid) || !isdefined(self.script_fxcommand) || !isdefined(self.script_delay))
{
return;
}
if(isdefined(self.model))
{
if(self.model == "toilet")
{
thread burnville_paratrooper_hack();
return;
}
}
var_00 = undefined;
if(isdefined(self.target))
{
var_01 = getent(self.target,"targetname");
if(isdefined(var_01))
{
var_00 = var_01.origin;
}
}
var_02 = undefined;
if(isdefined(self.var_808))
{
var_02 = self.var_808;
}
var_03 = undefined;
if(isdefined(self.var_809))
{
var_03 = self.var_809;
}
if(self.script_fxcommand == "OneShotfx")
{
oneshotfx(self.script_fxid,self.origin,self.script_delay,var_00);
}
if(self.script_fxcommand == "loopfx")
{
loopfx(self.script_fxid,self.origin,self.script_delay,var_00,var_02,var_03);
}
if(self.script_fxcommand == "loopsound")
{
loopsound(self.script_fxid,self.origin,self.script_delay);
}
self delete();
}
//Function Number: 23
burnville_paratrooper_hack()
{
var_00 = (0,0,self.angles[1]);
var_01 = level._effect[self.script_fxid];
var_02 = self.origin;
wait 1;
level thread burnville_paratrooper_hack_loop(var_00,var_02,var_01);
self delete();
}
//Function Number: 24
burnville_paratrooper_hack_loop(param_00,param_01,param_02)
{
for(;;)
{
playfx(param_02,param_01);
wait 30 + randomfloat(40);
}
}
//Function Number: 25
create_triggerfx()
{
if(!verify_effects_assignment(self.v["fxid"]))
{
return;
}
self.looper = spawnfx(level._effect[self.v["fxid"]],self.v["origin"],self.v["forward"],self.v["up"]);
triggerfx(self.looper,self.v["delay"]);
if(!level.createfx_enabled)
{
self.looper willneverchange();
}
create_loopsound();
}
//Function Number: 26
verify_effects_assignment(param_00)
{
if(isdefined(level._effect[param_00]))
{
return 1;
}
if(!isdefined(level.var_80E))
{
level.var_80E = [];
}
level.var_80E[self.v["fxid"]] = param_00;
verify_effects_assignment_print(param_00);
return 0;
}
//Function Number: 27
verify_effects_assignment_print(param_00)
{
level notify("verify_effects_assignment_print");
level endon("verify_effects_assignment_print");
wait 0.05;
var_01 = getarraykeys(level.var_80E);
foreach(var_03 in var_01)
{
}
}
//Function Number: 28
oneshotfxthread()
{
common_scripts\utility::waitframe();
if(self.v["delay"] > 0)
{
wait self.v["delay"];
}
[[ level.func["create_triggerfx"] ]]();
}

View File

@ -0,0 +1,290 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: common_scripts\_pipes.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 12
* Decompile Time: 198 ms
* Timestamp: 10/27/2023 2:15:43 AM
*******************************************************************/
//Function Number: 1
main()
{
level.var_1D03 = 25;
var_00 = getentarray("pipe_shootable","targetname");
if(!var_00.size)
{
return;
}
level.var_1D04 = spawnstruct();
level.var_1D04.var_1D05 = 0;
var_00 thread precachefx();
var_00 thread methodsinit();
waittillframeend;
common_scripts\utility::array_thread(var_00,::pipesetup);
}
//Function Number: 2
pipesetup()
{
self setcandamage(1);
self setcanradiusdamage(0);
self.var_1D07 = [];
var_00 = undefined;
if(isdefined(self.target))
{
var_00 = common_scripts\utility::getstruct(self.target,"targetname");
self.a = var_00.origin;
var_01 = anglestoforward(var_00.angles);
var_01 = var_01 * 128;
self.b = self.a + var_01;
}
else
{
var_01 = anglestoforward(self.angles);
var_02 = var_01 * 64;
self.a = self.origin + var_02;
var_02 = var_01 * -64;
self.b = self.origin + var_02;
}
thread pipe_wait_loop();
}
//Function Number: 3
pipe_wait_loop()
{
var_00 = (0,0,0);
var_01 = 0;
var_02 = 4;
for(;;)
{
self waittill("damage",var_03,var_04,var_05,var_00,var_06);
if(var_01)
{
if(randomint(100) <= 33)
{
continue;
}
}
var_01 = 1;
var_07 = pipe_logic(var_05,var_00,var_06,var_04);
if(var_07)
{
var_02--;
}
if(var_02 <= 0)
{
break;
}
}
self setcandamage(0);
}
//Function Number: 4
pipe_logic(param_00,param_01,param_02,param_03)
{
if(level.var_1D04.var_1D05 > 8)
{
return 0;
}
if(!isdefined(level.var_1D04.var_1D0B[param_02]))
{
param_01 = pipe_calc_nofx(param_01,param_02);
}
else
{
param_01 = self [[ level.var_1D04.var_1D0B[param_02] ]](param_01,param_02);
}
if(!isdefined(param_01))
{
return 0;
}
if(isdefined(param_03.classname) && param_03.classname == "worldspawn")
{
return 0;
}
foreach(var_05 in self.var_1D07)
{
if(distancesquared(param_01,var_05.origin) < 25)
{
return 0;
}
}
var_07 = vectorfromlinetopoint(self.a,self.b,param_01);
thread pipefx(param_01,var_07,param_03);
return 1;
}
//Function Number: 5
pipefx(param_00,param_01,param_02)
{
var_03 = level.var_1D04.var_1D0D[self.script_noteworthy];
var_04 = int(level.var_1D03 / var_03);
var_05 = level.var_1D04.var_1D0E[self.script_noteworthy + "_hit"];
var_06 = level.var_1D04.var_1D0E[self.script_noteworthy + "_loop"];
var_07 = level.var_1D04.var_1D0E[self.script_noteworthy + "_end"];
var_08 = spawn("script_origin",param_00);
var_08 hide();
var_08 playsound(var_05);
var_08 playloopsound(var_06);
self.var_1D07[self.var_1D07.size] = var_08;
level.var_1D04.var_1D05++;
if(common_scripts\utility::issp() || self.script_noteworthy != "steam")
{
thread pipe_damage(param_00,param_01,param_02,var_08);
}
playfx(level.var_1D04._effect[self.script_noteworthy],param_00,param_01);
wait var_03;
var_04--;
while(level.var_1D04.var_1D05 <= 8 && var_04 > 0)
{
playfx(level.var_1D04._effect[self.script_noteworthy],param_00,param_01);
wait var_03;
var_04--;
}
var_08 playsound(var_07);
wait 0.5;
var_08 stoploopsound(var_06);
var_08 delete();
self.var_1D07 = common_scripts\utility::array_removeundefined(self.var_1D07);
level.var_1D04.var_1D05--;
}
//Function Number: 6
pipe_damage(param_00,param_01,param_02,param_03)
{
if(!allow_pipe_damage())
{
return;
}
param_03 endon("death");
var_04 = param_03.origin + vectornormalize(param_01) * 40;
var_05 = level.var_1D04.var_1D10[self.script_noteworthy];
for(;;)
{
if(!isdefined(self.damageowner))
{
self radiusdamage(var_04,36,var_05,var_05 * 0.75,undefined,"MOD_TRIGGER_HURT");
}
else
{
self radiusdamage(var_04,36,var_05,var_05 * 0.75,param_02,"MOD_TRIGGER_HURT");
}
wait 0.4;
}
}
//Function Number: 7
allow_pipe_damage()
{
if(!common_scripts\utility::issp())
{
return 0;
}
if(!isdefined(level.var_1D12))
{
return 1;
}
return level.var_1D12;
}
//Function Number: 8
methodsinit()
{
level.var_1D04.var_1D0B = [];
level.var_1D04.var_1D0B["MOD_UNKNOWN"] = ::pipe_calc_splash;
level.var_1D04.var_1D0B["MOD_PISTOL_BULLET"] = ::pipe_calc_ballistic;
level.var_1D04.var_1D0B["MOD_RIFLE_BULLET"] = ::pipe_calc_ballistic;
level.var_1D04.var_1D0B["MOD_GRENADE"] = ::pipe_calc_splash;
level.var_1D04.var_1D0B["MOD_GRENADE_SPLASH"] = ::pipe_calc_splash;
level.var_1D04.var_1D0B["MOD_PROJECTILE"] = ::pipe_calc_splash;
level.var_1D04.var_1D0B["MOD_PROJECTILE_SPLASH"] = ::pipe_calc_splash;
level.var_1D04.var_1D0B["MOD_TRIGGER_HURT"] = ::pipe_calc_splash;
level.var_1D04.var_1D0B["MOD_EXPLOSIVE"] = ::pipe_calc_splash;
level.var_1D04.var_1D0B["MOD_EXPLOSIVE_BULLET"] = ::pipe_calc_splash;
}
//Function Number: 9
pipe_calc_ballistic(param_00,param_01)
{
return param_00;
}
//Function Number: 10
pipe_calc_splash(param_00,param_01)
{
var_02 = vectornormalize(vectorfromlinetopoint(self.a,self.b,param_00));
param_00 = pointonsegmentnearesttopoint(self.a,self.b,param_00);
return param_00 + var_02 * 4;
}
//Function Number: 11
pipe_calc_nofx(param_00,param_01)
{
return undefined;
}
//Function Number: 12
precachefx()
{
var_00 = 0;
var_01 = 0;
foreach(var_03 in self)
{
if(var_03.script_noteworthy == "water")
{
var_03.script_noteworthy = "steam";
}
if(var_03.script_noteworthy == "steam")
{
var_03 willneverchange();
var_00 = 1;
continue;
}
if(var_03.script_noteworthy == "fire")
{
var_03 willneverchange();
var_01 = 1;
continue;
}
}
if(var_00)
{
level.var_1D04._effect["steam"] = loadfx("impacts/pipe_steam");
level.var_1D04.var_1D0E["steam_hit"] = "mtl_steam_pipe_hit";
level.var_1D04.var_1D0E["steam_loop"] = "mtl_steam_pipe_hiss_loop";
level.var_1D04.var_1D0E["steam_end"] = "mtl_steam_pipe_hiss_loop_end";
level.var_1D04.var_1D0D["steam"] = 3;
level.var_1D04.var_1D10["steam"] = 5;
}
if(var_01)
{
level.var_1D04._effect["fire"] = loadfx("impacts/pipe_fire");
level.var_1D04.var_1D0E["fire_hit"] = "mtl_gas_pipe_hit";
level.var_1D04.var_1D0E["fire_loop"] = "mtl_gas_pipe_flame_loop";
level.var_1D04.var_1D0E["fire_end"] = "mtl_gas_pipe_flame_end";
level.var_1D04.var_1D0D["fire"] = 3;
level.var_1D04.var_1D10["fire"] = 5;
}
}

File diff suppressed because it is too large Load Diff