mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-07-03 21:07:51 -05:00
2041 lines
44 KiB
Plaintext
2041 lines
44 KiB
Plaintext
/*******************************************************************
|
|
* 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);
|
|
} |