mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-10 10:27:55 -05:00
576 lines
11 KiB
Plaintext
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;
|
|
} |