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

237 lines
6.2 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\cp\zombies\interaction_woodchipper_trap.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 8
* Decompile Time: 427 ms
* Timestamp: 10/27/2023 12:09:05 AM
*******************************************************************/
//Function Number: 1
init_woodchipper_trap()
{
level.blackholetrapuses = 0;
var_00 = scripts\common\utility::getstructarray("interaction_woodchipper","script_noteworthy");
foreach(var_02 in var_00)
{
var_02 thread woodchipper_trap_wait_for_power();
var_03 = scripts\common\utility::getstructarray(var_02.target,"targetname");
foreach(var_05 in var_03)
{
if(isdefined(var_05.var_257))
{
var_02.suction_spot = var_05;
}
if(var_05.script_noteworthy == "zombie_in_fx")
{
var_02.zombie_in_fx = var_05;
}
if(var_05.script_noteworthy == "zombie_out_fx")
{
var_02.zombie_out_fx = var_05;
}
}
var_07 = getentarray(var_02.target,"targetname");
foreach(var_09 in var_07)
{
if(var_09.classname == "light_spot")
{
var_02.var_1B9 = var_09;
}
}
var_02.woodchipper_trigger = spawn("trigger_radius",var_02.suction_spot.origin,0,var_02.suction_spot.var_257,96);
var_02.var_1B9 setlightintensity(0);
}
}
//Function Number: 2
woodchipper_trap_wait_for_power()
{
var_00 = scripts\common\utility::istrue(self.var_E1B9) && isdefined(self.var_D71C);
for(;;)
{
var_01 = "power_on";
if(var_00)
{
var_01 = level scripts\common\utility::waittill_any_return_no_endon_death_3("power_on",self.var_D71C + " power_on","power_off");
if(var_01 != "power_off")
{
self.var_D776 = 1;
}
else
{
self.var_D776 = 0;
}
}
if(!var_00)
{
break;
}
wait(0.25);
}
}
//Function Number: 3
use_woodchipper_trap(param_00,param_01)
{
param_01 thread scripts\cp\_vo::try_to_play_vo("activate_trap_generic","zmb_comment_vo","low",10,0,1,0,40);
scripts\cp\_interaction::func_554F(param_00);
param_00.var_1B9 setlightintensity(80);
param_00.var_19 = 1;
param_00.var_126A4 = 0;
var_02 = gettime() + 20000;
param_00 thread func_A631(param_01);
earthquake(0.21,int(21),param_00.origin,500);
playsoundatpos(param_00.origin,"trap_wood_chipper_start");
var_03 = thread scripts\common\utility::play_loopsound_in_space("trap_wood_chipper_lp",param_00.origin);
while(gettime() < var_02)
{
wait(1);
}
playsoundatpos(param_00.origin,"trap_wood_chipper_end");
var_03 stoploopsound();
var_03 delete();
param_00.var_1B9 setlightintensity(0);
param_00 notify("stop_dmg");
param_00.var_19 = undefined;
level notify("woodchipper_trap_kills",param_00.var_126A4);
if(param_01 scripts\cp\_utility::is_valid_player())
{
param_01.var_1189F = param_00.var_126A4;
scripts\cp\zombies\arcade_game_utility::update_player_tickets_earned(param_01);
}
wait(3);
scripts\cp\_interaction::func_6214(param_00);
scripts\cp\_interaction::func_9A0D(param_00,max(level.blackholetrapuses * 45,45));
}
//Function Number: 4
func_2B35(param_00,param_01)
{
playsoundatpos(param_01,"trap_blackhole_ride_start");
wait(2);
var_02 = scripts\common\utility::play_loopsound_in_space("trap_blackhole_ride_loop",param_01);
wait(0.8);
playsoundatpos((-3321,802,888),"trap_blackhole_energy_start");
wait(0.6);
var_03 = scripts\common\utility::play_loopsound_in_space("trap_blackhole_energy_close_lp",(-3321,802,888));
wait(0.1);
var_04 = scripts\common\utility::play_loopsound_in_space("trap_blackhole_trap_suction_lp",(-3013,833,511));
wait(param_00 - 8.5);
playsoundatpos(param_01,"trap_blackhole_ride_stop");
wait(1);
var_02 stoploopsound();
wait(3.5);
playsoundatpos((-3321,802,888),"trap_blackhole_energy_end");
var_03 stoploopsound();
var_04 stoploopsound();
var_02 delete();
var_03 delete();
var_04 delete();
}
//Function Number: 5
func_A631(param_00)
{
self endon("stop_dmg");
wait(2);
for(;;)
{
self.woodchipper_trigger waittill("trigger",var_01);
if(!scripts\cp\_utility::func_FF18(var_01) || isdefined(var_01.flung))
{
continue;
}
var_01.flung = 1;
var_01 thread func_111B0(param_00,self);
level thread lib_0D62::func_CE9C(var_01,"death_blackhole",0);
}
}
//Function Number: 6
func_111B0(param_00,param_01)
{
self endon("death");
var_02 = param_01.zombie_in_fx;
var_03 = param_01.suction_spot;
self.var_EF64 = 1;
wait(randomfloatrange(0,1));
var_04 = 4096;
while(distancesquared(self.origin,var_03.origin) > var_04)
{
self setvelocity(vectornormalize(var_03.origin - self.origin) * 150 + (0,0,30));
wait(0.05);
}
if(!isdefined(param_01.var_19))
{
self.var_EF64 = 0;
self.flung = undefined;
return;
}
var_05 = 2304;
self.nocorpse = 1;
self.var_180 = 1;
self.anchor = spawn("script_origin",self.origin);
self.anchor.angles = self.angles;
self linkto(self.anchor);
self.anchor rotateto((-90,0,0),0.2);
self.anchor moveto(var_02.origin,0.5);
wait(0.5);
playfx(level._effect["woodchipper_entry"],self.origin,anglestoforward((0,0,0)),anglestoup((0,0,0)));
self.anchor delete();
self.disable_armor = 1;
param_01.var_126A4 = param_01.var_126A4 + 1;
thread woodchipper_spray(param_01);
if(param_01.var_126A4 == 1)
{
scripts\common\utility::exploder(11);
}
thread woodchipper_grind_sfx(param_01);
if(isdefined(param_00))
{
var_06 = ["kill_trap_generic","kill_trap_1","kill_trap_2","kill_trap_3","kill_trap_4","kill_trap_5","kill_trap_6","trap_kill_7"];
param_00 thread scripts\cp\_vo::try_to_play_vo(scripts\common\utility::random(var_06),"zmb_comment_vo","highest",10,0,0,1,25);
self dodamage(self.health + 100,var_02.origin,param_00,param_00,"MOD_UNKNOWN","iw7_chromosphere_zm");
return;
}
self dodamage(self.health + 100,var_02.origin,undefined,undefined,"MOD_UNKNOWN","iw7_chromosphere_zm");
}
//Function Number: 7
woodchipper_grind_sfx(param_00)
{
if(!isdefined(param_00.grind_sfx))
{
param_00.grind_sfx = 0;
}
if(param_00.grind_sfx == 0)
{
param_00.grind_sfx = 1;
playsoundatpos(param_00.origin,"trap_wood_chipper_grind");
wait(2.2);
param_00.grind_sfx = 0;
}
}
//Function Number: 8
woodchipper_spray(param_00)
{
self waittill("death");
wait(0.5);
playfx(level._effect["woodchipper_spray"],param_00.zombie_out_fx.origin,anglestoforward(param_00.zombie_out_fx.angles),anglestoup(param_00.zombie_out_fx.angles));
}