/******************************************************************* * Decompiled By: Bog * Decompiled File: 1338.gsc * Game: Call of Duty: WWII * Platform: PC * Function Count: 31 * Decompile Time: 26 ms * Timestamp: 10/27/2023 3:25:25 AM *******************************************************************/ //Function Number: 1 func_00D5() { lib_0547::func_7BD0("stunning_burst",::func_AC63,::func_AC65,4.25); lib_0547::func_7BD0("mini_stunning_burst",::mini_stunning_burst_state_run,::mini_stunning_burst_state_interrupt,4.24999,::mini_stunning_burst_state_finish); level.var_611["stunning_burst_aoe"] = loadfx("vfx/zombie/abilities_perks/zmb_blood_stun_burst_aoe"); level.var_611["stunning_burst_aoe_mega"] = loadfx("vfx/zombie/abilities_perks/zmb_blood_breathing_room"); level.var_611["stunning_burst"] = loadfx("vfx/zombie/abilities_perks/zmb_blood_zmb_stun"); level.var_611["stunning_burst_sz"] = loadfx("vfx/zombie/abilities_perks/zmb_moon_zmb_stun"); level.var_611["stunning_burst_sustain"] = loadfx("vfx/zombie/abilities_perks/zmb_blood_sustain_zone"); level.var_611["stunning_burst_sustain_br"] = loadfx("vfx/zombie/abilities_perks/zmb_blood_sustain_zone_br"); level.var_611["zmb_blood_player_heal"] = loadfx("vfx/zombie/abilities_perks/zmb_blood_player_heal"); } //Function Number: 2 func_3662() { if(!common_scripts\utility::func_3798("stunning_burst_active")) { common_scripts\utility::func_3799("stunning_burst_active"); } common_scripts\utility::func_379A("stunning_burst_active"); maps\mp\zombies\_zombies_roles::func_6AB2("role_ability_stunning_burst_zm"); var_00 = lib_0547::func_408F(); var_01 = []; var_02 = self.var_116; var_03 = 0; var_04 = 518400; if(common_scripts\utility::func_562E(lib_0547::func_4BA7("specialty_class_breathing_room_zm")) && !common_scripts\utility::func_562E(lib_0547::func_4BA7("specialty_class_sustain_zone_zm"))) { playfx(common_scripts\utility::func_44F5("stunning_burst_aoe_mega"),var_02 + (0,0,var_03)); lib_0378::func_8D74("aud_stunning_burst_use"); var_04 = var_04 * 2.25; } else if(!common_scripts\utility::func_562E(lib_0547::func_4BA7("specialty_class_breathing_room_zm")) && common_scripts\utility::func_562E(lib_0547::func_4BA7("specialty_class_sustain_zone_zm"))) { playfx(common_scripts\utility::func_44F5("stunning_burst_aoe"),var_02 + (0,0,var_03)); lib_0378::func_8D74("aud_stunning_burst_use"); thread sustain_zone_fx(level.var_611["stunning_burst_sustain"],var_02 + (0,0,var_03)); var_04 = var_04 * 0.25; } else if(common_scripts\utility::func_562E(lib_0547::func_4BA7("specialty_class_breathing_room_zm")) && common_scripts\utility::func_562E(lib_0547::func_4BA7("specialty_class_sustain_zone_zm"))) { playfx(common_scripts\utility::func_44F5("stunning_burst_aoe_mega"),var_02 + (0,0,var_03)); lib_0378::func_8D74("aud_stunning_burst_use"); thread sustain_zone_fx(level.var_611["stunning_burst_sustain_br"],var_02 + (0,0,var_03)); } else { playfx(common_scripts\utility::func_44F5("stunning_burst_aoe"),var_02 + (0,0,var_03)); lib_0378::func_8D74("aud_stunning_burst_use"); } foreach(var_06 in var_00) { if(distancesquared(self.var_116,var_06.var_116) < var_04) { var_01[var_01.size] = var_06; } } var_01 = function_01AC(var_01,var_02); var_08 = 0; if(isdefined(level.zmb_events_player_zombie_shellshock_stun)) { self thread [[ level.zmb_events_player_zombie_shellshock_stun ]](var_01.size); } foreach(var_06 in var_01) { thread func_94C0(var_06,var_02,var_08); var_08 = var_08 + 0.05; } var_0B = []; foreach(var_0D in level.var_744A) { if(var_0D != self && maps\mp\_utility::func_57A0(var_0D)) { var_0B[var_0B.size] = var_0D; } } foreach(var_11, var_10 in var_0B) { if(distancesquared(self.var_116,var_10.var_116) < var_04 && abs(self.var_116[2] - var_10.var_116[2]) < 90) { thread func_0A31(var_10); } } if(lib_0547::func_4BA7("specialty_class_sustain_zone_zm")) { thread func_9529(var_04); } } //Function Number: 3 sustain_zone_fx(param_00,param_01) { self endon("death"); self endon("disconnect"); self endon("DisabledRoleAbility"); for(;;) { playfx(param_00,param_01); wait(1); } } //Function Number: 4 func_2F9E() { if(common_scripts\utility::func_3798("stunning_burst_active")) { common_scripts\utility::func_3796("stunning_burst_active"); } } //Function Number: 5 func_0A31(param_00) { if(lib_0547::func_4BA7("specialty_class_on_your_feet_zm")) { if(isplayer(param_00) && lib_0547::func_577E(param_00)) { param_00 lib_0553::func_53E2(self); playfx(level.var_611["zmb_blood_player_heal"],param_00.var_116,anglestoforward(param_00.var_1D)); param_00 luinotifyeventextraplayer(&"add_teammate_mod_buffs",3,"specialty_class_on_your_feet_zm",1,self); } } if(lib_0547::func_4BA7("specialty_class_bolster_morale_zm")) { if(isplayer(param_00) && param_00 lib_0547::func_73E9() < param_00 lib_0547::playergetmaxarmorcount()) { param_00 lib_0547::func_73AC(1); param_00 luinotifyeventextraplayer(&"add_teammate_mod_buffs",3,"specialty_class_bolster_morale_zm",1,self); } } } //Function Number: 6 func_94C0(param_00,param_01,param_02) { if(!isdefined(param_00.var_94B4)) { param_00.var_94B4 = []; } param_00.var_94B4[param_00.var_94B4.size] = self; var_03 = param_00 common_scripts\utility::func_A74D("death",param_02); if(!isdefined(var_03) || isdefined(var_03) && var_03 != "timeout") { return; } param_00.var_94B4 = common_scripts\utility::func_F93(param_00.var_94B4,self); var_04 = maps/mp/gametypes/zombies::func_1E59(lib_0547::func_A51("zombie_generic"),level.var_A980); param_00 dodamage(var_04 * 0.125,param_01,self,self,"MOD_ENERGY","dot_generic_zm"); if(!isalive(param_00)) { return; } param_00 func_AC56(self,1); param_00.stunnedbybursttime = gettime(); var_05 = "stunning_burst"; param_00 thread play_shock_fx(var_05,"J_Spine4",self,0.35); param_00 lib_0378::func_8D74("aud_stun_zombies_strt"); param_00 notify("is_tower_battle_distracted"); if(lib_0547::func_4BA7("specialty_class_fiery_burst_zm")) { param_00 setonfire(0.03 * var_04,1.5,20,"none",1,self,"dot_generic_zm"); } param_00 thread lib_0547::func_7D1A("stunning_burst",[param_01,self],undefined,[self,"stunning_burst_active",self,"disconnect",self,"death"]); common_scripts\utility::func_A70C(self,"stunning_burst_active",param_00,"death"); param_00 lib_0378::func_8D74("aud_stun_zombies_end"); param_00 func_AC56(self,0); } //Function Number: 7 play_shock_fx(param_00,param_01,param_02,param_03) { self notify("play_shock_fx"); param_02 endon("stunning_burst_active"); param_02 endon("disconnect"); self endon("death"); self endon("play_shock_fx"); for(;;) { var_04 = gettime() / 1000; if(isdefined(self.recentshockfxtime) && var_04 - self.recentshockfxtime < param_03) { wait(param_03 - var_04 - self.recentshockfxtime); } playfxontag(common_scripts\utility::func_44F5(param_00),self,param_01); self.recentshockfxtime = var_04; wait(param_03); } } //Function Number: 8 func_AC56(param_00,param_01,param_02) { if(!isdefined(self.var_94BD)) { self.var_94BD = []; } if(common_scripts\utility::func_562E(param_01)) { self.var_94BD = common_scripts\utility::func_F6F(self.var_94BD,param_00); if(self.var_94BD.size == 1) { self notify("stun_burst"); return; } return; } self.var_94BD = common_scripts\utility::func_F93(self.var_94BD,param_00); if(self.var_94BD.size == 0) { self notify("stun_burst_expired"); } } //Function Number: 9 func_AC2A() { var_00 = self; if(isdefined(var_00.var_94BD) && var_00.var_94BD.size > 0) { return 1; } if(var_00 mini_stunning_burst_affected()) { return 1; } return 0; } //Function Number: 10 func_AC2B(param_00) { return isdefined(self.var_94BD) && common_scripts\utility::func_F79(self.var_94BD,param_00); } //Function Number: 11 zombiecanbestunknockedback() { if(maps/mp/agents/humanoid/_humanoid_util::func_56BC()) { return 0; } if(isdefined(self.stunnedbybursttime) && gettime() > self.stunnedbybursttime + 1000) { return 0; } return 1; } //Function Number: 12 zombiestunknockbackanim(param_00,param_01) { var_02 = undefined; self.var_561D = 1; var_03 = maps/mp/agents/humanoid/_humanoid_util::func_29CB(param_00); var_04 = angleclamp180(var_03 - self.var_1D[1]); if(abs(var_04) < 45) { var_02 = "pain_knockback_front"; } else if(abs(var_04) > 135) { var_02 = "pain_knockback_back"; } else if(var_04 > 0) { var_02 = "pain_knockback_right"; } else { var_02 = "pain_knockback_left"; } var_05 = maps/mp/agents/_scripted_agent_anim_util::func_434D(var_02); var_06 = self method_83DB(var_05); var_07 = randomint(var_06); self method_839C("anim deltas"); self scragentsetorientmode("face angle abs",self.var_1D); if(isplayer(param_01) && param_01 lib_0547::func_4BA7("specialty_class_breathing_room_zm")) { self method_839A(2,1); } if(self.var_A4B == "zombie_fireman") { var_05 = maps/mp/agents/_scripted_agent_anim_util::func_434D("scripted_fire_stun_burst"); maps/mp/agents/_scripted_agent_anim_util::func_71FA(var_05,randomint(2),1,"stun_anim"); maps/mp/agents/_scripted_agent_anim_util::func_71FA(var_05,2,1,"stun_anim"); self method_839A(1,1); return; } if(self.var_A4B == "zombie_assassin") { var_05 = maps/mp/agents/_scripted_agent_anim_util::func_434D("scripted_asn_stun_burst"); maps/mp/agents/_scripted_agent_anim_util::func_71FA(var_05,0,1,"stun_anim"); self.assassinmuststopattackingandleave = 1; return; } maps/mp/agents/_scripted_agent_anim_util::func_71FA(var_05,var_07,1,"stun_anim"); self method_839A(1,1); } //Function Number: 13 zombiecanbestunheld() { if(common_scripts\utility::func_F79(["zombie_fireman","zombie_assassin"],self.var_A4B)) { return 0; } return 1; } //Function Number: 14 func_AC63(param_00,param_01,param_02) { if(common_scripts\utility::func_562E(self.var_57E8)) { return; } self scragentsetscripted(1); maps/mp/agents/_scripted_agent_anim_util::func_8732(1,"stunning_burst"); if(!common_scripts\utility::func_562E(param_02) && zombiecanbestunknockedback()) { zombiestunknockbackanim(param_00,param_01); } if(zombiecanbestunheld()) { func_AC62(param_01); } func_AC64(); } //Function Number: 15 func_AC62(param_00) { if(isplayer(param_00) && !param_00 common_scripts\utility::func_3794("stunning_burst_active")) { return; } param_00 endon("stunning_burst_active"); var_01 = undefined; var_02 = maps/mp/agents/_scripted_agent_anim_util::func_434D("stun_hold"); var_03 = self method_83DB(var_02); for(;;) { if(self.var_A4B == "zombie_exploder") { if(common_scripts\utility::func_562E(self.var_392C)) { var_01 = 0; } else { var_01 = 1; } } if(isdefined(var_01)) { var_04 = var_01; } else { var_04 = randomint(var_03); } self method_839C("anim deltas"); self scragentsetorientmode("face angle abs",self.var_1D); maps/mp/agents/_scripted_agent_anim_util::func_71FA(var_02,var_04,1,"stun_anim"); } } //Function Number: 16 func_AC64() { self.var_561D = 0; self notify("stunning_burst_end"); self scragentsetscripted(0); maps/mp/agents/_scripted_agent_anim_util::func_8732(0,"stunning_burst"); } //Function Number: 17 func_AC65(param_00,param_01,param_02) { func_AC64(); thread zombiestunstaterestart(param_00,param_01); } //Function Number: 18 zombiestunstaterestart(param_00,param_01) { self endon("death"); param_01 endon("disconnect"); param_01 endon("death"); param_01 endon("stunning_burst_active"); thread lib_0547::func_7D1A("stunning_burst",[param_00,param_01,1],undefined,[param_01,"stunning_burst_active",param_01,"disconnect",param_01,"death"]); } //Function Number: 19 func_62A6(param_00) { var_01 = 1; if(func_AC2A() && isdefined(self.var_94BD)) { foreach(var_03 in self.var_94BD) { var_04 = 1; if(isplayer(var_03) && var_03 lib_0547::func_4BA7("specialty_class_exploit_weakness_zm") && !common_scripts\utility::func_562E(self.shortstun)) { var_04 = 3; } if(var_04 > var_01) { var_01 = var_04; } } } param_00 = param_00 * var_01; return param_00; } //Function Number: 20 func_9529(param_00) { var_01 = self geteye(); var_02 = self getorigin(); if(lib_0547::func_4BA7("specialty_class_breathing_room_zm")) { var_03 = "stunning_burst_sustain_br"; } else { var_03 = "stunning_burst_sustain"; } var_04 = spawnfx(common_scripts\utility::func_44F5(var_03),var_02); triggerfx(var_04); thread func_952A(var_01,param_00); common_scripts\utility::func_A70C(self,"disconnect",self,"stunning_burst_active"); var_04 delete(); self notify("sustain_zone_complete"); } //Function Number: 21 func_4B9B(param_00) { return isdefined(param_00.var_94B4) && common_scripts\utility::func_F79(param_00.var_94B4,self); } //Function Number: 22 func_952A(param_00,param_01) { self endon("sustain_zone_complete"); for(;;) { var_02 = lib_0547::func_408F(); var_03 = 0; foreach(var_05 in var_02) { if(isalive(var_05) && !func_4B9B(var_05) && !var_05 func_AC2B(self)) { if(distancesquared(param_00,var_05.var_116) < param_01) { thread func_94C0(var_05,param_00,var_03); var_03 = var_03 + 0.05; } } } wait(0.3); } } //Function Number: 23 mini_stunning_burst_execute(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07) { if(!isdefined(param_02)) { param_02 = 480; } if(!isdefined(param_03)) { param_03 = 5; } if(!isdefined(param_04)) { param_04 = 4; } var_08 = lib_0547::func_408F(); var_09 = function_01AC(lib_0547::func_408F(),param_00,param_02); var_0A = 0; foreach(var_0C in var_09) { if(isdefined(param_05) && var_0C == param_05) { continue; } if(lib_0547::func_5565(var_0C.var_A4B,param_06)) { continue; } var_0D = spawnstruct(); var_0D.var_116 = param_00; var_0D.var_1180 = param_01; var_0D.durationsecs = param_03; level thread mini_stunning_burst_stun_zombie(var_0C,var_0D,param_04,param_07,var_0A); var_0A = var_0A + 0.05; } } //Function Number: 24 mini_stunning_burst_stun_zombie(param_00,param_01,param_02,param_03,param_04) { param_00 endon("death"); wait(param_04); if(isdefined(param_03)) { param_00 thread [[ param_03 ]](); } var_05 = 0.125 * maps/mp/gametypes/zombies::func_1E59(); var_06 = param_01.var_116; var_07 = param_01.var_1180; param_00 dodamage(var_05,var_06,var_07,var_07,"MOD_ENERGY","dot_generic_zm"); if(common_scripts\utility::func_562E(param_00.var_57E8)) { return; } param_00 thread lib_0547::func_7D1A("mini_stunning_burst",[param_01],param_02); } //Function Number: 25 mini_stunning_burst_state_run_manage_fx() { var_00 = self; var_00 endon("death"); var_00 endon("flag_mini_burst"); var_01 = common_scripts\utility::func_44F5("stunning_burst"); for(;;) { playfxontag(var_01,var_00,"J_Spine4"); wait(0.35); } } //Function Number: 26 mini_stunning_burst_state_run_manage_aud() { var_00 = self; var_00 lib_0378::func_8D74("aud_stun_zombies_strt"); var_00 common_scripts\utility::func_A732("flag_mini_burst","death"); var_00 lib_0378::func_8D74("aud_stun_zombies_end"); } //Function Number: 27 mini_stunning_burst_state_run_hold(param_00) { var_01 = self; var_02 = var_01 maps/mp/agents/_scripted_agent_anim_util::func_434D("stun_hold"); if(!isdefined(var_02)) { return; } var_03 = var_01 method_83DB(var_02); var_04 = gettime(); for(;;) { var_05 = gettime() - var_04 / 1000; if(var_05 > param_00) { break; } var_06 = randomint(var_03); if(var_01.var_A4B == "zombie_exploder") { var_06 = common_scripts\utility::func_98E7(common_scripts\utility::func_562E(var_01.var_392C),0,1); } var_01 method_839C("anim deltas"); var_01 scragentsetorientmode("face angle abs",var_01.var_1D); var_01 maps/mp/agents/_scripted_agent_anim_util::func_71FA(var_02,var_06,1,"stun_anim"); } } //Function Number: 28 mini_stunning_burst_state_run(param_00) { var_01 = self; var_01 scragentsetscripted(1); var_01 maps/mp/agents/_scripted_agent_anim_util::func_8732(1,"mini_stunning_burst"); var_02 = param_00.var_116; var_03 = param_00.var_1180; var_04 = param_00.durationsecs; if(!var_01 common_scripts\utility::func_3798("flag_mini_burst")) { var_01 common_scripts\utility::func_3799("flag_mini_burst"); } var_01 common_scripts\utility::func_379A("flag_mini_burst"); var_01 thread mini_stunning_burst_state_run_manage_fx(); var_01 thread mini_stunning_burst_state_run_manage_aud(); if(var_01 zombiecanbestunknockedback()) { var_01 zombiestunknockbackanim(var_02,var_03); } if(var_01 zombiecanbestunheld()) { var_01 mini_stunning_burst_state_run_hold(var_04); } } //Function Number: 29 mini_stunning_burst_state_interrupt(param_00) { } //Function Number: 30 mini_stunning_burst_state_finish(param_00) { var_01 = self; var_01.var_561D = 0; var_01 common_scripts\utility::func_3796("flag_mini_burst"); var_01 scragentsetscripted(0); var_01 maps/mp/agents/_scripted_agent_anim_util::func_8732(0,"mini_stunning_burst"); } //Function Number: 31 mini_stunning_burst_affected() { var_00 = self; var_01 = var_00 common_scripts\utility::func_3798("flag_mini_burst") && var_00 common_scripts\utility::func_3794("flag_mini_burst"); return var_01; }