/******************************************************************* * Decompiled By: Bog * Decompiled File: scripts\cp\zombies\zmb_zombies_weapons.gsc * Game: Call of Duty: Infinite Warfare * Platform: PC * Function Count: 72 * Decompile Time: 3323 ms * Timestamp: 10/27/2023 12:27:25 AM *******************************************************************/ //Function Number: 1 init() { scripts\cp\_spawn_plasma_projectile::func_10A34(); func_8C64(); func_6A78(); level.facemelter_globs = []; } //Function Number: 2 func_1600(param_00) { param_00 thread func_18F0(param_00); } //Function Number: 3 func_4DD8(param_00) { param_00 unlink(); if(isdefined(level.var_4DD9)) { [[ level.var_4DD9 ]](param_00); } } //Function Number: 4 func_18F0(param_00) { var_01 = 5; var_02 = bullettrace(param_00.origin,param_00.origin + (0,0,170),0,param_00); var_03 = var_02["position"]; var_04 = var_03[2] - param_00.origin[2]; var_05 = min(var_04,170) - 70; var_06 = spawn("script_origin",param_00.origin); var_06.angles = param_00.angles; param_00.do_immediate_ragdoll = 1; param_00 linkto(var_06); var_06 moveto(param_00.origin + (0,0,var_05),var_01); var_07 = var_06 scripts\cp\_utility::func_1372D(level,"deactivate zero g",param_00,"death"); if(isdefined(param_00)) { param_00.do_immediate_ragdoll = 0; } var_06 delete(); } //Function Number: 5 func_75FA() { self endon("death"); self.var_11196 = 1; thread scripts\cp\zombies\zombie_scriptable_states::applyzombiescriptablestate(self); wait(0.5); self.var_11196 = undefined; } //Function Number: 6 func_1094D(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B) { if(isdefined(self.agent_type) && self.agent_type == "zombie_brute" || self.agent_type == "zombie_grey") { return; } var_0C = scripts\common\utility::istrue(param_01.inlaststand); var_0D = scripts\common\utility::istrue(self.var_9CDD); var_0E = getweaponbasename(param_05); if(!isdefined(var_0E)) { return; } var_0F = 0; if(!var_0D) { switch(var_0E) { case "iw7_headcutter3_zm": case "iw7_headcutter2_zm": case "iw7_headcutter_zm_pap1": case "iw7_headcutter_zm": if(param_04 != "MOD_MELEE" && param_02 >= self.health && !scripts\common\utility::istrue(self.var_9E0C)) { self.health = param_02 + 1; self.allowpain = 1; self.var_A64E = param_01; thread func_8C5D(param_01,param_06,param_08,param_02,param_05); var_0F = 1; } break; case "iw7_dischord_zm_pap1": case "iw7_dischord_zm": if(param_04 != "MOD_MELEE" && param_02 >= self.health && !scripts\common\utility::istrue(self.var_9E0C)) { self.health = param_02 + 1; self.allowpain = 1; self.var_A64E = param_01; thread func_5622(param_01,param_06,param_08,param_02,param_05); } break; case "iw7_facemelter_zm_pap1": case "iw7_facemelter_zm": if(param_04 != "MOD_MELEE" && param_02 >= self.health && !scripts\common\utility::istrue(self.var_9E0C)) { self.health = param_02 + 1; self.allowpain = 1; self.var_A64E = param_01; thread func_6A76(param_01,param_06,param_08,param_02,param_05); } break; case "iw7_shredder_zm_pap1": case "iw7_shredder_zm": if(param_04 != "MOD_MELEE" && param_02 >= self.health && !scripts\common\utility::istrue(self.var_9E0C)) { self.health = param_02 + 1; self.allowpain = 1; self.var_A64E = param_01; thread func_10167(param_01,param_06,param_08,param_02); } break; default: break; } if(self.health - param_02 < 1) { if(isdefined(level.var_B53A)) { var_10 = [[ level.var_B53A ]](self); if(isdefined(var_10)) { self.nocorpse = 1; self.var_BE77 = var_10; } else { self.var_BE77 = undefined; } } if(isdefined(level.var_4ADD)) { if(isplayer(param_01) && isdefined(param_05) && param_05 != "none") { var_11 = [[ level.var_4ADD ]](self,param_05); if(var_11) { self.nocorpse = 1; self.var_BE74 = 1; } else { self.var_BE74 = undefined; } } else { self.var_BE74 = undefined; } } } } if(self.health - param_02 < 1) { if(isdefined(level.lethaldamage_func)) { [[ level.lethaldamage_func ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B); } if(!var_0C && !var_0F) { if(param_01 scripts\cp\_utility::func_9BA0("headshot_explosion")) { func_3DD7(param_01,param_06,param_02,param_04,param_05,param_08,var_0D); return; } if(param_01 scripts\cp\_utility::has_zombie_perk("perk_machine_change")) { [[ level.change_chew_explosion_func ]](param_01,param_06,param_02,param_04,param_05,param_08); return; } return; } } } //Function Number: 7 func_5622(param_00,param_01,param_02,param_03,param_04) { if(isdefined(self.var_AD05)) { return; } self endon("death"); if(scripts\common\utility::istrue(self.var_9BB0) || self.var_EF64) { self.do_immediate_ragdoll = 1; self dodamage(self.health + 1000,self.origin,param_00,param_00,"MOD_GRENADE_SPLASH","iw7_dischorddummy_zm"); } self.var_EF64 = 1; var_05 = 0; var_06 = scripts\cp\_utility::func_13C90(param_04,"pap1"); var_07 = 50; if(var_06) { var_07 = 100; self.var_12F77 = 1; } self.dischord_spin = 1; if(scripts\common\utility::istrue(self.var_9CEC)) { thread func_5625(param_00,param_01,param_02,param_03,var_07,5); playfxontag(level._effect["dischord_tornado"],self,"tag_origin"); var_05 = 1; while(scripts\common\utility::istrue(self.var_9CEC)) { wait(0.1); } self notify("stop_spin"); } thread kill_me_after_timeout(5,"ready_to_spin"); if(!var_05) { self setscriptablepartstate("dischord_spin_fx","active",1); } self waittill("ready_to_spin"); self.var_AD05 = spawn("script_origin",self.origin); self.var_AD05 thread func_A5F3(self); if(!var_06) { self linkto(self.var_AD05); } thread func_5625(param_00,param_01,param_02,param_03,var_07,0.5); self.var_AD05 rotateyaw(360,1); wait(0.5); thread func_5625(param_00,param_01,param_02,param_03,var_07,0.5); self.var_AD05 rotateyaw(720,1); wait(0.5); thread func_5625(param_00,param_01,param_02,param_03,var_07,1); self.var_AD05 rotateyaw(1080,1); wait(1); thread func_5625(param_00,param_01,param_02,param_03,var_07,1); self.var_AD05 rotateyaw(1240,1); wait(1); if(var_06) { thread func_5625(param_00,param_01,param_02,param_03,var_07,2); wait(2); } else { thread func_5625(param_00,param_01,param_02,param_03,var_07,0.1); } playsoundatpos(self.origin,"zombie_dischord_zmb_spin_explo"); self.full_gib = 1; self.nocorpse = 1; self.var_828A = "dischord_explosion"; self setscriptablepartstate("dischord_spin_fx","inactive",1); var_08 = 128; if(var_06) { var_08 = 256; } if(isdefined(param_00)) { param_00 radiusdamage(self.origin,var_08,2000,2000,param_00,"MOD_GRENADE_SPLASH","iw7_dischorddummy_zm"); } else { level.players[0] radiusdamage(self.origin,var_08,2000,2000,level.players[0],"MOD_GRENADE_SPLASH","iw7_dischorddummy_zm"); } if(isdefined(self.var_AD05)) { self.dischord_spin = 0; self.deathmethod = "dischord"; self dodamage(self.health + 1000,self.origin,param_00,self.var_AD05,"MOD_GRENADE_SPLASH","iw7_dischorddummy_zm"); } } //Function Number: 8 func_A5F3(param_00) { param_00 waittill("death"); wait(0.25); self delete(); } //Function Number: 9 kill_me_after_timeout(param_00,param_01) { if(isdefined(param_01)) { self endon(param_01); } wait(param_00); self suicide(); } //Function Number: 10 func_5625(param_00,param_01,param_02,param_03,param_04,param_05) { self endon("death"); self endon("stop_spin"); var_06 = param_05; var_07 = 0.1; var_08 = 2; param_03 = 3000; if(param_04 == 100) { param_03 = 7000; } while(var_06 > 0) { var_09 = 0; var_0A = scripts\common\utility::func_782F(self.origin,level.spawned_enemies,[self],30,param_04); if(isdefined(var_0A)) { foreach(var_0C in var_0A) { if(var_0C.agent_type == "zombie_brute" || var_0C.agent_type == "zombie_grey") { continue; } if(var_0C scripts\mp\agents\zombie\zmb_zombie_agent::func_5F70()) { continue; } var_0D = undefined; if(scripts\common\utility::istrue(self.var_9CEC)) { var_0D = 1; } if(!scripts\common\utility::istrue(var_0C.var_4C87)) { var_09++; if(var_09 >= var_08) { var_0D = 1; } var_0C thread func_6F32(param_03,self.var_AD05,param_00,var_0D); } } } var_06 = var_06 - var_07; wait(var_07); } } //Function Number: 11 func_6F32(param_00,param_01,param_02,param_03) { self.do_immediate_ragdoll = 1; self.var_4C87 = 1; self.disable_armor = 1; playfx(level._effect["blackhole_trap_death"],self.origin,anglestoforward((-90,0,0)),anglestoup((-90,0,0))); wait(0.05); if(scripts\common\utility::istrue(param_03)) { self.nocorpse = 1; self.full_gib = 1; if(isdefined(param_02)) { self dodamage(self.health + 1000,self.origin,param_02,param_02,"MOD_UNKNOWN","iw7_dischorddummy_zm"); return; } self dodamage(self.health + 1000,self.origin,level.players[0],level.players[0],"MOD_UNKNOWN","iw7_dischorddummy_zm"); return; } self setvelocity(vectornormalize(self.origin - param_01.origin) * 200 + (0,0,800)); wait(0.1); if(isdefined(param_02)) { self dodamage(self.health + 1000,param_01.origin,param_02,param_01,"MOD_UNKNOWN","iw7_dischorddummy_zm"); return; } self dodamage(self.health + 1000,param_01.origin,param_01,param_01,"MOD_UNKNOWN","iw7_dischorddummy_zm"); } //Function Number: 12 func_FFA6(param_00) { var_01 = 3; if(param_00 scripts\cp\_utility::has_zombie_perk("perk_machine_more")) { var_01 = 4; } var_02 = param_00 getweaponslist("primary"); return var_02.size >= var_01; } //Function Number: 13 func_6A78() { level._effect["base_plasma_explosion_enemy"] = loadfx("vfx/iw7/_requests/mp/vfx_plasma_large_explosion_enemy.vfx"); level._effect["glob_plasma_pool_enemy"] = loadfx("vfx/iw7/_requests/mp/vfx_plasma_med_flames_enemy.vfx"); level._effect["glob_plasma_impact_enemy"] = loadfx("vfx/iw7/_requests/mp/vfx_plasma_small_explosion_enemy.vfx"); level._effect["glob_plasma_trail_enemy"] = loadfx("vfx/iw7/_requests/mp/vfx_plasma_trail_enemy.vfx"); level._effect["dischord_tornado"] = loadfx("vfx/iw7/core/zombie/weapon/dischord/vfx_zmb_dischord_energy_tornado.vfx"); level._effect["player_plasma_enemy"] = loadfx("vfx/iw7/_requests/mp/power/vfx_splash_grenade_light_en.vfx"); level._effect["player_plasma_friendly"] = loadfx("vfx/iw7/_requests/mp/power/vfx_splash_grenade_light_fr.vfx"); } //Function Number: 14 func_6A76(param_00,param_01,param_02,param_03,param_04) { self endon("death"); if(isdefined(self.var_AD05)) { return; } self.var_EF64 = 1; self.var_180 = 1; var_05 = scripts\cp\_utility::func_13C90(param_04,"pap1"); if(isdefined(self.hasplayedvignetteanim) && !self.hasplayedvignetteanim) { level thread func_6A77(self,5,param_00); self.nocorpse = 1; self dodamage(self.health + 1000,self.origin,param_00,param_00,"MOD_GRENADE_SPLASH","iw7_facemelterdummy_zm"); return; } else if(isdefined(self.var_9CEC)) { self.rocket_feet = 1; level thread func_6A77(self,5,param_00,var_05,1); self setscriptablepartstate("burning","active",1); while(scripts\common\utility::istrue(self.var_9CEC)) { wait(0.1); } } self.rocket_feet = 1; if(isdefined(self.pooltrigger)) { self.pooltrigger notify("fire_pool_done"); } thread func_E07F(); level thread func_6A77(self,5,param_00,var_05); if(!scripts\common\utility::istrue(self.var_9BA7)) { thread turn_on_rocket_feet(); self waittill("ready_to_launch"); self.var_AD05 = spawn("script_origin",self.origin); self.var_AD05.angles = self.angles; self.var_AD05 thread func_A5F3(self); self linkto(self.var_AD05); var_06 = self.origin + (0,0,200); var_07 = self method_8007(self.origin,self.origin + (0,0,200),15,60,1,1); var_08 = 1; if(isdefined(var_07) && isdefined(var_07["position"])) { var_06 = var_07["position"] + (0,0,-40); var_08 = var_06[2] - self.var_AD05.origin[2]; if(var_08 < 20) { var_08 = 20; var_06 = (var_06[0],var_06[1],self.var_AD05.origin[2] + 20); } var_08 = var_08 / 200; } self.var_AD05 moveto(var_06,var_08); wait(0.1); self setscriptablepartstate("left_leg","detached",1); self setscriptablepartstate("right_leg","detached",1); wait(0.8 * var_08); self playsound("zombie_facemelter_rocket_launch"); } else { wait(0.9); self.full_gib = 1; self.nocorpse = 1; } self setscriptablepartstate("rocket_explosion","active",1); wait(0.1); var_09 = self.origin; var_0A = param_00; var_0B = var_0A.team; if(var_05) { var_0C = 3; for(var_0D = 0;var_0D < var_0C;var_0D++) { var_0E = randomintrange(-200,200); var_0F = randomintrange(-200,200); var_10 = randomintrange(200,400); var_11 = var_09 + (var_0E,var_0F,var_10) - var_09; var_12 = param_00 method_8449("zmb_globproj_zm",var_09,var_11,8); var_12.var_222 = param_00; var_12.team = param_00.team; var_12.var_12816 = "zmb_globproj_zm"; if(var_0D == 0) { var_12 setscriptablepartstate("explosion","active"); } else { var_12 setscriptablepartstate("explosion","neutral"); } var_12 setscriptablepartstate("trail","active"); level.facemelter_globs = scripts\common\utility::array_add_safe(level.facemelter_globs,var_12); var_12 thread func_13A8B("iw7_facemelterdummy_zm",var_05); scripts\common\utility::func_136F7(); } } var_13 = self.var_AD05; if(isalive(self)) { self.rocket_feet = 0; self setscriptablepartstate("rocket_feet","inactive",1); self setscriptablepartstate("rocket_explosion","inactive",1); if(!isdefined(param_00)) { param_00 = undefined; } self dodamage(self.health + 1000,self.origin,param_00,self.var_AD05,"MOD_GRENADE_SPLASH","iw7_facemelterdummy_zm"); } if(isdefined(var_13)) { var_13 delete(); } } //Function Number: 15 turn_on_rocket_feet() { self endon("death"); self playsound("zombie_facemelter_rocket_feet"); self waittill("facemelter_launch_chosen"); if(scripts\common\utility::istrue(self.var_565C)) { wait(0.3); } else { wait(0.1); } self setscriptablepartstate("rocket_feet","active",1); } //Function Number: 16 func_E07F() { self endon("death"); wait(6); self.rocket_feet = 0; } //Function Number: 17 func_6A77(param_00,param_01,param_02,param_03,param_04) { var_05 = 75; var_06 = 30; if(isdefined(param_04)) { wait(0.1); self.pooltrigger = spawn("trigger_rotatable_radius",param_00.origin,0,var_05,var_06); self.pooltrigger thread func_E7F5(param_00,param_01,param_02,param_03); self.pooltrigger thread func_6D1C(param_01); wait(param_01); return; } var_07 = spawnfx(level._effect["fire_pool_wide"],param_00.origin); var_07 playsound("zombie_facemelter_fire_pool"); wait(0.1); var_08 = spawn("trigger_rotatable_radius",param_00.origin,0,var_05,var_06); var_08 thread func_E7F5(param_00,param_01,param_02,param_03); var_08 thread func_6D1C(param_01); var_07 method_82EC(); triggerfx(var_07); wait(param_01); var_07 delete(); } //Function Number: 18 func_E7F5(param_00,param_01,param_02,param_03) { self endon("fire_pool_done"); var_04 = param_01 * 10; for(;;) { self waittill("trigger",var_05); if(isdefined(var_05.rocket_feet)) { wait(0.1); continue; } else if(isplayer(var_05)) { if(param_02 == var_05 && !scripts\common\utility::istrue(param_03) && !isdefined(var_05.var_3294)) { if(!scripts\common\utility::istrue(var_05.inlaststand)) { var_05.var_3294 = 1; var_05 thread dodamageandunsetburnstate(var_05,self); } } wait(0.1); continue; } else if(isalive(var_05)) { level thread scripts\cp\_utility::func_4D0D(var_05,param_02,5,var_05.health + 1000,undefined,"iw7_facemelterdummy_zm",0,"burning"); } wait(0.1); } } //Function Number: 19 dodamageandunsetburnstate(param_00,param_01) { param_00 notify("doDamageAndUnsetBurnState"); param_00 endon("doDamageAndUnsetBurnState"); param_00 endon("disconnect"); if(isalive(param_00)) { param_00 dodamage(int(param_00.maxhealth * 0.15),param_01.origin,param_01,param_01,"MOD_UNKNOWN","iw7_facemelterdummy_zm"); } wait(1); param_00.var_3294 = undefined; } //Function Number: 20 func_6D1C(param_00) { wait(param_00); self notify("fire_pool_done"); self delete(); } //Function Number: 21 func_10167(param_00,param_01,param_02,param_03) { self endon("death"); if(scripts\mp\agents\zombie\zmb_zombie_agent::func_5F70()) { return; } self.shredder_death = 1; self.var_180 = 1; self method_841F(); wait(0.1); var_04 = ["left_arm","right_arm"]; var_04 = scripts\common\utility::array_randomize(var_04); if(!scripts\common\utility::istrue(self.var_9BA7)) { foreach(var_06 in var_04) { self setscriptablepartstate(var_06,"disintegrate",1); wait(0.25); } var_04 = ["right_leg","left_leg"]; var_04 = scripts\common\utility::array_randomize(var_04); foreach(var_06 in var_04) { self setscriptablepartstate(var_06,"disintegrate",1); wait(0.25); } self setscriptablepartstate("shredder_fx","active",1); wait(0.25); self setscriptablepartstate("head","detached",1); } else { foreach(var_06 in var_06) { self setscriptablepartstate(var_06,"disintegrate",1); wait(0.1); } var_04 = ["right_leg","left_leg"]; var_04 = scripts\common\utility::array_randomize(var_04); foreach(var_06 in var_04) { self setscriptablepartstate(var_06,"disintegrate",1); wait(0.1); } self.full_gib = 1; } wait(0.1); self.nocorpse = 1; self.deathmethod = "shredder"; self.shredder_death = 0; self dodamage(self.health + 1000,self.origin,param_00,undefined,"MOD_UNKNOWN","iw7_shredderdummy_zm"); } //Function Number: 22 func_3DD7(param_00,param_01,param_02,param_03,param_04,param_05,param_06) { var_07 = scripts\common\utility::func_9D74(param_03) || param_03 == "MOD_EXPLOSIVE_BULLET" && param_05 != "none"; if(!var_07) { return; } if(!scripts\cp\_utility::func_9E27(param_04,param_05,param_03,param_00)) { return; } param_00 scripts\cp\_utility::func_C151("headshot_explosion"); thread func_6996(param_00,param_05,param_02,"bloody_death",undefined,param_06); } //Function Number: 23 func_6996(param_00,param_01,param_02,param_03,param_04,param_05) { if(scripts\mp\agents\zombie\zmb_zombie_agent::func_5F70()) { return; } if(scripts\cp\_utility::agentisfnfimmune() || self.agent_type == "alien_goon" || self.agent_type == "skeleton") { return; } self.head_is_exploding = 1; param_04 = self gettagorigin("J_Spine4"); playsoundatpos(self.origin,"zmb_fnf_headpopper_explo"); playfx(level._effect[param_03],param_04); foreach(var_07 in level.players) { if(distance(var_07.origin,param_04) <= 350) { var_07 thread func_10142(); } } if(isdefined(self.var_8C98)) { self detach(self.var_8C98); } if(!param_05) { self setscriptablepartstate("head","hide"); } } //Function Number: 24 func_10142() { self notify("turn_on_screen_blood_on"); self endon("turn_on_screen_blood_on"); self setscriptablepartstate("on_screen_blood","on"); scripts\common\utility::waittill_any_timeout_1(2,"death","last_stand"); self setscriptablepartstate("on_screen_blood","neutral"); } //Function Number: 25 func_8C64() { level._effect["head_exploder"] = loadfx("vfx/iw7/_requests/coop/zmb_head_exploder.vfx"); level._effect["head_expander"] = loadfx("vfx/iw7/_requests/coop/zmb_head_expander.vfx"); level._effect["head_blood_explosion"] = loadfx("vfx/iw7/_requests/coop/zmb_head_blood_explosion.vfx"); } //Function Number: 26 func_8C5D(param_00,param_01,param_02,param_03,param_04) { self endon("death"); if(scripts\mp\agents\zombie\zmb_zombie_agent::func_5F70()) { return; } self.head_is_exploding = 1; wait(randomfloatrange(0,0.5)); if(!scripts\common\utility::istrue(self.var_9BA7)) { self setscriptablepartstate("eyes","headcutter_eyes"); } self.var_180 = 1; self method_841F(); wait(1); self setscriptablepartstate("eyes","eye_glow_off"); wait(0.1); self setscriptablepartstate("headcutter_fx","active"); wait(0.1); self setscriptablepartstate("head","hide",1); wait(0.1); param_01 = self gettagorigin("J_Spine4"); param_00 thread func_6995(param_00,param_01,self,param_04); if(scripts\common\utility::istrue(self.var_9BA7)) { self.full_gib = 1; self.nocorpse = 1; } self dodamage(self.health + 1000,self.origin,param_00,undefined,"MOD_UNKNOWN","iw7_headcutterdummy_zm"); } //Function Number: 27 func_6995(param_00,param_01,param_02,param_03) { var_04 = scripts\cp\_utility::func_13C90(param_03,"pap1"); var_05 = getweaponbasename(param_03); var_06 = "iw7_headcutterdummy_zm"; var_07 = 15000; switch(var_05) { case "iw7_headcutter_zm_pap1": case "iw7_headcutter_zm": if(var_04) { var_06 = "iw7_headcutter2_zm+hcpap1"; } else { var_06 = "iw7_headcutter2_zm"; } break; case "iw7_headcutter2_zm": if(var_04) { var_06 = "iw7_headcutter3_zm+hcpap1"; } else { var_06 = "iw7_headcutterdummy_zm"; } break; } var_08 = []; var_08 = level.spawned_enemies; var_09 = [param_02]; var_0A = 128; if(var_04) { var_0A = 256; } var_0B = scripts\common\utility::func_782F(param_01,var_08,var_09,undefined,var_0A,0); foreach(var_0D in var_0B) { if(isdefined(var_0D.agent_type) && var_0D.agent_type == "zombie_grey" || var_0D.agent_type == "zombie_brute") { var_0E = 100; } else { var_0E = 100000; } var_0D dodamage(var_0E,param_01,param_00,param_00,"MOD_EXPLOSIVE",var_06); } } //Function Number: 28 func_5120(param_00,param_01,param_02,param_03) { param_03 endon("disconnect"); wait(param_00); var_04 = magicbullet("iw7_headcuttershards_mp",param_01,param_02,param_03); } //Function Number: 29 func_13C66() { self endon("disconnect"); level endon("game_ended"); self endon("death"); self.var_26E1 = 0; self.var_C24F = 0; self.var_72F6 = 0; var_00 = getweaponbasename(self getcurrentprimaryweapon()); var_01 = self getcurrentweapon(); var_02 = undefined; for(;;) { if(isdefined(var_00) && var_00 == "iw7_axe_zm" && self.var_26E1 < 3) { scripts\cp\_utility::setlowermessage("msg_axe_hint",&"CP_ZOMBIE_AXE_HINT",4); self.var_26E1 = self.var_26E1 + 1; } else if(isdefined(var_00) && var_00 == "iw7_forgefreeze_zm" && self.var_72F6 < 5) { scripts\cp\_utility::setlowermessage("msg_axe_hint",&"CP_ZOMBIE_FORGEFREEZE_HINT",4); self.var_72F6 = self.var_72F6 + 1; } updatecamoscripts(var_01,var_02); var_02 = var_01; self waittill("weapon_change"); wait(0.5); var_00 = getweaponbasename(self getcurrentprimaryweapon()); var_01 = self getcurrentweapon(); } } //Function Number: 30 updatecamoscripts(param_00,param_01) { if(isdefined(param_00)) { var_02 = function_00E5(param_00); } else { var_02 = undefined; } if(isdefined(param_01)) { var_03 = function_00E5(param_01); } else { var_03 = undefined; } if(!isdefined(var_02)) { var_02 = "none"; } if(!isdefined(var_03)) { var_03 = "none"; } clearcamoscripts(param_01,var_03); runcamoscripts(param_00,var_02); } //Function Number: 31 runcamoscripts(param_00,param_01) { if(!isdefined(param_01)) { return; } switch(param_01) { case "camo32": self setscriptablepartstate("camo_32","loop"); break; case "camo34": self setscriptablepartstate("camo_34","loop"); break; case "camo211": self setscriptablepartstate("camo_211","reset"); break; case "camo212": self setscriptablepartstate("camo_212","reset"); break; case "camo204": self setscriptablepartstate("camo_204","activate"); break; case "camo205": self setscriptablepartstate("camo_205","activate"); break; case "camo84": thread blood_camo_84(); break; case "camo222": thread blood_camo_222(); break; case "camo92": self setscriptablepartstate("camo_92","reset"); break; case "camo93": self setscriptablepartstate("camo_93","reset"); break; case "camo31": thread mw2_camo_31(); break; } } //Function Number: 32 clearcamoscripts(param_00,param_01) { if(!isdefined(param_01)) { return; } switch(param_01) { case "camo204": self setscriptablepartstate("camo_204","neutral"); break; case "camo205": self setscriptablepartstate("camo_205","neutral"); break; case "camo84": self notify("blood_camo_84"); break; case "camo222": self notify("blood_camo_222"); break; case "camo31": self notify("mw2_camo_31"); break; } } //Function Number: 33 mw2_camo_31() { self endon("disconnect"); self endon("death"); self endon("mw2_camo_31"); if(!isdefined(self.mw2camokillcount)) { self.mw2camokillcount = 0; } var_00 = int(self.mw2camokillcount / 5); self setscriptablepartstate("camo_31",var_00 + "_kills"); for(;;) { self waittill("zombie_killed"); self.mw2camokillcount = self.mw2camokillcount + 1; if(self.mw2camokillcount % 5 == 0) { var_00 = int(self.mw2camokillcount / 5); if(var_00 > 7) { var_00 = 0; self.mw2camokillcount = 0; } self setscriptablepartstate("camo_31",var_00 + "_kills"); } } } //Function Number: 34 blood_camo_84() { self endon("disconnect"); self endon("death"); self endon("blood_camo_84"); if(!isdefined(self.bloodcamokillcount)) { self.bloodcamokillcount = 0; } var_00 = 1; for(;;) { self waittill("zombie_killed"); self.bloodcamokillcount = self.bloodcamokillcount + 1; if(self.bloodcamokillcount / 5 == var_00) { var_01 = int(self.bloodcamokillcount / 5); if(var_01 > 14) { break; } self setscriptablepartstate("camo_84",var_01 + "_kills"); var_00++; } } } //Function Number: 35 blood_camo_222() { self endon("disconnect"); self endon("death"); self endon("blood_camo_222"); self.katanacamokillcount = 0; self setscriptablepartstate("camo_222","null_state"); var_00 = 1; for(;;) { self waittill("zombie_killed"); self.katanacamokillcount = self.katanacamokillcount + 1; if(self.katanacamokillcount / 5 == var_00) { var_01 = int(self.katanacamokillcount / 5); if(var_01 > 10) { break; } self setscriptablepartstate("camo_222",var_01 + "_kills"); var_00++; } } } //Function Number: 36 func_26E0() { self endon("disconnect"); level endon("game_ended"); self endon("death"); for(;;) { self waittill("axe_melee_hit",var_00,var_01,var_02); var_03 = getweaponbasename(var_00); var_04 = scripts\cp\_weapon::func_7D62(var_03); var_05 = func_7AD8(var_03,var_04); var_06 = func_7AD9(var_03,var_04); var_07 = func_7ADA(var_03,var_04); var_08 = func_3E08(var_05,var_06,var_07); thread func_F653(self); foreach(var_0A in var_08) { if(var_0A == var_01) { continue; } var_0A thread func_26DF(var_0A,self,var_02,var_0A.origin,self.origin,var_00,0.5); } } } //Function Number: 37 func_F652(param_00) { param_00 setscriptablepartstate("axe - idle","neutral"); wait(0.5); param_00 setscriptablepartstate("axe - idle","level 1"); } //Function Number: 38 func_F653(param_00) { param_00 notify("setaxeblooddrip"); param_00 endon("setaxeblooddrip"); param_00 setscriptablepartstate("axe","neutral"); wait(0.5); param_00 setscriptablepartstate("axe","blood on"); wait(5); param_00 setscriptablepartstate("axe","neutral"); } //Function Number: 39 func_7AD8(param_00,param_01) { if(!isdefined(param_00) && !isdefined(param_01)) { return 45; } switch(param_01) { case 2: return 52; case 3: return 60; default: return 45; } } //Function Number: 40 func_7AD9(param_00,param_01) { if(!isdefined(param_00) && !isdefined(param_01)) { return 125; } switch(param_01) { case 2: return 150; case 3: return 175; default: return 125; } } //Function Number: 41 func_7ADA(param_00,param_01) { if(!isdefined(param_00) && !isdefined(param_01)) { return 1; } switch(param_01) { case 2: return 8; case 3: return 24; default: return 4; } } //Function Number: 42 func_7ADB(param_00,param_01) { if(!isdefined(param_00) && !isdefined(param_01)) { return 1100; } switch(param_01) { case 2: return 1500; case 3: return 2000; default: return 1100; } } //Function Number: 43 func_48DD(param_00) { var_01 = param_00 / 2; var_02 = vectornormalize(anglestoforward(self.angles)); var_03 = var_02 * var_01; var_04 = self.origin + var_03; physicsexplosionsphere(var_04,var_01,1,2); } //Function Number: 44 func_D505() { var_00 = function_01E1(level._effect["repulsor_view_red"],self gettagorigin("tag_eye"),self); triggerfx(var_00); var_00 thread scripts\cp\_utility::func_5106(1); playrumbleonposition("slide_collision",self.origin); self earthquakeforplayer(0.5,0.5,self.origin,62.5); } //Function Number: 45 func_3E08(param_00,param_01,param_02) { if(!isdefined(param_02)) { param_02 = 6; } var_03 = cos(param_00); var_04 = []; var_05 = scripts\cp\_agent_utils::func_7DB0("axis"); var_06 = scripts\common\utility::func_782F(self.origin,var_05,undefined,24,param_01,1); foreach(var_08 in var_06) { var_09 = anglestoforward(self.angles); var_0A = vectornormalize(var_09) * -25; var_0B = 0; var_0C = var_08.origin; var_0D = scripts\common\utility::func_13D90(self geteye() + var_0A,self.angles,var_0C + (0,0,30),var_03); if(var_0D) { if(isdefined(param_01)) { var_0E = distance2d(self.origin,var_0C); if(var_0E < param_01) { var_0B = 1; } } else { var_0B = 1; } } if(var_0B && var_04.size < param_02) { var_04[var_04.size] = var_08; } } return var_04; } //Function Number: 46 func_26DF(param_00,param_01,param_02,param_03,param_04,param_05,param_06) { param_00 endon("death"); if(param_00 lib_0CBC::func_9C50()) { param_00.allowpain = 1; } param_00 dodamage(param_02,param_03,param_01,param_01,"MOD_MELEE",param_05); wait(param_06); if(scripts\common\utility::istrue(param_00.allowpain)) { param_00.allowpain = 0; } } //Function Number: 47 func_DF57() { self endon("disconnect"); level endon("game_ended"); self endon("death"); for(;;) { self waittill("reload_start"); self waittill("reload"); if(scripts\cp\_utility::is_escape_gametype()) { var_00 = self getcurrentweapon(); var_01 = self getweaponammostock(var_00); var_02 = weaponclipsize(var_00); self setweaponammostock(var_00,var_01 + var_02); } } } //Function Number: 48 arcane_attachment_watcher(param_00) { scripts\common\utility::flag_wait("doors_initialized"); level endon("game_ended"); param_00 endon("disconnect"); param_00 endon("death"); while(!isdefined(param_00.var_111BC)) { wait(0.1); } param_00 thread unsetstatewhenadswithsniper(param_00); for(;;) { var_01 = param_00 scripts\common\utility::waittill_any_3("weapon_change","weapon_switch_started","ads_out"); param_00 func_412B(param_00); param_00 func_12976(); param_00 thread func_13642(param_00); } } //Function Number: 49 func_EF2F() { scripts\common\utility::flag_wait("doors_initialized"); level endon("game_ended"); self endon("disconnect"); for(;;) { self waittill("scriptableNotification",var_00,var_01,var_02); if(!isdefined(var_00)) { continue; } wait(0.05); } } //Function Number: 50 unsetstatewhenadswithsniper(param_00) { param_00 endon("disconnect"); param_00 notifyonplayercommand("ads_in","+speed_throw"); param_00 notifyonplayercommand("ads_out","-speed_throw"); for(;;) { var_01 = param_00 scripts\common\utility::func_13734("ads_in","ads_out"); if(param_00 scripts\cp\_utility::func_4626(param_00 getcurrentweapon()) == "weapon_sniper") { if(var_01 == "ads_in") { param_00 clear_arcane_scriptable_effects(param_00); param_00.pause_arcane_logic = 1; continue; } param_00.pause_arcane_logic = undefined; } } } //Function Number: 51 clear_arcane_scriptable_effects(param_00) { param_00 setscriptablepartstate("arcane","neutral",1); } //Function Number: 52 func_412B(param_00) { param_00 setclientomnvar("zm_ui_specialammo",0); param_00.var_10932 = undefined; param_00 setscriptablepartstate("arcane","neutral",1); if(param_00 scripts\cp\_utility::_hasperk("specialty_explosivebullets")) { param_00 scripts\cp\_utility::func_1430("specialty_explosivebullets"); } if(param_00 scripts\cp\_utility::_hasperk("specialty_armorpiercing")) { param_00 scripts\cp\_utility::func_1430("specialty_armorpiercing"); } if(param_00 scripts\cp\_utility::_hasperk("specialty_bulletdamage")) { param_00 scripts\cp\_utility::func_1430("specialty_bulletdamage"); } } //Function Number: 53 func_13642(param_00,param_01) { level endon("game_ended"); param_00 notify("wait_for_weapon_switch_done"); param_00 endon("wait_for_weapon_switch_done"); param_00 endon("disconnect"); param_00 endon("weapon_switch_started"); while(param_00 method_81C2()) { wait(0.05); } var_02 = param_00 getcurrentweapon(); param_00 notify("weapon_switch_done",var_02); param_00 func_23BB(param_00,undefined,var_02); param_00 func_896F(param_00,var_02); } //Function Number: 54 func_23BB(param_00,param_01,param_02) { if(scripts\common\utility::istrue(param_00.pause_arcane_logic)) { return; } if(!isdefined(param_01)) { if(!isdefined(param_02)) { param_02 = self getcurrentweapon(); } if(!issubstr(param_02,"ark")) { return; } var_03 = strtok(param_02,"+"); foreach(var_05 in var_03) { if(issubstr(var_05,"ark")) { param_01 = var_05; break; } } } if(!isdefined(param_01)) { param_01 = "blank"; } switch(param_01) { case "arkblue_sm": case "arkblue_akimbo": case "blue": case "arkblue": self setclientomnvar("zm_ui_specialammo",1); self.var_10932 = "stun_ammo"; self.special_ammo_weapon = param_02; if(!scripts\cp\_utility::_hasperk("specialty_bulletdamage")) { scripts\cp\_utility::func_8387("specialty_bulletdamage"); } scripts\cp\_utility::func_1430("specialty_explosivebullets"); scripts\cp\_utility::func_1430("specialty_armorpiercing"); self setscriptablepartstate("arcane","blue_on",0); break; case "arkgreen_sm": case "arkgreen_akimbo": case "arkgreen": case "green": self.var_10932 = "poison_ammo"; self setclientomnvar("zm_ui_specialammo",0); scripts\cp\_utility::func_1430("specialty_explosivebullets"); scripts\cp\_utility::func_1430("specialty_armorpiercing"); scripts\cp\_utility::func_1430("specialty_bulletdamage"); self setscriptablepartstate("arcane","green_on",0); break; case "arkyellow_sm": case "arkyellow_akimbo": case "yellow": case "arkyellow": self setclientomnvar("zm_ui_specialammo",3); self.var_10932 = "explosive_ammo"; if(!scripts\cp\_utility::_hasperk("specialty_explosivebullets")) { scripts\cp\_utility::func_8387("specialty_explosivebullets"); } scripts\cp\_utility::func_1430("specialty_armorpiercing"); scripts\cp\_utility::func_1430("specialty_bulletdamage"); self setscriptablepartstate("arcane","yellow_on",0); break; case "arkred_sm": case "arkred_akimbo": case "arkred": case "red": self setclientomnvar("zm_ui_specialammo",2); self.var_10932 = "incendiary_ammo"; scripts\cp\_utility::func_1430("specialty_explosivebullets"); scripts\cp\_utility::func_1430("specialty_armorpiercing"); scripts\cp\_utility::func_1430("specialty_bulletdamage"); self setscriptablepartstate("arcane","red_on",0); break; case "arkpink_sm": case "arkpink_akimbo": case "arkpink_lmg": case "pink": case "arkpink": self setclientomnvar("zm_ui_specialammo",5); self.var_10932 = "combined_ammo"; if(!scripts\cp\_utility::_hasperk("specialty_bulletdamage")) { scripts\cp\_utility::func_8387("specialty_bulletdamage"); } if(!scripts\cp\_utility::_hasperk("specialty_armorpiercing")) { scripts\cp\_utility::func_8387("specialty_armorpiercing"); } self setscriptablepartstate("arcane","pink_on",0); break; default: self setclientomnvar("zm_ui_specialammo",0); self.var_10932 = undefined; scripts\cp\_utility::func_1430("specialty_explosivebullets"); scripts\cp\_utility::func_1430("specialty_armorpiercing"); scripts\cp\_utility::func_1430("specialty_bulletdamage"); self setscriptablepartstate("arcane","neutral",0); break; } } //Function Number: 55 func_896F(param_00,param_01) { if(!isdefined(param_01)) { param_01 = self getcurrentweapon(); } var_02 = getweaponbasename(param_01); func_12976(); if(isdefined(var_02)) { switch(var_02) { case "iw7_facemelter_zm_pap1": case "iw7_facemelter_zm": self setscriptablepartstate("facemelter","active"); break; case "iw7_headcutter_zm_pap1": case "iw7_headcutter_zm": self setscriptablepartstate("headcutter","active"); break; case "iw7_dischord_zm_pap1": case "iw7_dischord_zm": self setscriptablepartstate("dischord","active"); break; case "iw7_shredder_zm_pap1": case "iw7_shredder_zm": self setscriptablepartstate("shredder","active"); break; } } } //Function Number: 56 func_12976() { self setscriptablepartstate("headcutter","inactive"); self setscriptablepartstate("facemelter","inactive"); self setscriptablepartstate("dischord","inactive"); self setscriptablepartstate("shredder","inactive"); } //Function Number: 57 func_782A(param_00) { var_01 = strtok(param_00,"+"); foreach(var_03 in var_01) { var_04 = getsubstr(var_03,0,3); if(var_04 == "ark") { switch(var_03) { case "arkblueburst": case "arkblueshotgun": case "arkblueautospread": case "arkblueauto": case "arkbluesingle": return "arkblue"; case "arkgreenburst": case "arkgreenshotgun": case "arkgreenautospread": case "arkgreenauto": case "arkgreensingle": return "arkgreen"; case "arkyellowburst": case "arkyellowshotgun": case "arkyellowautospread": case "arkyellowauto": case "arkyellowsingle": return "arkyellow"; case "arkpinkburst": case "arkpinkshotgun": case "arkpinkautospread": case "arkpinkauto": case "arkpinksingle": return "arkpink"; case "arkredburst": case "arkredshotgun": case "arkredautospread": case "arkredauto": case "arkredsingle": return "arkred"; case "arkwhiteburst": case "arkwhiteshotgun": case "arkwhiteautospread": case "arkwhiteauto": case "arkwhitesingle": return "arkwhite"; } } } return undefined; } //Function Number: 58 func_13C1C(param_00) { var_01 = self getweaponslistprimaries(); foreach(var_03 in var_01) { if(var_03 == param_00) { return 1; } } return 0; } //Function Number: 59 func_13A8B(param_00,param_01) { self endon("death"); thread remove_from_glob_array_on_death(); self waittill("missile_stuck",var_02); if(!isdefined(self.var_222)) { return; } self setscriptablepartstate("trail","neutral"); self setscriptablepartstate("explosion","active"); playsoundatpos(self.origin,"plasma_grenade_impact"); radiusdamage(self.origin,128,10,5,self.var_222,"MOD_EXPLOSIVE",param_00); if(level.facemelter_globs.size > 5) { self delete(); return; } var_03 = spawn("trigger_rotatable_radius",self.origin,0,60,60); var_03.angles = self.angles; var_03.var_222 = self.var_222; var_03.team = self.var_222.team; var_03 thread func_13B0E(param_00,param_01); var_03 thread scripts\cp\_utility::func_5106(8); var_03 thread func_511D(0.1,"plasma_grenade_fire_glob"); self.var_D654 = "poolGround"; self setscriptablepartstate("poolGround","active"); wait(8); self setscriptablepartstate(self.var_D654,"activeEnd",0); self delete(); } //Function Number: 60 remove_from_glob_array_on_death() { self waittill("death"); level.facemelter_globs = scripts\common\utility::func_22A9(level.facemelter_globs,self); } //Function Number: 61 func_10D82(param_00,param_01,param_02,param_03,param_04) { self endon("death"); self endon("disconnect"); param_01 endon("disconnect"); self.var_10D94 = 1; self.var_10D93 = undefined; self.var_9B81 = 1; thread func_13A91(); thread func_13B5A(param_00,param_01); if(isdefined(level.var_10A32) && isalive(self) && isdefined(self.var_1096F) && self.var_1096F == "zombie") { self thread [[ level.var_10A32 ]](self); } else { } thread func_10B72(param_00,param_01,param_02,param_03,param_04); } //Function Number: 62 func_CD19(param_00,param_01,param_02) { var_03 = undefined; var_03 = spawnfx(scripts\common\utility::getfx(param_01),param_00); if(isdefined(var_03)) { triggerfx(var_03); } var_03 thread scripts\cp\_utility::func_5106(param_02); return var_03; } //Function Number: 63 func_13B0E(param_00,param_01) { self endon("death"); self.var_222 endon("disconnect"); for(;;) { self waittill("trigger",var_02); if(scripts\cp\_utility::func_9F19(var_02) && !isdefined(var_02.var_10D94) && var_02.team != self.var_222.team || var_02 == self.var_222) { if(param_01) { if(var_02 == self.var_222) { continue; } } var_02 notify("start_plasma_stand"); var_02 thread func_10D82(param_00,self.var_222,33,0.5,self); var_02 thread func_13AAB(self); } } } //Function Number: 64 func_13AAB(param_00) { self endon("death"); self endon("disconnect"); for(;;) { if(!isdefined(param_00) || !self istouching(param_00)) { self notify("plasma_dot_end"); break; } scripts\common\utility::func_136F7(); } } //Function Number: 65 func_13A91() { level endon("game_ended"); self endon("death"); scripts\common\utility::waittill_any_3("plasma_dot_end"); self.var_10D94 = undefined; self.var_10D93 = undefined; self.var_83E1 = undefined; self.var_9B81 = undefined; stopfxontag(scripts\common\utility::getfx("glob_plasma_trail_enemy"),self,"j_mainroot"); stopfxontag(scripts\common\utility::getfx("player_plasma_enemy"),self,"j_mainroot"); stopfxontag(scripts\common\utility::getfx("player_plasma_friendly"),self,"j_mainroot"); } //Function Number: 66 func_13B5A(param_00,param_01) { self endon("death"); self endon("disconnect"); self endon("plasma_dot_end"); param_01 endon("disconnect"); self waittill("start_plasma_linger"); var_02 = 1; var_03 = 25; var_04 = 1; self.var_10D94 = undefined; self.var_10D93 = 1; var_05 = function_01E1(scripts\common\utility::getfx("player_plasma_screen_linger"),self geteye(),self); triggerfx(var_05); var_05 thread scripts\cp\_utility::func_5106(1); var_05 thread scripts\cp\_utility::func_51C7(self); var_05 thread func_51CA(self); thread func_4D61(param_00,param_01,var_03,var_04,var_02,"start_plasma_stand","plasma_dot_end"); } //Function Number: 67 func_51C3(param_00) { self endon("death"); param_00 endon("death"); param_00 endon("disconnect"); param_00 waittill("plasma_dot_end"); if(isdefined(self)) { self delete(); } } //Function Number: 68 func_511B(param_00,param_01,param_02,param_03) { param_02 endon("death"); wait(param_00); if(isdefined(param_02) && isdefined(self)) { playfxontagforclients(scripts\common\utility::getfx(param_01),param_02,param_03,self); } } //Function Number: 69 func_10B72(param_00,param_01,param_02,param_03,param_04) { self endon("death"); self endon("disconnect"); param_01 endon("disconnect"); if(isdefined(param_04)) { param_04 endon("death"); } var_05 = int(param_02 / 4); var_06 = param_03; childthread func_4D61(param_00,param_01,var_05,var_06,undefined,"start_stage2_plasma"); wait(1); self notify("start_stage2_plasma"); var_05 = int(param_02 / 2); var_06 = param_03 / 2; childthread func_4D61(param_00,param_01,var_05,var_06,undefined,"start_stage3_plasma"); wait(0.5); self notify("start_stage3_plasma"); var_05 = param_02; var_06 = param_03 / 4; childthread func_4D61(param_00,param_01,var_05,var_06); } //Function Number: 70 func_4D61(param_00,param_01,param_02,param_03,param_04,param_05,param_06) { self endon("death"); self endon("disconnect"); if(isdefined(param_05)) { self endon(param_05); } param_01 endon("disconnect"); if(!isdefined(param_04)) { for(;;) { self dodamage(param_02,self.origin,param_01,undefined,"MOD_EXPLOSIVE",param_00); self.var_6E82 = gettime() + 500; wait(param_03); } return; } if(param_03 > param_04) { return; } var_07 = param_02; if(self.health <= var_07) { self dodamage(param_02,self.origin,param_01,undefined,"MOD_EXPLOSIVE",param_00); self.var_6E82 = gettime() + 500; } while(param_04 > 0) { if(self.health > 15 && self.health - param_02 < 15) { param_02 = param_02 - 15 - self.health - param_02; } if(self.health > var_07 && self.health <= 15) { param_02 = 1; } if(param_02 > 0) { self dodamage(param_02,self.origin,param_01,undefined,"MOD_EXPLOSIVE",param_00); self.var_6E82 = gettime() + 500; } param_04 = param_04 - param_03; wait(param_03); } if(isdefined(param_06)) { self notify(param_06); } } //Function Number: 71 func_51CA(param_00) { self endon("death"); param_00 endon("death"); param_00 endon("disconnect"); param_00 waittill("start_plasma_stand"); if(isdefined(self)) { self delete(); } } //Function Number: 72 func_511D(param_00,param_01) { self endon("death"); wait(param_00); self playsound(param_01); }