IL-GSC/IW/PC/ALL/scripts/common/exploder.gsc
2023-10-27 03:49:01 -04:00

1184 lines
21 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\common\exploder.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 32
* Decompile Time: 1623 ms
* Timestamp: 10/27/2023 12:03:23 AM
*******************************************************************/
//Function Number: 1
func_F9A6(param_00)
{
var_01 = param_00.var_ED84;
if(!isdefined(level.var_69B8[var_01]))
{
level.var_69B8[var_01] = [];
}
var_02 = param_00.var_336;
if(!isdefined(var_02))
{
var_02 = "";
}
level.var_69B8[var_01][level.var_69B8[var_01].size] = param_00;
if(func_69AD(param_00))
{
param_00 hide();
return;
}
if(func_69AC(param_00))
{
param_00 hide();
param_00 notsolid();
if(isdefined(param_00.var_2AF) && param_00.var_2AF & 1)
{
if(isdefined(param_00.var_ED5D))
{
param_00 connectpaths();
}
}
return;
}
if(func_69AB(param_00))
{
param_00 hide();
param_00 notsolid();
if(isdefined(param_00.var_2AF) && param_00.var_2AF & 1)
{
param_00 connectpaths();
}
}
}
//Function Number: 2
func_FAAA()
{
scripts\common\utility::func_F315();
level.var_69B8 = [];
var_00 = getentarray("script_brushmodel","classname");
var_01 = getentarray("script_model","classname");
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_00[var_00.size] = var_01[var_02];
}
foreach(var_04 in var_00)
{
if(isdefined(var_04.var_EE89))
{
var_04.var_ED84 = var_04.var_EE89;
}
if(isdefined(var_04.var_B3CC))
{
continue;
}
if(isdefined(var_04.var_ED84))
{
func_F9A6(var_04);
}
}
var_06 = [];
var_07 = getentarray("script_brushmodel","classname");
for(var_02 = 0;var_02 < var_07.size;var_02++)
{
if(isdefined(var_07[var_02].var_EE89))
{
var_07[var_02].var_ED84 = var_07[var_02].var_EE89;
}
if(isdefined(var_07[var_02].var_ED84))
{
var_06[var_06.size] = var_07[var_02];
}
}
var_07 = getentarray("script_model","classname");
for(var_02 = 0;var_02 < var_07.size;var_02++)
{
if(isdefined(var_07[var_02].var_EE89))
{
var_07[var_02].var_ED84 = var_07[var_02].var_EE89;
}
if(isdefined(var_07[var_02].var_ED84))
{
var_06[var_06.size] = var_07[var_02];
}
}
var_07 = getentarray("item_health","classname");
for(var_02 = 0;var_02 < var_07.size;var_02++)
{
if(isdefined(var_07[var_02].var_EE89))
{
var_07[var_02].var_ED84 = var_07[var_02].var_EE89;
}
if(isdefined(var_07[var_02].var_ED84))
{
var_06[var_06.size] = var_07[var_02];
}
}
var_07 = level.struct;
for(var_02 = 0;var_02 < var_07.size;var_02++)
{
if(!isdefined(var_07[var_02]))
{
continue;
}
if(isdefined(var_07[var_02].var_EE89))
{
var_07[var_02].var_ED84 = var_07[var_02].var_EE89;
}
if(isdefined(var_07[var_02].var_ED84))
{
if(!isdefined(var_07[var_02].angles))
{
var_07[var_02].angles = (0,0,0);
}
var_06[var_06.size] = var_07[var_02];
}
}
if(!isdefined(level.var_49C9))
{
level.var_49C9 = [];
}
var_08 = [];
var_08["exploderchunk visible"] = 1;
var_08["exploderchunk"] = 1;
var_08["exploder"] = 1;
thread func_F97F();
for(var_02 = 0;var_02 < var_06.size;var_02++)
{
var_09 = var_06[var_02];
var_04 = scripts\common\utility::func_49AE(var_09.script_fxid);
var_04.var_13125 = [];
var_04.var_13125["origin"] = var_09.origin;
var_04.var_13125["angles"] = var_09.angles;
var_04.var_13125["delay"] = var_09.script_delay;
var_04.var_13125["delay_post"] = var_09.var_ED51;
var_04.var_13125["firefx"] = var_09.var_ED93;
var_04.var_13125["firefxdelay"] = var_09.var_ED94;
var_04.var_13125["firefxsound"] = var_09.var_ED95;
var_04.var_13125["earthquake"] = var_09.var_ED76;
var_04.var_13125["rumble"] = var_09.var_EEA0;
var_04.var_13125["damage"] = var_09.var_ED41;
var_04.var_13125["damage_radius"] = var_09.var_EE8F;
var_04.var_13125["soundalias"] = var_09.var_EEB1;
var_04.var_13125["repeat"] = var_09.var_EE94;
var_04.var_13125["delay_min"] = var_09.var_ED50;
var_04.var_13125["delay_max"] = var_09.var_ED4F;
var_04.var_13125["target"] = var_09.target;
var_04.var_13125["ender"] = var_09.var_ED78;
var_04.var_13125["physics"] = var_09.var_EE82;
var_04.var_13125["type"] = "exploder";
if(!isdefined(var_09.script_fxid))
{
var_04.var_13125["fxid"] = "No FX";
}
else
{
var_04.var_13125["fxid"] = var_09.script_fxid;
}
var_04.var_13125["exploder"] = var_09.var_ED84;
if(isdefined(level.var_49CA))
{
var_0A = level.var_49CA[var_04.var_13125["exploder"]];
if(!isdefined(var_0A))
{
var_0A = [];
}
var_0A[var_0A.size] = var_04;
level.var_49CA[var_04.var_13125["exploder"]] = var_0A;
}
if(!isdefined(var_04.var_13125["delay"]))
{
var_04.var_13125["delay"] = 0;
}
if(isdefined(var_09.target))
{
var_0B = getentarray(var_04.var_13125["target"],"targetname")[0];
if(isdefined(var_0B))
{
var_0C = var_0B.origin;
var_04.var_13125["angles"] = vectortoangles(var_0C - var_04.var_13125["origin"]);
}
else
{
var_0B = scripts\common\utility::get_target_ent(var_04.var_13125["target"]);
if(isdefined(var_0B))
{
var_0C = var_0B.origin;
var_04.var_13125["angles"] = vectortoangles(var_0C - var_04.var_13125["origin"]);
}
}
}
if(!isdefined(var_09.var_9F))
{
var_04.model = var_09;
if(isdefined(var_04.model.var_EE24))
{
precachemodel(var_04.model.var_EE24);
}
}
else if(var_09.var_9F == "script_brushmodel" || isdefined(var_09.model))
{
var_04.model = var_09;
var_04.model.var_5635 = var_09.var_ED5D;
}
if(isdefined(var_09.var_336) && isdefined(var_08[var_09.var_336]))
{
var_04.var_13125["exploder_type"] = var_09.var_336;
}
else
{
var_04.var_13125["exploder_type"] = "normal";
}
if(isdefined(var_09.var_B3CC))
{
var_04.var_13125["masked_exploder"] = var_09.model;
var_04.var_13125["masked_exploder_spawnflags"] = var_09.var_2AF;
var_04.var_13125["masked_exploder_script_disconnectpaths"] = var_09.var_ED5D;
var_09 delete();
}
var_04 scripts\common\createfx::func_D6CF();
}
}
//Function Number: 3
func_F97F()
{
waittillframeend;
waittillframeend;
waittillframeend;
var_00 = [];
foreach(var_02 in level.var_49C9)
{
if(var_02.var_13125["type"] != "exploder")
{
continue;
}
var_03 = var_02.var_13125["flag"];
if(!isdefined(var_03))
{
continue;
}
if(var_03 == "nil")
{
var_02.var_13125["flag"] = undefined;
}
var_00[var_03] = 1;
}
foreach(var_07, var_06 in var_00)
{
thread func_69A9(var_07);
}
}
//Function Number: 4
func_69A9(param_00)
{
if(!scripts\common\utility::func_6E34(param_00))
{
scripts\common\utility::flag_init(param_00);
}
scripts\common\utility::flag_wait(param_00);
foreach(var_02 in level.var_49C9)
{
if(var_02.var_13125["type"] != "exploder")
{
continue;
}
var_03 = var_02.var_13125["flag"];
if(!isdefined(var_03))
{
continue;
}
if(var_03 != param_00)
{
continue;
}
var_02 scripts\common\utility::func_15B8();
}
}
//Function Number: 5
func_69AC(param_00)
{
return isdefined(param_00.var_336) && param_00.var_336 == "exploder";
}
//Function Number: 6
func_69AD(param_00)
{
return param_00.model == "fx" && !isdefined(param_00.var_336) || param_00.var_336 != "exploderchunk";
}
//Function Number: 7
func_69AB(param_00)
{
return isdefined(param_00.var_336) && param_00.var_336 == "exploderchunk";
}
//Function Number: 8
func_100DB(param_00)
{
param_00 = param_00 + "";
if(isdefined(level.var_49CA))
{
var_01 = level.var_49CA[param_00];
if(isdefined(var_01))
{
foreach(var_03 in var_01)
{
if(!func_69AD(var_03.model) && !func_69AC(var_03.model) && !func_69AB(var_03.model))
{
var_03.model show();
}
if(isdefined(var_03.var_3103))
{
var_03.model show();
}
}
return;
}
return;
}
var_05 = 0;
while(var_03 < level.var_49C9.size)
{
var_05 = level.var_49C9[var_03];
if(!isdefined(var_05))
{
continue;
}
if(var_05.var_13125["type"] != "exploder")
{
continue;
}
if(!isdefined(var_05.var_13125["exploder"]))
{
continue;
}
if(var_05.var_13125["exploder"] + "" != var_02)
{
continue;
}
if(isdefined(var_05.model))
{
if(!func_69AD(var_05.model) && !func_69AC(var_05.model) && !func_69AB(var_05.model))
{
var_05.model show();
}
if(isdefined(var_05.var_3103))
{
var_05.model show();
}
}
var_03++;
}
}
//Function Number: 9
func_10FED(param_00)
{
param_00 = param_00 + "";
if(isdefined(level.var_49CA))
{
var_01 = level.var_49CA[param_00];
if(isdefined(var_01))
{
foreach(var_03 in var_01)
{
if(!isdefined(var_03.var_B051))
{
continue;
}
if(isdefined(var_03.var_B066))
{
var_03.var_B066 stoploopsound();
var_03.var_B066 delete();
}
var_03.var_B051 delete();
}
return;
}
return;
}
var_05 = 0;
while(var_03 < level.var_49C9.size)
{
var_05 = level.var_49C9[var_03];
if(!isdefined(var_05))
{
continue;
}
if(var_05.var_13125["type"] != "exploder")
{
continue;
}
if(!isdefined(var_05.var_13125["exploder"]))
{
continue;
}
if(var_05.var_13125["exploder"] + "" != var_02)
{
continue;
}
if(!isdefined(var_05.var_B051))
{
continue;
}
if(isdefined(var_05.var_B066))
{
var_05.var_B066 stoploopsound();
var_05.var_B066 delete();
}
var_05.var_B051 delete();
var_03++;
}
}
//Function Number: 10
func_79A7(param_00)
{
param_00 = param_00 + "";
var_01 = [];
if(isdefined(level.var_49CA))
{
var_02 = level.var_49CA[param_00];
if(isdefined(var_02))
{
var_01 = var_02;
}
}
else
{
foreach(var_04 in level.var_49C9)
{
if(var_04.var_13125["type"] != "exploder")
{
continue;
}
if(!isdefined(var_04.var_13125["exploder"]))
{
continue;
}
if(var_04.var_13125["exploder"] + "" != param_00)
{
continue;
}
var_01[var_01.size] = var_04;
}
}
return var_01;
}
//Function Number: 11
func_8E81(param_00)
{
param_00 = param_00 + "";
if(isdefined(level.var_49CA))
{
var_01 = level.var_49CA[param_00];
if(isdefined(var_01))
{
foreach(var_03 in var_01)
{
if(isdefined(var_03.model))
{
var_03.model hide();
}
}
return;
}
return;
}
var_05 = 0;
while(var_03 < level.var_49C9.size)
{
var_05 = level.var_49C9[var_03];
if(!isdefined(var_05))
{
continue;
}
if(var_05.var_13125["type"] != "exploder")
{
continue;
}
if(!isdefined(var_05.var_13125["exploder"]))
{
continue;
}
if(var_05.var_13125["exploder"] + "" != var_02)
{
continue;
}
if(isdefined(var_05.model))
{
var_05.model hide();
}
var_03++;
}
}
//Function Number: 12
func_5152(param_00)
{
param_00 = param_00 + "";
if(isdefined(level.var_49CA))
{
var_01 = level.var_49CA[param_00];
if(isdefined(var_01))
{
foreach(var_03 in var_01)
{
if(isdefined(var_03.model))
{
var_03.model delete();
}
}
}
}
else
{
for(var_05 = 0;var_05 < level.var_49C9.size;var_05++)
{
var_03 = level.var_49C9[var_05];
if(!isdefined(var_03))
{
continue;
}
if(var_03.var_13125["type"] != "exploder")
{
continue;
}
if(!isdefined(var_03.var_13125["exploder"]))
{
continue;
}
if(var_03.var_13125["exploder"] + "" != param_00)
{
continue;
}
if(isdefined(var_03.model))
{
var_03.model delete();
}
}
}
level notify("killexplodertridgers" + param_00);
}
//Function Number: 13
func_69A6()
{
if(isdefined(self.var_13125["delay"]))
{
var_00 = self.var_13125["delay"];
}
else
{
var_00 = 0;
}
if(isdefined(self.var_13125["damage_radius"]))
{
var_01 = self.var_13125["damage_radius"];
}
else
{
var_01 = 128;
}
var_02 = self.var_13125["damage"];
var_03 = self.var_13125["origin"];
wait(var_00);
if(isdefined(level.var_4C6F))
{
[[ level.var_4C6F ]](var_03,var_01,var_02);
return;
}
radiusdamage(var_03,var_01,var_02,var_02);
}
//Function Number: 14
func_15B9()
{
if(isdefined(self.var_13125["firefx"]))
{
thread func_6CF5();
}
if(isdefined(self.var_13125["fxid"]) && self.var_13125["fxid"] != "No FX")
{
thread func_38D4();
}
else if(isdefined(self.var_13125["soundalias"]) && self.var_13125["soundalias"] != "nil")
{
thread func_1045A();
}
if(isdefined(self.var_13125["loopsound"]) && self.var_13125["loopsound"] != "nil")
{
thread func_5FE2();
}
if(isdefined(self.var_13125["damage"]))
{
thread func_69A6();
}
if(isdefined(self.var_13125["earthquake"]))
{
thread func_69A8();
}
if(isdefined(self.var_13125["rumble"]))
{
thread func_69B0();
}
if(self.var_13125["exploder_type"] == "exploder")
{
thread func_3102();
return;
}
if(self.var_13125["exploder_type"] == "exploderchunk" || self.var_13125["exploder_type"] == "exploderchunk visible")
{
thread func_3104();
return;
}
thread func_3101();
}
//Function Number: 15
func_3101()
{
var_00 = self.var_13125["exploder"];
if(isdefined(self.var_13125["delay"]))
{
wait(self.var_13125["delay"]);
}
else
{
wait(0.05);
}
if(!isdefined(self.model))
{
return;
}
if(isdefined(self.model.classname))
{
if(!function_02A4(self.model) && isdefined(self.model.classname))
{
if(scripts\common\utility::issp() && self.model.var_2AF & 1)
{
self.model [[ level.var_74C2["connectPaths"] ]]();
}
}
}
if(level.createfx_enabled)
{
if(isdefined(self.var_699E))
{
return;
}
self.var_699E = 1;
self.model hide();
self.model notsolid();
wait(3);
self.var_699E = undefined;
self.model show();
self.model solid();
return;
}
if(!isdefined(self.var_13125["fxid"]) || self.var_13125["fxid"] == "No FX")
{
self.var_13125["exploder"] = undefined;
}
waittillframeend;
if(isdefined(self.model) && !function_02A4(self.model) && isdefined(self.model.classname))
{
self.model delete();
}
}
//Function Number: 16
func_3104()
{
if(isdefined(self.var_13125["delay"]))
{
wait(self.var_13125["delay"]);
}
var_00 = undefined;
if(isdefined(self.var_13125["target"]))
{
var_00 = scripts\common\utility::get_target_ent(self.var_13125["target"]);
}
if(!isdefined(var_00))
{
self.model delete();
return;
}
self.model show();
if(isdefined(self.var_13125["delay_post"]))
{
wait(self.var_13125["delay_post"]);
}
var_01 = self.var_13125["origin"];
var_02 = self.var_13125["angles"];
var_03 = var_00.origin;
var_04 = isdefined(self.var_13125["physics"]);
if(var_04)
{
var_05 = undefined;
if(isdefined(var_00.target))
{
var_05 = var_00 scripts\common\utility::get_target_ent();
}
if(isdefined(var_05))
{
var_06 = var_00.origin;
var_07 = vectornormalize(var_05.origin - var_00.origin);
}
else
{
var_06 = self.model.origin;
var_07 = vectornormalize(var_04 - self.model.origin);
}
var_07 = var_07 * self.var_13125["physics"];
self.model physicslaunchserver(var_06,var_07);
return;
}
else
{
var_07 = var_06 - self.model.origin;
self.model rotatevelocity(var_07,12);
self.model movegravity(var_07,12);
}
if(level.createfx_enabled)
{
if(isdefined(self.var_699E))
{
return;
}
self.var_699E = 1;
wait(3);
self.var_699E = undefined;
self.var_13125["origin"] = var_03;
self.var_13125["angles"] = var_04;
self.model hide();
return;
}
self.var_13125["exploder"] = undefined;
wait(6);
self.model delete();
}
//Function Number: 17
func_3102()
{
if(isdefined(self.var_13125["delay"]))
{
wait(self.var_13125["delay"]);
}
if(!isdefined(self.model.var_EE24))
{
self.model show();
self.model solid();
}
else
{
var_00 = self.model scripts\common\utility::spawn_tag_origin();
if(isdefined(self.model.var_27C))
{
var_00.var_27C = self.model.var_27C;
}
var_00 setmodel(self.model.var_EE24);
var_00 show();
}
self.var_3103 = 1;
if(scripts\common\utility::issp() && !isdefined(self.model.var_EE24) && self.model.var_2AF & 1)
{
if(!isdefined(self.model.var_5635))
{
self.model [[ level.var_74C2["connectPaths"] ]]();
}
else
{
self.model [[ level.var_74C2["disconnectPaths"] ]]();
}
}
if(level.createfx_enabled)
{
if(isdefined(self.var_699E))
{
return;
}
self.var_699E = 1;
wait(3);
self.var_699E = undefined;
if(!isdefined(self.model.var_EE24))
{
self.model hide();
self.model notsolid();
}
}
}
//Function Number: 18
func_69B0()
{
if(!scripts\common\utility::issp())
{
return;
}
func_69A7();
level.player playrumbleonentity(self.var_13125["rumble"]);
}
//Function Number: 19
func_69A7()
{
if(!isdefined(self.var_13125["delay"]))
{
self.var_13125["delay"] = 0;
}
var_00 = self.var_13125["delay"];
var_01 = self.var_13125["delay"] + 0.001;
if(isdefined(self.var_13125["delay_min"]))
{
var_00 = self.var_13125["delay_min"];
}
if(isdefined(self.var_13125["delay_max"]))
{
var_01 = self.var_13125["delay_max"];
}
if(var_00 > 0)
{
wait(randomfloatrange(var_00,var_01));
}
}
//Function Number: 20
func_5FE2()
{
if(isdefined(self.var_B066))
{
self.var_B066 stoploopsound();
self.var_B066 delete();
}
var_00 = self.var_13125["origin"];
var_01 = self.var_13125["loopsound"];
func_69A7();
self.var_B066 = scripts\common\utility::play_loopsound_in_space(var_01,var_00);
}
//Function Number: 21
func_1045A()
{
func_5FE6();
}
//Function Number: 22
func_5FE6()
{
var_00 = self.var_13125["origin"];
var_01 = self.var_13125["soundalias"];
func_69A7();
scripts\common\utility::play_sound_in_space(var_01,var_00);
}
//Function Number: 23
func_69A8()
{
func_69A7();
scripts\common\utility::func_577E(self.var_13125["earthquake"],self.var_13125["origin"]);
}
//Function Number: 24
func_69AF()
{
if(!isdefined(self.var_13125["soundalias"]) || self.var_13125["soundalias"] == "nil")
{
return;
}
scripts\common\utility::play_sound_in_space(self.var_13125["soundalias"],self.var_13125["origin"]);
}
//Function Number: 25
func_6CF5()
{
var_00 = self.var_13125["forward"];
var_01 = self.var_13125["up"];
var_02 = undefined;
var_03 = self.var_13125["firefxsound"];
var_04 = self.var_13125["origin"];
var_05 = self.var_13125["firefx"];
var_06 = self.var_13125["ender"];
if(!isdefined(var_06))
{
var_06 = "createfx_effectStopper";
}
var_07 = 0.5;
if(isdefined(self.var_13125["firefxdelay"]))
{
var_07 = self.var_13125["firefxdelay"];
}
func_69A7();
if(isdefined(var_03))
{
scripts\common\utility::func_B040(var_03,var_04,1,var_06);
}
playfx(level._effect[var_05],self.var_13125["origin"],var_00,var_01);
}
//Function Number: 26
func_38D4()
{
if(isdefined(self.var_13125["repeat"]))
{
thread func_69AF();
for(var_00 = 0;var_00 < self.var_13125["repeat"];var_00++)
{
playfx(level._effect[self.var_13125["fxid"]],self.var_13125["origin"],self.var_13125["forward"],self.var_13125["up"]);
func_69A7();
}
return;
}
func_69A7();
if(isdefined(self.var_B051))
{
self.var_B051 delete();
}
self.var_B051 = spawnfx(scripts\common\utility::getfx(self.var_13125["fxid"]),self.var_13125["origin"],self.var_13125["forward"],self.var_13125["up"]);
triggerfx(self.var_B051);
func_69AF();
}
//Function Number: 27
func_15AC(param_00,param_01,param_02)
{
param_00 = param_00 + "";
level notify("exploding_" + param_00);
var_03 = 0;
if(isdefined(level.var_49CA) && !level.createfx_enabled)
{
var_04 = level.var_49CA[param_00];
if(isdefined(var_04))
{
foreach(var_06 in var_04)
{
var_06 scripts\common\utility::func_15B8();
var_03 = 1;
}
}
}
else
{
for(var_08 = 0;var_08 < level.var_49C9.size;var_08++)
{
var_06 = level.var_49C9[var_08];
if(!isdefined(var_06))
{
continue;
}
if(var_06.var_13125["type"] != "exploder")
{
continue;
}
if(!isdefined(var_06.var_13125["exploder"]))
{
continue;
}
if(var_06.var_13125["exploder"] + "" != param_00)
{
continue;
}
var_06 scripts\common\utility::func_15B8();
var_03 = 1;
}
}
if(!func_10071() && !var_03)
{
func_1596(param_00,param_01,param_02);
}
}
//Function Number: 28
func_1596(param_00,param_01,param_02)
{
if(!func_9D01(param_00))
{
return;
}
var_03 = int(param_00);
activateclientexploder(var_03,param_01,param_02);
}
//Function Number: 29
func_9D01(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
var_01 = param_00;
if(isstring(param_00))
{
var_01 = int(param_00);
if(var_01 == 0 && param_00 != "0")
{
return 0;
}
}
return var_01 >= 0;
}
//Function Number: 30
func_10071()
{
if(scripts\common\utility::issp())
{
return 1;
}
if(!isdefined(level.createfx_enabled))
{
scripts\common\utility::func_F315();
}
if(level.createfx_enabled)
{
return 1;
}
return getdvar("clientSideEffects") != "1";
}
//Function Number: 31
func_69A5(param_00,param_01,param_02)
{
waittillframeend;
waittillframeend;
func_15AC(param_00,param_01,param_02);
}
//Function Number: 32
func_69A4(param_00,param_01,param_02)
{
func_15AC(param_00,param_01,param_02);
}