mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-07-08 06:37:51 -05:00
509 lines
9.0 KiB
Plaintext
509 lines
9.0 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\mp\_javelin.gsc
|
|
* Game: Call of Duty: Modern Warfare 3
|
|
* Platform: PC
|
|
* Function Count: 15
|
|
* Decompile Time: 260 ms
|
|
* Timestamp: 10/27/2023 2:15:03 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
initjavelinusage()
|
|
{
|
|
self.javelinstage = undefined;
|
|
self.javelinpoints = undefined;
|
|
self.javelinnormals = undefined;
|
|
self.javelinlockmisses = undefined;
|
|
self.javelintargetpoint = undefined;
|
|
self.javelintargetnormal = undefined;
|
|
self.javelinlockstarttime = undefined;
|
|
}
|
|
|
|
//Function Number: 2
|
|
resetjavelinlocking()
|
|
{
|
|
if(!isdefined(self.javelinuseentered))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.javelinuseentered = undefined;
|
|
self notify("stop_lockon_sound");
|
|
self weaponlockfree();
|
|
self weaponlocktargettooclose(0);
|
|
self weaponlocknoclearance(0);
|
|
self.currentlylocking = 0;
|
|
self.currentlylocked = 0;
|
|
self.javelintarget = undefined;
|
|
self stoplocalsound("javelin_clu_lock");
|
|
self stoplocalsound("javelin_clu_aquiring_lock");
|
|
initjavelinusage();
|
|
}
|
|
|
|
//Function Number: 3
|
|
eyetraceforward()
|
|
{
|
|
var_00 = self geteye();
|
|
var_01 = self getplayerangles();
|
|
var_02 = anglestoforward(var_01);
|
|
var_03 = var_00 + var_02 * 15000;
|
|
var_04 = bullettrace(var_00,var_03,0,undefined);
|
|
if(var_04["surfacetype"] == "none")
|
|
{
|
|
return undefined;
|
|
}
|
|
|
|
if(var_04["surfacetype"] == "default")
|
|
{
|
|
return undefined;
|
|
}
|
|
|
|
var_05 = var_04["entity"];
|
|
if(isdefined(var_05))
|
|
{
|
|
if(var_05 == level.ac130.planemodel)
|
|
{
|
|
return undefined;
|
|
}
|
|
}
|
|
|
|
var_06 = [];
|
|
return var_7B;
|
|
}
|
|
|
|
//Function Number: 4
|
|
lockmissesreset()
|
|
{
|
|
self.javelinlockmisses = undefined;
|
|
}
|
|
|
|
//Function Number: 5
|
|
lockmissesincr()
|
|
{
|
|
if(!isdefined(self.javelinlockmisses))
|
|
{
|
|
self.javelinlockmisses = 1;
|
|
return;
|
|
}
|
|
|
|
self.javelinlockmisses++;
|
|
}
|
|
|
|
//Function Number: 6
|
|
lockmissespassedthreshold()
|
|
{
|
|
var_00 = 4;
|
|
if(isdefined(self.javelinlockmisses) && self.javelinlockmisses >= var_00)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 7
|
|
targetpointtooclose(param_00)
|
|
{
|
|
var_01 = 1100;
|
|
var_02 = distance(self.origin,param_00);
|
|
if(var_02 < var_01)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 8
|
|
looplocalseeksound(param_00,param_01)
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("stop_lockon_sound");
|
|
for(;;)
|
|
{
|
|
self playlocalsound(param_00);
|
|
wait param_01;
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
topattackpasses(param_00,param_01)
|
|
{
|
|
var_02 = param_00 + param_01 * 10;
|
|
var_03 = var_02 + (0,0,2000);
|
|
var_04 = bullettrace(var_02,var_03,0,undefined);
|
|
if(sighttracepassed(var_02,var_03,0,undefined))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 10
|
|
javelinusageloop()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
var_00 = 1150;
|
|
var_01 = 25;
|
|
var_02 = 100;
|
|
var_03 = 400;
|
|
var_04 = 12;
|
|
var_05 = 0;
|
|
var_06 = 0;
|
|
self.javelintarget = undefined;
|
|
initjavelinusage();
|
|
for(;;)
|
|
{
|
|
wait 0.05;
|
|
var_07 = 0;
|
|
if(getdvar("missileDebugDraw") == "1")
|
|
{
|
|
var_07 = 1;
|
|
}
|
|
|
|
var_08 = 0;
|
|
if(getdvar("missileDebugText") == "1")
|
|
{
|
|
var_08 = 1;
|
|
}
|
|
|
|
var_09 = self getcurrentweapon();
|
|
if(!issubstr(var_09,"javelin") || maps\mp\_utility::isemped())
|
|
{
|
|
resetjavelinlocking();
|
|
continue;
|
|
}
|
|
|
|
if(self playerads() < 0.95)
|
|
{
|
|
var_06 = gettime();
|
|
resetjavelinlocking();
|
|
continue;
|
|
}
|
|
|
|
self.javelinuseentered = 1;
|
|
if(!isdefined(self.javelinstage))
|
|
{
|
|
self.javelinstage = 1;
|
|
}
|
|
|
|
if(self.javelinstage == 1)
|
|
{
|
|
var_0A = maps\mp\_stinger::gettargetlist();
|
|
if(var_0A.size != 0)
|
|
{
|
|
var_0B = [];
|
|
foreach(var_0D in var_0A)
|
|
{
|
|
var_0E = self worldpointinreticle_circle(var_0D.origin,65,40);
|
|
if(var_0E)
|
|
{
|
|
var_0B[var_0B.size] = var_0D;
|
|
}
|
|
}
|
|
|
|
if(var_0B.size != 0)
|
|
{
|
|
var_10 = sortbydistance(var_0B,self.origin);
|
|
if(!vehiclelocksighttest(var_10[0]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_08)
|
|
{
|
|
}
|
|
|
|
self.javelintarget = var_10[0];
|
|
if(!isdefined(self.javelinlockstarttime))
|
|
{
|
|
self.javelinlockstarttime = gettime();
|
|
}
|
|
|
|
self.javelinstage = 2;
|
|
self.javelinlostsightlinetime = 0;
|
|
javelinlockvehicle(var_00);
|
|
self.javelinstage = 1;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if(lockmissespassedthreshold())
|
|
{
|
|
resetjavelinlocking();
|
|
continue;
|
|
}
|
|
|
|
var_11 = gettime() - var_06;
|
|
if(var_11 < var_02)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_11 = gettime() - var_05;
|
|
if(var_11 < var_01)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_05 = gettime();
|
|
var_15 = eyetraceforward();
|
|
if(!isdefined(var_15))
|
|
{
|
|
lockmissesincr();
|
|
continue;
|
|
}
|
|
|
|
if(targetpointtooclose(var_15[0]))
|
|
{
|
|
self weaponlocktargettooclose(1);
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
self weaponlocktargettooclose(0);
|
|
}
|
|
|
|
if(isdefined(self.javelinpoints))
|
|
{
|
|
var_16 = averagepoint(self.javelinpoints);
|
|
var_17 = distance(var_16,var_15[0]);
|
|
if(var_17 > var_03)
|
|
{
|
|
lockmissesincr();
|
|
continue;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self.javelinpoints = [];
|
|
self.javelinnormals = [];
|
|
}
|
|
|
|
self.javelinpoints[self.javelinpoints.size] = var_15[0];
|
|
self.javelinnormals[self.javelinnormals.size] = var_15[1];
|
|
lockmissesreset();
|
|
if(self.javelinpoints.size < var_04)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
self.javelintargetpoint = averagepoint(self.javelinpoints);
|
|
self.javelintargetnormal = averagenormal(self.javelinnormals);
|
|
self.javelinlockmisses = undefined;
|
|
self.javelinpoints = undefined;
|
|
self.javelinnormals = undefined;
|
|
self.javelinlockstarttime = gettime();
|
|
self weaponlockstart(self.javelintargetpoint);
|
|
thread looplocalseeksound("javelin_clu_aquiring_lock",0.6);
|
|
self.javelinstage = 2;
|
|
}
|
|
|
|
if(self.javelinstage == 2)
|
|
{
|
|
var_0E = self worldpointinreticle_circle(self.javelintargetpoint,65,45);
|
|
if(!var_0E)
|
|
{
|
|
resetjavelinlocking();
|
|
continue;
|
|
}
|
|
|
|
if(targetpointtooclose(self.javelintargetpoint))
|
|
{
|
|
self weaponlocktargettooclose(1);
|
|
}
|
|
else
|
|
{
|
|
self weaponlocktargettooclose(0);
|
|
}
|
|
|
|
var_11 = gettime() - self.javelinlockstarttime;
|
|
if(var_11 < var_00)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
self weaponlockfinalize(self.javelintargetpoint,(0,0,0),1);
|
|
self notify("stop_lockon_sound");
|
|
self playlocalsound("javelin_clu_lock");
|
|
self.javelinstage = 3;
|
|
}
|
|
|
|
if(self.javelinstage == 3)
|
|
{
|
|
var_0E = self worldpointinreticle_circle(self.javelintargetpoint,65,45);
|
|
if(!var_0E)
|
|
{
|
|
resetjavelinlocking();
|
|
continue;
|
|
}
|
|
|
|
if(targetpointtooclose(self.javelintargetpoint))
|
|
{
|
|
self weaponlocktargettooclose(1);
|
|
}
|
|
else
|
|
{
|
|
self weaponlocktargettooclose(0);
|
|
}
|
|
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
debugsightline(param_00,param_01,param_02)
|
|
{
|
|
}
|
|
|
|
//Function Number: 12
|
|
vehiclelocksighttest(param_00)
|
|
{
|
|
var_01 = self geteye();
|
|
var_02 = param_00 getpointinbounds(0,0,0);
|
|
var_03 = sighttracepassed(var_01,var_02,0,param_00);
|
|
debugsightline(var_01,var_02,var_03);
|
|
if(var_03)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
var_04 = param_00 getpointinbounds(1,0,0);
|
|
var_03 = sighttracepassed(var_01,var_04,0,param_00);
|
|
debugsightline(var_01,var_04,var_03);
|
|
if(var_03)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
var_05 = param_00 getpointinbounds(-1,0,0);
|
|
var_03 = sighttracepassed(var_01,var_05,0,param_00);
|
|
debugsightline(var_01,var_05,var_03);
|
|
if(var_03)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 13
|
|
javelinlockvehicle(param_00)
|
|
{
|
|
if(self.javelinstage == 2)
|
|
{
|
|
self weaponlockstart(self.javelintarget);
|
|
if(!stillvalidjavelinlock(self.javelintarget))
|
|
{
|
|
resetjavelinlocking();
|
|
self.javelinlockstarttime = undefined;
|
|
return;
|
|
}
|
|
|
|
var_01 = softsighttest();
|
|
if(!var_01)
|
|
{
|
|
self.javelinlockstarttime = undefined;
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(self.currentlylocking) || !self.currentlylocking)
|
|
{
|
|
thread looplocalseeksound("javelin_clu_aquiring_lock",0.6);
|
|
self.currentlylocking = 1;
|
|
}
|
|
|
|
var_02 = gettime() - self.javelinlockstarttime;
|
|
if(maps\mp\_utility::_hasperk("specialty_fasterlockon"))
|
|
{
|
|
if(var_02 < param_00 * 0.5)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
else if(var_02 < param_00)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isplayer(self.javelintarget))
|
|
{
|
|
self weaponlockfinalize(self.javelintarget,(0,0,64),0);
|
|
}
|
|
else
|
|
{
|
|
self weaponlockfinalize(self.javelintarget,(0,0,0),0);
|
|
}
|
|
|
|
self notify("stop_lockon_sound");
|
|
if(!isdefined(self.currentlylocked) || !self.currentlylocked)
|
|
{
|
|
self playlocalsound("javelin_clu_lock");
|
|
self.currentlylocked = 1;
|
|
}
|
|
|
|
self.javelinstage = 3;
|
|
}
|
|
|
|
if(self.javelinstage == 3)
|
|
{
|
|
var_01 = softsighttest();
|
|
if(!var_01)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!stillvalidjavelinlock(self.javelintarget))
|
|
{
|
|
resetjavelinlocking();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
stillvalidjavelinlock(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!self worldpointinreticle_circle(param_00.origin,65,85))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 15
|
|
softsighttest()
|
|
{
|
|
var_00 = 500;
|
|
if(vehiclelocksighttest(self.javelintarget))
|
|
{
|
|
self.javelinlostsightlinetime = 0;
|
|
return 1;
|
|
}
|
|
|
|
if(self.javelinlostsightlinetime == 0)
|
|
{
|
|
self.javelinlostsightlinetime = gettime();
|
|
}
|
|
|
|
var_01 = gettime() - self.javelinlostsightlinetime;
|
|
if(var_01 >= var_00)
|
|
{
|
|
resetjavelinlocking();
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
} |