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

576 lines
11 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\sp\_stinger.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 23
* Decompile Time: 1052 ms
* Timestamp: 10/27/2023 12:24:58 AM
*******************************************************************/
//Function Number: 1
init()
{
level.player func_41BB();
level.player thread func_10FA0();
level.player thread stringemissilefired();
level.player thread func_10FAC();
level.player thread func_10F9E();
}
//Function Number: 2
func_41BB()
{
if(!isdefined(self.var_10F9D))
{
self.var_10F9D = spawnstruct();
}
self.var_10F9D.var_10FA6 = 0;
self.var_10F9D.var_10FA5 = 0;
self.var_10F9D.var_10FA3 = 0;
if(isdefined(self.var_10F9D.var_10FAA))
{
func_41E3(func_8195(self.var_10F9D.var_10FAA));
}
self.var_10F9D.var_10FAA = undefined;
self notify("stinger_irt_cleartarget");
self notify("stop_lockon_sound");
self notify("stop_locked_sound");
self.var_10F9D.var_10FA4 = undefined;
self weaponlockfree();
self weaponlocktargettooclose(0);
self weaponlocknoclearance(0);
}
//Function Number: 3
func_10FA0()
{
for(;;)
{
self waittill("weapon_fired");
var_00 = getweaponbasename(self getcurrentweapon());
if(!isdefined(var_00) || var_00 != "iw7_lockon")
{
continue;
}
self notify("stinger_fired");
}
}
//Function Number: 4
stringemissilefired()
{
for(;;)
{
self waittill("missile_fire",var_00,var_01);
if(isdefined(var_00))
{
var_02 = self.var_10F9D.var_10FAA;
if(func_9F7A(var_02))
{
if(isdefined(var_02.var_12BA4) && !scripts\common\utility::istrue(var_02.var_2A6))
{
if(var_02.var_12BA4 == "soldier" || var_02.var_12BA4 == "c6")
{
var_00 missile_settargetent(self.var_10F9D.var_10FAA,(0,0,38));
}
else if(var_02.var_12BA4 == "c8")
{
var_00 missile_settargetent(self.var_10F9D.var_10FAA,(0,0,60));
}
}
}
}
}
}
//Function Number: 5
func_10FAC()
{
self endon("death");
for(;;)
{
while(!func_D42E())
{
wait(0.05);
}
setomnvar("ui_lockon_ads",1);
self.var_10F9D.var_AF2F = [];
self.var_10F9D.var_11565 = ["0","1","2","3"];
thread func_10FA2();
while(func_D42E())
{
wait(0.05);
}
setomnvar("ui_lockon_ads",0);
self notify("stinger_IRT_off");
func_41BB();
foreach(var_01 in self.var_10F9D.var_AF2F)
{
func_41E3(var_01);
}
self.var_10F9D.var_AF2F = undefined;
self.var_10F9D.var_11565 = undefined;
}
}
//Function Number: 6
func_10F9E()
{
self waittill("death");
if(isdefined(self.var_10F9D.var_AF2F))
{
setomnvar("ui_lockon_ads",0);
foreach(var_01 in self.var_10F9D.var_AF2F)
{
func_41E3(var_01);
}
}
}
//Function Number: 7
func_10FA2()
{
self endon("death");
self endon("stinger_IRT_off");
for(;;)
{
wait(0.05);
if(self.var_10F9D.var_10FA3)
{
if(!func_9F7A(self.var_10F9D.var_10FAA))
{
func_41BB();
continue;
}
var_00 = func_8195(self.var_10F9D.var_10FAA);
if(isdefined(var_00.var_65D3.var_3508))
{
setomnvar("ui_lockon_target_health_" + var_00.var_92B8,var_00.var_65D3.var_8CB0);
}
func_F875(self.var_10F9D.var_10FAA);
continue;
}
if(self.var_10F9D.var_10FA5)
{
if(!func_9F7A(self.var_10F9D.var_10FAA))
{
func_41BB();
continue;
}
var_00 = func_8195(self.var_10F9D.var_10FAA);
if(isdefined(var_00.var_65D3.var_3508))
{
setomnvar("ui_lockon_target_health_" + var_00.var_92B8,var_00.var_65D3.var_8CB0);
}
var_01 = gettime() - self.var_10F9D.var_10FA6;
if(var_01 < 500)
{
continue;
}
self notify("stop_lockon_sound");
self.var_10F9D.var_10FA3 = 1;
self method_8402(self.var_10F9D.var_10FAA);
func_F875(self.var_10F9D.var_10FAA);
setomnvar("ui_lockon_target_state_" + var_00.var_92B8,2);
continue;
}
var_02 = func_7E04();
if(!isdefined(var_02))
{
continue;
}
setomnvar("ui_lockon_target_state_" + var_02.var_92B8,1);
self.var_10F9D.var_10FAA = var_02.var_65D3;
self.var_10F9D.var_10FA6 = gettime();
self.var_10F9D.var_10FA5 = 1;
}
}
//Function Number: 8
stinger_get_closest_to_player_view(param_00,param_01,param_02,param_03)
{
if(!param_00.size)
{
return;
}
if(!isdefined(param_01))
{
param_01 = level.player;
}
if(!isdefined(param_03))
{
param_03 = -1;
}
var_04 = param_01.origin;
if(isdefined(param_02) && param_02)
{
var_04 = param_01 geteye();
}
var_05 = undefined;
var_06 = param_01 getplayerangles();
var_07 = anglestoforward(var_06);
var_08 = -1;
foreach(var_0A in param_00)
{
var_0B = vectortoangles(var_0A.origin - var_04);
var_0C = anglestoforward(var_0B);
var_0D = vectordot(var_07,var_0C);
var_0E = distancesquared(var_04,var_0A.origin);
var_0F = 1 - lib_0B4D::func_C097(squared(250),squared(5000),var_0E);
var_0D = var_0D * var_0F;
if(var_0D < var_08)
{
continue;
}
if(var_0D < param_03)
{
continue;
}
var_08 = var_0D;
var_05 = var_0A;
}
return var_05;
}
//Function Number: 9
func_7E04()
{
var_00 = func_7E4B();
var_01 = self.var_10F9D.var_AF2F;
if(isdefined(self.var_10F9D.var_10FAA))
{
var_00 = scripts\common\utility::func_22A9(var_00,self.var_10F9D.var_10FAA);
var_01 = scripts\common\utility::func_22A9(var_01,func_8195(self.var_10F9D.var_10FAA));
}
var_02 = [];
for(var_03 = 0;var_03 < var_00.size;var_03++)
{
var_04 = var_00[var_03];
if(func_8C0A(var_04))
{
var_02[var_02.size] = var_04;
continue;
}
var_05 = func_8195(var_04);
if(isdefined(var_05))
{
func_41E3(var_05);
}
}
if(var_02.size == 0)
{
return undefined;
}
var_06 = [];
var_07 = 4;
if(isdefined(self.var_10F9D.var_10FAA))
{
var_07--;
}
for(var_08 = 0;var_08 < var_07;var_08++)
{
var_04 = stinger_get_closest_to_player_view(var_02,level.player,1);
var_06[var_08] = var_04;
var_02 = scripts\common\utility::func_22A9(var_02,var_04);
if(var_02.size == 0)
{
break;
}
}
var_09 = var_06;
foreach(var_05 in var_01)
{
if(!scripts\common\utility::func_2286(var_09,var_05.var_65D3))
{
func_41E3(var_05);
continue;
}
var_09 = scripts\common\utility::func_22A9(var_09,var_05.var_65D3);
}
foreach(var_04 in var_09)
{
func_1833(var_04);
}
foreach(var_0F in var_06)
{
if(func_9922(var_0F))
{
return func_8195(var_0F);
}
}
return undefined;
}
//Function Number: 10
func_7E4B()
{
var_00 = function_0072("axis");
foreach(var_02 in var_00)
{
if(isdefined(var_02.var_12BA4) && var_02.var_12BA4 == "c12")
{
var_00 = scripts\common\utility::func_22A9(var_00,var_02);
var_03 = var_02.var_C925;
if(isdefined(var_03["right_leg"]) && !isdefined(var_03["left_leg"]))
{
var_03 = scripts\sp\_utility::func_22B2(var_03,"right_leg");
}
else if(isdefined(var_03["left_leg"]) && !isdefined(var_03["right_leg"]))
{
var_03 = scripts\sp\_utility::func_22B2(var_03,"left_leg");
}
var_00 = scripts\common\utility::array_combine(var_00,var_03);
}
}
return var_00;
}
//Function Number: 11
func_8195(param_00)
{
foreach(var_02 in self.var_10F9D.var_AF2F)
{
if(var_02.var_65D3 == param_00)
{
return var_02;
}
}
return undefined;
}
//Function Number: 12
func_1833(param_00)
{
var_01 = spawnstruct();
var_01.var_65D3 = param_00;
var_01.var_92B8 = self.var_10F9D.var_11565[0];
setomnvar("ui_lockon_target_ent_" + var_01.var_92B8,param_00);
setomnvar("ui_lockon_target_state_" + var_01.var_92B8,0);
if(isdefined(param_00.var_3508))
{
setomnvar("ui_lockon_target_name_" + var_01.var_92B8,param_00.name);
setomnvar("ui_lockon_target_health_" + var_01.var_92B8,var_01.var_65D3.var_8CB0);
}
self.var_10F9D.var_11565 = scripts\common\utility::func_22A9(self.var_10F9D.var_11565,var_01.var_92B8);
self.var_10F9D.var_AF2F[self.var_10F9D.var_AF2F.size] = var_01;
}
//Function Number: 13
func_41E3(param_00)
{
self.var_10F9D.var_AF2F = scripts\common\utility::func_22A9(self.var_10F9D.var_AF2F,param_00);
self.var_10F9D.var_11565[self.var_10F9D.var_11565.size] = param_00.var_92B8;
setomnvar("ui_lockon_target_ent_" + param_00.var_92B8,undefined);
setomnvar("ui_lockon_target_state_" + param_00.var_92B8,0);
setomnvar("ui_lockon_target_name_" + param_00.var_92B8,"none");
setomnvar("ui_lockon_target_health_" + param_00.var_92B8,0);
}
//Function Number: 14
func_9922(param_00)
{
return level.player method_8409(func_7E9A(param_00),65,45);
}
//Function Number: 15
func_9920(param_00)
{
return level.player method_8409(func_7E9A(param_00),65,75);
}
//Function Number: 16
func_9921(param_00)
{
return level.player method_8409(func_7E9A(param_00),65,35);
}
//Function Number: 17
func_8C0A(param_00)
{
var_01 = self geteye();
var_02 = [self,param_00];
var_03 = func_7E9A(param_00);
if(isdefined(param_00.var_3508))
{
var_02[var_02.size] = param_00.var_3508;
if(isdefined(param_00.var_3508.var_E601))
{
var_02[var_02.size] = param_00.var_3508.var_E601;
}
}
var_04 = scripts\common\trace::func_DCED(var_01,var_03,var_02);
return distancesquared(var_04["position"],var_03) <= 1;
}
//Function Number: 18
func_7E9A(param_00)
{
var_01 = param_00.origin;
if(!isdefined(param_00.var_3508))
{
if(isdefined(param_00.var_12BA4) && tolower(param_00.var_12BA4) == "c8")
{
var_02 = 60;
}
else
{
var_02 = 38;
}
var_01 = var_01 + var_02 * anglestoup(param_00.angles);
}
return var_01;
}
//Function Number: 19
func_9F7A(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if((!isdefined(param_00.var_3508) && !isalive(param_00)) || isdefined(param_00.var_3508) && !isalive(param_00.var_3508))
{
return 0;
}
if(!func_9920(param_00))
{
return 0;
}
if(!func_8C0A(param_00))
{
return 0;
}
if(func_9921(self.var_10F9D.var_10FAA) || self.var_10F9D.var_10FA5 && !self.var_10F9D.var_10FA3)
{
return 1;
}
var_01 = func_7E04();
if(isdefined(var_01) && func_9921(var_01.var_65D3))
{
return 0;
}
return 1;
}
//Function Number: 20
func_D42E()
{
var_00 = self getcurrentweapon();
var_01 = getweaponbasename(var_00);
if(!isdefined(var_01) || var_01 != "iw7_lockon")
{
return 0;
}
if(self getweaponammoclip(var_00) == 0)
{
return 0;
}
if(self method_822E() == 1)
{
return 1;
}
return 0;
}
//Function Number: 21
func_F875(param_00)
{
var_01 = 250;
if(!isdefined(param_00))
{
return 0;
}
var_02 = distance2d(self.origin,param_00.origin);
if(var_02 < var_01)
{
self.var_10F9D.var_11588 = 1;
self weaponlocktargettooclose(1);
return;
}
self.var_10F9D.var_11588 = 0;
self weaponlocktargettooclose(0);
}
//Function Number: 22
func_B061(param_00,param_01)
{
self endon("stop_lockon_sound");
self endon("death");
for(;;)
{
self playlocalsound(param_00);
wait(param_01);
}
}
//Function Number: 23
func_B060(param_00,param_01)
{
self endon("stop_locked_sound");
self endon("death");
if(isdefined(self.var_10F9D.var_10FA4))
{
return;
}
self.var_10F9D.var_10FA4 = 1;
for(;;)
{
self playlocalsound(param_00);
wait(param_01 / 3);
wait(param_01 / 3);
wait(param_01 / 3);
}
self.var_10F9D.var_10FA4 = undefined;
}