mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
1313 lines
23 KiB
Plaintext
1313 lines
23 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: common_scripts/_exploder.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 37
|
|
* Decompile Time: 560 ms
|
|
* Timestamp: 10/27/2023 2:07:39 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
getexploders(param_00)
|
|
{
|
|
param_00 = param_00 + "";
|
|
if(isdefined(level.createfxexploders))
|
|
{
|
|
return level.createfxexploders[param_00];
|
|
}
|
|
|
|
var_01 = [];
|
|
foreach(var_03 in level.createfxent)
|
|
{
|
|
if(!isdefined(var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_03.v["type"] != "exploder")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_03.v["exploder"]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_03.v["exploder"] == param_00)
|
|
{
|
|
var_01[var_01.size] = var_03;
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 2
|
|
setup_individual_exploder(param_00)
|
|
{
|
|
var_01 = param_00.script_exploder;
|
|
if(!isdefined(level.exploders[var_01]))
|
|
{
|
|
level.exploders[var_01] = [];
|
|
}
|
|
|
|
var_02 = param_00.targetname;
|
|
if(!isdefined(var_02))
|
|
{
|
|
var_02 = "";
|
|
}
|
|
|
|
level.exploders[var_01][level.exploders[var_01].size] = param_00;
|
|
if(exploder_model_starts_hidden(param_00))
|
|
{
|
|
param_00 hide();
|
|
return;
|
|
}
|
|
|
|
if(exploder_model_is_damaged_model(param_00))
|
|
{
|
|
param_00 hide();
|
|
param_00 notsolid();
|
|
if(isdefined(param_00.spawnflags) && param_00.spawnflags & 1)
|
|
{
|
|
if(isdefined(param_00.script_disconnectpaths))
|
|
{
|
|
param_00 connectpaths();
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if(exploder_model_is_chunk(param_00))
|
|
{
|
|
param_00 hide();
|
|
param_00 notsolid();
|
|
if(isdefined(param_00.spawnflags) && param_00.spawnflags & 1)
|
|
{
|
|
param_00 connectpaths();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 3
|
|
setupexploders()
|
|
{
|
|
level.exploders = [];
|
|
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.script_prefab_exploder))
|
|
{
|
|
var_04.script_exploder = var_04.script_prefab_exploder;
|
|
}
|
|
|
|
if(isdefined(var_04.masked_exploder))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_04.script_exploder))
|
|
{
|
|
setup_individual_exploder(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].script_prefab_exploder))
|
|
{
|
|
var_07[var_02].script_exploder = var_07[var_02].script_prefab_exploder;
|
|
}
|
|
|
|
if(isdefined(var_07[var_02].script_exploder))
|
|
{
|
|
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].script_prefab_exploder))
|
|
{
|
|
var_07[var_02].script_exploder = var_07[var_02].script_prefab_exploder;
|
|
}
|
|
|
|
if(isdefined(var_07[var_02].script_exploder))
|
|
{
|
|
var_06[var_06.size] = var_07[var_02];
|
|
}
|
|
}
|
|
|
|
var_07 = getentarray("script_origin","classname");
|
|
for(var_02 = 0;var_02 < var_07.size;var_02++)
|
|
{
|
|
if(isdefined(var_07[var_02].script_prefab_exploder))
|
|
{
|
|
var_07[var_02].script_exploder = var_07[var_02].script_prefab_exploder;
|
|
}
|
|
|
|
if(isdefined(var_07[var_02].script_exploder))
|
|
{
|
|
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].script_prefab_exploder))
|
|
{
|
|
var_07[var_02].script_exploder = var_07[var_02].script_prefab_exploder;
|
|
}
|
|
|
|
if(isdefined(var_07[var_02].script_exploder))
|
|
{
|
|
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].script_prefab_exploder))
|
|
{
|
|
var_07[var_02].script_exploder = var_07[var_02].script_prefab_exploder;
|
|
}
|
|
|
|
if(isdefined(var_07[var_02].script_exploder))
|
|
{
|
|
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.createfxent))
|
|
{
|
|
level.createfxent = [];
|
|
}
|
|
|
|
var_08 = [];
|
|
var_08["exploderchunk visible"] = 1;
|
|
var_08["exploderchunk"] = 1;
|
|
var_08["exploder"] = 1;
|
|
thread setup_flag_exploders();
|
|
for(var_02 = 0;var_02 < var_06.size;var_02++)
|
|
{
|
|
var_09 = var_06[var_02];
|
|
var_04 = common_scripts\utility::createexploder(var_09.script_fxid);
|
|
var_04.v = [];
|
|
var_04.v["origin"] = var_09.origin;
|
|
var_04.v["angles"] = var_09.angles;
|
|
var_04.v["delay"] = var_09.script_delay;
|
|
var_04.v["delay_post"] = var_09.script_delay_post;
|
|
var_04.v["firefx"] = var_09.script_firefx;
|
|
var_04.v["firefxdelay"] = var_09.script_firefxdelay;
|
|
var_04.v["firefxsound"] = var_09.script_firefxsound;
|
|
var_04.v["firefxtimeout"] = var_09.script_firefxtimeout;
|
|
var_04.v["earthquake"] = var_09.script_earthquake;
|
|
var_04.v["rumble"] = var_09.script_rumble;
|
|
var_04.v["damage"] = var_09.script_damage;
|
|
var_04.v["damage_radius"] = var_09.script_radius;
|
|
var_04.v["soundalias"] = var_09.script_soundalias;
|
|
var_04.v["repeat"] = var_09.script_repeat;
|
|
var_04.v["delay_min"] = var_09.script_delay_min;
|
|
var_04.v["delay_max"] = var_09.script_delay_max;
|
|
var_04.v["target"] = var_09.target;
|
|
var_04.v["ender"] = var_09.script_ender;
|
|
var_04.v["physics"] = var_09.script_physics;
|
|
var_04.v["type"] = "exploder";
|
|
if(!isdefined(var_09.script_fxid))
|
|
{
|
|
var_04.v["fxid"] = "No FX";
|
|
}
|
|
else
|
|
{
|
|
var_04.v["fxid"] = var_09.script_fxid;
|
|
}
|
|
|
|
var_04.v["exploder"] = var_09.script_exploder;
|
|
if(isdefined(level.createfxexploders))
|
|
{
|
|
var_0A = level.createfxexploders[var_04.v["exploder"]];
|
|
if(!isdefined(var_0A))
|
|
{
|
|
var_0A = [];
|
|
}
|
|
|
|
var_0A[var_0A.size] = var_04;
|
|
level.createfxexploders[var_04.v["exploder"]] = var_0A;
|
|
}
|
|
|
|
if(!isdefined(var_04.v["delay"]))
|
|
{
|
|
var_04.v["delay"] = 0;
|
|
}
|
|
|
|
if(isdefined(var_09.target))
|
|
{
|
|
var_0B = getentarray(var_04.v["target"],"targetname")[0];
|
|
if(isdefined(var_0B))
|
|
{
|
|
var_0C = var_0B.origin;
|
|
var_04.v["angles"] = vectortoangles(var_0C - var_04.v["origin"]);
|
|
}
|
|
else
|
|
{
|
|
var_0B = common_scripts\utility::get_target_ent(var_04.v["target"]);
|
|
if(isdefined(var_0B))
|
|
{
|
|
var_0C = var_0B.origin;
|
|
var_04.v["angles"] = vectortoangles(var_0C - var_04.v["origin"]);
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!isdefined(var_09.code_classname))
|
|
{
|
|
var_04.model = var_09;
|
|
if(isdefined(var_04.model.script_modelname))
|
|
{
|
|
precachemodel(var_04.model.script_modelname);
|
|
}
|
|
}
|
|
else if(var_09.code_classname == "script_brushmodel" || isdefined(var_09.model))
|
|
{
|
|
var_04.model = var_09;
|
|
var_04.model.disconnect_paths = var_09.script_disconnectpaths;
|
|
}
|
|
|
|
if(isdefined(var_09.targetname) && isdefined(var_08[var_09.targetname]))
|
|
{
|
|
var_04.v["exploder_type"] = var_09.targetname;
|
|
}
|
|
else
|
|
{
|
|
var_04.v["exploder_type"] = "normal";
|
|
}
|
|
|
|
if(isdefined(var_09.masked_exploder))
|
|
{
|
|
var_04.v["masked_exploder"] = var_09.model;
|
|
var_04.v["masked_exploder_spawnflags"] = var_09.spawnflags;
|
|
var_04.v["masked_exploder_script_disconnectpaths"] = var_09.script_disconnectpaths;
|
|
var_09 delete();
|
|
}
|
|
|
|
var_04 common_scripts\_createfx::post_entity_creation_function();
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
setup_flag_exploders()
|
|
{
|
|
waittillframeend;
|
|
waittillframeend;
|
|
waittillframeend;
|
|
var_00 = [];
|
|
foreach(var_02 in level.createfxent)
|
|
{
|
|
if(var_02.v["type"] != "exploder")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_03 = var_02.v["flag"];
|
|
if(!isdefined(var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_03 == "nil")
|
|
{
|
|
var_02.v["flag"] = undefined;
|
|
}
|
|
|
|
var_00[var_03] = 1;
|
|
}
|
|
|
|
foreach(var_07, var_06 in var_00)
|
|
{
|
|
thread exploder_flag_wait(var_07);
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
exploder_flag_wait(param_00)
|
|
{
|
|
if(!common_scripts\utility::flag_exist(param_00))
|
|
{
|
|
common_scripts\utility::flag_init(param_00);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait(param_00);
|
|
foreach(var_02 in level.createfxent)
|
|
{
|
|
if(var_02.v["type"] != "exploder")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_03 = var_02.v["flag"];
|
|
if(!isdefined(var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_03 != param_00)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 common_scripts\utility::activate_individual_exploder();
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
exploder_model_is_damaged_model(param_00)
|
|
{
|
|
return isdefined(param_00.targetname) && param_00.targetname == "exploder";
|
|
}
|
|
|
|
//Function Number: 7
|
|
exploder_model_starts_hidden(param_00)
|
|
{
|
|
return param_00.model == "fx" && !isdefined(param_00.targetname) || param_00.targetname != "exploderchunk";
|
|
}
|
|
|
|
//Function Number: 8
|
|
exploder_model_is_chunk(param_00)
|
|
{
|
|
return isdefined(param_00.targetname) && param_00.targetname == "exploderchunk";
|
|
}
|
|
|
|
//Function Number: 9
|
|
show_exploder_models_proc(param_00)
|
|
{
|
|
param_00 = param_00 + "";
|
|
if(isdefined(level.createfxexploders))
|
|
{
|
|
var_01 = level.createfxexploders[param_00];
|
|
if(isdefined(var_01))
|
|
{
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(!exploder_model_starts_hidden(var_03.model) && !exploder_model_is_damaged_model(var_03.model) && !exploder_model_is_chunk(var_03.model))
|
|
{
|
|
var_03.model show();
|
|
}
|
|
|
|
if(isdefined(var_03.brush_shown))
|
|
{
|
|
var_03.model show();
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
var_05 = 0;
|
|
while(var_03 < level.createfxent.size)
|
|
{
|
|
var_05 = level.createfxent[var_03];
|
|
if(!isdefined(var_05))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_05.v["type"] != "exploder")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_05.v["exploder"]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_05.v["exploder"] + "" != var_02)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_05.model))
|
|
{
|
|
if(!exploder_model_starts_hidden(var_05.model) && !exploder_model_is_damaged_model(var_05.model) && !exploder_model_is_chunk(var_05.model))
|
|
{
|
|
var_05.model show();
|
|
}
|
|
|
|
if(isdefined(var_05.brush_shown))
|
|
{
|
|
var_05.model show();
|
|
}
|
|
}
|
|
|
|
var_03++;
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
stop_exploder_proc(param_00)
|
|
{
|
|
param_00 = param_00 + "";
|
|
if(isdefined(level.createfxexploders))
|
|
{
|
|
var_01 = level.createfxexploders[param_00];
|
|
if(isdefined(var_01))
|
|
{
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(!isdefined(var_03.looper))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_03.looper delete();
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
var_05 = 0;
|
|
while(var_03 < level.createfxent.size)
|
|
{
|
|
var_05 = level.createfxent[var_03];
|
|
if(!isdefined(var_05))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_05.v["type"] != "exploder")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_05.v["exploder"]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_05.v["exploder"] + "" != var_02)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_05.looper))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_05.looper delete();
|
|
var_03++;
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
get_exploder_array_proc(param_00)
|
|
{
|
|
param_00 = param_00 + "";
|
|
var_01 = [];
|
|
if(isdefined(level.createfxexploders))
|
|
{
|
|
var_02 = level.createfxexploders[param_00];
|
|
if(isdefined(var_02))
|
|
{
|
|
var_01 = var_02;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach(var_04 in level.createfxent)
|
|
{
|
|
if(var_04.v["type"] != "exploder")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_04.v["exploder"]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_04.v["exploder"] + "" != param_00)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01[var_01.size] = var_04;
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 12
|
|
hide_exploder_models_proc(param_00)
|
|
{
|
|
param_00 = param_00 + "";
|
|
if(isdefined(level.createfxexploders))
|
|
{
|
|
var_01 = level.createfxexploders[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.createfxent.size)
|
|
{
|
|
var_05 = level.createfxent[var_03];
|
|
if(!isdefined(var_05))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_05.v["type"] != "exploder")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_05.v["exploder"]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_05.v["exploder"] + "" != var_02)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_05.model))
|
|
{
|
|
var_05.model hide();
|
|
}
|
|
|
|
var_03++;
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
delete_exploder_proc(param_00)
|
|
{
|
|
param_00 = param_00 + "";
|
|
if(isdefined(level.createfxexploders))
|
|
{
|
|
var_01 = level.createfxexploders[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.createfxent.size;var_05++)
|
|
{
|
|
var_03 = level.createfxent[var_05];
|
|
if(!isdefined(var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_03.v["type"] != "exploder")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_03.v["exploder"]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_03.v["exploder"] + "" != param_00)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_03.model))
|
|
{
|
|
var_03.model delete();
|
|
}
|
|
}
|
|
}
|
|
|
|
level notify("killexplodertridgers" + param_00);
|
|
}
|
|
|
|
//Function Number: 14
|
|
exploder_damage()
|
|
{
|
|
if(isdefined(self.v["delay"]))
|
|
{
|
|
var_00 = self.v["delay"];
|
|
}
|
|
else
|
|
{
|
|
var_00 = 0;
|
|
}
|
|
|
|
if(isdefined(self.v["damage_radius"]))
|
|
{
|
|
var_01 = self.v["damage_radius"];
|
|
}
|
|
else
|
|
{
|
|
var_01 = 128;
|
|
}
|
|
|
|
var_02 = self.v["damage"];
|
|
var_03 = self.v["origin"];
|
|
wait(var_00);
|
|
if(isdefined(level.custom_radius_damage_for_exploders))
|
|
{
|
|
[[ level.custom_radius_damage_for_exploders ]](var_03,var_01,var_02);
|
|
return;
|
|
}
|
|
|
|
radiusdamage(var_03,var_01,var_02,var_02);
|
|
}
|
|
|
|
//Function Number: 15
|
|
activate_individual_exploder_proc()
|
|
{
|
|
if(isdefined(self.v["firefx"]))
|
|
{
|
|
thread fire_effect();
|
|
}
|
|
|
|
if(isdefined(self.v["fxid"]) && self.v["fxid"] != "No FX")
|
|
{
|
|
thread cannon_effect();
|
|
}
|
|
else if(isdefined(self.v["soundalias"]) && self.v["soundalias"] != "nil")
|
|
{
|
|
thread sound_effect();
|
|
}
|
|
|
|
if(isdefined(self.v["loopsound"]) && self.v["loopsound"] != "nil")
|
|
{
|
|
thread effect_loopsound();
|
|
}
|
|
|
|
if(isdefined(self.v["damage"]))
|
|
{
|
|
thread exploder_damage();
|
|
}
|
|
|
|
if(isdefined(self.v["earthquake"]))
|
|
{
|
|
thread exploder_earthquake();
|
|
}
|
|
|
|
if(isdefined(self.v["rumble"]))
|
|
{
|
|
thread exploder_rumble();
|
|
}
|
|
|
|
if(self.v["exploder_type"] == "exploder")
|
|
{
|
|
thread brush_show();
|
|
return;
|
|
}
|
|
|
|
if(self.v["exploder_type"] == "exploderchunk" || self.v["exploder_type"] == "exploderchunk visible")
|
|
{
|
|
thread brush_throw();
|
|
return;
|
|
}
|
|
|
|
thread brush_delete();
|
|
}
|
|
|
|
//Function Number: 16
|
|
brush_delete()
|
|
{
|
|
var_00 = self.v["exploder"];
|
|
if(isdefined(self.v["delay"]) && self.v["delay"] >= 0)
|
|
{
|
|
wait(self.v["delay"]);
|
|
}
|
|
else
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
if(!isdefined(self.model))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.model.classname))
|
|
{
|
|
if(common_scripts\utility::issp() && self.model.spawnflags & 1)
|
|
{
|
|
self.model [[ level.connectpathsfunction ]]();
|
|
}
|
|
}
|
|
|
|
if(level.createfx_enabled)
|
|
{
|
|
if(isdefined(self.exploded))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.exploded = 1;
|
|
self.model hide();
|
|
self.model notsolid();
|
|
wait(3);
|
|
self.exploded = undefined;
|
|
self.model show();
|
|
self.model solid();
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(self.v["fxid"]) || self.v["fxid"] == "No FX")
|
|
{
|
|
self.v["exploder"] = undefined;
|
|
}
|
|
|
|
waittillframeend;
|
|
if(isdefined(self.model) && isdefined(self.model.classname))
|
|
{
|
|
self.model delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
brush_throw()
|
|
{
|
|
if(isdefined(self.v["delay"]))
|
|
{
|
|
wait(self.v["delay"]);
|
|
}
|
|
|
|
var_00 = undefined;
|
|
if(isdefined(self.v["target"]))
|
|
{
|
|
var_00 = common_scripts\utility::get_target_ent(self.v["target"]);
|
|
}
|
|
|
|
if(!isdefined(var_00))
|
|
{
|
|
self.model delete();
|
|
return;
|
|
}
|
|
|
|
self.model show();
|
|
if(isdefined(self.v["delay_post"]))
|
|
{
|
|
wait(self.v["delay_post"]);
|
|
}
|
|
|
|
var_01 = self.v["origin"];
|
|
var_02 = self.v["angles"];
|
|
var_03 = var_00.origin;
|
|
var_04 = var_03 - self.v["origin"];
|
|
var_05 = var_04[0];
|
|
var_06 = var_04[1];
|
|
var_07 = var_04[2];
|
|
var_08 = isdefined(self.v["physics"]);
|
|
if(var_08)
|
|
{
|
|
var_09 = undefined;
|
|
if(isdefined(var_00.target))
|
|
{
|
|
var_09 = var_00 common_scripts\utility::get_target_ent();
|
|
}
|
|
|
|
if(!isdefined(var_09))
|
|
{
|
|
var_0A = var_01;
|
|
var_0B = var_00.origin;
|
|
}
|
|
else
|
|
{
|
|
var_0A = var_02.origin;
|
|
var_0B = var_0A.origin - var_01.origin * self.v["physics"];
|
|
}
|
|
|
|
self.model physicslaunchclient(var_0A,var_0B);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
self.model rotatevelocity((var_08,var_09,var_0A),12);
|
|
self.model movegravity((var_08,var_09,var_0A),12);
|
|
}
|
|
|
|
if(level.createfx_enabled)
|
|
{
|
|
if(isdefined(self.exploded))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.exploded = 1;
|
|
wait(3);
|
|
self.exploded = undefined;
|
|
self.v["origin"] = var_04;
|
|
self.v["angles"] = var_05;
|
|
self.model hide();
|
|
return;
|
|
}
|
|
|
|
self.v["exploder"] = undefined;
|
|
wait(6);
|
|
self.model delete();
|
|
}
|
|
|
|
//Function Number: 18
|
|
brush_show()
|
|
{
|
|
if(isdefined(self.v["delay"]))
|
|
{
|
|
wait(self.v["delay"]);
|
|
}
|
|
|
|
if(!isdefined(self.model.script_modelname))
|
|
{
|
|
self.model show();
|
|
self.model solid();
|
|
}
|
|
else
|
|
{
|
|
var_00 = self.model common_scripts\utility::spawn_tag_origin();
|
|
if(isdefined(self.model.script_linkname))
|
|
{
|
|
var_00.script_linkname = self.model.script_linkname;
|
|
}
|
|
|
|
var_00 setmodel(self.model.script_modelname);
|
|
var_00 show();
|
|
}
|
|
|
|
self.brush_shown = 1;
|
|
if(common_scripts\utility::issp() && !isdefined(self.model.script_modelname) && self.model.spawnflags & 1)
|
|
{
|
|
if(!isdefined(self.model.disconnect_paths))
|
|
{
|
|
self.model [[ level.connectpathsfunction ]]();
|
|
}
|
|
else
|
|
{
|
|
self.model [[ level.disconnectpathsfunction ]]();
|
|
}
|
|
}
|
|
|
|
if(level.createfx_enabled)
|
|
{
|
|
if(isdefined(self.exploded))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.exploded = 1;
|
|
wait(3);
|
|
self.exploded = undefined;
|
|
if(!isdefined(self.model.script_modelname))
|
|
{
|
|
self.model hide();
|
|
self.model notsolid();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
exploder_rumble()
|
|
{
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
return;
|
|
}
|
|
|
|
exploder_delay();
|
|
level.player playrumbleonentity(self.v["rumble"]);
|
|
}
|
|
|
|
//Function Number: 20
|
|
exploder_delay()
|
|
{
|
|
if(!isdefined(self.v["delay"]))
|
|
{
|
|
self.v["delay"] = 0;
|
|
}
|
|
|
|
var_00 = self.v["delay"];
|
|
var_01 = self.v["delay"] + 0.001;
|
|
if(isdefined(self.v["delay_min"]))
|
|
{
|
|
var_00 = self.v["delay_min"];
|
|
}
|
|
|
|
if(isdefined(self.v["delay_max"]))
|
|
{
|
|
var_01 = self.v["delay_max"];
|
|
}
|
|
|
|
if(var_00 > 0)
|
|
{
|
|
wait(randomfloatrange(var_00,var_01));
|
|
}
|
|
}
|
|
|
|
//Function Number: 21
|
|
effect_loopsound()
|
|
{
|
|
if(isdefined(self.loopsound_ent))
|
|
{
|
|
self.loopsound_ent delete();
|
|
}
|
|
|
|
var_00 = self.v["origin"];
|
|
var_01 = self.v["loopsound"];
|
|
exploder_delay();
|
|
self.loopsound_ent = common_scripts\utility::play_loopsound_in_space(var_01,var_00);
|
|
}
|
|
|
|
//Function Number: 22
|
|
sound_effect()
|
|
{
|
|
effect_soundalias();
|
|
}
|
|
|
|
//Function Number: 23
|
|
effect_soundalias()
|
|
{
|
|
var_00 = self.v["origin"];
|
|
var_01 = self.v["soundalias"];
|
|
exploder_delay();
|
|
common_scripts\utility::play_sound_in_space(var_01,var_00);
|
|
}
|
|
|
|
//Function Number: 24
|
|
exploder_earthquake()
|
|
{
|
|
exploder_delay();
|
|
common_scripts\utility::do_earthquake(self.v["earthquake"],self.v["origin"]);
|
|
}
|
|
|
|
//Function Number: 25
|
|
exploder_playsound()
|
|
{
|
|
if(!isdefined(self.v["soundalias"]) || self.v["soundalias"] == "nil")
|
|
{
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::play_sound_in_space(self.v["soundalias"],self.v["origin"]);
|
|
}
|
|
|
|
//Function Number: 26
|
|
fire_effect()
|
|
{
|
|
var_00 = self.v["forward"];
|
|
var_01 = self.v["up"];
|
|
var_02 = undefined;
|
|
var_03 = self.v["firefxsound"];
|
|
var_04 = self.v["origin"];
|
|
var_05 = self.v["firefx"];
|
|
var_06 = self.v["ender"];
|
|
if(!isdefined(var_06))
|
|
{
|
|
var_06 = "createfx_effectStopper";
|
|
}
|
|
|
|
var_07 = 0.5;
|
|
if(isdefined(self.v["firefxdelay"]))
|
|
{
|
|
var_07 = self.v["firefxdelay"];
|
|
}
|
|
|
|
exploder_delay();
|
|
if(isdefined(var_03))
|
|
{
|
|
common_scripts\utility::loop_fx_sound_with_angles(var_03,var_04,(0,0,0),1,var_06);
|
|
}
|
|
|
|
playfx(level._effect[var_05],self.v["origin"],var_00,var_01);
|
|
}
|
|
|
|
//Function Number: 27
|
|
cannon_effect()
|
|
{
|
|
if(isdefined(self.v["repeat"]))
|
|
{
|
|
thread exploder_playsound();
|
|
for(var_00 = 0;var_00 < self.v["repeat"];var_00++)
|
|
{
|
|
playfx(level._effect[self.v["fxid"]],self.v["origin"],self.v["forward"],self.v["up"]);
|
|
exploder_delay();
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(self.v["delay"]))
|
|
{
|
|
self.v["delay"] = 0;
|
|
}
|
|
|
|
if(self.v["delay"] >= 0)
|
|
{
|
|
exploder_delay();
|
|
var_01 = 0;
|
|
}
|
|
else
|
|
{
|
|
var_01 = self.v["delay"];
|
|
}
|
|
|
|
if(isdefined(self.looper))
|
|
{
|
|
self.looper delete();
|
|
}
|
|
|
|
self.looper = spawnfx(common_scripts\utility::getfx(self.v["fxid"]),self.v["origin"],self.v["forward"],self.v["up"]);
|
|
if(level.createfx_enabled)
|
|
{
|
|
setfxkillondelete(self.looper,1);
|
|
}
|
|
|
|
if(self.v["delay"] >= 0)
|
|
{
|
|
triggerfx(self.looper);
|
|
}
|
|
else
|
|
{
|
|
triggerfx(self.looper,var_01);
|
|
}
|
|
|
|
exploder_playsound();
|
|
}
|
|
|
|
//Function Number: 28
|
|
activate_exploder(param_00,param_01,param_02)
|
|
{
|
|
param_00 = param_00 + "";
|
|
level notify("exploding_" + param_00);
|
|
var_03 = 0;
|
|
if(isdefined(level.createfxexploders) && !level.createfx_enabled)
|
|
{
|
|
var_04 = level.createfxexploders[param_00];
|
|
if(isdefined(var_04))
|
|
{
|
|
foreach(var_06 in var_04)
|
|
{
|
|
if(!var_06 check_exploder_platform())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_06 common_scripts\utility::activate_individual_exploder();
|
|
var_03 = 1;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for(var_08 = 0;var_08 < level.createfxent.size;var_08++)
|
|
{
|
|
var_06 = level.createfxent[var_08];
|
|
if(!isdefined(var_06))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_06.v["type"] != "exploder")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_06.v["exploder"]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_06.v["exploder"] + "" != param_00)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!var_06 check_exploder_platform())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_06 common_scripts\utility::activate_individual_exploder();
|
|
var_03 = 1;
|
|
}
|
|
}
|
|
|
|
if(!shouldrunserversideeffects() && !var_03)
|
|
{
|
|
activate_clientside_exploder(param_00,param_01,param_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 29
|
|
exploder(param_00,param_01,param_02)
|
|
{
|
|
[[ level._fx.exploderfunction ]](param_00,param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 30
|
|
kill_exploder(param_00)
|
|
{
|
|
var_01 = getexploders(param_00);
|
|
if(isdefined(var_01))
|
|
{
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(isdefined(var_03.looper))
|
|
{
|
|
setfxkillondelete(var_03.looper,1);
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 common_scripts\utility::pauseeffect();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 31
|
|
check_exploder_platform()
|
|
{
|
|
var_00 = self;
|
|
if(isdefined(var_00.v["platform"]) && isdefined(level.currentgen))
|
|
{
|
|
var_01 = var_00.v["platform"];
|
|
if((var_01 == "cg" && !level.currentgen) || var_01 == "ng" && !level.nextgen)
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 32
|
|
activate_clientside_exploder(param_00,param_01,param_02)
|
|
{
|
|
if(!is_valid_clientside_exploder_name(param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_03 = int(param_00);
|
|
activateclientexploder(var_03,param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 33
|
|
deactivate_clientside_exploder(param_00,param_01,param_02)
|
|
{
|
|
if(!is_valid_clientside_exploder_name(param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_03 = int(param_00);
|
|
stopclientexploder(var_03,param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 34
|
|
is_valid_clientside_exploder_name(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: 35
|
|
shouldrunserversideeffects()
|
|
{
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(!isdefined(level.createfx_enabled))
|
|
{
|
|
level.createfx_enabled = getdvar("createfx") != "";
|
|
}
|
|
|
|
if(level.createfx_enabled)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return getdvar("clientSideEffects") != "1";
|
|
}
|
|
|
|
//Function Number: 36
|
|
exploder_before_load(param_00,param_01,param_02)
|
|
{
|
|
waittillframeend;
|
|
waittillframeend;
|
|
activate_exploder(param_00,param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 37
|
|
exploder_after_load(param_00,param_01,param_02)
|
|
{
|
|
activate_exploder(param_00,param_01,param_02);
|
|
} |