Files
IL-GSC/IW/PC/ALL/scripts/mp/killstreaks/_a10.gsc
2023-10-27 03:49:01 -04:00

786 lines
18 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\killstreaks\_a10.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 42
* Decompile Time: 1876 ms
* Timestamp: 10/27/2023 12:27:53 AM
*******************************************************************/
//Function Number: 1
init()
{
var_00 = spawnstruct();
var_00.var_B923 = [];
var_00.var_B923["allies"] = "veh_mil_air_ca_jackal_drone_atmos_periph_mp";
var_00.var_B923["axis"] = "veh_mil_air_ca_jackal_drone_atmos_periph_mp";
var_00.var_131A0 = "a10_warthog_mp";
var_00.var_93B9 = "veh_mig29_dist_loop";
var_00.var_2B3 = 3000;
var_00.var_8863 = 12500;
var_00.var_8D13 = 750;
var_00.var_3ED0 = 1;
var_00.var_F1CA = "KS_hqr_airstrike";
var_00.var_93BA = "KS_ast_inbound";
var_00.var_38D9 = loadfx("vfx/core/smktrail/smoke_trail_white_heli");
var_00.var_38DA = "ac130_25mm_fire";
var_00.var_12A7B = "a10_30mm_turret_mp";
var_00.var_12A58 = "tag_barrel";
var_00.var_E5DD = "maverick_projectile_mp";
var_00.var_C23F = 4;
var_00.var_50DD = 0.125;
var_00.var_50DC = 0.4;
var_00.var_AF2A = "veh_hud_target_chopperfly";
var_00.maxhealth = 1000;
var_00.var_EC44 = "destroyed_a10_strafe";
var_00.var_3774 = "callout_destroyed_a10";
var_00.var_13523 = undefined;
var_00.var_69B9 = loadfx("vfx/core/expl/aerial_explosion");
var_00.var_FC39 = "veh_a10_plr_fire_gatling_lp";
var_00.var_FC3B = "veh_a10_plr_fire_gatling_cooldown";
var_00.var_FC3A = "veh_a10_npc_fire_gatling_lp";
var_00.var_FC3C = "veh_a10_npc_fire_gatling_cooldown";
var_00.var_FC38 = 500;
var_00.var_FC37 = "veh_a10_npc_fire_gatling_short_burst";
var_00.var_FC36 = "veh_a10_npc_fire_gatling_long_burst";
var_00.var_FC35 = "veh_a10_bullet_impact_lp";
var_00.var_FC41 = [];
var_00.var_FC41[0] = "veh_a10_plr_missile_ignition_left";
var_00.var_FC41[1] = "veh_a10_plr_missile_ignition_right";
var_00.var_FC42 = "veh_a10_npc_missile_fire";
var_00.var_FC40 = "veh_a10_missile_loop";
var_00.var_FC3D = "veh_a10_plr_engine_lp";
var_00.var_FC3E = "veh_a10_dist_loop";
level.var_CC43["a10_strafe"] = var_00;
scripts\mp\killstreaks\_killstreaks::func_DEFB("a10_strafe",::func_C5BB);
func_31D4();
}
//Function Number: 2
func_C5BB(param_00,param_01)
{
if(isdefined(level.var_1490))
{
self iprintlnbold(&"KILLSTREAKS_AIR_SPACE_TOO_CROWDED");
return 0;
}
if(scripts\mp\_utility::func_9FC6() || scripts\mp\_utility::func_9E68())
{
return 0;
}
if(function_0085() < 2)
{
return 0;
}
thread func_5AB7(param_00,"a10_strafe");
return 1;
}
//Function Number: 3
func_5AB7(param_00,param_01)
{
self endon("end_remote");
self endon("death");
level endon("game_ended");
var_02 = func_8052();
var_03 = func_10DF5(param_01,param_00);
if(var_03)
{
var_04 = func_10829(param_01,param_00,level.var_148E[var_02]);
if(isdefined(var_04))
{
var_04 func_5976();
func_11370(var_04,param_01);
var_04 = func_10829(param_01,param_00,level.var_148E[var_02]);
if(isdefined(var_04))
{
thread scripts\mp\killstreaks\_killstreaks::func_41D6(1,0.75);
var_04 func_5976();
var_04 thread func_631B(param_01);
func_638E(param_01);
return;
}
}
}
}
//Function Number: 4
func_10DF5(param_00,param_01)
{
scripts\mp\_utility::func_FB09("a10_strafe");
if(getdvarint("camera_thirdPerson"))
{
scripts\mp\_utility::setthirdpersondof(0);
}
self.var_E2D7 = self.angles;
scripts\mp\_utility::func_7385(1);
var_02 = scripts\mp\killstreaks\_killstreaks::func_98C2("a10_strafe");
if(var_02 != "success")
{
if(var_02 != "disconnect")
{
scripts\mp\_utility::func_41E9();
}
if(isdefined(self.var_55E6) && self.var_55E6)
{
scripts\common\utility::allow_weapon(1);
}
self notify("death");
return 0;
}
if(scripts\mp\_utility::func_9E59() && isdefined(self.var_A4A8))
{
self.var_A4A8.alpha = 0;
}
scripts\mp\_utility::func_7385(0);
level.var_1490 = 1;
self.var_13105 = 1;
level thread scripts\mp\_utility::func_115DE("used_" + param_00,self,self.team);
return 1;
}
//Function Number: 5
func_638E(param_00)
{
scripts\mp\_utility::func_41E9();
if(getdvarint("camera_thirdPerson"))
{
scripts\mp\_utility::setthirdpersondof(1);
}
if(scripts\mp\_utility::func_9E59() && isdefined(self.var_A4A8))
{
self.var_A4A8.alpha = 1;
}
self setplayerangles(self.var_E2D7);
self.var_E2D7 = undefined;
thread func_1483();
level.var_1490 = undefined;
self.var_13105 = undefined;
}
//Function Number: 6
func_11370(param_00,param_01)
{
self.var_13118 = undefined;
self visionsetnakedforplayer("black_bw",0.75);
thread scripts\mp\_utility::func_F607("black_bw",0.75,0.75);
wait(0.75);
if(isdefined(param_00))
{
param_00 thread func_631B(param_01);
}
}
//Function Number: 7
func_10829(param_00,param_01,param_02)
{
var_03 = func_49FD(param_00,param_01,param_02);
if(!isdefined(var_03))
{
return undefined;
}
var_03.var_110EA = param_00;
self method_825C(var_03);
thread func_13AA8(param_00,var_03);
var_04 = level.var_CC43[param_00];
var_03 playloopsound(var_04.var_FC3D);
var_03 thread func_1485();
scripts\mp\killstreaks\_plane::func_10E02(var_03);
return var_03;
}
//Function Number: 8
func_24AE(param_00)
{
var_01 = level.var_CC43[param_00];
var_02 = self gettagorigin(var_01.var_12A58);
var_03 = spawnturret("misc_turret",self.origin + var_02,var_01.var_12A7B,0);
var_03 linkto(self,var_01.var_12A58,(0,0,0),(0,0,0));
var_03 setmodel("vehicle_ugv_talon_gun_mp");
var_03.angles = self.angles;
var_03.var_222 = self.var_222;
var_03 method_81F5();
var_03 method_835B(0);
var_03 method_830F("sentry_offline");
var_03 makeunusable();
var_03 setcandamage(0);
var_03 method_8336(self.var_222);
self.var_222 method_825A(var_03);
self.var_129B9 = var_03;
}
//Function Number: 9
func_40E3()
{
if(isdefined(self.var_129B9))
{
self.var_129B9 delete();
}
foreach(var_01 in self.var_11571)
{
if(isdefined(var_01["icon"]))
{
var_01["icon"] destroy();
var_01["icon"] = undefined;
}
}
self delete();
}
//Function Number: 10
func_8052()
{
return randomint(level.var_148E.size);
}
//Function Number: 11
func_5976()
{
self endon("death");
level endon("game_ended");
for(;;)
{
self waittill("splinePlaneReachedNode",var_00);
if(isdefined(var_00) && var_00 == "End")
{
self notify("a10_end_strafe");
break;
}
}
}
//Function Number: 12
func_631B(param_00)
{
if(!isdefined(self))
{
return;
}
self.var_222 method_825D(self);
if(isdefined(self.var_129B9))
{
self.var_222 method_825B(self.var_129B9);
}
self notify("end_remote");
self.var_222 thermalvisionfofoverlayoff();
var_01 = level.var_CC43[param_00];
self stoploopsound(var_01.var_FC39);
scripts\mp\killstreaks\_plane::func_11098(self);
wait(5);
if(isdefined(self))
{
self stoploopsound(var_01.var_FC3D);
func_40E3();
}
}
//Function Number: 13
func_49FD(param_00,param_01,param_02)
{
var_03 = level.var_CC43[param_00];
var_04 = function_008C(param_02,0);
var_05 = function_008D(param_02,0);
var_06 = vectortoangles(var_05);
var_07 = spawnhelicopter(self,var_04,var_06,var_03.var_131A0,var_03.var_B923[self.team]);
if(!isdefined(var_07))
{
return undefined;
}
var_07 method_81FC(18,-9,18);
var_07.var_222 = self;
var_07.team = self.team;
var_07.var_AC68 = param_01;
var_07 thread scripts\mp\killstreaks\_plane::func_D4FA();
return var_07;
}
//Function Number: 14
func_898E()
{
level endon("game_ended");
self endon("delete");
self waittill("death");
level.var_1490 = undefined;
self.var_222.var_13105 = undefined;
self delete();
}
//Function Number: 15
func_1483()
{
self endon("disconnect");
self endon("death");
level endon("game_ended");
scripts\mp\_utility::func_7385(1);
wait(0.5);
scripts\mp\_utility::func_7385(0);
}
//Function Number: 16
func_BA0F(param_00,param_01)
{
param_01 endon("end_remote");
param_01 endon("death");
self endon("death");
level endon("game_ended");
var_02 = level.var_CC43[param_00];
param_01.var_C240 = var_02.var_C23F;
self notifyonplayercommand("rocket_fire_pressed","+speed_throw");
self notifyonplayercommand("rocket_fire_pressed","+ads_akimbo_accessible");
if(!level.console)
{
self notifyonplayercommand("rocket_fire_pressed","+toggleads_throw");
}
while(param_01.var_C240 > 0)
{
self waittill("rocket_fire_pressed");
param_01 func_C52A(param_00);
wait(var_02.var_50DD);
}
}
//Function Number: 17
func_BA0E(param_00,param_01)
{
param_01 endon("end_remote");
param_01 endon("death");
self endon("death");
level endon("game_ended");
var_02 = level.var_CC43[param_00];
param_01.var_C240 = var_02.var_C23F;
self notifyonplayercommand("rocket_fire_pressed","+speed_throw");
self notifyonplayercommand("rocket_fire_pressed","+ads_akimbo_accessible");
if(!level.console)
{
self notifyonplayercommand("rocket_fire_pressed","+toggleads_throw");
}
param_01.var_11571 = [];
while(param_01.var_C240 > 0)
{
if(!self adsbuttonpressed())
{
self waittill("rocket_fire_pressed");
}
param_01 func_B846();
if(param_01.var_11571.size > 0)
{
param_01 thread func_6D76();
}
}
}
//Function Number: 18
func_B88B()
{
var_00 = [];
foreach(var_02 in level.players)
{
if(func_B88E(var_02))
{
var_00[var_00.size] = var_02;
}
}
foreach(var_05 in level.var_12F81)
{
if(func_B88E(var_05))
{
var_00[var_00.size] = var_05;
}
}
if(var_00.size > 0)
{
var_07 = sortbydistance(var_00,self.origin);
return var_07[0];
}
return undefined;
}
//Function Number: 19
func_B88E(param_00)
{
return isalive(param_00) && param_00.team != self.var_222.team && !func_9EA2(param_00) && isplayer(param_00) && !param_00 scripts\mp\_utility::_hasperk("specialty_blindeye") && func_B8B3(param_00) > 0.25;
}
//Function Number: 20
func_B8B3(param_00)
{
var_01 = vectornormalize(param_00.origin - self.origin);
var_02 = anglestoforward(self.angles);
return vectordot(var_01,var_02);
}
//Function Number: 21
func_B846()
{
self endon("death");
self endon("end_remote");
level endon("game_ended");
self endon("a10_missiles_fired");
var_00 = level.var_CC43[self.var_110EA];
self.var_222 setclientomnvar("ui_a10_rocket_lock",1);
thread func_B8B7();
var_01 = undefined;
while(self.var_11571.size < self.var_C240)
{
if(!isdefined(var_01))
{
var_01 = func_B88B();
if(isdefined(var_01))
{
thread func_B88F(var_01);
wait(var_00.var_50DC);
var_01 = undefined;
continue;
}
}
wait(0.1);
}
self.var_222 setclientomnvar("ui_a10_rocket_lock",0);
self notify("a10_missiles_fired");
}
//Function Number: 22
func_B8B7()
{
self endon("end_remote");
self endon("death");
level endon("game_ended");
self endon("a10_missiles_fired");
var_00 = self.var_222;
var_00 notifyonplayercommand("rocket_fire_released","-speed_throw");
var_00 notifyonplayercommand("rocket_fire_released","-ads_akimbo_accessible");
if(!level.console)
{
var_00 notifyonplayercommand("rocket_fire_released","-toggleads_throw");
}
self.var_222 waittill("rocket_fire_released");
var_00 setclientomnvar("ui_a10_rocket_lock",0);
self notify("a10_missiles_fired");
}
//Function Number: 23
func_B88F(param_00)
{
var_01 = level.var_CC43[self.var_110EA];
var_02 = [];
var_02["icon"] = param_00 scripts\mp\_entityheadicons::func_F73D(self.var_222,var_01.var_AF2A,(0,0,-70),10,10,0,0.05,1,0,0,0);
var_02["target"] = param_00;
self.var_11571[param_00 getentitynumber()] = var_02;
self.var_222 playlocalsound("recondrone_lockon");
}
//Function Number: 24
func_9EA2(param_00)
{
return isdefined(self.var_11571[param_00 getentitynumber()]);
}
//Function Number: 25
func_6D76()
{
self endon("death");
level endon("game_ended");
var_00 = level.var_CC43[self.var_110EA];
foreach(var_02 in self.var_11571)
{
if(self.var_C240 > 0)
{
var_03 = func_C529(self.var_110EA,var_02["target"],(0,0,-70));
if(isdefined(var_02["icon"]))
{
var_03.var_928E = var_02["icon"];
var_02["icon"] = undefined;
}
wait(var_00.var_50DD);
continue;
}
break;
}
var_05 = [];
}
//Function Number: 26
func_C529(param_00,param_01,param_02)
{
var_03 = self.var_C240 % 2;
var_04 = "tag_missile_" + var_03 + 1;
var_05 = self gettagorigin(var_04);
if(isdefined(var_05))
{
var_06 = self.var_222;
var_07 = level.var_CC43[param_00];
var_08 = scripts\mp\_utility::func_1309(var_07.var_E5DD,var_05,var_05 + 100 * anglestoforward(self.angles),self.var_222);
var_08 thread func_1488(param_01,param_02);
earthquake(0.25,0.05,self.origin,512);
self.var_C240--;
var_07 = level.var_CC43[param_00];
var_08 playsoundonmovingent(var_07.var_FC41[var_03]);
var_08 playloopsound(var_07.var_FC40);
return var_08;
}
return undefined;
}
//Function Number: 27
func_C52A(param_00)
{
var_01 = "tag_missile_" + self.var_C240;
var_02 = self gettagorigin(var_01);
if(isdefined(var_02))
{
var_03 = self.var_222;
var_04 = level.var_CC43[param_00];
var_05 = scripts\mp\_utility::func_1309(var_04.var_E5DD,var_02,var_02 + 100 * anglestoforward(self.angles),self.var_222);
earthquake(0.25,0.05,self.origin,512);
self.var_C240--;
var_05 playsoundonmovingent(var_04.var_FC41[self.var_C240]);
var_05 playloopsound(var_04.var_FC40);
self playsoundonmovingent("a10p_missile_launch");
}
}
//Function Number: 28
func_1488(param_00,param_01)
{
thread func_1486();
wait(0.2);
self missile_settargetent(param_00,param_01);
}
//Function Number: 29
func_1486()
{
self waittill("death");
if(isdefined(self.var_928E))
{
self.var_928E destroy();
}
}
//Function Number: 30
func_BA39(param_00,param_01)
{
param_01 endon("end_remote");
param_01 endon("death");
self endon("death");
level endon("game_ended");
var_02 = level.var_CC43[param_00];
param_01.var_1E41 = 1350;
self notifyonplayercommand("a10_cannon_start","+attack");
self notifyonplayercommand("a10_cannon_start","+attack_akimbo_accessible");
self notifyonplayercommand("a10_cannon_stop","-attack");
self notifyonplayercommand("a10_cannon_stop","-attack_akimbo_accessible");
while(param_01.var_1E41 > 0)
{
if(!self attackbuttonpressed())
{
self waittill("a10_cannon_start");
}
var_03 = gettime() + var_02.var_FC38;
param_01 playloopsound(var_02.var_FC39);
param_01 thread func_12E6D(param_00);
self waittill("a10_cannon_stop");
param_01 stoploopsound(var_02.var_FC39);
param_01 playsoundonmovingent(var_02.var_FC3B);
if(gettime() < var_03)
{
playsoundatpos(param_01.origin,var_02.var_FC37);
continue;
}
playsoundatpos(param_01.origin,var_02.var_FC36);
}
}
//Function Number: 31
func_12E6D(param_00)
{
self.var_222 endon("a10_cannon_stop");
self endon("death");
level endon("game_ended");
var_01 = level.var_CC43[param_00];
while(self.var_1E41 > 0)
{
earthquake(0.2,0.5,self.origin,512);
self.var_1E41 = self.var_1E41 - 10;
var_02 = self gettagorigin("tag_flash_attach") + 20 * anglestoforward(self.angles);
playfx(var_01.var_38D9,var_02);
self playrumbleonentity(var_01.var_38DA);
wait(0.1);
}
self.var_129B9 method_83C6();
}
//Function Number: 32
func_B9B6(param_00,param_01)
{
param_01 endon("end_remote");
param_01 endon("death");
self endon("death");
level endon("game_ended");
self setclientomnvar("ui_a10_alt_warn",0);
for(;;)
{
var_02 = int(clamp(param_01.origin[2],0,16383));
self setclientomnvar("ui_a10_alt",var_02);
if(var_02 <= 1000 && !isdefined(param_01.var_1D57))
{
param_01.var_1D57 = 1;
self setclientomnvar("ui_a10_alt_warn",1);
}
else if(var_02 > 1000 && isdefined(param_01.var_1D57))
{
param_01.var_1D57 = undefined;
self setclientomnvar("ui_a10_alt_warn",0);
}
wait(0.1);
}
}
//Function Number: 33
func_13AA8(param_00,param_01)
{
self endon("disconnect");
level endon("game_ended");
self waittill("intro_cleared");
thread func_B9B6(param_00,param_01);
thread func_BA0E(param_00,param_01);
thread func_BA39(param_00,param_01);
thread func_13B2F(param_01,param_00);
self thermalvisionfofoverlayon();
thread func_13A0D(param_01);
}
//Function Number: 34
func_13B2F(param_00,param_01)
{
param_00 endon("death");
param_00 endon("leaving");
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
level scripts\common\utility::waittill_any_3("round_end_finished","game_ended");
param_00 thread func_631B(param_01);
func_638E(param_01);
func_1481();
}
//Function Number: 35
func_31D4()
{
var_00 = [];
var_00[0] = 1;
var_00[1] = 2;
var_00[2] = 3;
var_00[3] = 4;
var_00[4] = 1;
var_00[5] = 2;
var_00[6] = 4;
var_00[7] = 3;
var_01 = [];
var_01[0] = 2;
var_01[1] = 1;
var_01[2] = 4;
var_01[3] = 3;
var_01[4] = 1;
var_01[5] = 4;
var_01[6] = 3;
var_01[7] = 2;
func_31D3(var_00,var_01);
}
//Function Number: 36
func_31D3(param_00,param_01)
{
level.var_148E = param_00;
level.var_148F = param_01;
}
//Function Number: 37
func_1480()
{
level endon("remove_player_control");
wait(randomfloatrange(3,7));
}
//Function Number: 38
func_13A0D(param_00)
{
level endon("game_ended");
param_00 endon("death");
param_00 endon("a10_end_strafe");
param_00 thread scripts\mp\killstreaks\_killstreaks::func_1CA5();
param_00 waittill("killstreakExit");
self notify("end_remote");
param_00 thread func_631B(param_00.var_110EA);
func_638E(param_00.var_110EA);
param_00 func_1481();
}
//Function Number: 39
func_1485()
{
self endon("end_remote");
var_00 = level.var_CC43[self.var_110EA];
scripts\mp\_damage::func_B9C6(var_00.maxhealth,"helicopter",::func_898F,::func_B938,1);
}
//Function Number: 40
func_B938(param_00,param_01,param_02,param_03,param_04)
{
var_05 = param_03;
var_05 = scripts\mp\_damage::func_8999(param_01,param_02,var_05);
var_05 = scripts\mp\_damage::func_89C6(param_01,param_02,var_05);
var_05 = scripts\mp\_damage::func_8975(param_01,param_02,var_05);
return var_05;
}
//Function Number: 41
func_898F(param_00,param_01,param_02,param_03)
{
var_04 = level.var_CC43[self.var_110EA];
scripts\mp\_damage::func_C548("a10",param_00,param_01,param_02,param_03,var_04.var_EC44,var_04.var_13523,var_04.var_3774);
func_1481();
}
//Function Number: 42
func_1481()
{
var_00 = level.var_CC43[self.var_110EA];
scripts\mp\killstreaks\_plane::func_11098(self);
playfx(var_00.var_69B9,self.origin);
self delete();
}