116 lines
2.9 KiB
Plaintext
116 lines
2.9 KiB
Plaintext
#include maps\mp\_utility;
|
|
#include common_scripts\utility;
|
|
|
|
lasersight_think()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "faux_spawn" );
|
|
|
|
self.laser_on = undefined;
|
|
self.wasEMP = false;
|
|
|
|
while( true )
|
|
{
|
|
|
|
has_laser = false;
|
|
|
|
attachment_list = GetWeaponAttachments( self GetCurrentWeapon() );
|
|
|
|
if( isDefined( attachment_list ) )
|
|
{
|
|
foreach( attachment in attachment_list )
|
|
{
|
|
if( attachment == "lasersight" )
|
|
{
|
|
has_laser = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Handling for EMP
|
|
|
|
|
|
while( self isEMPed() && has_laser)
|
|
{
|
|
wait( 0.05);
|
|
self LaserOff();
|
|
self.wasEMP = true;
|
|
continue;
|
|
}
|
|
if ( self.wasEMP && has_laser)
|
|
{
|
|
self.wasEMP = false;
|
|
if( self maps\mp\gametypes\_class::isExoXMG( self GetCurrentWeapon() ) || self maps\mp\gametypes\_class::isSac3( self GetCurrentWeapon() ) )
|
|
self LaserOn( "mp_attachment_lasersight_short" );
|
|
else
|
|
self LaserOn( "mp_attachment_lasersight" );
|
|
}
|
|
|
|
|
|
// Adding a special case for the LSR launcher. It should have a laser on even though it doesn't have a laser attachment.
|
|
if ( IsSubStr( self GetCurrentWeapon(), "maaws" ) )
|
|
{
|
|
has_laser = true;
|
|
}
|
|
|
|
if ( has_laser && self IsThrowingGrenade() )
|
|
{
|
|
if( isDefined( self.laser_on ) && self.laser_on )
|
|
{
|
|
self LaserOff();
|
|
self.laser_on = false;
|
|
|
|
// god help us, all of this is required to get the timing correct...
|
|
|
|
// IsUsingOffhand() turns on the moment the viewmodel starts holding the grenade weapon
|
|
// IsThrowingGrenade() is here to ensure we don't get stuck if the player cancels the grenade process
|
|
while ( !self IsUsingOffhand() && self IsThrowingGrenade() )
|
|
wait( 0.05 );
|
|
|
|
// IsUsingOffhand() turns off the moment the viewmodel starts holding the primary weapon again
|
|
// IsThrowingGrenade() is here to ensure we don't get stuck if the player cancels the grenade process
|
|
while ( self IsUsingOffhand() && self IsThrowingGrenade() )
|
|
wait( 0.05 );
|
|
|
|
// IsThrowingGrenade() turns off the moment the primary weapon is usable again
|
|
while ( self IsThrowingGrenade() )
|
|
wait( 0.05 );
|
|
|
|
if( self maps\mp\gametypes\_class::isExoXMG( self GetCurrentWeapon() ) || self maps\mp\gametypes\_class::isSac3( self GetCurrentWeapon() ) )
|
|
self LaserOn( "mp_attachment_lasersight_short" );
|
|
else
|
|
self LaserOn( "mp_attachment_lasersight" );
|
|
|
|
self.laser_on = true;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
if ( !has_laser )
|
|
{
|
|
if( isDefined( self.laser_on ) && self.laser_on )
|
|
{
|
|
self LaserOff();
|
|
self.laser_on = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( !isDefined( self.laser_on ) || !self.laser_on )
|
|
{
|
|
if( self maps\mp\gametypes\_class::isExoXMG( self GetCurrentWeapon() ) || self maps\mp\gametypes\_class::isSac3( self GetCurrentWeapon() ) )
|
|
self LaserOn( "mp_attachment_lasersight_short" );
|
|
else
|
|
self LaserOn( "mp_attachment_lasersight" );
|
|
|
|
self.laser_on = true;
|
|
}
|
|
}
|
|
|
|
|
|
wait( 0.05 );
|
|
}
|
|
} |