IL-GSC/WW2/PC/ALL/1380.gsc
2023-10-27 03:49:01 -04:00

1488 lines
29 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: 1380.gsc
* Game: Call of Duty: WWII
* Platform: PC
* Function Count: 62
* Decompile Time: 73 ms
* Timestamp: 10/27/2023 3:25:55 AM
*******************************************************************/
//Function Number: 1
func_00D5()
{
level.var_A41["zombie_fireman"] = level.var_A41["zombie"];
level.var_A41["zombie_fireman"]["think"] = ::func_ABAB;
level.var_A41["zombie_fireman"]["move_mode"] = ::func_ABA7;
level.var_A41["zombie_fireman"]["on_damaged"] = ::func_ABA8;
level.var_A41["zombie_fireman"]["on_killed"] = ::func_ABA9;
level.var_A41["zombie_fireman"]["ragdoll_overrides"] = ::func_ABAA;
level.var_A41["zombie_fireman"]["is_hit_weak_point"] = ::func_ABA6;
level.var_A41["zombie_fireman"]["tesla_delayed_dmg"] = ::zombie_fireman_tesla_delayed_dmg;
var_00 = spawnstruct();
var_00.var_A4B = "zombie_fireman";
var_00.var_EAE = "zombie_animclass";
var_00.var_879 = "zombie_generic";
var_00.var_5ED2["default look"]["whole_body"] = "zom_fireman_body";
var_00.var_5ED2["default look"]["heads"] = ["zom_fireman_head"];
var_00.var_4C12 = 20;
var_00.var_4C07 = 175000;
var_00.var_60E2 = 90;
var_00.var_2F9B = 1;
var_00.var_907C = "zombie_fireman";
var_00.var_8302 = 80;
var_00.var_8303 = 25;
var_00.parenttype = "zombie_generic";
var_00.suppressive_fire_speed_multiplier = 0.3;
lib_0547::func_A52(var_00,"zombie_fireman");
level.var_9E16["zombie_fireman"] = ::func_9E17;
level.var_7A5D["zombie_fireman"] = ::func_3C08;
lib_0547::func_7BD0("fireman_do_flame",::func_3BF1,::func_3D2B,-1);
level.var_611["zombie_fireman_flamethrower"] = loadfx("vfx/fire/flamethrower_end_med");
level.var_611["zombie_fireman_flamethrower_expensive"] = loadfx("vfx/test/flamethrower_test");
level.var_611["zmb_zmb_fire_torso"] = loadfx("vfx/zombie/zmb_zmb_fire_torso");
level.var_611["zmb_ground_impact_lrg"] = loadfx("vfx/zombie/zmb_ground_impact_lrg");
level.var_611["gasTankExplosion"] = loadfx("vfx/explosion/molotov_cocktail_impact");
level.var_611["fireman_sparks"] = loadfx("vfx/weaponimpact/zmb_fireman_metal_impact_1");
level.var_611["fireman_explosion"] = loadfx("vfx/explosion/zmb_fireman_explosion");
level.var_611["fireman_leak"] = loadfx("vfx/smoke/zmb_fireman_leak");
}
//Function Number: 2
func_3BFB(param_00)
{
if(!isdefined(level.var_3C00))
{
level.var_3C00 = 1;
}
level.var_3BFF = 0;
level.var_3BFE = 0;
level.var_66A6 = randomintrange(14,15);
level.var_3BED = 0;
if(!isdefined(level.var_3BF2))
{
if(isdefined(param_00))
{
level.var_3BF2 = param_00;
}
else
{
level.var_3BF2 = 0;
}
}
thread func_3C10();
}
//Function Number: 3
func_ABA7()
{
self.var_64C2 = 1 * lib_054D::func_4440();
if(isdefined(self.var_28D2))
{
var_00 = isdefined(self.var_5B88) && gettime() - self.var_5B88 > 5000;
if(var_00)
{
return "sprint";
}
return "run";
}
var_01 = lib_053C::func_4F88();
var_02 = undefined;
if(isdefined(var_01) && var_01.size > 0)
{
var_02 = distancesquared(var_01[0].var_116,self.var_116);
}
if(isdefined(var_02) && var_02 > -15536)
{
return "run";
}
return "walk";
}
//Function Number: 4
func_8A1B()
{
self method_85A1("zombie_fireman");
self method_839E("agent");
self.var_11AB = 70 + self.var_14F;
self.var_60F5 = "large";
self.var_60F6 = 200;
self.var_64C2 = 1;
self.var_672D = 1;
self.var_9D0D = 1;
self.var_4013 = 1;
lib_0547::func_86C8(100);
lib_0547::func_86C7(self.var_60F0);
self method_8399(self.var_2BCA);
self.var_60E4 = 0.25;
self.var_3CFA = 3;
self.var_EAD.var_6AFE["melee"] = ::func_3BFD;
self.var_1B5 = 1;
self.var_3CF9 = 1;
self.var_3CFB = 0;
var_00 = 0.08722223;
self method_85E0(1);
self method_85DE(var_00);
self.var_2FA4 = 1;
self.var_3FF1 = maps/mp/gametypes/zombies::func_1E59(lib_0547::func_A51("zombie_fireman"),level.var_A980) / 3;
self.var_3FF2 = self.var_3FF1;
self.var_3FEE = 0;
}
//Function Number: 5
func_ABAB()
{
self endon("death");
level endon("game_ended");
self endon("owner_disconnect");
lib_0566::func_ABB5();
func_8A1B();
thread func_A112();
thread func_A113();
self.var_6816 = 1;
self.var_55AB = 1;
self.var_562B = 1;
self.var_5569 = 1;
self.var_66EC = 1;
self.is_flamethrower_immune = 1;
var_00 = 0.2;
for(;;)
{
wait(var_00);
if(!common_scripts\utility::func_562E(self.var_5580) && !common_scripts\utility::func_562E(self.var_5748))
{
if(lib_053C::func_4F8C())
{
continue;
}
}
if(common_scripts\utility::func_562E(self.var_5580))
{
continue;
}
if(common_scripts\utility::func_562E(self.var_5748))
{
continue;
}
if(!lib_0547::func_4B2C())
{
lib_053C::func_4F9A();
continue;
}
if(func_3BEE())
{
if(func_3BEF())
{
thread lib_0547::func_7D1A("fireman_do_flame",undefined,var_00);
continue;
}
if(func_3BF0())
{
if(!isdefined(self.var_5BC1) || distancesquared(self.var_5BC1,self.var_116) > 256)
{
self.var_60ED = self.var_108;
}
self method_83A1(self.var_28D2);
continue;
}
}
if(lib_053C::func_4F9B(1))
{
continue;
}
if(lib_053C::func_4F9A())
{
continue;
}
lib_053C::func_647();
}
}
//Function Number: 6
func_3BEE()
{
if(self.var_CA)
{
return 0;
}
if(!isdefined(self.var_28D2))
{
return 0;
}
if(self.var_BA4 == "melee" || maps/mp/agents/_scripted_agent_anim_util::func_57E2())
{
return 0;
}
if(!lib_0547::func_4B2C())
{
return 0;
}
if(maps/mp/agents/humanoid/_humanoid::func_A7F8())
{
return 0;
}
if(maps/mp/agents/humanoid/_humanoid::func_2EE6())
{
return 0;
}
return 1;
}
//Function Number: 7
func_3BEF()
{
if(!func_3C0F("flame"))
{
return 0;
}
var_00 = isdefined(self.var_3CFB) && gettime() - self.var_3CFB <= self.var_3CFA * 1000;
if(!self.var_3CF9 || var_00)
{
return 0;
}
if(self.var_3FEE == 1)
{
return 0;
}
return 1;
}
//Function Number: 8
func_3BF0()
{
if(!func_3C0F("melee"))
{
return 0;
}
if(isdefined(self.var_60E4) && isdefined(self.var_5BC0))
{
var_00 = gettime() - self.var_5BC0;
if(var_00 < self.var_60E4 * 1000)
{
return 0;
}
}
return 1;
}
//Function Number: 9
func_3C0F(param_00)
{
if(!isdefined(self.var_28D2))
{
return 0;
}
if(!maps\mp\_utility::func_57A0(self.var_28D2))
{
return 0;
}
if(self.var_BA4 == "traverse")
{
return 0;
}
if(!maps/mp/agents/humanoid/_humanoid_util::func_56DD(self.var_28D2))
{
if(!maps/mp/agents/humanoid/_humanoid::func_5859(self.var_28D2.var_116))
{
return 0;
}
if(param_00 == "flame" && !func_AA4F())
{
return 0;
}
else if(param_00 == "melee" && !func_AA53())
{
return 0;
}
}
if(maps/mp/agents/humanoid/_humanoid_melee::func_5753())
{
return 0;
}
return 1;
}
//Function Number: 10
func_AA4F()
{
return distancesquared(self.var_116,self.var_28D2.var_116) <= squared(250);
}
//Function Number: 11
func_AA53()
{
return distancesquared(self.var_116,self.var_28D2.var_116) <= squared(self.var_60F0);
}
//Function Number: 12
func_56EE()
{
var_00 = self.var_116 + (0,0,self.var_60E1);
var_01 = self.var_28D2.var_116 + (0,0,self.var_60E1);
var_02 = physicstrace(var_00,var_01);
return distancesquared(var_02,var_01) > 1;
}
//Function Number: 13
func_3BF1()
{
self endon("death");
self endon("flame_interrupt");
if(!isdefined(self.var_28D2))
{
return;
}
self.var_28D2 endon("disconnect");
var_00 = maps/mp/agents/humanoid/_humanoid::func_457E(self.var_28D2);
if(func_56EE())
{
return maps/mp/agents/humanoid/_humanoid_melee::func_60E7();
}
var_01 = 0;
var_02 = undefined;
if(var_00.var_A266 && self.var_3CF9)
{
var_03 = maps/mp/agents/humanoid/_humanoid_util::func_1F51(self.var_116,var_00.var_116);
if(var_03)
{
var_01 = 1;
var_02 = var_00.var_116;
}
else
{
var_04 = bullettracepassed(self.var_116 + (0,0,32),self.var_28D2.var_116 + (0,0,32),0,undefined);
if(var_04)
{
var_01 = 1;
var_02 = self.var_116;
}
}
}
if(!var_01)
{
return;
}
self.var_3CFB = gettime();
func_3C01(self.var_28D2,var_02);
}
//Function Number: 14
func_3BFD()
{
self endon("death");
self endon("killanimscript");
self.var_28D2 endon("disconnect");
var_00 = maps/mp/agents/humanoid/_humanoid::func_457E(self.var_28D2);
if(maps/mp/agents/humanoid/_humanoid_melee::func_5753())
{
return maps/mp/agents/humanoid/_humanoid_melee::func_60E7();
}
if(var_00.var_A266 && !func_AA53())
{
maps/mp/agents/humanoid/_humanoid_melee::func_60E7();
return;
}
func_3C02(self.var_28D2,var_00.var_116);
}
//Function Number: 15
func_3C02(param_00,param_01)
{
self endon("death");
var_02 = "attack_stand";
var_03 = 0;
if(isdefined(self.var_60ED))
{
var_02 = "attack_" + self.var_60ED;
var_03 = 1;
self.var_60ED = undefined;
}
var_04 = maps/mp/agents/_scripted_agent_anim_util::func_434D(var_02);
var_05 = 0;
var_06 = 1;
self.var_5BBE = undefined;
self.var_5BBF = undefined;
var_07 = randomint(self method_83DB(var_04));
var_08 = self method_83D8(var_04,var_07);
var_09 = getanimlength(var_08);
var_0A = getnotetracktimes(var_08,"attack");
var_0B = getnotetracktimes(var_08,"end");
var_0A = common_scripts\utility::func_F73(var_0A,var_0B);
var_0C = func_4511(var_09,var_06,var_0A,undefined);
self method_839D("gravity");
if(var_03)
{
self scragentsetorientmode("face enemy");
}
else
{
self scragentsetorientmode("face angle abs",(0,vectortoyaw(param_00.var_116 - self.var_116),0));
}
self method_839C("anim deltas");
maps/mp/agents/_scripted_agent_anim_util::func_8415(var_04,var_07,var_06);
thread func_3C0E(var_04,var_09);
var_0D = undefined;
self method_839A(1,1);
maps/mp/agents/_scripted_agent_anim_util::func_8732(1,"DoAttack");
childthread func_A137(param_00,var_08,var_09,var_06,var_0A);
wait(var_0C);
self notify("cancel_updatelerppos");
self method_839C("anim deltas");
self method_839A(1,1);
self.var_5BC1 = self.var_116;
var_0E = var_09 / var_06 - var_0C;
if(var_0E > 0)
{
maps/mp/agents/_scripted_agent_anim_util::func_A79F("attack_anim","end",var_0E);
}
self notify("cancel_updatelerppos");
self method_839C("anim deltas");
self method_839A(1,1);
}
//Function Number: 16
func_3C01(param_00,param_01)
{
self.var_5580 = 1;
self scragentsetscripted(1);
self endon("killanimscript");
self endon("death");
var_02 = common_scripts\utility::func_7A33(["s2_fireman_attack_flamethrower_stand","s2_fireman_attack_flamethrower_walk"]);
var_03 = 1;
var_04 = 1;
self.var_5BBE = undefined;
self.var_5BBF = undefined;
var_05 = randomint(self method_83DB(var_02));
var_06 = self method_83D8(var_02,var_05);
var_07 = getanimlength(var_06);
self method_839D("gravity");
if(var_03)
{
self scragentsetorientmode("face enemy");
}
else
{
self scragentsetorientmode("face angle abs",(0,vectortoyaw(param_00.var_116 - self.var_116),0));
}
self method_839C("anim deltas");
maps/mp/agents/_scripted_agent_anim_util::func_8415(var_02,var_05,var_04);
func_3D2A();
}
//Function Number: 17
func_3C0E(param_00,param_01)
{
maps\mp\_utility::func_A6D1(param_01,"killanimscript");
self.var_5BC0 = gettime();
maps/mp/agents/_scripted_agent_anim_util::func_8732(0,"DoAttack");
}
//Function Number: 18
func_4511(param_00,param_01,param_02,param_03)
{
if(!isdefined(param_02) || param_02.size == 0)
{
return param_03;
}
var_04 = param_00 / param_01 * param_02[0];
if(isdefined(param_03) && param_03 < var_04)
{
return param_03;
}
return var_04;
}
//Function Number: 19
func_A136(param_00,param_01,param_02,param_03)
{
self endon("killanimscript");
self endon("death");
self endon("cancel_updatelerppos");
param_00 endon("disconnect");
param_00 endon("death");
var_04 = self.var_116;
var_05 = param_01;
var_06 = 0.05;
for(;;)
{
wait(var_06);
var_05 = var_05 - var_06;
if(var_05 <= 0)
{
break;
}
var_07 = maps/mp/agents/humanoid/_humanoid_melee::func_4707(param_00,param_02);
if(!isdefined(var_07))
{
break;
}
if(isdefined(param_03))
{
var_08 = param_03;
var_09 = var_07 - var_04;
if(lengthsquared(var_09) > var_08 * var_08)
{
var_07 = var_04 + vectornormalize(var_09) * var_08;
}
}
self scragentsetorientmode("face enemy");
self method_83A4(self.var_116,var_07,var_05);
}
}
//Function Number: 20
func_3D2A()
{
self endon("death");
self method_839A(1,1);
maps/mp/agents/_scripted_agent_anim_util::func_8732(1,"DoFiremanFlameAttack");
lib_0378::func_8D74("flamethrower_start","tag_flamethrower_fx");
thread func_3D29();
var_00 = gettime();
self.var_7ACF = 0;
while(gettime() - var_00 < 2000)
{
var_01 = common_scripts\utility::func_F73(lib_0547::func_408F(),level.var_744A);
foreach(var_09 in var_01)
{
wait 0.05;
if(!isalive(self) || !isalive(var_09))
{
continue;
}
if(func_5625(var_09))
{
if(var_09.var_1A7 == self.var_1A7)
{
if(var_09.var_A4B != "zombie_fireman")
{
var_09 setonfire(0,10,1,"none",1);
var_09 dodamage(5,var_09 geteye(),undefined,undefined,"MOD_ENERGY");
var_0A = 10;
var_09 lib_0378::func_8D74("zombie_ignite",var_0A);
}
continue;
}
var_0B = 1;
if(should_longburn(var_09))
{
var_0B = 5;
}
if(var_0B == 1)
{
do_fireman_player_unit_damage(var_09);
}
else
{
thread prolonged_damage(var_09,var_0B);
}
}
}
wait 0.05;
}
thread func_3D31();
}
//Function Number: 21
should_longburn(param_00)
{
return (common_scripts\utility::func_562E(self.isuberfireman) || common_scripts\utility::func_562E(self.isfireassassin)) && !common_scripts\utility::func_562E(param_00.islongburning);
}
//Function Number: 22
do_fireman_player_unit_damage(param_00)
{
param_00 dodamage(15,param_00 geteye(),self,undefined,"MOD_ENERGY");
if(!isdefined(self.var_7ACF))
{
self.var_7ACF = 0;
}
self.var_7ACF = self.var_7ACF + 15;
}
//Function Number: 23
prolonged_damage(param_00,param_01)
{
self endon("death");
param_00 endon("disconnect");
param_00.islongburning = 1;
for(var_02 = 0;var_02 < param_01;var_02++)
{
do_fireman_player_unit_damage(param_00);
wait(0.7);
}
param_00.islongburning = 0;
}
//Function Number: 24
func_3D29()
{
var_00 = spawn("script_model",self gettagorigin("tag_flamethrower_fx") + (600,0,0));
var_00 setmodel("tag_origin");
var_00 linkto(self,"tag_flamethrower_fx");
var_01 = launchbeam("zmb_brenner_flamethrower_beam",self,"tag_flamethrower_fx",var_00,"tag_origin");
self waittill("cancel_updatelerppos");
var_01 delete();
var_00 delete();
}
//Function Number: 25
func_3D31()
{
self endon("death");
self.var_5580 = 0;
self.var_3CFB = gettime();
self scragentsetscripted(0);
self notify("cancel_updatelerppos");
self method_839C("anim deltas");
self method_839A(1,1);
maps/mp/agents/_scripted_agent_anim_util::func_8732(0,"DoFiremanFlameAttack");
self.var_5BC1 = self.var_116;
self.var_5B9B = self.var_116;
self.var_3CF9 = 0;
lib_0378::func_8D74("flamethrower_stop","tag_flamethrower_fx");
}
//Function Number: 26
func_3D2B()
{
func_3D31();
}
//Function Number: 27
func_5625(param_00)
{
var_01 = 250;
var_02 = squared(var_01 + 100);
var_03 = squared(50);
var_04 = self geteye();
var_05 = self getangles();
var_06 = anglestoforward(var_05);
var_07 = var_04 + var_06 * 50;
var_08 = var_07 + var_06 * var_01;
if(distance2dsquared(self.var_116,param_00.var_116) > var_02)
{
return 0;
}
var_09 = param_00.var_116 - var_04 * (1,1,0);
if(vectordot(var_09,var_06 * (1,1,0)) < 0.866)
{
return 0;
}
var_0A = func_7540(param_00 geteye(),var_07,var_08);
var_0B = func_7540(param_00 gettagorigin("J_Spine4"),var_07,var_08);
var_0C = min(var_0A,var_0B);
if(var_0C > var_03)
{
return 0;
}
return 1;
}
//Function Number: 28
func_7540(param_00,param_01,param_02)
{
var_03 = lengthsquared(param_02 - param_01);
if(var_03 == 0)
{
return lengthsquared(param_01 - param_00);
}
var_04 = vectordot(param_00 - param_01,param_02 - param_01) / var_03;
if(var_04 < 0)
{
return lengthsquared(param_00 - param_01);
}
else if(var_04 > 1)
{
return lengthsquared(param_00 - param_02);
}
var_05 = param_01 + var_04 * param_02 - param_01;
var_06 = lengthsquared(param_00 - var_05);
return var_06;
}
//Function Number: 29
func_A137(param_00,param_01,param_02,param_03,param_04)
{
self endon("death");
level endon("game_ended");
if(param_04.size == 0)
{
return;
}
if(common_scripts\utility::func_627D(param_04.size,2) != 0)
{
}
var_05 = param_02 / param_03 * param_04[0];
var_06 = param_02 / param_03 * param_04[1];
var_07 = 0;
var_08 = 0.05;
self.var_4DE5 = [];
wait(var_05);
var_09 = var_06 - var_05;
while(var_07 <= var_09)
{
wait(var_08);
var_07 = var_07 + var_08;
func_21CD(param_00);
}
}
//Function Number: 30
func_21CD(param_00)
{
var_01 = self gettagorigin("TAG_WEAPON_LEFT");
var_02 = var_01 - self.var_116 * (1,1,0);
var_03 = length(var_02);
foreach(var_05 in level.var_6E97)
{
if(!isdefined(var_05))
{
continue;
}
if(lib_0547::func_577E(var_05))
{
continue;
}
if(isalliedsentient(var_05,self))
{
continue;
}
func_21CE(var_05,var_01,var_02,var_03,self.var_60E2);
}
if(isdefined(param_00) && isdefined(param_00.var_56ED) && param_00.var_56ED)
{
func_21CE(param_00,var_01,var_02,var_03,param_00.var_FB / 2);
}
}
//Function Number: 31
func_21CE(param_00,param_01,param_02,param_03,param_04)
{
if(common_scripts\utility::func_F79(self.var_4DE5,param_00))
{
return;
}
if(!func_21CC(param_00,param_01[2]))
{
return;
}
var_05 = param_00.var_116 - self.var_116 * (1,1,0);
var_06 = length(var_05);
if(var_06 > param_03 + 40)
{
return;
}
if(vectordot(var_05,param_02) < 0.707)
{
return;
}
self notify("attack_hit",param_00,self.var_116);
maps/mp/agents/humanoid/_humanoid_melee::func_3210(param_00,param_04,"MOD_IMPACT");
self.var_4DE5[self.var_4DE5.size] = param_00;
}
//Function Number: 32
func_21CC(param_00,param_01)
{
var_02 = self.var_116[2] + 80;
var_03 = max(var_02,param_01);
var_04 = self.var_116[2];
var_05 = param_00 geteye()[2];
var_06 = param_00.var_116[2];
if(var_05 >= var_04 && var_05 <= var_03)
{
return 1;
}
if(var_06 >= var_04 && var_06 <= var_03)
{
return 1;
}
return 0;
}
//Function Number: 33
func_A112()
{
self endon("death");
level endon("game_ended");
var_00 = 0.05;
for(;;)
{
wait(var_00);
if(!isdefined(self.var_5B9B) || !isdefined(self.var_28D2))
{
continue;
}
var_01 = maps/mp/agents/humanoid/_humanoid::func_457E(self.var_28D2);
if(!isdefined(var_01.var_116))
{
continue;
}
var_02 = length(var_01.var_116 - self.var_5B9B);
if(var_02 < 100)
{
continue;
}
self.var_3CF9 = 1;
}
}
//Function Number: 34
func_A113()
{
self endon("death");
level endon("game_ended");
var_00 = 0.05;
for(;;)
{
wait(var_00);
var_01 = undefined;
var_02 = -1;
var_03 = [];
foreach(var_05 in level.var_6E97)
{
wait 0.05;
var_06 = func_1E49(var_05);
if(var_06 < 0)
{
continue;
}
var_03[var_03.size] = var_05;
}
self.var_9992 = var_03;
}
}
//Function Number: 35
func_1E49(param_00)
{
var_01 = 0;
var_02[0] = ::func_388D;
var_02[1] = ::func_388B;
var_02[2] = ::func_3889;
var_02[3] = ::func_388A;
for(var_03 = 0;var_03 < var_02.size;var_03++)
{
var_04 = self [[ var_02[var_03] ]](param_00);
if(var_04 < 0)
{
return -1;
}
var_01 = var_01 + var_04;
}
return var_01 / var_02.size;
}
//Function Number: 36
func_388D(param_00)
{
if(!isdefined(param_00) || !isalive(param_00))
{
return -1;
}
if(isdefined(param_00.var_CE) && param_00.var_CE == 1)
{
return -1;
}
if(param_00 method_8541())
{
return -1;
}
if(isalliedsentient(param_00,self))
{
return -1;
}
if(lib_0547::func_8B95(param_00))
{
return -1;
}
if(lib_0547::func_577D(param_00))
{
return -1;
}
return 1;
}
//Function Number: 37
func_3889(param_00)
{
if(!param_00 method_83B8() && distance2dsquared(self.var_116,param_00.var_116) < 250000)
{
return -1;
}
return 1;
}
//Function Number: 38
func_388C(param_00)
{
var_01 = length(param_00.var_116 - self.var_116);
var_02 = max(1 - var_01 / 1500,0);
return var_02;
}
//Function Number: 39
func_388A(param_00)
{
if(func_9B84(self geteye() + (0,0,45),param_00,undefined))
{
return 1;
}
return -1;
}
//Function Number: 40
func_9B84(param_00,param_01,param_02)
{
var_03 = bullettrace(param_00,param_01 geteye(),0,undefined,0,0,0,0,0);
return var_03["fraction"] == 1;
}
//Function Number: 41
func_388B(param_00)
{
if(!isdefined(self.var_28D2))
{
return 1;
}
if(self.var_28D2 == param_00 && lengthsquared(param_00.var_116 - self.var_116) < squared(250))
{
return -1;
}
return 1;
}
//Function Number: 42
func_9E17(param_00,param_01,param_02,param_03)
{
if(gettime() - param_00.var_9A18 >= 50)
{
param_00.var_116 = maps/mp/agents/humanoid/_humanoid_util::func_60F4(param_01,param_00.var_686A,param_02);
param_00.var_116 = maps/mp/agents/humanoid/_humanoid_util::func_34AB(param_00.var_116,15,55);
param_00.var_9A18 = gettime();
if(isdefined(param_00.var_116))
{
var_04 = self.var_60E1;
var_05 = param_00.var_116 + (0,0,var_04);
var_06 = param_01 + (0,0,var_04);
var_07 = physicstrace(var_05,var_06);
if(distancesquared(var_07,var_06) > 1)
{
param_00.var_116 = undefined;
return;
}
}
}
}
//Function Number: 43
func_ABA9(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
var_09 = "unknown kill method";
if(isdefined(param_01))
{
var_09 = common_scripts\utility::func_98E7(isplayer(param_01),param_01.var_109,"") + " killed fireman";
var_0A = lib_0541::func_5E60("head");
lib_0541::func_65D0(self.var_6250 | var_0A,1,1,(0,0,1),0);
}
var_0B = self gettagorigin("j_head");
level notify("fireman_killed");
if(common_scripts\utility::func_562E(level.var_3BF2))
{
level thread lib_057E::func_8FA7(var_0B,var_09);
}
lib_054D::func_6BD4(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 44
func_3C10()
{
level waittill("zombie_wave_started");
for(;;)
{
while(level.var_A980 < level.var_66A6)
{
level waittill("zombie_wave_started");
}
if(level.var_7F2A == "zombie_dog")
{
level.var_66A6++;
}
else if(level.var_3C00)
{
func_3C13();
}
level waittill("zombie_wave_ended");
}
}
//Function Number: 45
func_3C13()
{
var_00 = func_3C12();
wait(5);
while(var_00 > 0)
{
func_3C14();
var_02 = func_3C11(1);
if(isdefined(var_02))
{
var_00--;
}
if(var_00 > 0)
{
wait(randomfloatrange(5,10));
}
}
var_03 = 5;
var_04 = 7;
if(isdefined(level.fireman_round_min))
{
var_03 = level.fireman_round_min;
}
if(isdefined(level.fireman_round_max))
{
var_04 = level.fireman_round_max;
}
if(var_03 == var_04)
{
level.var_66A6 = level.var_A980 + var_03;
}
else
{
level.var_66A6 = level.var_A980 + randomintrange(var_03,var_04);
}
level.var_3BFE++;
}
//Function Number: 46
func_3C14()
{
lib_056D::func_A78F();
}
//Function Number: 47
func_3C12()
{
level.var_3BFF++;
if(level.var_744A.size == 1)
{
return 1;
}
if(level.var_3BFF == 1 || level.var_3BFF == 2)
{
return 1;
}
if(level.var_3BFF == 3 || level.var_3BFF == 4)
{
return 2;
}
return 3;
}
//Function Number: 48
func_3C11(param_00,param_01,param_02)
{
if(!isdefined(param_01))
{
param_01 = lib_054D::func_4696("zombie_fireman",1,0);
}
if(!isdefined(param_01))
{
return undefined;
}
var_03 = 0;
if(lib_0547::func_5565(param_01.var_165,"zombie_sky_spawner") || lib_0547::func_5565(param_01.var_8109,"scripted_fire_spawn_drop"))
{
var_03 = 1;
}
if(!isdefined(param_02))
{
param_02 = 1;
}
var_04 = 1;
var_05 = lib_054D::func_90BA("zombie_fireman",param_01,"fireman",param_02,var_04,0,undefined,0);
if(!isdefined(var_05))
{
return undefined;
}
if(var_03)
{
var_05 thread func_3C0D(param_01.var_116);
}
var_05.var_BC = func_3C04(var_05.var_BC);
if(var_05.var_BC < var_05.var_FB)
{
var_05.var_FB = var_05.var_BC;
}
level notify("spawned_fireman");
if(isdefined(var_05))
{
var_05.var_C29 = 0;
var_05 thread func_3C06();
}
if(!common_scripts\utility::func_562E(param_00))
{
level.var_66A6 = level.var_A980 + randomintrange(5,7);
}
return var_05;
}
//Function Number: 49
func_3C0D(param_00)
{
self endon("death");
var_01 = 2304;
var_02 = 10000;
var_03 = 9216;
var_04 = 2250000;
maps/mp/agents/_scripted_agent_anim_util::func_A79F("scripted_anim","land",2);
playfx(level.var_611["zmb_ground_impact_lrg"],param_00 + (0,0,-12));
var_05 = lib_0547::func_408F();
foreach(var_07 in var_05)
{
if(var_07 == self)
{
continue;
}
var_08 = distancesquared(var_07.var_116,param_00);
if(var_08 <= var_02)
{
if(var_07.var_A4B == "zombie_generic" || var_07.var_A4B == "zombie_berserker")
{
var_07 suicide();
}
}
}
foreach(var_0B in level.var_744A)
{
var_08 = distancesquared(var_0B.var_116,param_00);
if(var_08 <= var_01)
{
var_0B dodamage(100,param_00,self,self);
}
var_0C = var_04 - var_08 / var_04;
if(var_0C <= 0 || var_0C >= 1)
{
return;
}
var_0D = var_0C * 0.15;
earthquake(var_0D,0.1,param_00,1500);
var_0B playrumbleonentity("damage_heavy");
}
}
//Function Number: 50
func_3C06()
{
level.var_3BED++;
thread func_3C05();
self waittill("death");
thread func_3C07();
level.var_3BED--;
level notify("fireman_total_update");
}
//Function Number: 51
func_3C05()
{
self waittill("actor_corpse",var_00);
wait(60);
if(isdefined(var_00))
{
var_00 delete();
}
}
//Function Number: 52
func_3C07()
{
}
//Function Number: 53
func_3C04(param_00)
{
var_01 = 1;
switch(level.var_744A.size)
{
case 1:
case 0:
var_01 = 1;
break;
case 2:
var_01 = 1.5;
break;
case 3:
var_01 = 2;
break;
case 4:
var_01 = 2.5;
break;
}
return func_3C03(param_00,175000,var_01);
}
//Function Number: 54
func_3C03(param_00,param_01,param_02)
{
if(param_00 >= param_01 * param_02)
{
param_00 = int(param_01 * param_02);
}
return param_00;
}
//Function Number: 55
func_3C08()
{
var_00 = [];
foreach(var_02 in level.var_AC4F)
{
var_03 = 0;
if(isdefined(var_02.var_8260))
{
var_04 = strtok(var_02.var_8260," ,");
foreach(var_06 in var_04)
{
if(var_06 == "zombie_fireman")
{
var_03 = 1;
}
}
}
if(level.var_AC80.var_ACB3[var_02.var_AC8A].var_556E && var_03)
{
var_00[var_00.size] = var_02;
}
}
return common_scripts\utility::func_7A33(var_00);
}
//Function Number: 56
func_ABAA()
{
return 0.28;
}
//Function Number: 57
func_ABA8(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A)
{
if(isdefined(level.zmb_boss_damage_reduction_func))
{
param_02 = [[ level.zmb_boss_damage_reduction_func ]](param_05,param_02,param_04);
}
if(param_0A == "j_backpack" && self.var_3FEE == 0 && isalive(self))
{
self.var_3FF1 = self.var_3FF1 - param_02;
if(!common_scripts\utility::func_562E(self.godtank))
{
param_02 = 1;
thread func_3FF3(param_06);
}
if(!common_scripts\utility::func_562E(self.godtank) && self.var_3FF1 <= 0)
{
thread func_3FEF(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A);
}
}
if(param_0A != "j_backpack" && self.var_3FEE == 0 && !issubstr(param_05,"fliegerfaust") && !issubstr(param_05,"tesla") && !issubstr(param_05,"razergun") && param_05 != "bazooka_zm" && param_05 != "panzerschreck_zm" && param_05 != "raven_sword_zm")
{
param_02 = param_02 * 0.5;
}
if(param_0A == "j_backpack" && self.var_3FEE == 1)
{
param_02 = 0;
if(!isdefined(self.lastsparkfxtime) || self.lastsparkfxtime != gettime())
{
playfx(common_scripts\utility::func_44F5("fireman_sparks"),param_06);
self.lastsparkfxtime = gettime();
}
}
lib_054D::func_6BD1(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A);
}
//Function Number: 58
func_3FEF(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A)
{
waittillframeend;
if(isalive(self))
{
lib_0380::func_2889("zmb_fireman_gas_tank_destroyed",undefined,self.var_116);
self.var_3FEE = 1;
thread func_3FF0(param_06);
self setonfire(0.01 * self.var_FB,1.5,20,"none",1,self,param_05);
self dodamage(self.var_3FF2,self.var_116,param_01,param_00,"MOD_EXPLOSIVE",param_05);
if(isdefined(level.zmb_events_player_destoyed_brenner_gas_tank))
{
param_01 thread [[ level.zmb_events_player_destoyed_brenner_gas_tank ]]();
}
}
}
//Function Number: 59
func_3FF3(param_00)
{
if(randomint(100) >= 80)
{
playfxontag(common_scripts\utility::func_44F5("fireman_leak"),self,"TAG_STOWED_BACK");
}
}
//Function Number: 60
func_3FF0(param_00)
{
playfxontag(common_scripts\utility::func_44F5("fireman_explosion"),self,"TAG_STOWED_BACK");
}
//Function Number: 61
func_ABA6(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
if(!common_scripts\utility::func_562E(self.var_3FEE) && param_09 == "j_backpack")
{
return 1;
}
return lib_054D::func_5714(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09);
}
//Function Number: 62
zombie_fireman_tesla_delayed_dmg(param_00,param_01,param_02)
{
if(common_scripts\utility::func_562E(param_01))
{
param_00 = maps/mp/gametypes/zombies::func_1E59();
}
if(isdefined(param_02))
{
param_00 = param_02;
}
return param_00;
}