mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-10 02:17:56 -05:00
514 lines
10 KiB
Plaintext
514 lines
10 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: scripts\mp\_stinger.gsc
|
|
* Game: Call of Duty: Infinite Warfare
|
|
* Platform: PC
|
|
* Function Count: 17
|
|
* Decompile Time: 624 ms
|
|
* Timestamp: 10/27/2023 12:21:41 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
func_98D5()
|
|
{
|
|
self.var_10FA9 = undefined;
|
|
self.var_10FAA = undefined;
|
|
self.var_10FA6 = undefined;
|
|
self.var_10FA7 = undefined;
|
|
thread func_E273();
|
|
level.var_10FAB = [];
|
|
}
|
|
|
|
//Function Number: 2
|
|
func_E272()
|
|
{
|
|
if(!isdefined(self.var_10FAE))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.var_10FAE = undefined;
|
|
self notify("stop_javelin_locking_feedback");
|
|
self notify("stop_javelin_locked_feedback");
|
|
self notify("stinger_lock_lost");
|
|
self weaponlockfree();
|
|
self stoplocalsound("maaws_reticle_tracking");
|
|
self stoplocalsound("maaws_reticle_locked");
|
|
func_E12E(self.var_10FAA);
|
|
func_98D5();
|
|
}
|
|
|
|
//Function Number: 3
|
|
func_E273()
|
|
{
|
|
self endon("disconnect");
|
|
self notify("ResetStingerLockingOnDeath");
|
|
self endon("ResetStingerLockingOnDeath");
|
|
for(;;)
|
|
{
|
|
self waittill("death");
|
|
func_E272();
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
func_B06A()
|
|
{
|
|
self endon("stop_javelin_locking_feedback");
|
|
for(;;)
|
|
{
|
|
if(isdefined(level.var_3F14) && isdefined(level.var_3F14.var_8712) && isdefined(self.var_10FAA) && self.var_10FAA == level.var_3F14.var_8712)
|
|
{
|
|
level.var_1541 playlocalsound("maaws_incoming_lp");
|
|
}
|
|
|
|
if(isdefined(level.var_1541) && isdefined(self.var_10FAA) && self.var_10FAA == level.var_1537.var_CC44)
|
|
{
|
|
level.var_1541 playlocalsound("maaws_incoming_lp");
|
|
}
|
|
|
|
self playlocalsound("maaws_reticle_tracking");
|
|
self playrumbleonentity("ac130_25mm_fire");
|
|
wait(0.6);
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
func_B069()
|
|
{
|
|
self endon("stop_javelin_locked_feedback");
|
|
for(;;)
|
|
{
|
|
if(isdefined(level.var_3F14) && isdefined(level.var_3F14.var_8712) && isdefined(self.var_10FAA) && self.var_10FAA == level.var_3F14.var_8712)
|
|
{
|
|
level.var_1541 playlocalsound("maaws_incoming_lp");
|
|
}
|
|
|
|
if(isdefined(level.var_1541) && isdefined(self.var_10FAA) && self.var_10FAA == level.var_1537.var_CC44)
|
|
{
|
|
level.var_1541 playlocalsound("maaws_incoming_lp");
|
|
}
|
|
|
|
self playlocalsound("maaws_reticle_locked");
|
|
self playrumbleonentity("ac130_25mm_fire");
|
|
wait(0.25);
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
func_103EC(param_00)
|
|
{
|
|
var_01 = 500;
|
|
if(param_00 stingtargstruct_isinlos())
|
|
{
|
|
self.var_10FA7 = 0;
|
|
return 1;
|
|
}
|
|
|
|
if(self.var_10FA7 == 0)
|
|
{
|
|
self.var_10FA7 = gettime();
|
|
}
|
|
|
|
var_02 = gettime() - self.var_10FA7;
|
|
if(var_02 >= var_01)
|
|
{
|
|
func_E272();
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 7
|
|
func_10FAD()
|
|
{
|
|
if(!isplayer(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
func_98D5();
|
|
for(;;)
|
|
{
|
|
wait(0.05);
|
|
if(self method_822E() < 0.95)
|
|
{
|
|
func_E272();
|
|
continue;
|
|
}
|
|
|
|
var_00 = scripts\mp\_utility::func_821D(self getcurrentweapon());
|
|
if(var_00 != "iw7_lockon_mp")
|
|
{
|
|
func_E272();
|
|
continue;
|
|
}
|
|
|
|
self.var_10FAE = 1;
|
|
if(!isdefined(self.var_10FA9))
|
|
{
|
|
self.var_10FA9 = 0;
|
|
}
|
|
|
|
if(self.var_10FA9 == 0)
|
|
{
|
|
var_01 = scripts\mp\_weapons::func_AF2B(0);
|
|
if(var_01.size == 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01 = sortbydistance(var_01,self.origin);
|
|
var_02 = undefined;
|
|
var_03 = 0;
|
|
foreach(var_05 in var_01)
|
|
{
|
|
if(!isdefined(var_05))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 = stingtargstruct_create(self,var_05);
|
|
var_02 stingtargstruct_getoffsets();
|
|
var_02 stingtargstruct_getorigins();
|
|
var_02 stingtargstruct_getinreticle();
|
|
if(var_02 stingtargstruct_isinreticle())
|
|
{
|
|
var_03 = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!var_03)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 stingtargstruct_getinlos();
|
|
if(!var_02 stingtargstruct_isinlos())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
self.var_10FAA = var_02.target;
|
|
self.var_10FA6 = gettime();
|
|
self.var_10FA9 = 1;
|
|
self.var_10FA7 = 0;
|
|
func_17D0(self.var_10FAA);
|
|
thread func_B06A();
|
|
}
|
|
|
|
if(self.var_10FA9 == 1)
|
|
{
|
|
if(!isdefined(self.var_10FAA))
|
|
{
|
|
func_E272();
|
|
continue;
|
|
}
|
|
|
|
var_02 = stingtargstruct_create(self,self.var_10FAA);
|
|
var_02 stingtargstruct_getoffsets();
|
|
var_02 stingtargstruct_getorigins();
|
|
var_02 stingtargstruct_getinreticle();
|
|
if(!var_02 stingtargstruct_isinreticle())
|
|
{
|
|
func_E272();
|
|
continue;
|
|
}
|
|
|
|
var_02 stingtargstruct_getinlos();
|
|
if(!func_103EC(var_02))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_07 = gettime() - self.var_10FA6;
|
|
if(scripts\mp\_utility::_hasperk("specialty_fasterlockon"))
|
|
{
|
|
if(var_07 < 375)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
else if(var_07 < 750)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
self notify("stop_javelin_locking_feedback");
|
|
thread func_B069();
|
|
var_08 = undefined;
|
|
stinger_finalizelock(var_02);
|
|
self.var_10FA9 = 2;
|
|
}
|
|
|
|
if(self.var_10FA9 == 2)
|
|
{
|
|
if(!isdefined(self.var_10FAA))
|
|
{
|
|
func_E272();
|
|
continue;
|
|
}
|
|
|
|
var_02 = stingtargstruct_create(self,self.var_10FAA);
|
|
var_02 stingtargstruct_getoffsets();
|
|
var_02 stingtargstruct_getorigins();
|
|
var_02 stingtargstruct_getinreticle();
|
|
var_02 stingtargstruct_getinlos();
|
|
if(!func_103EC(var_02))
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
stinger_finalizelock(var_02);
|
|
}
|
|
|
|
if(!var_02 stingtargstruct_isinreticle())
|
|
{
|
|
func_E272();
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
stinger_finalizelock(param_00)
|
|
{
|
|
var_01 = undefined;
|
|
if(isdefined(param_00.inlosid))
|
|
{
|
|
var_01 = param_00.var_C370[param_00.inlosid];
|
|
var_01 = (var_01[1],-1 * var_01[0],var_01[2]);
|
|
}
|
|
else
|
|
{
|
|
var_01 = (0,0,0);
|
|
}
|
|
|
|
self method_8402(self.var_10FAA,var_01);
|
|
}
|
|
|
|
//Function Number: 9
|
|
func_17D0(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 = param_00;
|
|
if(isdefined(param_00.var_222) && !scripts\mp\_utility::func_9EF0(param_00))
|
|
{
|
|
var_01 = param_00.var_222;
|
|
}
|
|
|
|
var_01 setclientomnvar("ui_killstreak_missile_warn",1);
|
|
}
|
|
|
|
//Function Number: 10
|
|
func_E12E(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 = param_00;
|
|
if(isdefined(param_00.var_222) && !scripts\mp\_utility::func_9EF0(param_00))
|
|
{
|
|
var_01 = param_00.var_222;
|
|
}
|
|
|
|
var_01 setclientomnvar("ui_killstreak_missile_warn",0);
|
|
}
|
|
|
|
//Function Number: 11
|
|
stingtargstruct_create(param_00,param_01)
|
|
{
|
|
var_02 = spawnstruct();
|
|
var_02.player = param_00;
|
|
var_02.target = param_01;
|
|
var_02.var_C370 = [];
|
|
var_02.origins = [];
|
|
var_02.inreticledistssqr = [];
|
|
var_02.inreticlesortedids = [];
|
|
var_02.inlosid = undefined;
|
|
var_02.useoldlosverification = 1;
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 12
|
|
stingtargstruct_getoffsets()
|
|
{
|
|
self.var_C370 = [];
|
|
if(scripts\mp\_utility::isjackal(self.target))
|
|
{
|
|
self.var_C370[self.var_C370.size] = (0,0,125);
|
|
self.var_C370[self.var_C370.size] = (0,250,125);
|
|
self.var_C370[self.var_C370.size] = (0,-425,125);
|
|
self.var_C370[self.var_C370.size] = (-250,-215,140);
|
|
self.var_C370[self.var_C370.size] = (250,-215,140);
|
|
self.useoldlosverification = 0;
|
|
return;
|
|
}
|
|
|
|
if(scripts\mp\_utility::func_9F8C(self.target))
|
|
{
|
|
self.var_C370[self.var_C370.size] = (0,0,30);
|
|
self.var_C370[self.var_C370.size] = (0,0,5);
|
|
self.useoldlosverification = 0;
|
|
return;
|
|
}
|
|
|
|
if(scripts\mp\_utility::ismicroturret(self.target))
|
|
{
|
|
self.var_C370[self.var_C370.size] = (0,0,15);
|
|
self.useoldlosverification = 0;
|
|
return;
|
|
}
|
|
|
|
if(scripts\mp\_utility::isturret(self.target))
|
|
{
|
|
self.var_C370[self.var_C370.size] = (0,0,42);
|
|
self.var_C370[self.var_C370.size] = (0,0,5);
|
|
self.useoldlosverification = 0;
|
|
return;
|
|
}
|
|
|
|
if(scripts\mp\_utility::func_9F22(self.target))
|
|
{
|
|
self.var_C370[self.var_C370.size] = (0,0,70);
|
|
self.var_C370[self.var_C370.size] = (0,0,5);
|
|
self.useoldlosverification = 0;
|
|
return;
|
|
}
|
|
|
|
self.var_C370[self.var_C370.size] = (0,0,0);
|
|
}
|
|
|
|
//Function Number: 13
|
|
stingtargstruct_getorigins()
|
|
{
|
|
var_00 = self.target.origin;
|
|
var_01 = self.target.angles;
|
|
var_02 = anglestoforward(var_01);
|
|
var_03 = anglestoright(var_01);
|
|
var_04 = anglestoup(var_01);
|
|
for(var_05 = 0;var_05 < self.var_C370.size;var_05++)
|
|
{
|
|
var_06 = self.var_C370[var_05];
|
|
self.origins[var_05] = var_00 + var_03 * var_06[0] + var_02 * var_06[1] + var_04 * var_06[2];
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
stingtargstruct_getinreticle()
|
|
{
|
|
foreach(var_01 in self.origins)
|
|
{
|
|
for(var_02 = 0;var_02 < self.origins.size;var_02++)
|
|
{
|
|
var_03 = self.player method_840B(self.origins[var_02],65);
|
|
if(isdefined(var_03))
|
|
{
|
|
var_04 = length2dsquared(var_03);
|
|
if(var_04 <= 7225)
|
|
{
|
|
self.inreticlesortedids[self.inreticlesortedids.size] = var_02;
|
|
self.inreticledistssqr[var_02] = var_04;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(self.inreticlesortedids.size > 1)
|
|
{
|
|
for(var_02 = 0;var_02 < self.inreticlesortedids.size;var_02++)
|
|
{
|
|
for(var_06 = var_02 + 1;var_06 < self.inreticlesortedids.size;var_06++)
|
|
{
|
|
var_07 = self.inreticlesortedids[var_02];
|
|
var_08 = self.inreticlesortedids[var_06];
|
|
var_09 = self.inreticledistssqr[var_07];
|
|
var_0A = self.inreticledistssqr[var_08];
|
|
if(var_0A < var_09)
|
|
{
|
|
var_0B = var_07;
|
|
self.inreticlesortedids[var_02] = var_08;
|
|
self.inreticlesortedids[var_06] = var_0B;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
stingtargstruct_getinlos()
|
|
{
|
|
var_00 = self.player geteye();
|
|
var_01 = physics_createcontents(["physicscontents_solid","physicscontents_glass","physicscontents_sky","physicscontents_water","physicscontents_vehicle","physicscontents_item"]);
|
|
var_02 = [self.player,self.target];
|
|
var_03 = self.target getlinkedchildren();
|
|
if(isdefined(var_03) && var_03.size > 0)
|
|
{
|
|
var_02 = scripts\common\utility::array_combine(var_02,var_03);
|
|
}
|
|
|
|
if(!self.useoldlosverification)
|
|
{
|
|
for(var_04 = 0;var_04 < self.inreticlesortedids.size;var_04++)
|
|
{
|
|
var_05 = self.inreticlesortedids[var_04];
|
|
var_06 = self.origins[var_05];
|
|
var_07 = function_0287(var_00,var_06,var_01,var_02,0,"physicsquery_closest",1);
|
|
if(!isdefined(var_07) || var_07.size == 0)
|
|
{
|
|
self.inlosid = var_05;
|
|
return;
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
var_08 = scripts\common\trace::func_DCED(var_00,self.origins[0],var_02,var_01,0);
|
|
if(var_08["fraction"] == 1)
|
|
{
|
|
self.inlosid = 0;
|
|
return;
|
|
}
|
|
|
|
var_09 = self.target method_8159(1,0,0);
|
|
var_08 = scripts\common\trace::func_DCED(var_00,var_09,var_02,var_01,0);
|
|
if(var_08["fraction"] == 1)
|
|
{
|
|
self.inlosid = 0;
|
|
return;
|
|
}
|
|
|
|
var_0A = self.target method_8159(-1,0,0);
|
|
var_08 = scripts\common\trace::func_DCED(var_00,var_0A,var_02,var_01,0);
|
|
if(var_08["fraction"] == 1)
|
|
{
|
|
self.inlosid = 0;
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
stingtargstruct_isinreticle()
|
|
{
|
|
return self.inreticlesortedids.size > 0;
|
|
}
|
|
|
|
//Function Number: 17
|
|
stingtargstruct_isinlos()
|
|
{
|
|
return isdefined(self.inlosid);
|
|
} |