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

773 lines
16 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\killstreaks\_remotemortar.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 26
* Decompile Time: 1245 ms
* Timestamp: 10/27/2023 12:29:27 AM
*******************************************************************/
//Function Number: 1
init()
{
level.var_DF70["laserTarget"] = loadfx("vfx/misc/laser_glow");
level.var_DF70["missileExplode"] = loadfx("vfx/core/expl/bouncing_betty_explosion");
level.var_DF70["deathExplode"] = loadfx("vfx/core/expl/uav_advanced_death");
scripts\mp\killstreaks\_killstreaks::func_DEFB("remote_mortar",::func_128FD);
level.var_DF6F = undefined;
}
//Function Number: 2
func_128FD(param_00,param_01)
{
if(isdefined(level.var_DF6F))
{
self iprintlnbold(&"KILLSTREAKS_AIR_SPACE_TOO_CROWDED");
return 0;
}
scripts\mp\_utility::func_FB09("remote_mortar");
var_02 = scripts\mp\killstreaks\_killstreaks::func_98C2("remote_mortar");
if(var_02 != "success")
{
if(var_02 != "disconnect")
{
scripts\mp\_utility::func_41E9();
}
return 0;
}
else if(isdefined(level.var_DF6F))
{
self iprintlnbold(&"KILLSTREAKS_AIR_SPACE_TOO_CROWDED");
scripts\mp\_utility::func_41E9();
return 0;
}
scripts\mp\_matchdata::func_AFC9("remote_mortar",self.origin);
return func_10DE9(param_00);
}
//Function Number: 3
func_10DE9(param_00)
{
var_01 = func_10906(param_00,self);
if(!isdefined(var_01))
{
return 0;
}
level.var_DF6F = var_01;
func_DF87(var_01);
thread scripts\mp\_utility::func_115DE("used_remote_mortar",self);
return 1;
}
//Function Number: 4
func_10906(param_00,param_01)
{
var_02 = spawnplane(param_01,"script_model",level.var_12AF5 gettagorigin("tag_origin"),"compass_objpoint_reaper_friendly","compass_objpoint_reaper_enemy");
if(!isdefined(var_02))
{
return undefined;
}
var_02 setmodel("vehicle_predator_b");
var_02.var_AC68 = param_00;
var_02.team = param_01.team;
var_02.var_222 = param_01;
var_02.var_C22B = 1;
var_02 setcandamage(1);
var_02 thread func_4D72();
var_02.var_8DD9 = "remote_mortar";
var_02.var_12AFA = "remote_mortar";
var_02 scripts\mp\killstreaks\_uav::func_1867();
var_03 = 6300;
var_04 = randomint(360);
var_05 = 6100;
var_06 = cos(var_04) * var_05;
var_07 = sin(var_04) * var_05;
var_08 = vectornormalize((var_06,var_07,var_03));
var_08 = var_08 * 6100;
var_02 linkto(level.var_12AF5,"tag_origin",var_08,(0,var_04 - 90,10));
param_01 setclientdvar("ui_reaper_targetDistance",-1);
param_01 setclientdvar("ui_reaper_ammoCount",14);
var_02 thread func_898E(param_01);
var_02 thread func_89F3(param_01);
var_02 thread func_89CE(param_01);
var_02 thread func_89CF(param_01);
var_02 thread func_89B7();
var_02 thread func_89B6();
return var_02;
}
//Function Number: 5
func_B011(param_00)
{
self endon("disconnect");
level endon("game_ended");
param_00 endon("death");
wait(0.05);
var_01 = vectortoangles(level.var_12AF5.origin - param_00 gettagorigin("tag_player"));
self setplayerangles(var_01);
}
//Function Number: 6
func_DF87(param_00)
{
scripts\mp\_utility::func_12C6("mortar_remote_mp");
scripts\mp\_utility::_switchtoweapon("mortar_remote_mp");
thread func_13714(1,param_00);
thread scripts\mp\_utility::func_DF2E(param_00);
if(getdvarint("camera_thirdPerson"))
{
scripts\mp\_utility::setthirdpersondof(0);
}
self playerlinkweaponviewtodelta(param_00,"tag_player",1,40,40,25,40);
thread func_B011(param_00);
scripts\common\utility::func_1C76(0);
thread func_DF88(param_00);
thread func_DF7A(param_00);
thread func_DFB3(param_00);
}
//Function Number: 7
func_13714(param_00,param_01)
{
self endon("disconnect");
param_01 endon("death");
wait(param_00);
self visionsetthermalforplayer(level.var_1537.var_65D1,0);
self.var_AA42 = level.var_1537.var_65D1;
self thermalvisionfofoverlayon();
}
//Function Number: 8
func_DF88(param_00)
{
level endon("game_ended");
self endon("disconnect");
param_00 endon("remote_done");
param_00 endon("death");
param_00.var_1155F = spawnfx(level.var_DF70["laserTarget"],(0,0,0));
for(;;)
{
var_01 = self geteye();
var_02 = anglestoforward(self getplayerangles());
var_03 = var_01 + var_02 * 15000;
var_04 = bullettrace(var_01,var_03,0,param_00.var_1155F);
if(isdefined(var_04["position"]))
{
param_00.var_1155F.origin = var_04["position"];
triggerfx(param_00.var_1155F);
}
wait(0.05);
}
}
//Function Number: 9
func_DF7A(param_00)
{
level endon("game_ended");
self endon("disconnect");
param_00 endon("remote_done");
param_00 endon("death");
var_01 = gettime();
var_02 = var_01 - 2200;
var_03 = 14;
self.var_6DB6 = 0;
for(;;)
{
var_01 = gettime();
if(self attackbuttonpressed() && var_01 - var_02 > 3000)
{
var_03--;
self setclientdvar("ui_reaper_ammoCount",var_03);
var_02 = var_01;
self.var_6DB6 = 1;
self playlocalsound("reaper_fire");
self playrumbleonentity("damage_heavy");
var_04 = self geteye();
var_05 = anglestoforward(self getplayerangles());
var_06 = anglestoright(self getplayerangles());
var_07 = var_04 + var_05 * 100 + var_06 * -100;
var_08 = scripts\mp\_utility::func_1309("remote_mortar_missile_mp",var_07,param_00.var_1155F.origin,self);
var_08.type = "remote_mortar";
earthquake(0.3,0.5,var_04,256);
var_08 missile_settargetent(param_00.var_1155F);
var_08 missile_setflightmodedirect();
var_08 thread func_DF7F(param_00);
var_08 thread func_DF81(param_00);
var_08 waittill("death");
self setclientdvar("ui_reaper_targetDistance",-1);
self.var_6DB6 = 0;
if(var_03 == 0)
{
break;
}
continue;
}
wait(0.05);
}
self notify("removed_reaper_ammo");
func_DF78(param_00);
param_00 thread func_DF7C();
}
//Function Number: 10
func_89F4(param_00)
{
level endon("game_ended");
self endon("disconnect");
param_00 endon("remote_done");
param_00 endon("death");
self notifyonplayercommand("remote_mortar_toggleZoom1","+ads_akimbo_accessible");
if(!level.console)
{
self notifyonplayercommand("remote_mortar_toggleZoom1","+toggleads_throw");
}
for(;;)
{
var_01 = scripts\common\utility::func_13734("remote_mortar_toggleZoom1");
if(!isdefined(self.var_DF71))
{
self.var_DF71 = 0;
}
self.var_DF71 = 1 - self.var_DF71;
}
}
//Function Number: 11
func_DFB3(param_00)
{
level endon("game_ended");
self endon("disconnect");
param_00 endon("remote_done");
param_00 endon("death");
self.var_DF71 = undefined;
thread func_89F4(param_00);
param_00.var_13FCA = 0;
var_01 = 0;
for(;;)
{
if(self adsbuttonpressed())
{
wait(0.05);
if(isdefined(self.var_DF71))
{
var_01 = 1;
}
break;
}
wait(0.05);
}
for(;;)
{
if((!var_01 && self adsbuttonpressed()) || var_01 && self.var_DF71)
{
if(param_00.var_13FCA == 0)
{
scripts\mp\_utility::func_12C6("mortar_remote_zoom_mp");
scripts\mp\_utility::_switchtoweapon("mortar_remote_zoom_mp");
param_00.var_13FCA = 1;
}
}
else if((!var_01 && !self adsbuttonpressed()) || var_01 && !self.var_DF71)
{
if(param_00.var_13FCA == 1)
{
scripts\mp\_utility::func_12C6("mortar_remote_mp");
scripts\mp\_utility::_switchtoweapon("mortar_remote_mp");
param_00.var_13FCA = 0;
}
}
wait(0.05);
}
}
//Function Number: 12
func_DF7F(param_00)
{
level endon("game_ended");
param_00 endon("death");
param_00 endon("remote_done");
self endon("death");
for(;;)
{
var_01 = distance(self.origin,param_00.var_1155F.origin);
param_00.var_222 setclientdvar("ui_reaper_targetDistance",int(var_01 / 12));
wait(0.05);
}
}
//Function Number: 13
func_DF81(param_00)
{
self endon("death");
scripts\mp\_hostmigration::func_13708(6);
playfx(level.var_DF70["missileExplode"],self.origin);
self delete();
}
//Function Number: 14
func_DF78(param_00)
{
if(!scripts\mp\_utility::func_9FC6())
{
return;
}
if(isdefined(param_00))
{
param_00 notify("helicopter_done");
}
self thermalvisionoff();
self thermalvisionfofoverlayoff();
self visionsetthermalforplayer(game["thermal_vision"],0);
scripts\mp\_utility::func_E2D8(0);
self unlink();
scripts\mp\_utility::func_41E9();
if(getdvarint("camera_thirdPerson"))
{
scripts\mp\_utility::setthirdpersondof(1);
}
scripts\mp\_utility::_switchtoweapon(scripts\common\utility::getlastweapon());
var_01 = scripts\mp\_utility::func_7F55("remote_mortar");
scripts\mp\_utility::func_141E(var_01);
scripts\mp\_utility::func_141E("mortar_remote_zoom_mp");
scripts\mp\_utility::func_141E("mortar_remote_mp");
scripts\common\utility::func_1C76(1);
}
//Function Number: 15
func_89F3(param_00)
{
level endon("game_ended");
param_00 endon("disconnect");
param_00 endon("removed_reaper_ammo");
self endon("death");
var_01 = 40;
scripts\mp\_hostmigration::func_13708(var_01);
while(param_00.var_6DB6)
{
wait(0.05);
}
if(isdefined(param_00))
{
param_00 func_DF78(self);
}
thread func_DF7C();
}
//Function Number: 16
func_898E(param_00)
{
level endon("game_ended");
param_00 endon("disconnect");
self endon("remote_removed");
self endon("remote_done");
self waittill("death");
if(isdefined(param_00))
{
param_00 func_DF78(self);
}
level thread func_E161(self,1);
}
//Function Number: 17
func_89CE(param_00)
{
level endon("game_ended");
self endon("remote_done");
self endon("death");
param_00 endon("disconnect");
param_00 endon("removed_reaper_ammo");
param_00 scripts\common\utility::waittill_any_3("joined_team","joined_spectators");
if(isdefined(param_00))
{
param_00 func_DF78(self);
}
thread func_DF7C();
}
//Function Number: 18
func_89CF(param_00)
{
level endon("game_ended");
self endon("remote_done");
self endon("death");
param_00 endon("removed_reaper_ammo");
param_00 waittill("disconnect");
thread func_DF7C();
}
//Function Number: 19
func_E161(param_00,param_01)
{
self notify("remote_removed");
if(isdefined(param_00.var_1155F))
{
param_00.var_1155F delete();
}
if(isdefined(param_00))
{
param_00 delete();
param_00 scripts\mp\killstreaks\_uav::func_E182();
}
if(!isdefined(param_01) || param_01 == 1)
{
level.var_DF6F = undefined;
}
}
//Function Number: 20
func_DF7C()
{
level.var_DF6F = undefined;
level endon("game_ended");
self endon("death");
self notify("remote_done");
self unlink();
var_00 = self.origin + anglestoforward(self.angles) * 20000;
self moveto(var_00,30);
playfxontag(level._effect["ac130_engineeffect"],self,"tag_origin");
scripts\mp\_hostmigration::func_13708(3);
self moveto(var_00,4,4,0);
scripts\mp\_hostmigration::func_13708(4);
level thread func_E161(self,0);
}
//Function Number: 21
func_DF79()
{
self notify("death");
self hide();
var_00 = anglestoright(self.angles) * 200;
playfx(level.var_DF70["deathExplode"],self.origin,var_00);
}
//Function Number: 22
func_4D72()
{
level endon("game_ended");
self.var_222 endon("disconnect");
self.health = 999999;
self.maxhealth = 1500;
self.var_E1 = 0;
for(;;)
{
self waittill("damage",var_00,var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09);
if(!scripts\mp\_weapons::func_7415(self.var_222,var_01))
{
continue;
}
if(!isdefined(self))
{
return;
}
if(isdefined(var_08) && var_08 & level.var_92C4)
{
self.var_1390E = 1;
}
if(isdefined(var_08) && var_08 & level.var_92C6)
{
self.var_1390F = 1;
}
self.var_1390B = 1;
var_0A = var_00;
if(isplayer(var_01))
{
var_01 scripts\mp\_damagefeedback::func_12E84("");
if(var_04 == "MOD_RIFLE_BULLET" || var_04 == "MOD_PISTOL_BULLET")
{
if(var_01 scripts\mp\_utility::_hasperk("specialty_armorpiercing"))
{
var_0A = var_0A + var_00 * level.var_218B;
}
}
}
if(isdefined(var_09))
{
switch(var_09)
{
case "javelin_mp":
case "stinger_mp":
self.var_A859 = 1;
var_0A = self.maxhealth + 1;
break;
case "sam_projectile_mp":
self.var_A859 = 1;
break;
}
scripts\mp\killstreaks\_killstreaks::func_A6A0(var_01,var_09,self);
}
self.var_E1 = self.var_E1 + var_0A;
if(isdefined(self.var_222))
{
self.var_222 playlocalsound("reaper_damaged");
}
if(self.var_E1 >= self.maxhealth)
{
if(isplayer(var_01) && !isdefined(self.var_222) || var_01 != self.var_222)
{
var_01 notify("destroyed_killstreak",var_09);
thread scripts\mp\_utility::func_115DE("callout_destroyed_remote_mortar",var_01);
var_01 thread scripts\mp\_utility::func_83B4("kill",var_09,50);
}
if(isdefined(self.var_222))
{
self.var_222 stoplocalsound("missile_incoming");
}
thread func_DF79();
level.var_DF6F = undefined;
return;
}
}
}
//Function Number: 23
func_89B7()
{
level endon("game_ended");
self endon("death");
self endon("remote_done");
for(;;)
{
level waittill("stinger_fired",var_00,var_01,var_02);
if(!isdefined(var_02) || var_02 != self)
{
continue;
}
var_01 thread func_10FA8(var_02,var_00);
}
}
//Function Number: 24
func_10FA8(param_00,param_01)
{
self endon("death");
param_00 endon("death");
if(isdefined(param_00.var_222))
{
param_00.var_222 playlocalsound("missile_incoming");
}
self missile_settargetent(param_00);
var_02 = distance(self.origin,param_00 method_8159(0,0,0));
var_03 = param_00 method_8159(0,0,0);
for(;;)
{
if(!isdefined(param_00))
{
var_04 = var_03;
}
else
{
var_04 = param_00 method_8159(0,0,0);
}
var_03 = var_04;
var_05 = distance(self.origin,var_04);
if(var_05 < 3000 && param_00.var_C22B > 0)
{
param_00.var_C22B--;
param_00 thread scripts\mp\killstreaks\_flares::func_6EAE();
var_06 = param_00 scripts\mp\killstreaks\_flares::func_6EA0();
self missile_settargetent(var_06);
param_00 = var_06;
if(isdefined(param_00.var_222))
{
param_00.var_222 stoplocalsound("missile_incoming");
}
return;
}
if(var_06 < var_03)
{
var_03 = var_06;
}
if(var_06 > var_03)
{
if(var_06 > 1536)
{
return;
}
if(isdefined(param_01.var_222))
{
param_01.var_222 stoplocalsound("missile_incoming");
if(level.teambased)
{
if(param_01.team != var_02.team)
{
radiusdamage(self.origin,1000,1000,1000,var_02,"MOD_EXPLOSIVE","stinger_mp");
}
}
else
{
radiusdamage(self.origin,1000,1000,1000,var_02,"MOD_EXPLOSIVE","stinger_mp");
}
}
self hide();
wait(0.05);
self delete();
}
wait(0.05);
}
}
//Function Number: 25
func_89B6()
{
level endon("game_ended");
self endon("death");
self endon("remote_done");
for(;;)
{
level waittill("sam_fired",var_00,var_01,var_02);
if(!isdefined(var_02) || var_02 != self)
{
continue;
}
level thread func_EB18(var_02,var_00,var_01);
}
}
//Function Number: 26
func_EB18(param_00,param_01,param_02)
{
param_00 endon("death");
if(isdefined(param_00.var_222))
{
param_00.var_222 playlocalsound("missile_incoming");
}
var_03 = 150;
var_04 = 1000;
var_05 = [];
for(var_06 = 0;var_06 < param_02.size;var_06++)
{
if(isdefined(param_02[var_06]))
{
var_05[var_06] = distance(param_02[var_06].origin,param_00 method_8159(0,0,0));
continue;
}
var_05[var_06] = undefined;
}
for(;;)
{
var_07 = param_00 method_8159(0,0,0);
var_08 = [];
for(var_06 = 0;var_06 < param_02.size;var_06++)
{
if(isdefined(param_02[var_06]))
{
var_08[var_06] = distance(param_02[var_06].origin,var_07);
}
}
var_06 = 0;
while(var_06 < var_08.size)
{
if(isdefined(var_08[var_06]))
{
if(var_08[var_06] < 3000 && param_00.var_C22B > 0)
{
param_00.var_C22B--;
param_00 thread scripts\mp\killstreaks\_flares::func_6EAE();
var_09 = param_00 scripts\mp\killstreaks\_flares::func_6EA0();
for(var_0A = 0;var_0A < param_02.size;var_0A++)
{
if(isdefined(param_02[var_0A]))
{
param_02[var_0A] missile_settargetent(var_09);
}
}
if(isdefined(param_00.var_222))
{
param_00.var_222 stoplocalsound("missile_incoming");
}
return;
}
if(var_0A[var_08] < var_07[var_08])
{
var_07[var_08] = var_0A[var_08];
}
if(var_0A[var_08] > var_07[var_08])
{
if(var_0A[var_08] > 1536)
{
continue;
}
if(isdefined(param_02.var_222))
{
param_02.var_222 stoplocalsound("missile_incoming");
if(level.teambased)
{
if(param_02.team != var_03.team)
{
radiusdamage(var_04[var_08].origin,var_06,var_05,var_05,var_03,"MOD_EXPLOSIVE","sam_projectile_mp");
}
}
else
{
radiusdamage(var_04[var_08].origin,var_06,var_05,var_05,var_03,"MOD_EXPLOSIVE","sam_projectile_mp");
}
}
var_04[var_08] hide();
wait(0.05);
var_04[var_08] delete();
}
}
var_08++;
}
wait(0.05);
}
}