283 lines
6.7 KiB
Plaintext
283 lines
6.7 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
initstingerusage()
|
|
{
|
|
self.stingerstage = undefined;
|
|
self.stingertarget = undefined;
|
|
self.stingerlockstarttime = undefined;
|
|
self.stingerlostsightlinetime = undefined;
|
|
thread resetstingerlockingondeath();
|
|
level.stingertargets = [];
|
|
}
|
|
|
|
resetstingerlocking()
|
|
{
|
|
if ( !isdefined( self.stingeruseentered ) )
|
|
return;
|
|
|
|
self.stingeruseentered = undefined;
|
|
self notify( "stop_javelin_locking_feedback" );
|
|
self notify( "stop_javelin_locked_feedback" );
|
|
self weaponlockfree();
|
|
initstingerusage();
|
|
}
|
|
|
|
resetstingerlockingondeath()
|
|
{
|
|
self endon( "disconnect" );
|
|
self notify( "ResetStingerLockingOnDeath" );
|
|
self endon( "ResetStingerLockingOnDeath" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "death" );
|
|
resetstingerlocking();
|
|
}
|
|
}
|
|
|
|
stillvalidstingerlock( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return 0;
|
|
|
|
if ( !self worldpointinreticle_circle( var_0.origin, 65, 85 ) )
|
|
return 0;
|
|
|
|
if ( self.stingertarget == level.ac130.planemodel && !isdefined( level.ac130player ) )
|
|
return 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
loopstingerlockingfeedback()
|
|
{
|
|
self endon( "stop_javelin_locking_feedback" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( isdefined( level.chopper ) && isdefined( level.chopper.gunner ) && isdefined( self.stingertarget ) && self.stingertarget == level.chopper.gunner )
|
|
level.chopper.gunner playlocalsound( "missile_locking" );
|
|
|
|
if ( isdefined( level.ac130player ) && isdefined( self.stingertarget ) && self.stingertarget == level.ac130.planemodel )
|
|
level.ac130player playlocalsound( "missile_locking" );
|
|
|
|
self playlocalsound( "stinger_locking" );
|
|
self playrumbleonentity( "ac130_25mm_fire" );
|
|
wait 0.6;
|
|
}
|
|
}
|
|
|
|
loopstingerlockedfeedback()
|
|
{
|
|
self endon( "stop_javelin_locked_feedback" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( isdefined( level.chopper ) && isdefined( level.chopper.gunner ) && isdefined( self.stingertarget ) && self.stingertarget == level.chopper.gunner )
|
|
level.chopper.gunner playlocalsound( "missile_locking" );
|
|
|
|
if ( isdefined( level.ac130player ) && isdefined( self.stingertarget ) && self.stingertarget == level.ac130.planemodel )
|
|
level.ac130player playlocalsound( "missile_locking" );
|
|
|
|
self playlocalsound( "stinger_locked" );
|
|
self playrumbleonentity( "ac130_25mm_fire" );
|
|
wait 0.25;
|
|
}
|
|
}
|
|
|
|
locksighttest( var_0 )
|
|
{
|
|
var_1 = self geteye();
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
return 0;
|
|
|
|
var_2 = sighttracepassed( var_1, var_0.origin, 0, var_0 );
|
|
|
|
if ( var_2 )
|
|
return 1;
|
|
|
|
var_3 = var_0 getpointinbounds( 1, 0, 0 );
|
|
var_2 = sighttracepassed( var_1, var_3, 0, var_0 );
|
|
|
|
if ( var_2 )
|
|
return 1;
|
|
|
|
var_4 = var_0 getpointinbounds( -1, 0, 0 );
|
|
var_2 = sighttracepassed( var_1, var_4, 0, var_0 );
|
|
|
|
if ( var_2 )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
stingerdebugdraw( var_0 )
|
|
{
|
|
|
|
}
|
|
|
|
softsighttest()
|
|
{
|
|
var_0 = 500;
|
|
|
|
if ( locksighttest( self.stingertarget ) )
|
|
{
|
|
self.stingerlostsightlinetime = 0;
|
|
return 1;
|
|
}
|
|
|
|
if ( self.stingerlostsightlinetime == 0 )
|
|
self.stingerlostsightlinetime = gettime();
|
|
|
|
var_1 = gettime() - self.stingerlostsightlinetime;
|
|
|
|
if ( var_1 >= var_0 )
|
|
{
|
|
resetstingerlocking();
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
stingerusageloop()
|
|
{
|
|
if ( !isplayer( self ) )
|
|
return;
|
|
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "faux_spawn" );
|
|
var_0 = 1000;
|
|
initstingerusage();
|
|
|
|
for (;;)
|
|
{
|
|
wait 0.05;
|
|
|
|
if ( self playerads() < 0.95 )
|
|
{
|
|
resetstingerlocking();
|
|
continue;
|
|
}
|
|
|
|
var_1 = self getcurrentweapon();
|
|
|
|
if ( var_1 != "stinger_mp" && var_1 != "at4_mp" && var_1 != "iw5_smaw_mp" )
|
|
{
|
|
resetstingerlocking();
|
|
continue;
|
|
}
|
|
|
|
self.stingeruseentered = 1;
|
|
|
|
if ( !isdefined( self.stingerstage ) )
|
|
self.stingerstage = 0;
|
|
|
|
stingerdebugdraw( self.stingertarget );
|
|
|
|
if ( self.stingerstage == 0 )
|
|
{
|
|
var_2 = maps\mp\gametypes\_weapons::lockonlaunchers_gettargetarray();
|
|
|
|
if ( var_2.size == 0 )
|
|
continue;
|
|
|
|
var_3 = [];
|
|
|
|
foreach ( var_5 in var_2 )
|
|
{
|
|
if ( !isdefined( var_5 ) )
|
|
continue;
|
|
|
|
var_6 = self worldpointinreticle_circle( var_5.origin, 65, 75 );
|
|
|
|
if ( var_6 )
|
|
var_3[var_3.size] = var_5;
|
|
}
|
|
|
|
if ( var_3.size == 0 )
|
|
continue;
|
|
|
|
var_8 = sortbydistance( var_3, self.origin );
|
|
|
|
if ( !locksighttest( var_8[0] ) )
|
|
continue;
|
|
|
|
thread loopstingerlockingfeedback();
|
|
self.stingertarget = var_8[0];
|
|
self.stingerlockstarttime = gettime();
|
|
self.stingerstage = 1;
|
|
self.stingerlostsightlinetime = 0;
|
|
}
|
|
|
|
if ( self.stingerstage == 1 )
|
|
{
|
|
if ( !stillvalidstingerlock( self.stingertarget ) )
|
|
{
|
|
resetstingerlocking();
|
|
continue;
|
|
}
|
|
|
|
var_9 = softsighttest();
|
|
|
|
if ( !var_9 )
|
|
continue;
|
|
|
|
var_10 = gettime() - self.stingerlockstarttime;
|
|
|
|
if ( maps\mp\_utility::_hasperk( "specialty_fasterlockon" ) )
|
|
{
|
|
if ( var_10 < var_0 * 0.5 )
|
|
continue;
|
|
}
|
|
else if ( var_10 < var_0 )
|
|
continue;
|
|
|
|
self notify( "stop_javelin_locking_feedback" );
|
|
thread loopstingerlockedfeedback();
|
|
|
|
if ( checkvehiclemodelforlock( self.stingertarget.model ) )
|
|
self weaponlockfinalize( self.stingertarget );
|
|
else if ( isplayer( self.stingertarget ) )
|
|
self weaponlockfinalize( self.stingertarget, ( 100, 0, 64 ) );
|
|
else
|
|
self weaponlockfinalize( self.stingertarget, ( 100, 0, -32 ) );
|
|
|
|
self.stingerstage = 2;
|
|
}
|
|
|
|
if ( self.stingerstage == 2 )
|
|
{
|
|
var_9 = softsighttest();
|
|
|
|
if ( !var_9 )
|
|
continue;
|
|
|
|
if ( !stillvalidstingerlock( self.stingertarget ) )
|
|
{
|
|
resetstingerlocking();
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
checkvehiclemodelforlock( var_0 )
|
|
{
|
|
switch ( var_0 )
|
|
{
|
|
case "vehicle_ugv_talon_mp":
|
|
case "vehicle_av8b_harrier_jet_opfor_mp":
|
|
case "vehicle_av8b_harrier_jet_mp":
|
|
return 1;
|
|
default:
|
|
if ( var_0 == level.littlebird_model )
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|