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

279 lines
7.0 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\cp\zombies\interaction_loudspeaker.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 12
* Decompile Time: 663 ms
* Timestamp: 10/27/2023 12:09:03 AM
*******************************************************************/
//Function Number: 1
init_loudspeaker_trap()
{
wait(3);
level.loudspeaker_trap_uses = 0;
var_00 = scripts\common\utility::getstructarray("trap_loudspeaker","script_noteworthy");
foreach(var_03, var_02 in var_00)
{
if(var_03 == 0)
{
var_02.origin = (2412,-2136.5,var_02.origin[2]);
continue;
}
if(var_03 == 1)
{
var_02.origin = (2412,-2136.5,var_02.origin[2]);
continue;
}
var_02.origin = (2412,-2058,var_02.origin[2]);
}
level.loudspeaker_blast_zone = getent("loudspeaker_blast_zone","targetname");
level.var_4D7C = level.loudspeaker_blast_zone;
level.rave_dance_attract_zone = getent("rave_dance_attract_trig","targetname");
level.rave_dance_attract_zone.var_257 = 750;
level.rave_dance_attract_zone.height = 175;
level.rave_dance_attract_zone.origin = level.rave_dance_attract_zone.origin + (0,0,-50);
foreach(var_05 in var_00)
{
var_05 thread func_13611();
}
wait(1);
level.rave_dance_attract_sorter = scripts\common\utility::getstruct("rave_dance_sorter","targetname");
level.rave_dance_spots = scripts\common\utility::getstructarray("rave_dance_spots","targetname");
func_E1E0();
}
//Function Number: 2
func_13611()
{
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" && !scripts\common\utility::istrue(self.var_D776))
{
wait(0.25);
continue;
}
if(var_01 != "power_off")
{
self.var_D776 = 1;
}
else
{
self.var_D776 = 0;
}
scripts\common\utility::func_136F7();
}
}
//Function Number: 3
use_loudspeaker_trap(param_00,param_01)
{
level.loudspeaker_trap_uses++;
level.var_563D = 1;
scripts\cp\_interaction::disable_like_interactions(param_00);
param_01 thread scripts\cp\_vo::try_to_play_vo("activate_trap_generic","zmb_comment_vo","low",10,0,1,0,40);
param_00.var_126A4 = 0;
param_00.var_126A5 = param_01;
level thread func_254E();
param_00 thread sfx_speaker_trap();
wait(29.5);
level thread loudspeaker_damage(level.loudspeaker_blast_zone,param_01,param_00);
wait(1);
level notify("speaker_trap_done");
wait(0.1);
level thread loudspeaker_damage(level.loudspeaker_blast_zone,param_01,param_00);
wait(0.5);
level notify("speaker_trap_kills",param_00.var_126A4);
func_E1E0();
level.var_563D = undefined;
if(param_01 scripts\cp\_utility::is_valid_player(1))
{
param_01.var_1189F = param_00.var_126A4;
scripts\cp\zombies\arcade_game_utility::update_player_tickets_earned(param_01);
}
scripts\cp\_interaction::enable_like_interactions(param_00);
scripts\cp\_interaction::func_9A0D(param_00,max(level.loudspeaker_trap_uses * 45,45));
}
//Function Number: 4
sfx_speaker_trap()
{
level thread scripts\cp\maps\cp_rave\cp_rave::disable_rave_speakers();
playsoundatpos(self.origin,"mus_rave_stage_trap");
wait(28.8);
playsoundatpos(self.origin,"trap_speaker_feedback");
scripts\common\utility::exploder(1);
wait(1.2);
playsoundatpos(self.origin,"trap_speaker_expl");
wait(0.5);
level thread scripts\cp\maps\cp_rave\cp_rave::reenable_rave_speakers();
}
//Function Number: 5
func_254E()
{
level endon("speaker_trap_done");
var_00 = getent("rave_dance_attract_trig","targetname");
level.rave_dancing_zombies = [];
for(;;)
{
var_00 waittill("trigger",var_01);
if(isplayer(var_01))
{
continue;
}
if(!scripts\cp\_utility::func_FF18(var_01) || var_01.var_152C || var_01.var_EF64)
{
continue;
}
if(var_01.agent_type == "slasher" || var_01.agent_type == "superslasher" || var_01.agent_type == "lumberjack" || var_01.agent_type == "zombie_sasquatch")
{
continue;
}
if(isdefined(var_01.is_skeleton))
{
continue;
}
var_01 thread func_8401();
var_01 thread func_DF45();
}
}
//Function Number: 6
func_78B3(param_00)
{
var_01 = sortbydistance(level.rave_dance_spots,level.rave_dance_attract_sorter.origin);
foreach(var_03 in var_01)
{
if(!var_03.var_C2CF)
{
var_03.var_C2CF = 1;
param_00.var_4D7D = var_03;
return var_03;
}
}
return undefined;
}
//Function Number: 7
func_E1E0()
{
foreach(var_01 in level.rave_dance_spots)
{
var_01.var_C2CF = 0;
}
}
//Function Number: 8
func_8401(param_00)
{
self endon("death");
self endon("turned");
level endon("speaker_trap_done");
self.var_152C = 1;
self.var_EF64 = 1;
self.var_C37F = self.var_15C;
self method_8287(32);
var_01 = func_78B3(self);
if(!isdefined(var_01))
{
var_02 = sortbydistance(level.rave_dance_spots,self.origin);
var_01 = var_02[0];
}
self.var_5273 = (0,var_01.angles[1],0);
self method_8286(var_01.origin);
scripts\common\utility::waittill_any_3("goal","goal_reached");
self.do_immediate_ragdoll = 1;
self.var_9BB0 = 1;
level.rave_dancing_zombies[level.rave_dancing_zombies.size] = self;
}
//Function Number: 9
func_DF45()
{
self endon("death");
level waittill("speaker_trap_done");
if(isdefined(self.var_C37F))
{
self method_8287(self.var_C37F);
}
self.var_C37F = undefined;
self.var_152C = 0;
self.var_EF64 = 0;
}
//Function Number: 10
loudspeaker_damage(param_00,param_01,param_02)
{
physicsexplosionsphere((2216,-2108,2),575,512,10);
var_03 = 0;
foreach(var_05 in level.rave_dancing_zombies)
{
if(isdefined(var_05) && isalive(var_05))
{
var_05.var_126A3 = param_01;
param_02.var_126A4++;
if(var_03 > 10)
{
var_05.nocorpse = 1;
var_05.full_gib = 1;
var_06 = "boombox";
var_05 dodamage(var_05.health + 100,level.rave_dance_attract_sorter.origin,param_00,param_00,"MOD_EXPLOSIVE","zmb_imsprojectile_mp");
continue;
}
var_05 setvelocity(vectornormalize(var_05.origin + (0,0,40) - level.rave_dance_attract_sorter.origin) * 1800 + (0,0,550));
var_05.do_immediate_ragdoll = 1;
var_05.var_4C87 = 1;
var_05 thread speaker_delayed_death(param_01);
var_03++;
scripts\common\utility::func_136F7();
}
}
}
//Function Number: 11
speaker_delayed_death(param_00)
{
self endon("death");
wait(0.1);
if(isdefined(param_00) && isalive(param_00))
{
var_01 = ["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_01),"zmb_comment_vo","highest",10,0,0,1,25);
self dodamage(self.health + 1000,level.rave_dance_attract_sorter.origin,param_00,param_00,"MOD_EXPLOSIVE","iw7_discotrap_zm");
return;
}
self dodamage(self.health + 1000,level.rave_dance_attract_sorter.origin,undefined,undefined,"MOD_EXPLOSIVE","iw7_discotrap_zm");
}
//Function Number: 12
func_E069()
{
self endon("disconnect");
wait(0.25);
self.var_C85F = undefined;
}