Files
IL-GSC/IW/PC/ALL/scripts/cp/zombies/_powerups.gsc
2023-10-27 03:49:01 -04:00

1948 lines
40 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\cp\zombies\_powerups.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 78
* Decompile Time: 2987 ms
* Timestamp: 10/27/2023 12:23:44 AM
*******************************************************************/
//Function Number: 1
func_9670()
{
func_DD64();
func_96F6();
func_96F7();
func_96F5();
level thread func_E1E6();
level thread func_3DD5();
level thread func_D7A1();
}
//Function Number: 2
func_D7A1()
{
var_00 = getarraykeys(level.var_163F);
for(;;)
{
level waittill("connected",var_01);
foreach(var_03 in var_00)
{
if(scripts\common\utility::istrue(level.var_163F[var_03]))
{
if(isdefined(level.var_D762[var_03]))
{
thread [[ level.var_D762[var_03] ]](var_01);
}
}
}
}
}
//Function Number: 3
func_96F6()
{
level._effect["pickup"] = loadfx("vfx/iw7/core/zombie/powerups/vfx_zom_powerup_pickup.vfx");
level._effect["pickup_fnfmod"] = loadfx("vfx/iw7/core/zombie/powerups/vfx_zd_powerup_pickup.vfx");
level._effect["big_explo"] = loadfx("vfx/iw7/_requests/coop/vfx_nuke_explosion_01.vfx");
}
//Function Number: 4
func_96F5()
{
if(!isdefined(level.var_163F))
{
level.var_163F = [];
}
level.var_163F["instakill"] = 0;
level.var_163F["double_money"] = 0;
level.var_163F["fire_sale"] = 0;
level.var_163F["infinite_ammo"] = 0;
level.var_163F["infinite_grenades"] = 0;
level.var_D762["instakill"] = ::func_20AC;
level.var_D762["double_money"] = ::func_20A3;
level.var_D762["infinite_ammo"] = ::func_20AA;
level.var_D762["infinite_grenades"] = ::func_20AB;
level.var_D762["fire_sale"] = ::func_20A5;
if(!isdefined(level.var_D761))
{
level.var_D761 = 500;
}
if(!isdefined(level.var_D79E))
{
level.var_D79E = randomintrange(2000,3000);
}
if(!isdefined(level.var_D79F))
{
level.var_D79F = 5;
}
if(!isdefined(level.var_D79D))
{
level.var_D79D = 0;
}
if(!isdefined(level.var_EC22))
{
level.var_EC22 = level.var_D79E;
}
}
//Function Number: 5
func_3DD5()
{
level waittill("regular_wave_starting");
for(;;)
{
foreach(var_01 in level.players)
{
if(!scripts\common\utility::istrue(var_01.var_3E06))
{
var_01.var_3E06 = 1;
level.var_EC22 = level.var_EC22 + level.var_D761;
if(var_01 scripts\cp\_utility::func_9BA0("more_power_up_drops"))
{
level.var_D79E = level.var_D79E - 5;
}
}
}
level waittill("player_spawned");
}
}
//Function Number: 6
func_96F7()
{
scripts\common\utility::flag_init("zombie_drop_powerups");
scripts\common\utility::flag_init("fire_sale");
scripts\common\utility::flag_init("canFiresale");
scripts\common\utility::flag_init("explosive_armor");
scripts\common\utility::flag_init("force_drop_max_ammo");
}
//Function Number: 7
func_E1E6()
{
level endon("game_ended");
for(;;)
{
level waittill("spawn_wave_done");
level.var_D79D = 0;
}
}
//Function Number: 8
func_DD64()
{
level.var_B07F = [];
level.var_B07B = [];
level.var_B07D = [];
level.var_B07E = [];
if(isdefined(level.var_D763))
{
var_00 = level.var_D763;
}
else
{
var_00 = "cp/zombies/zombie_loot.csv";
}
for(var_01 = 1;var_01 <= 100;var_01++)
{
var_02 = func_113C5(var_00,var_01,2);
if(scripts\cp\_utility::func_9BCC(var_02))
{
break;
}
var_03 = [];
var_03["weights"] = func_45F6(func_113C5(var_00,var_01,3));
var_03["weight_sum"] = func_7D76(var_03["weights"]);
var_04 = strtok(func_113C5(var_00,var_01,4)," ");
var_03["contents"] = [];
foreach(var_08, var_06 in var_04)
{
var_07 = [];
var_07["value"] = var_06;
var_07["last_time"] = 0;
var_03["contents"][var_08] = var_07;
}
level.var_B07F[var_02] = var_03;
}
for(var_01 = 101;var_01 <= 150;var_01++)
{
var_09 = func_113C5(var_00,var_01,2);
if(scripts\cp\_utility::func_9BCC(var_09))
{
break;
}
var_0A = func_113C5(var_00,var_01,3);
if(!isdefined(level._effect[var_0A]))
{
level._effect[var_0A] = loadfx(var_0A);
}
level.var_B07B[var_09] = var_0A;
var_0B = func_113C5(var_00,var_01,1);
level.var_B07E[var_09] = var_0B;
}
for(var_01 = 101;var_01 <= 150;var_01++)
{
var_09 = func_113C5(var_00,var_01,2);
if(scripts\cp\_utility::func_9BCC(var_09))
{
break;
}
var_0C = func_113C5(var_00,var_01,4);
if(scripts\cp\_utility::func_9BCC(var_0C))
{
continue;
}
level.var_B07D[var_09] = var_0C;
}
}
//Function Number: 9
func_45F6(param_00)
{
param_00 = strtok(param_00," ");
var_01 = [];
for(var_02 = 0;var_02 < param_00.size;var_02++)
{
var_01[var_02] = float(param_00[var_02]);
}
return var_01;
}
//Function Number: 10
func_7D76(param_00)
{
var_01 = 0;
foreach(var_03 in param_00)
{
var_01 = var_01 + var_03;
}
return var_01;
}
//Function Number: 11
drop_loot(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(param_02 == "none")
{
return 0;
}
param_00 = getclosestpointonnavmesh(param_00);
var_06 = scripts\common\utility::istrue(param_03);
var_07 = func_4918(param_00);
if(!isdefined(var_07))
{
return 0;
}
var_07.fnf_consumable_active = 0;
foreach(var_09 in level.players)
{
if(var_09 scripts\cp\_utility::func_9BA0("temporal_increase"))
{
var_07.fnf_consumable_active = 1;
break;
}
}
var_07.var_457C = param_02;
var_0B = func_7AB9(var_07);
var_07.var_763D = var_0B;
var_0C = (0,0,0);
if(isdefined(param_01) && param_01 scripts\cp\_utility::func_9BA0("more_power_up_drops"))
{
param_01 scripts\cp\_utility::func_C151("more_power_up_drops");
}
if(isdefined(param_04))
{
level.var_D79E = level.var_D79E * 1.14;
level.var_EC22 = param_04 + level.var_D79E;
level.var_D79D++;
level.var_A8B4 = gettime();
}
if(!is_in_active_volume(param_00) && loot_fly_to_player_enabled())
{
param_00 = func_BCB7(var_07);
var_07 thread func_B07C();
var_06 = 1;
}
else
{
param_00 = param_00 + (0,0,50);
if(scripts\common\utility::istrue(var_07.fnf_consumable_active))
{
var_07.fnffx = spawnfx(level._effect["powerup_additive_fx"],param_00 + (0,0,-10));
}
var_07.var_7542 = spawnfx(scripts\common\utility::getfx(var_0B),param_00);
if(isdefined(var_0C))
{
var_07.var_7542.angles = var_0C;
}
}
if(isdefined(param_01))
{
var_07.var_222 = param_01;
}
else
{
var_07.var_222 = level.players[0];
}
var_07 notify("activate");
if(!var_06)
{
if(scripts\common\utility::istrue(var_07.fnf_consumable_active))
{
triggerfx(var_07.fnffx);
var_07.fnffx method_82EC();
}
triggerfx(var_07.var_7542);
var_07.var_7542 method_82EC();
var_07 thread func_B07C();
}
var_07 thread func_B086(var_07);
var_07 thread func_B096(var_07);
var_0D = func_7A38(param_02);
if(isdefined(var_0D) && scripts\common\utility::istrue(param_05))
{
func_12E16(var_0D);
}
level thread func_410D(var_07);
return 1;
}
//Function Number: 12
loot_fly_to_player_enabled()
{
if(scripts\common\utility::istrue(level.disable_loot_fly_to_player))
{
return 0;
}
return 1;
}
//Function Number: 13
func_BCB7(param_00)
{
level endon("game_ended");
param_00.var_7542 = spawn("script_model",param_00.origin + (0,0,50));
param_00.var_7542 setmodel("tag_origin");
wait(0.1);
if(scripts\common\utility::istrue(param_00.fnf_consumable_active))
{
playfxontag(level._effect["powerup_additive_fx"],param_00.var_7542,"tag_origin");
}
playfxontag(scripts\common\utility::getfx(param_00.var_763D),param_00.var_7542,"tag_origin");
var_01 = scripts\common\utility::getclosest(param_00.origin,level.players);
var_02 = distance(param_00.origin,var_01.origin);
var_03 = 300;
var_04 = var_02 / var_03;
if(var_04 < 0.05)
{
var_04 = 0.05;
}
var_05 = getclosestpointonnavmesh(scripts\common\utility::func_5D14(var_01.origin,32,-100)) + (0,0,50);
param_00.var_7542 moveto(var_05,var_04);
param_00.var_7542 waittill("movedone");
param_00 dontinterpolate();
param_00.origin = param_00.var_7542.origin;
return param_00.origin;
}
//Function Number: 14
func_410D(param_00)
{
param_00 scripts\common\utility::waittill_any_timeout_1(get_loot_time_out(),"picked_up");
if(scripts\common\utility::istrue(param_00.fnf_consumable_active))
{
playfx(level._effect["pickup_fnfmod"],param_00.origin + (0,0,50));
}
else
{
playfx(level._effect["pickup"],param_00.origin + (0,0,50));
}
if(isdefined(param_00.var_7542))
{
param_00.var_7542 delete();
}
if(isdefined(param_00.fnffx))
{
param_00.fnffx delete();
}
wait(0.5);
param_00.fnf_consumable_active = 0;
if(isdefined(param_00))
{
param_00 delete();
}
param_00 notify("loot_deleted");
}
//Function Number: 15
func_B07C()
{
self endon("death");
self endon("picked_up");
self endon("loot_deleted");
var_00 = get_loot_time_out() - 5;
wait(var_00);
for(var_01 = 0;var_01 < 5;var_01++)
{
wait(0.5);
self.var_7542 delete();
wait(0.5);
var_02 = func_7AB9(self);
var_03 = scripts\common\utility::getfx(var_02);
if(!isdefined(var_03))
{
continue;
}
self.var_7542 = spawnfx(var_03,self.origin + (0,0,50));
self.var_7542.angles = (0,0,0);
wait(0.1);
triggerfx(self.var_7542);
self.var_7542 method_82EC();
}
if(isdefined(self) && isdefined(self.var_7542))
{
self.var_7542 delete();
}
if(isdefined(self) && isdefined(self.fnffx))
{
self.fnffx delete();
}
}
//Function Number: 16
get_loot_time_out()
{
if(isdefined(level.loot_time_out))
{
return level.loot_time_out;
}
return 30;
}
//Function Number: 17
func_7A38(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = "kill_generic_zombie";
}
var_02 = 0;
var_03 = level.var_B07F[param_01]["contents"].size;
for(var_02 = 0;var_02 < var_03;var_02++)
{
if(level.var_B07F[param_01]["contents"][var_02]["value"] == param_00)
{
return var_02;
}
}
return 0;
}
//Function Number: 18
func_B978(param_00)
{
self endon("loot_deleted");
level endon("game_ended");
while(isdefined(param_00) && isdefined(param_00.health) && param_00.health >= 1)
{
level waittill("attack_hit",var_01,var_02);
if(param_00 != var_02)
{
continue;
}
param_00.health = param_00.health - 50;
}
self notify("picked_up");
}
//Function Number: 19
func_4918(param_00)
{
var_01 = scripts\common\utility::func_5D14(param_00,32,-64);
var_02 = spawn("trigger_radius",var_01,0,32,76);
return var_02;
}
//Function Number: 20
func_7AB9(param_00)
{
if(!isdefined(level.var_B07B[param_00.var_457C]))
{
return "vfx_loot_ace_hearts";
}
return level.var_B07B[param_00.var_457C];
}
//Function Number: 21
func_B096(param_00)
{
param_00 endon("loot_deleted");
var_01 = param_00 scripts\common\utility::waittill_any_timeout_1(get_loot_time_out(),"picked_up");
if(var_01 == "picked_up")
{
thread func_D980(param_00.var_222,param_00.var_457C,param_00,1);
}
}
//Function Number: 22
func_B086(param_00)
{
param_00 endon("loot_deleted");
wait(0.2);
for(;;)
{
param_00 waittill("trigger",var_01);
if(!isplayer(var_01))
{
wait(0.25);
continue;
}
param_00 notify("picked_up");
var_01 playlocalsound("zmb_powerup_activate");
break;
}
}
//Function Number: 23
func_D980(param_00,param_01,param_02,param_03)
{
var_04 = param_01;
param_01 = strtok(param_01,"_");
var_05 = param_01[0];
var_06 = param_01[1];
var_07 = gettime();
var_08 = int(level.var_B07E[var_04]);
var_09 = 1;
func_56C3(0);
switch(var_05)
{
case "power":
level thread [[ level.var_D743 ]](var_04,var_07);
break;
case "fire":
if(isdefined(level.var_6D28))
{
if(isdefined(level.temporal_increase))
{
var_06 = int(var_06) * level.temporal_increase;
}
level thread scripts\cp\_vo::try_to_play_vo("powerup_firesale","zmb_powerup_vo");
param_02 playsound("zmb_powerup_fire_sale");
level thread [[ level.var_6D28 ]](var_04,int(var_06),var_07);
}
break;
case "grenade":
if(isdefined(level.temporal_increase))
{
var_06 = int(var_06) * level.temporal_increase;
}
level thread scripts\cp\_vo::try_to_play_vo("powerup_infinitegrenades","zmb_powerup_vo");
param_02 playsound("zmb_powerup_infinite_grenades");
level thread func_82DA(var_04,int(var_06),var_07);
break;
case "infinite":
if(isdefined(level.temporal_increase))
{
var_06 = int(var_06) * level.temporal_increase;
}
level thread scripts\cp\_vo::try_to_play_vo("powerup_infiniteammo","zmb_powerup_vo");
param_02 playsound("zmb_powerup_infinite_ammo");
level thread func_82D9(var_04,int(var_06),var_07);
break;
case "upgrade":
if(isdefined(level.var_12F74))
{
param_02 playsound("zmb_powerup_wpn_upgrade");
level thread [[ level.var_12F74 ]]();
}
break;
case "kill":
if(scripts\common\utility::istrue(level.var_72AA))
{
var_09 = 0;
level thread func_A5C6(param_02,int(var_06));
}
else
{
level thread scripts\cp\_vo::try_to_play_vo("powerup_nuke","zmb_powerup_vo");
param_02 playsound("zmb_powerup_nuke");
level thread func_A5C6(param_02,int(var_06));
}
break;
case "cash":
level thread scripts\cp\_vo::try_to_play_vo("powerup_doublemoney","zmb_powerup_vo");
param_02 playsound("zmb_powerup_dbl_cash");
level thread func_EBA5(param_00,var_04,int(var_06),var_07);
break;
case "instakill":
if(isdefined(level.temporal_increase))
{
var_06 = int(var_06) * level.temporal_increase;
}
level thread scripts\cp\_vo::try_to_play_vo("powerup_instakill","zmb_powerup_vo");
param_02 playsound("zmb_powerup_instakill");
level thread func_15BB(param_00,var_04,int(var_06),var_07);
break;
case "ammo":
level thread scripts\cp\_vo::try_to_play_vo("powerup_maxammo","zmb_powerup_vo");
param_02 playsound("zmb_powerup_max_ammo");
level notify("pick_up_max_ammo");
level thread func_829A();
break;
case "board":
if(isdefined(level.var_DDB5))
{
level thread scripts\cp\_vo::try_to_play_vo("powerup_carpenter","zmb_powerup_vo");
param_02 playsound("zmb_powerup_reboard_windows");
level thread [[ level.var_DDB5 ]](param_00);
}
break;
default:
break;
}
if(scripts\common\utility::istrue(param_03))
{
param_00 scripts\cp\_merits::func_D9AD("mt_powerup_grabs");
}
param_00 thread scripts\cp\_hud_message::func_12AAE("powerups");
scripts\common\utility::func_136F7();
if(var_09)
{
func_56C3(var_08);
}
}
//Function Number: 24
func_7AB8(param_00,param_01,param_02)
{
if(!isdefined(level.var_B07F[param_00]))
{
return undefined;
}
var_03 = gettime();
var_04 = func_3E8B(param_00,var_03,param_01);
return var_04;
}
//Function Number: 25
func_3E8B(param_00,param_01,param_02)
{
var_03 = level.wave_num;
var_04 = level.var_B07F[param_00]["contents"].size;
level.var_1C86 = [];
for(var_05 = 0;var_05 < var_04;var_05++)
{
var_06 = level.var_B07F[param_00]["contents"][var_05]["value"];
var_07 = level.var_B07F[param_00]["contents"][var_05]["last_time"];
var_06 = strtok(var_06,"_");
var_08 = var_06[0];
switch(var_08)
{
case "fire":
if((scripts\common\utility::istrue(level.var_D760) || scripts\common\utility::flag("canFiresale") && param_01 - var_07 >= 180000) && var_03 >= 5)
{
level.var_1C86[level.var_1C86.size] = var_05;
break;
}
else
{
break;
}
break;
case "explosive":
if((scripts\common\utility::istrue(level.var_D760) || param_01 - var_07 >= 300000) && var_03 >= 8)
{
level.var_1C86[level.var_1C86.size] = var_05;
break;
}
else
{
break;
}
break;
case "infinite":
if((scripts\common\utility::istrue(level.var_D760) || param_01 - var_07 >= 180000) && var_03 >= 5)
{
level.var_1C86[level.var_1C86.size] = var_05;
break;
}
else
{
break;
}
break;
case "ammo":
if((scripts\common\utility::istrue(level.var_D760) || param_01 - var_07 >= 180000) && var_03 >= 2)
{
level.var_1C86[level.var_1C86.size] = var_05;
break;
}
else
{
break;
}
break;
case "grenade":
if((scripts\common\utility::istrue(level.var_D760) || param_01 - var_07 >= -5536) && var_03 >= 1)
{
level.var_1C86[level.var_1C86.size] = var_05;
break;
}
else
{
break;
}
break;
case "upgrade":
if((scripts\common\utility::istrue(level.var_D760) || param_01 - var_07 >= 600000) && var_03 >= 15)
{
if(!scripts\cp\_utility::is_codxp())
{
level.var_1C86[level.var_1C86.size] = var_05;
}
break;
}
else
{
break;
}
break;
case "kill":
if((scripts\common\utility::istrue(level.var_D760) || param_01 - var_07 >= 180000) && var_03 >= 1)
{
level.var_1C86[level.var_1C86.size] = var_05;
break;
}
else
{
break;
}
break;
case "cash":
if((scripts\common\utility::istrue(level.var_D760) || param_01 - var_07 >= 90000) && var_03 >= 1)
{
level.var_1C86[level.var_1C86.size] = var_05;
break;
}
else
{
break;
}
break;
case "instakill":
if((scripts\common\utility::istrue(level.var_D760) || param_01 - var_07 >= 90000) && var_03 >= 1)
{
level.var_1C86[level.var_1C86.size] = var_05;
break;
}
else
{
break;
}
break;
case "board":
if((scripts\common\utility::istrue(level.var_D760) || param_01 - var_07 >= -20536) && var_03 >= 1)
{
level.var_1C86[level.var_1C86.size] = var_05;
break;
}
else
{
break;
}
break;
default:
break;
}
}
if(level.var_1C86.size < 1)
{
return undefined;
}
var_09 = level.var_1C86[func_7ABA(param_00)];
var_0A = level.var_B07F[param_00]["contents"][var_09]["value"];
level.var_1C86 = undefined;
level.var_A8E0 = var_09;
return var_0A;
}
//Function Number: 26
func_7ABA(param_00)
{
var_01 = 0;
for(var_02 = 0;var_02 < level.var_1C86.size;var_02++)
{
var_03 = int(level.var_1C86[var_02]);
var_01 = var_01 + level.var_B07F[param_00]["weights"][var_03];
}
var_04 = randomfloat(var_01);
var_05 = 0;
for(var_02 = 0;var_02 < level.var_1C86.size;var_02++)
{
var_03 = int(level.var_1C86[var_02]);
var_05 = var_05 + level.var_B07F[param_00]["weights"][var_03];
if(var_05 >= var_04)
{
return var_02;
}
}
}
//Function Number: 27
func_113C5(param_00,param_01,param_02)
{
return tablelookup(param_00,0,param_01,param_02);
}
//Function Number: 28
func_12DB8(param_00,param_01,param_02)
{
if(!scripts\cp\_utility::func_462B("loot"))
{
return;
}
if(!isdefined(level.var_B07A))
{
return;
}
if(!scripts\common\utility::flag("zombie_drop_powerups"))
{
return;
}
if(!isplayer(param_02))
{
return;
}
var_04 = scripts\common\utility::istrue(level.var_D760);
if(level.var_D79D >= level.var_D79F && !var_04)
{
return;
}
if(!is_in_active_volume(param_01))
{
return;
}
if(scripts\common\utility::istrue(self.var_9CDD))
{
return;
}
if(isdefined(level.var_9B0B))
{
if(!scripts\cp\_weapon::func_9E54(param_01,level.var_9B0B,undefined,undefined,1))
{
return;
}
}
else if(!scripts\cp\_weapon::func_9E54(param_01,undefined,undefined,undefined,1))
{
return;
}
var_05 = level.players;
var_03 = undefined;
var_06 = 0;
if(param_02 scripts\cp\_utility::func_9BA0("more_power_up_drops"))
{
var_07 = level.var_EC22 * 0.7;
}
else
{
var_07 = level.var_EC22;
}
for(var_08 = 0;var_08 < var_05.size;var_08++)
{
if(isdefined(var_05[var_08].var_11A21))
{
var_06 = var_06 + var_05[var_08].var_11A21;
}
}
var_09 = 0;
if(var_06 > var_07 && !var_09)
{
var_03 = func_7AB8("kill_" + param_00,param_01);
}
if(isdefined(var_03))
{
level thread drop_loot(param_01,param_02,var_03,undefined,var_06,1);
}
}
//Function Number: 29
func_12E16(param_00)
{
var_01 = gettime();
level.var_B07F["kill_generic_zombie"]["contents"][param_00]["last_time"] = var_01;
}
//Function Number: 30
func_82C4(param_00,param_01,param_02)
{
level endon("game_ended");
level endon("deactivated" + param_00);
scripts\common\utility::flag_set("explosive_armor");
level thread func_4DB3(param_00,param_01);
level thread func_CFD5(param_00,::func_8300);
level thread func_D2C6(param_00,::func_8300);
level thread func_82C6(param_00,::func_8300);
level.var_69FA = 1;
foreach(var_04 in level.players)
{
if(!isalive(var_04) || scripts\common\utility::istrue(var_04.inlaststand))
{
continue;
}
if(!scripts\common\utility::istrue(var_04.var_8B7A))
{
thread func_8300(var_04,param_00);
}
}
}
//Function Number: 31
func_8300(param_00,param_01)
{
param_00.var_8B7A = 1;
param_00 thread func_D73B(undefined,param_01);
param_00 thread func_48DE();
param_00 thread func_4CEC();
param_00 thread func_E00B(param_01);
param_00 thread func_E00C(param_00);
}
//Function Number: 32
func_CFD5(param_00,param_01)
{
level endon("deactivated" + param_00);
level endon("game_ended");
while(scripts\common\utility::flag("explosive_armor"))
{
level waittill("connected",var_02);
thread [[ param_01 ]](var_02,param_00);
}
}
//Function Number: 33
func_D2C6(param_00,param_01)
{
level endon("deactivated" + param_00);
level endon("game_ended");
while(scripts\common\utility::flag("explosive_armor"))
{
level waittill("player_spawned",var_02);
thread [[ param_01 ]](var_02,param_00);
}
}
//Function Number: 34
func_82C6(param_00,param_01)
{
level endon("deactivated" + param_00);
level endon("game_ended");
while(scripts\common\utility::flag("explosive_armor"))
{
level waittill("revive_success",var_02);
thread [[ param_01 ]](var_02,param_00);
}
}
//Function Number: 35
func_E00B(param_00)
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("last_stand");
scripts\common\utility::func_6E5A("explosive_armor");
self.var_8B7A = undefined;
self setscriptablepartstate("exp_touch","neutral",0);
self notify("explosive_armor_removed");
self notify("remove_power_icon" + param_00);
}
//Function Number: 36
func_E00C(param_00)
{
level endon("game_ended");
param_00 endon("disconnect");
param_00 endon("explosive_armor_removed");
param_00 scripts\common\utility::waittill_any_3("death","last_stand");
param_00.var_8B7A = undefined;
param_00 setscriptablepartstate("exp_touch","neutral",0);
param_00 notify("explosive_armor_removed");
}
//Function Number: 37
func_4DB3(param_00,param_01)
{
level endon("disconnect");
level endon("game_ended");
param_01 = param_01 - 5.5;
scripts\common\utility::waittill_any_timeout_1(param_01,"deactivated" + param_00);
level notify("deactivated" + param_00);
wait(5.5);
scripts\common\utility::func_6E2A("explosive_armor");
level.var_69FA = undefined;
foreach(var_03 in level.players)
{
var_03.var_8B7A = undefined;
}
}
//Function Number: 38
func_4CEC()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("last_stand");
self endon("explosive_armor_removed");
for(var_00 = gettime();scripts\common\utility::flag("explosive_armor");var_00 = gettime())
{
var_01 = scripts\common\utility::func_782F(self.origin,level.spawned_enemies,undefined,undefined,128,1);
foreach(var_03 in var_01)
{
if(isalive(var_03))
{
if(!isdefined(var_03.var_69FB) || gettime() > var_03.var_69FB)
{
var_03.var_69FB = var_00 + 1000;
var_03 dodamage(100,self.origin,self,self,"MOD_UNKNOWN","power_script_generic_primary_mp");
}
}
}
wait(0.25);
}
}
//Function Number: 39
func_48DE()
{
self endon("disconnect");
level endon("game_ended");
self setscriptablepartstate("exp_touch","on",0);
}
//Function Number: 40
func_C771(param_00,param_01,param_02)
{
level endon("deactivated" + param_00);
level thread func_4DCA(param_00,param_01);
level thread func_C76B(param_00);
for(;;)
{
foreach(var_04 in level.players)
{
if(!scripts\common\utility::istrue(var_04.var_8B97))
{
var_04.var_8B97 = 1;
var_05 = param_01 - gettime() - param_02 / 1000;
var_04 thread func_D73B(var_05,param_00);
}
}
wait(0.25);
}
}
//Function Number: 41
func_C76B(param_00)
{
level endon("game_ended");
level endon("host_migration_begin");
level endon("deactivated" + param_00);
for(;;)
{
var_01 = scripts\cp\_agent_utils::func_7DB0("axis");
foreach(var_04, var_03 in var_01)
{
if(!isalive(var_03))
{
wait(0.2);
continue;
}
if(isdefined(var_03.var_4D32))
{
wait(0.2);
continue;
}
if(isdefined(var_03.var_B36D))
{
wait(0.2);
continue;
}
if(isdefined(var_03.var_B36A))
{
wait(0.2);
continue;
}
if(isdefined(var_03.var_6BD4))
{
wait(0.2);
continue;
}
scripts\cp\_outline::func_6221(var_03,level.players,4,0,0,"high");
if(var_04 % 2 == 0)
{
wait(0.05);
}
}
wait(0.2);
}
}
//Function Number: 42
func_4DCA(param_00,param_01)
{
level endon("disconnect");
level endon("game_ended");
scripts\common\utility::waittill_any_timeout_1(param_01,"deactivated" + param_00);
level notify("deactivated" + param_00);
foreach(var_03 in level.players)
{
var_03.var_8B97 = undefined;
var_03 scripts\cp\_outline::func_12C01();
}
}
//Function Number: 43
func_82DA(param_00,param_01,param_02)
{
level notify("activated" + param_00);
level endon("activated" + param_00);
level endon("deactivated" + param_00);
level notify("infinite_grenade_active");
level.var_94A8 = 1;
level thread func_4DBA(param_00,param_01);
level.var_163F["infinite_grenades"] = 1;
foreach(var_04 in level.players)
{
thread func_20AB(var_04);
}
}
//Function Number: 44
func_20A5(param_00)
{
if(isdefined(level.temporal_increase))
{
param_00 thread func_D73B(30 * level.temporal_increase,"fire_30");
return;
}
param_00 thread func_D73B(30,"fire_30");
}
//Function Number: 45
func_20AB(param_00)
{
param_00.var_D721 = 1;
param_00.var_8B89 = 1;
param_00 scripts\cp\powers\coop_powers::func_D71A(1,"primary",1);
if(isdefined(level.temporal_increase))
{
param_00 thread func_D73B(30 * level.temporal_increase,"grenade_30");
return;
}
param_00 thread func_D73B(30,"grenade_30");
}
//Function Number: 46
func_4DBA(param_00,param_01)
{
level endon("disconnect");
level endon("game_ended");
var_02 = scripts\common\utility::waittill_any_timeout_1(param_01,"deactivated" + param_00,"activated" + param_00);
if(var_02 != "activated" + param_00)
{
level.var_163F["infinite_grenades"] = 0;
level notify("deactivated" + param_00);
foreach(var_04 in level.players)
{
var_04 scripts\cp\powers\coop_powers::func_D71A(undefined,"primary",1);
var_04.var_8B89 = undefined;
var_04.var_D721 = 0;
}
level.var_94A8 = undefined;
}
}
//Function Number: 47
func_82D9(param_00,param_01,param_02)
{
level notify("activated" + param_00);
level endon("activated" + param_00);
level endon("deactivated" + param_00);
level notify("infinite_ammo_active");
level.var_94A4 = 1;
level.var_163F["infinite_ammo"] = 1;
level thread func_4DB9(param_00,param_01);
foreach(var_04 in level.players)
{
thread func_20AA(var_04);
}
}
//Function Number: 48
func_20AA(param_00)
{
param_00 thread scripts\cp\_vo::try_to_play_vo("powerup_ammo","zmb_comment_vo");
param_00.var_8B88 = 1;
var_01 = param_00 func_1E39();
param_00 thread func_12BA6(var_01,"infinite_20");
if(isdefined(level.temporal_increase))
{
param_00 thread func_D73B(20 * level.temporal_increase,"infinite_20");
return;
}
param_00 thread func_D73B(20,"infinite_20");
}
//Function Number: 49
func_4DB9(param_00,param_01)
{
level endon("disconnect");
level endon("game_ended");
var_02 = scripts\common\utility::waittill_any_timeout_1(param_01,"deactivated" + param_00,"activated" + param_00);
if(var_02 != "activated" + param_00)
{
level.var_163F["infinite_ammo"] = 0;
level.var_94A4 = undefined;
level notify("deactivated" + param_00);
foreach(var_04 in level.players)
{
var_04.var_8B88 = undefined;
}
}
foreach(var_04 in level.players)
{
if(var_04 scripts\cp\_utility::isinfiniteammoenabled())
{
var_04 scripts\cp\_utility::enable_infinite_ammo(0);
}
}
}
//Function Number: 50
func_82E2(param_00,param_01,param_02)
{
level endon("deactivated" + param_00);
level endon("disconnect");
level endon("game_ended");
var_03 = undefined;
level.var_F0B8 = 1;
var_04 = scripts\common\utility::random(["power_speedBoost","power_siegeMode","power_barrier","power_mortarMount","power_transponder"]);
for(;;)
{
foreach(var_06 in level.players)
{
if(!scripts\common\utility::istrue(var_06.var_8B8C))
{
var_06.var_8B8C = 1;
var_07 = param_01 - gettime() - param_02 / 1000;
var_03 = var_06 scripts\cp\powers\coop_powers::func_13CFC("secondary");
var_06 thread scripts\cp\powers\coop_powers::func_8397(var_04,"secondary",undefined,undefined,undefined,undefined,1);
var_06 scripts\cp\powers\coop_powers::func_D740(10,"secondary");
var_06 thread func_17D4(param_00,var_07);
var_06 thread func_D73B(var_07,param_00);
var_06 thread func_4DC4(var_07,var_03,var_04,param_00);
}
}
wait(0.25);
}
}
//Function Number: 51
func_17D4(param_00,param_01)
{
level endon("deactivated" + param_00);
level endon("disconnect");
level endon("game_ended");
self endon("disconnect");
self endon("lb_power_used");
self.var_17D5 = 0;
var_02 = param_01 / 3;
self notifyonplayercommand("lb_power_used","+speed_throw");
while(self.var_17D5 > 3)
{
if(!isalive(self))
{
wait(0.5);
continue;
}
scripts\cp\_utility::setlowermessage("msg_axe_hint",&"CP_ZOMBIE_ADD_ABILITY__HINT",5);
self.var_17D5++;
wait(var_02);
}
}
//Function Number: 52
func_4DC4(param_00,param_01,param_02,param_03)
{
level endon("disconnect");
level endon("game_ended");
scripts\common\utility::waittill_any_timeout_1(param_00,"deactivated" + param_03);
self.var_8B8C = undefined;
self.var_17D5 = undefined;
level.var_F0B8 = undefined;
level notify("deactivated" + param_03);
scripts\cp\powers\coop_powers::func_E15E(param_02);
if(isdefined(param_01))
{
thread scripts\cp\powers\coop_powers::func_8397(param_01,"secondary",undefined,undefined,undefined,undefined,0);
}
}
//Function Number: 53
func_829A()
{
level endon("game_ended");
foreach(var_01 in level.players)
{
if(scripts\cp\_laststand::player_in_laststand(var_01))
{
continue;
}
give_max_ammo_to_player(var_01);
}
}
//Function Number: 54
give_max_ammo_to_player(param_00)
{
var_01 = param_00 getweaponslistprimaries();
foreach(var_03 in var_01)
{
var_04 = strtok(var_03,"_");
if(var_04[0] != "alt")
{
param_00 givemaxammo(var_03);
}
if(function_0249(var_03) == weaponclipsize(var_03))
{
param_00 setweaponammoclip(var_03,weaponclipsize(var_03));
}
}
var_06 = getarraykeys(param_00.var_D782);
foreach(var_08 in var_06)
{
if(param_00.var_D782[var_08].var_10307 == "secondary")
{
continue;
}
param_00 thread func_DDD1(var_08);
}
}
//Function Number: 55
func_DDD1(param_00)
{
var_01 = 0;
var_02 = self.var_D782[param_00].var_10307;
var_03 = level.var_D782[param_00].var_B486 - self.var_D782[param_00].var_3D23;
scripts\cp\powers\coop_powers::func_D71A(var_03,var_02);
self setweaponammostock(level.var_D782[param_00].var_13CE0,level.var_D782[param_00].var_B486);
}
//Function Number: 56
func_15BB(param_00,param_01,param_02,param_03)
{
level endon("game_ended");
level notify("activated" + param_01);
level endon("deactivated" + param_01);
level.var_9925 = 1;
level thread func_4DBB(param_01,param_02);
level.var_163F["instakill"] = 1;
foreach(var_05 in level.players)
{
thread func_20AC(var_05);
}
}
//Function Number: 57
func_20AC(param_00)
{
param_00.var_9926 = 1;
if(isdefined(level.temporal_increase))
{
param_00 thread func_D73B(30 * level.temporal_increase,"instakill_30");
return;
}
param_00 thread func_D73B(30,"instakill_30");
}
//Function Number: 58
func_4DBB(param_00,param_01)
{
level endon("game_ended");
level endon("activated" + param_00);
scripts\common\utility::waittill_any_timeout_1(param_01,"deactivated" + param_00);
level notify("deactivated" + param_00);
foreach(var_03 in level.players)
{
var_03.var_9926 = undefined;
}
level.var_9925 = undefined;
level.var_163F["instakill"] = 0;
}
//Function Number: 59
func_EBA5(param_00,param_01,param_02,param_03)
{
level endon("game_ended");
level endon("deactivated" + param_01);
level notify("scale_earned_cash");
level endon("scale_earned_cash");
level.var_163F["double_money"] = 1;
level.var_3B0F = 2;
if(isdefined(level.temporal_increase))
{
level thread func_4DCD(param_01,30 * level.temporal_increase,param_02);
}
else
{
level thread func_4DCD(param_01,30,param_02);
}
foreach(var_05 in level.players)
{
thread func_20A3(var_05);
}
}
//Function Number: 60
func_20A3(param_00)
{
param_00.var_5AD6 = 1;
if(isdefined(level.temporal_increase))
{
param_00 thread func_D73B(30 * level.temporal_increase,"cash_2");
return;
}
param_00 thread func_D73B(30,"cash_2");
}
//Function Number: 61
func_4DCD(param_00,param_01,param_02)
{
level endon("disconnect");
level endon("game_ended");
var_03 = scripts\common\utility::waittill_any_timeout_1(param_01,"deactivated" + param_00,"activated" + param_00);
if(var_03 != "activated" + param_00)
{
level notify("deactivated" + param_00);
level.var_3B0F = 1;
level.var_163F["double_money"] = 0;
foreach(var_05 in level.players)
{
var_05.var_5AD6 = undefined;
}
}
}
//Function Number: 62
func_D73B(param_00,param_01)
{
level notify("power_icon_active_" + param_01);
level endon("power_icon_active_" + param_01);
var_02 = level.var_B07D[param_01];
self.var_D7A0[param_01] = var_02;
var_03 = func_F5DD(param_01);
thread func_8EA0(param_00,param_01,var_03);
}
//Function Number: 63
func_F5DD(param_00)
{
var_01 = int(tablelookup(level.var_D763,2,param_00,1));
var_02 = int(var_01);
self setclientomnvarbit("zm_active_powerups",var_02 - 1,1);
return var_02;
}
//Function Number: 64
func_56C3(param_00)
{
foreach(var_02 in level.players)
{
var_02 setclientomnvar("zm_powerup_activated",param_00);
wait(0.05);
}
}
//Function Number: 65
func_79E0(param_00,param_01,param_02,param_03,param_04)
{
var_05 = [];
var_06 = scripts\common\utility::getstructarray(param_01,param_02);
var_06[var_06.size] = param_00;
foreach(var_08 in var_06)
{
var_09 = scripts\common\utility::func_782F(var_08.origin,level.players,undefined,1,param_04,1);
if(var_09.size >= 1)
{
if(!isdefined(var_08.angles))
{
var_08.angles = (0,0,0);
}
var_0A = scripts\common\utility::spawn_tag_origin(var_08.origin,var_08.angles);
var_0A show();
var_0A.origin = var_08.origin;
var_0A.angles = var_08.angles;
var_05[var_05.size] = var_0A;
if(isdefined(param_03))
{
if(var_05.size >= param_03)
{
break;
}
}
}
}
var_05 = sortbydistance(var_05,param_00.origin);
return var_05;
}
//Function Number: 66
func_A5C6(param_00,param_01)
{
level endon("game_ended");
var_02 = param_00.origin;
var_03 = func_79E0(param_00,"effect_loc","targetname",undefined,1500);
wait(1);
playsoundatpos(var_02,"zmb_powerup_nuke_explo");
level thread func_C1AC(param_00,var_03);
scripts\common\utility::func_136F7();
playrumbleonposition("heavy_3s",var_02);
earthquake(0.25,4,var_02,2500);
scripts\common\utility::func_136F7();
var_04 = scripts\cp\_agent_utils::func_7DB0("axis");
foreach(var_06 in level.players)
{
var_06 scripts\cp\_utility::func_17C0("nuke",0,0);
}
var_08 = sortbydistance(var_04,var_02);
var_09 = 400;
if(isdefined(level.var_3B0F))
{
var_09 = 400 * level.var_3B0F;
}
foreach(var_0B in var_08)
{
if(func_9C0C(var_0B))
{
continue;
}
if(scripts\common\utility::istrue(level.var_72AA))
{
var_0B.var_54CB = 1;
var_0B.died_poorly_health = var_0B.health;
}
if(scripts\common\utility::istrue(var_0B.var_9E0C))
{
var_0B dodamage(var_0B.health + 100,var_0B.origin);
}
else
{
var_0B.var_180 = 1;
var_0B.var_9B81 = 1;
var_0B.nocorpse = undefined;
var_0B thread func_A614(1);
}
wait(0.1);
}
level.nuke_zombies_paused = 1;
wait(5);
level.nuke_zombies_paused = 0;
level.dont_resume_wave_after_solo_afterlife = undefined;
foreach(var_06 in level.players)
{
var_06 scripts\cp\_utility::func_E0E6("nuke",0);
if(!scripts\common\utility::istrue(level.var_72AA))
{
if(!scripts\cp\_laststand::player_in_laststand(var_06))
{
var_06 scripts\cp\_persistence::func_82F9(var_09,undefined,undefined,1,"nuke");
}
}
}
level.var_72AA = undefined;
}
//Function Number: 67
func_9C0C(param_00)
{
return scripts\common\utility::istrue(param_00.var_9341);
}
//Function Number: 68
func_C1AC(param_00,param_01)
{
var_02 = 0;
foreach(var_04 in param_01)
{
foreach(var_06 in level.players)
{
if(!var_06 scripts\cp\_utility::is_valid_player())
{
continue;
}
if(scripts\common\utility::istrue(var_06.in_afterlife_arcade))
{
continue;
}
if(scripts\common\utility::istrue(var_06.var_9C54))
{
continue;
}
playfxontagforclients(level._effect["big_explo"],var_04,"tag_origin",var_06);
}
scripts\common\utility::func_136F7();
}
wait(5);
foreach(var_04 in param_01)
{
foreach(var_06 in level.players)
{
function_0297(level._effect["big_explo"],var_04,"tag_origin",var_06);
}
var_04 delete();
scripts\common\utility::func_136F7();
}
}
//Function Number: 69
func_A614(param_00)
{
self endon("death");
thread scripts\cp\zombies\zombie_scriptable_states::applyzombiescriptablestate(self);
self.var_B36E = 1;
var_01 = scripts\common\utility::istrue(self.var_9CDD);
if(isdefined(param_00))
{
if(isalive(self) && !var_01)
{
playfx(level._effect["head_loss"],self gettagorigin("j_neck"));
self setscriptablepartstate("head","detached",1);
self setscriptablepartstate("eyes","eye_glow_off",1);
}
}
else
{
wait(1);
}
self dodamage(self.health,self.origin);
}
//Function Number: 70
func_82EB(param_00,param_01)
{
param_00 iprintlnbold("Got Loot: $" + param_01);
param_00 scripts\cp\_persistence::func_82F9(param_01);
}
//Function Number: 71
func_6EBE(param_00,param_01,param_02)
{
param_02 endon("remove " + param_01 + " icon");
param_02 endon("death");
param_02 endon("disconnect");
level endon("game_ended");
var_03 = 10;
var_04 = 0.2;
wait(param_00 - 5);
param_00 = 5;
for(;;)
{
wait(param_00 / var_03);
self.alpha = 0.1;
wait(var_04);
self.alpha = 0.75;
if(float(var_03 * 1.5) > var_04)
{
var_03 = float(var_03 * 1.5);
continue;
}
var_03 = var_04;
}
}
//Function Number: 72
func_8EA0(param_00,param_01,param_02,param_03)
{
level endon("activated" + param_01);
self endon("remove_carryIcon" + param_01);
self endon("disconnect");
level endon("game_ended");
if(!isdefined(param_00))
{
param_00 = 60;
}
var_04 = 5.5;
param_00 = param_00 - var_04;
self setclientomnvarbit("zm_active_powerup_animation",param_02 - 1,0);
if(param_00 > 0)
{
level scripts\common\utility::waittill_any_timeout_1(param_00,"deactivated" + param_01);
self setclientomnvarbit("zm_active_powerup_animation",param_02 - 1,1);
}
level scripts\common\utility::waittill_any_timeout_1(var_04,"deactivated" + param_01);
level notify("power_up_deactivated");
if(isdefined(self.var_D7A0[param_01]))
{
self.var_D7A0[param_01] = undefined;
}
self notify("remove " + param_01 + " icon");
self setclientomnvarbit("zm_active_powerups",param_02 - 1,0);
self setclientomnvarbit("zm_active_powerup_animation",param_02 - 1,0);
}
//Function Number: 73
func_8EBA()
{
self endon("remove_carryIcon");
level waittill("game_ended");
if(isdefined(self.var_3AF5))
{
self.var_3AF5.alpha = 0;
}
}
//Function Number: 74
is_in_active_volume(param_00)
{
if(!isdefined(level.var_1646))
{
return 1;
}
var_01 = sortbydistance(level.var_1646,param_00);
foreach(var_03 in var_01)
{
if(function_010F(param_00,var_03))
{
return 1;
}
}
return 0;
}
//Function Number: 75
func_1E39()
{
self endon("death");
self endon("disconnect");
var_00 = [];
foreach(var_02 in self.var_13CA0)
{
var_00[var_02] = self method_80FB(var_02);
}
return var_00;
}
//Function Number: 76
func_12BA6(param_00,param_01)
{
self endon("death");
self endon("disconnect");
level endon("deactivated" + param_01);
if(!isdefined(self.var_13CA0))
{
self.var_13CA0 = self getweaponslistprimaries();
}
scripts\cp\_utility::enable_infinite_ammo(1);
for(;;)
{
var_02 = 0;
foreach(var_04 in self.var_13CA0)
{
if(var_04 == self getcurrentweapon() && func_13C30(var_04))
{
var_02 = 1;
self setweaponammoclip(var_04,weaponclipsize(var_04),"left");
self setclientomnvar("zm_ui_unlimited_ammo",1);
}
if(var_04 == self getcurrentweapon() && func_13C30(var_04))
{
var_02 = 1;
self setweaponammoclip(var_04,weaponclipsize(var_04),"right");
self setclientomnvar("zm_ui_unlimited_ammo",1);
}
if(var_02 == 0)
{
self setclientomnvar("zm_ui_unlimited_ammo",0);
func_1E39();
}
}
wait(0.05);
}
}
//Function Number: 77
func_13C30(param_00)
{
var_01 = 1;
foreach(var_03 in level.var_C6C1)
{
if(param_00 == var_03)
{
var_01 = 0;
}
}
return var_01;
}
//Function Number: 78
func_57B9()
{
scripts\common\utility::func_136F7();
if(isdefined(self) && scripts\cp\_utility::func_8BB1(self.model,"tag_eye"))
{
playfxontagforclients(level._effect["vfx_screen_flash"],self,"tag_eye",self);
}
}