mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
649 lines
14 KiB
Plaintext
649 lines
14 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: 3404.gsc
|
|
* Game: Call of Duty: Infinite Warfare
|
|
* Platform: PC
|
|
* Function Count: 20
|
|
* Decompile Time: 16 ms
|
|
* Timestamp: 10/27/2023 12:27:05 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
func_97B1()
|
|
{
|
|
scripts\common\utility::flag_init("doors_initialized");
|
|
scripts\common\utility::flag_init("first_door_opened");
|
|
if(!scripts\common\utility::flag("init_interaction_done"))
|
|
{
|
|
scripts\common\utility::flag_wait("init_interaction_done");
|
|
}
|
|
|
|
init_door_buys();
|
|
init_team_killdoors();
|
|
init_chi_doors();
|
|
scripts\common\utility::flag_set("doors_initialized");
|
|
}
|
|
|
|
//Function Number: 2
|
|
func_59FA()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("saw_door_tutorial");
|
|
wait(5);
|
|
var_00 = cos(85);
|
|
for(;;)
|
|
{
|
|
var_01 = getentarray("door_buy","targetname");
|
|
var_02 = sortbydistance(var_01,self.origin);
|
|
if(var_02.size > 0)
|
|
{
|
|
if(distancesquared(var_02[0].origin,self.origin) < 9216 && scripts\common\utility::func_13D90(self.origin,self.angles,var_02[0].origin,var_00))
|
|
{
|
|
thread scripts\cp\_hud_message::func_12AAE("door_buy");
|
|
self notify("saw_door_tutorial");
|
|
wait(1);
|
|
}
|
|
}
|
|
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 3
|
|
init_door_buys()
|
|
{
|
|
var_00 = getentarray("door_buy","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(isdefined(var_02.var_EEAA))
|
|
{
|
|
var_02 method_84A2(var_02.var_EEAA);
|
|
}
|
|
|
|
level thread func_95B5(var_02);
|
|
wait(0.05);
|
|
}
|
|
|
|
level.door_trigs = var_00;
|
|
}
|
|
|
|
//Function Number: 4
|
|
func_95B5(param_00)
|
|
{
|
|
param_00 sethintstring(level.interaction_hintstrings[param_00.script_noteworthy]);
|
|
var_01 = [];
|
|
foreach(var_03 in level.current_interaction_structs)
|
|
{
|
|
if(!isdefined(var_03.target))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_03.target == param_00.target)
|
|
{
|
|
var_01[var_01.size] = var_03;
|
|
}
|
|
}
|
|
|
|
var_05 = func_7E81(var_01[0].script_noteworthy);
|
|
if(isdefined(level.enter_area_hint))
|
|
{
|
|
param_00 method_852E(level.enter_area_hint,var_05);
|
|
}
|
|
else
|
|
{
|
|
param_00 method_852E(&"CP_ZMB_INTERACTIONS_ENTER_THIS_AREA",var_05);
|
|
}
|
|
|
|
if(isdefined(level.door_properties_func))
|
|
{
|
|
[[ level.door_properties_func ]](param_00);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
param_00 waittill("trigger",var_06);
|
|
if(function_02A6(var_06) && !var_06 scripts\cp\_utility::is_valid_player())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isplayer(var_06))
|
|
{
|
|
if(!var_06 scripts\cp\_interaction::func_383E(var_01[0],level.interactions[var_01[0].script_noteworthy].cost,level.interactions[var_01[0].script_noteworthy].var_109DA))
|
|
{
|
|
level notify("interaction","purchase_denied",level.interactions[var_01[0].script_noteworthy],var_06);
|
|
var_06 func_100F4();
|
|
continue;
|
|
}
|
|
|
|
param_00 notify("purchased");
|
|
level notify("door_opened_notify");
|
|
if(!scripts\common\utility::flag("can_drop_coins"))
|
|
{
|
|
scripts\common\utility::flag_set("can_drop_coins");
|
|
}
|
|
|
|
var_06 scripts\cp\_merits::func_D9AD("mt_purchase_doors");
|
|
var_06 notify("door_opened_notify");
|
|
var_06 scripts\cp\_persistence::func_11445(level.interactions[var_01[0].script_noteworthy].cost,1,"door");
|
|
scripts\cp\zombies\zombie_analytics::func_AF7E(1,var_06,var_01[0].script_area,level.interactions[var_01[0].script_noteworthy].cost,level.wave_num);
|
|
var_07 = int(250);
|
|
if(!scripts\cp\zombies\direct_boss_fight::should_directly_go_to_boss_fight())
|
|
{
|
|
var_06 scripts\cp\_persistence::give_player_xp(var_07,1);
|
|
}
|
|
}
|
|
|
|
if(isdefined(level.var_6705))
|
|
{
|
|
level notify(level.var_6705);
|
|
}
|
|
|
|
if(!scripts\common\utility::flag("first_door_opened"))
|
|
{
|
|
scripts\common\utility::flag_set("first_door_opened");
|
|
}
|
|
|
|
if((isplayer(var_06) && var_06 scripts\cp\_utility::is_valid_player()) || isdefined(param_00.allow_nonplayer_trigger))
|
|
{
|
|
foreach(var_09 in var_01)
|
|
{
|
|
if(!isdefined(level.var_10816[var_09.script_area]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(level.var_10816[var_09.script_area].var_19)
|
|
{
|
|
if(isdefined(level.purchase_area_vo) && !isdefined(param_00.allow_nonplayer_trigger))
|
|
{
|
|
level [[ level.purchase_area_vo ]](var_09.script_area,var_06);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
level thread [[ level.interactions[var_01[0].script_noteworthy].var_161A ]](var_01[0],var_06);
|
|
foreach(var_09 in var_01)
|
|
{
|
|
scripts\cp\zombies\zombies_spawning::func_F28B(var_09);
|
|
scripts\cp\zombies\zombies_spawning::func_15FC(var_09.script_area);
|
|
wait(0.05);
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
if(isdefined(param_00.target))
|
|
{
|
|
var_0D = param_00.target;
|
|
if(isdefined(param_00.var_336))
|
|
{
|
|
var_0E = getentarray(param_00.var_336,"targetname");
|
|
foreach(var_10 in var_0E)
|
|
{
|
|
if(var_10.target == var_0D)
|
|
{
|
|
var_10 delete();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
func_7E81(param_00)
|
|
{
|
|
return int(level.interactions[param_00].cost);
|
|
}
|
|
|
|
//Function Number: 6
|
|
func_100F4()
|
|
{
|
|
self endon("disconnect");
|
|
thread scripts\cp\_vo::try_to_play_vo("no_cash","zmb_comment_vo","high",30,0,0,1,50);
|
|
self method_80F4(&"COOP_INTERACTIONS_NEED_MONEY");
|
|
wait(1);
|
|
self method_80F3();
|
|
}
|
|
|
|
//Function Number: 7
|
|
init_team_killdoors()
|
|
{
|
|
level.team_killdoors = [];
|
|
foreach(var_01 in getentarray("team_killdoor","targetname"))
|
|
{
|
|
var_02 = level.team_killdoors.size;
|
|
var_03 = spawnstruct();
|
|
var_03.name = var_02;
|
|
var_03.trigger = var_01;
|
|
if(isdefined(var_01.var_C1))
|
|
{
|
|
var_03.base_kill_goal = var_01.var_C1;
|
|
}
|
|
else
|
|
{
|
|
var_03.base_kill_goal = 10;
|
|
}
|
|
|
|
var_03.kill_goal = var_03.base_kill_goal;
|
|
var_03.goal_mult = 1;
|
|
var_03.kill_captured = 0;
|
|
var_03.players = [];
|
|
var_03.var_E0E2 = 0;
|
|
var_03.var_ED9A = "flag_" + var_02;
|
|
scripts\common\utility::flag_init(var_03.var_ED9A);
|
|
var_03.var_4348 = undefined;
|
|
var_03.var_289 = undefined;
|
|
var_03.progress_meters = [];
|
|
var_03.progress_meter_start_pos = undefined;
|
|
foreach(var_05 in getentarray(var_01.target,"targetname"))
|
|
{
|
|
var_05 method_8318(1);
|
|
if(issubstr(var_05.classname,"brushmodel"))
|
|
{
|
|
if(isdefined(var_05.script_noteworthy) && var_05.script_noteworthy == "progress")
|
|
{
|
|
var_05.var_10CE2 = var_05.origin;
|
|
var_03.progress_meters[var_03.progress_meters.size] = var_05;
|
|
}
|
|
else
|
|
{
|
|
var_03.var_4348 = var_05;
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
if(issubstr(var_05.classname,"scriptable"))
|
|
{
|
|
var_03.var_289 = var_05;
|
|
}
|
|
}
|
|
|
|
var_03.activation_areas = [];
|
|
if(isdefined(var_01.script_area))
|
|
{
|
|
foreach(var_08 in strtok(var_01.script_area,","))
|
|
{
|
|
var_03.activation_areas[var_03.activation_areas.size] = var_08;
|
|
}
|
|
}
|
|
|
|
level.team_killdoors[var_02] = var_03;
|
|
var_03 thread team_killdoor_think();
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
team_killdoor_think()
|
|
{
|
|
level endon("open_killdoor_" + self.name);
|
|
childthread team_killdoor_activate();
|
|
for(;;)
|
|
{
|
|
scripts\common\utility::flag_wait(self.var_ED9A);
|
|
level waittill("zombie_killed",var_00,var_01,var_02,var_03);
|
|
if(scripts\common\utility::istrue(var_03.is_skeleton) && isdefined(var_03.playerowner))
|
|
{
|
|
var_03 = var_03.playerowner;
|
|
}
|
|
|
|
if(!function_02A6(var_03) || !var_03 scripts\cp\_utility::is_valid_player())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!var_03 istouching(self.trigger))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
thread capture_soul(var_00,var_03);
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
team_killdoor_activate()
|
|
{
|
|
for(;;)
|
|
{
|
|
self.trigger waittill("trigger",var_00);
|
|
if(!isplayer(var_00))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
scripts\common\utility::flag_set(self.var_ED9A);
|
|
self.var_289 setscriptablepartstate("fx","active");
|
|
team_killdoor_deactivate();
|
|
scripts\common\utility::func_6E2A(self.var_ED9A);
|
|
self.var_289 setscriptablepartstate("fx","normal");
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
team_killdoor_deactivate()
|
|
{
|
|
self endon("killdoor_deactivate");
|
|
for(;;)
|
|
{
|
|
self.trigger waittill("trigger",var_00);
|
|
if(isplayer(var_00))
|
|
{
|
|
create_killdoor_hud(var_00);
|
|
childthread killdoor_timeout();
|
|
thread player_timeout(var_00);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
create_killdoor_hud(param_00)
|
|
{
|
|
if(isdefined(param_00.killdoor_hud))
|
|
{
|
|
return;
|
|
}
|
|
|
|
param_00.killdoor_hud = newclienthudelem(param_00);
|
|
param_00.killdoor_hud.var_AEC4 = 0;
|
|
param_00.killdoor_hud.foreground = 1;
|
|
param_00.killdoor_hud.fontscale = 1;
|
|
param_00.killdoor_hud.sort = 20;
|
|
param_00.killdoor_hud.alpha = 1;
|
|
param_00.killdoor_hud.y = 120;
|
|
param_00.killdoor_hud.alignx = "center";
|
|
param_00.killdoor_hud.horzalign = "center";
|
|
param_00.killdoor_hud.color = (1,0,1);
|
|
self.players = scripts\common\utility::func_22BC(self.players);
|
|
self.players[self.players.size] = param_00;
|
|
}
|
|
|
|
//Function Number: 12
|
|
killdoor_timeout()
|
|
{
|
|
self notify("stop_killdoor_timeout");
|
|
self endon("stop_killdoor_timeout");
|
|
wait(1);
|
|
self notify("killdoor_deactivate");
|
|
}
|
|
|
|
//Function Number: 13
|
|
player_timeout(param_00)
|
|
{
|
|
param_00 endon("disconnect");
|
|
param_00 notify("stop_player_killdoor_timeout");
|
|
param_00 endon("stop_player_killdoor_timeout");
|
|
wait(1);
|
|
self.players = scripts\common\utility::func_22A9(self.players,param_00);
|
|
param_00.killdoor_hud destroy();
|
|
}
|
|
|
|
//Function Number: 14
|
|
capture_soul(param_00,param_01)
|
|
{
|
|
soul_to_door(param_00);
|
|
if(self.var_E0E2)
|
|
{
|
|
return;
|
|
}
|
|
|
|
scripts\cp\zombies\zombie_analytics::log_purchasingforateamdoor(1,param_01,self.name,self.kill_goal,level.wave_num);
|
|
foreach(param_01 in self.players)
|
|
{
|
|
if(isdefined(param_01))
|
|
{
|
|
}
|
|
}
|
|
|
|
foreach(var_05 in self.progress_meters)
|
|
{
|
|
var_05 moveto(var_05.var_10CE2 + (0,0,16 / self.kill_goal) * self.kill_captured,0.1);
|
|
}
|
|
|
|
if(self.kill_captured >= self.kill_goal)
|
|
{
|
|
thread open_team_killdoor(param_01);
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
soul_to_door(param_00)
|
|
{
|
|
var_01 = spawn("script_model",param_00);
|
|
var_01 setmodel("tag_origin_soultrail");
|
|
var_02 = self.var_289.origin + (0,0,50);
|
|
for(;;)
|
|
{
|
|
var_03 = distance(param_00,var_02);
|
|
var_04 = var_03 / 600;
|
|
if(var_04 < 0.05)
|
|
{
|
|
var_04 = 0.05;
|
|
}
|
|
|
|
var_01 moveto(var_02,var_04);
|
|
wait(0.05);
|
|
if(!self.var_E0E2 && distancesquared(var_01.origin,var_02) > 256)
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!self.var_E0E2)
|
|
{
|
|
self.kill_captured++;
|
|
}
|
|
|
|
var_01 delete();
|
|
}
|
|
|
|
//Function Number: 16
|
|
open_team_killdoor(param_00)
|
|
{
|
|
level notify("open_killdoor_" + self.name);
|
|
self.var_E0E2 = 1;
|
|
foreach(param_00 in self.players)
|
|
{
|
|
if(isdefined(param_00.killdoor_hud))
|
|
{
|
|
param_00.killdoor_hud destroy();
|
|
}
|
|
}
|
|
|
|
foreach(var_04 in self.activation_areas)
|
|
{
|
|
scripts\cp\zombies\zombies_spawning::func_15FC(var_04);
|
|
}
|
|
|
|
if(isdefined(self.var_4348))
|
|
{
|
|
self.var_4348 connectpaths();
|
|
self.var_4348 notsolid();
|
|
}
|
|
|
|
foreach(var_07 in self.progress_meters)
|
|
{
|
|
var_07 delete();
|
|
}
|
|
|
|
thread open_team_killdoor_sfx(self.var_9A3E);
|
|
self.var_289 setscriptablepartstate("fx","normal");
|
|
self.var_289 setscriptablepartstate("default","hide");
|
|
scripts\cp\zombies\zombie_analytics::func_AF7E(1,param_00,self.name,self.kill_goal,level.wave_num);
|
|
param_00 scripts\cp\_merits::func_D9AD("mt_purchase_doors");
|
|
param_00 notify("door_opened_notify");
|
|
param_00 thread scripts\cp\_vo::try_to_play_vo("door_kill_purchase","disco_comment_vo");
|
|
if(scripts\cp\_utility::isplayingsolo() || scripts\common\utility::istrue(level.only_one_player))
|
|
{
|
|
if(!scripts\cp\zombies\direct_boss_fight::should_directly_go_to_boss_fight())
|
|
{
|
|
param_00 scripts\cp\_persistence::give_player_xp(250,1);
|
|
return;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if(!scripts\cp\zombies\direct_boss_fight::should_directly_go_to_boss_fight())
|
|
{
|
|
param_00 scripts\cp\_persistence::give_player_xp(75,1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
open_team_killdoor_sfx(param_00)
|
|
{
|
|
wait(0.5);
|
|
playsoundatpos(self.var_289.origin,"zmb_clear_barricade");
|
|
wait(0.5);
|
|
}
|
|
|
|
//Function Number: 18
|
|
init_chi_doors()
|
|
{
|
|
foreach(var_01 in getentarray("chi_door","targetname"))
|
|
{
|
|
var_01 thread chi_door_think();
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
chi_door_think()
|
|
{
|
|
foreach(var_01 in getentarray(self.target,"targetname"))
|
|
{
|
|
if(issubstr(var_01.classname,"scriptable"))
|
|
{
|
|
self.var_289 = var_01;
|
|
}
|
|
}
|
|
|
|
var_03 = [];
|
|
foreach(var_05 in level.current_interaction_structs)
|
|
{
|
|
if(!isdefined(var_05.target))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_05.target == self.target)
|
|
{
|
|
var_03[var_03.size] = var_05;
|
|
}
|
|
}
|
|
|
|
if(var_03.size == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
self sethintstring(level.interaction_hintstrings[self.script_noteworthy]);
|
|
var_07 = func_7E81(var_03[0].script_noteworthy);
|
|
if(isdefined(level.enter_area_hint))
|
|
{
|
|
self method_852E(level.enter_area_hint,var_07);
|
|
}
|
|
else
|
|
{
|
|
self method_852E(&"CP_ZMB_INTERACTIONS_ENTER_THIS_AREA",var_07);
|
|
}
|
|
|
|
if(isdefined(level.door_properties_func))
|
|
{
|
|
[[ level.door_properties_func ]](self);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
self.var_289 waittill("damage",var_08,var_09,var_0A,var_0B,var_0C,var_0D,var_0E,var_0F,var_10,var_11);
|
|
if(!isdefined(level.var_C617) || !level.var_C617)
|
|
{
|
|
if(!var_09 scripts\cp\_utility::is_valid_player())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(issubstr(var_11,"fists_zm_"))
|
|
{
|
|
}
|
|
else if(!issubstr(var_11,"shuriken"))
|
|
{
|
|
var_12 = ["door_chi_none_1","door_chi_none","door_chi_notenough"];
|
|
var_09 thread scripts\cp\_vo::try_to_play_vo(scripts\common\utility::random(var_12),"disco_comment_vo");
|
|
continue;
|
|
}
|
|
|
|
var_09 scripts\cp\_merits::func_D9AD("mt_purchase_doors");
|
|
var_09 notify("door_opened_notify");
|
|
scripts\cp\zombies\zombie_analytics::func_AF7E(1,var_09,var_03[0].script_area,level.interactions[var_03[0].script_noteworthy].cost,level.wave_num);
|
|
var_13 = int(250);
|
|
if(!scripts\cp\zombies\direct_boss_fight::should_directly_go_to_boss_fight())
|
|
{
|
|
var_09 scripts\cp\_persistence::give_player_xp(var_13,1);
|
|
}
|
|
}
|
|
|
|
if(isplayer(var_09) && var_09 scripts\cp\_utility::is_valid_player())
|
|
{
|
|
foreach(var_15 in var_03)
|
|
{
|
|
if(!isdefined(level.var_10816[var_15.script_area]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(level.var_10816[var_15.script_area].var_19)
|
|
{
|
|
if(isdefined(level.purchase_area_vo))
|
|
{
|
|
level [[ level.purchase_area_vo ]](var_15.script_area,var_09,1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
level thread [[ level.interactions[var_03[0].script_noteworthy].var_161A ]](var_03[0],var_09);
|
|
foreach(var_15 in var_03)
|
|
{
|
|
scripts\cp\zombies\zombies_spawning::func_F28B(var_15);
|
|
scripts\cp\zombies\zombies_spawning::func_15FC(var_15.script_area);
|
|
wait(0.05);
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
if(isdefined(self.target))
|
|
{
|
|
var_19 = self.target;
|
|
if(isdefined(self.var_336))
|
|
{
|
|
var_1A = getentarray(self.var_336,"targetname");
|
|
foreach(var_1C in var_1A)
|
|
{
|
|
if(var_1C.target == var_19)
|
|
{
|
|
var_1C delete();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 20
|
|
show_purchase_deny_chi(param_00)
|
|
{
|
|
self endon("disconnect");
|
|
var_01 = ["door_kill_notenough","door_wooden_fail","door_chi_notenough"];
|
|
thread scripts\cp\_vo::try_to_play_vo(scripts\common\utility::random(var_01),"disco_comment_vo");
|
|
} |