mirror of
https://github.com/reaaLx/nx1-gsc-dump.git
synced 2025-04-22 09:05:45 +00:00
125 lines
3.5 KiB
Plaintext
125 lines
3.5 KiB
Plaintext
|
|
main()
|
|
{
|
|
SetDvar( "nx_taser_lockon_range", "1024" );
|
|
SetDvar( "nx_taser_lockon_pull", "100000" );
|
|
SetDvar( "nx_taser_lockon_cos_halfcone", "0.7" );// = cos(5 degrees)
|
|
|
|
//I think I can use notetracks to play the fx, and not a call, this will make it flexible.
|
|
|
|
animscripts\utility::add_note_track_effect( "taser_fx", "J_Knee_LE", "all", LoadFX( "nx/impacts/nx_taser_paralyze_sparks_runner" ) );
|
|
animscripts\utility::add_note_track_effect( "taser_fx", "J_CoatRear_LE", "all", LoadFX( "nx/impacts/nx_taser_paralyze_sparks_runner" ) );
|
|
animscripts\utility::add_note_track_effect( "taser_fx", "J_Elbow_LE", "all", LoadFX( "nx/impacts/nx_taser_paralyze_sparks_runner" ) );
|
|
animscripts\utility::add_note_track_effect( "taser_fx", "J_Shoulder_RI", "all", LoadFX( "nx/impacts/nx_taser_paralyze_sparks_runner" ) );
|
|
animscripts\utility::add_note_track_effect( "taser_fx", "J_CoatFront_RI", "all", LoadFX( "nx/impacts/nx_taser_paralyze_sparks_runner" ) );
|
|
animscripts\utility::add_note_track_effect( "taser_fx", "J_Spine4", "all", LoadFX( "nx/impacts/nx_taser_paralyze" ) );
|
|
|
|
// Dan: taser no longer locks on
|
|
//foreach ( player in level._players )
|
|
//{
|
|
// player nx_taser_clear_lock_on();
|
|
// player thread nx_taser_fired_notify();
|
|
//}
|
|
}
|
|
|
|
/* Dan: taser no longer locks on
|
|
|
|
nx_taser_fired_notify()
|
|
{
|
|
self endon( "death" );
|
|
|
|
assert( self.classname == "player" );
|
|
|
|
while ( true )
|
|
{
|
|
self waittill( "weapon_fired" );
|
|
|
|
weap = self GetCurrentWeapon();
|
|
if ( weap != "nx_taser" )
|
|
{
|
|
continue;
|
|
}
|
|
|
|
// self nx_taser_lock_on();
|
|
|
|
self notify( "taser_fired" );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
//called on the player.
|
|
nx_taser_lock_on()
|
|
{
|
|
aim_dir = vectornormalize( AnglesToForward(self GetPlayerAngles()) );
|
|
target = self GetEnemyInCone( self.origin, aim_dir, GetDvarFloat( "nx_taser_lockon_cos_halfcone" ) , GetDvarFloat( "nx_taser_lockon_range" ) );
|
|
|
|
if ( IsDefined(target))
|
|
{
|
|
///#iprintln("Found target" );#/
|
|
//check for target change. Also pre-emptively check if no target has previously been set.
|
|
if ( !IsDefined(self.taser.target) || target != self.taser.target)
|
|
{
|
|
self.taser.target = target;
|
|
self notify( "taser_target_changed" );
|
|
|
|
target thread debug_draw_tag_bipod();
|
|
}
|
|
|
|
if ( self.taser.target_attractor != -1 )
|
|
{
|
|
///#iprintln("Removing attractor so it can be refreshed...." );#/
|
|
Missile_DeleteAttractor( self.taser.target_attractor );
|
|
}
|
|
|
|
///#iprintln("Setting attractor on target." );#/
|
|
offset = (target GetTagOrigin( "J_Spine4" )) - (target GetTagOrigin( "tag_origin" ));
|
|
self.taser.target_attractor = Missile_CreateAttractorEnt( target, GetDvarFloat( "nx_taser_lockon_pull" ), GetDvarFloat( "nx_taser_lockon_range" ), self, offset );
|
|
}
|
|
else
|
|
{
|
|
///#iprintln("No Farget Found, clearing taser targeting" );#/
|
|
nx_taser_clear_lock_on();
|
|
}
|
|
}
|
|
|
|
nx_taser_clear_lock_on()
|
|
{
|
|
if ( !isdefined( self.taser ) )
|
|
{
|
|
self.taser = spawnStruct();
|
|
}
|
|
|
|
if ( IsDefined(self.taser.target_attractor) && self.taser.target_attractor != -1 )
|
|
{
|
|
Missile_DeleteAttractor( self.taser.target_attractor );
|
|
}
|
|
|
|
self.taser.target = undefined;
|
|
self.taser.target_attractor = -1;
|
|
}
|
|
|
|
debug_draw_tag_bipod()
|
|
{
|
|
self endon("death");
|
|
self endon("taser_target_changed");
|
|
while ( true )
|
|
{
|
|
pos = self GetTagOrigin( "J_Spine4" );
|
|
|
|
debug_draw_origin(pos);
|
|
|
|
wait .05;
|
|
}
|
|
}
|
|
|
|
debug_draw_origin( origin )
|
|
{
|
|
line( origin + ( 16, 0, 0 ), origin + ( -16, 0, 0 ), ( 1, 0, 0 ), 1 );
|
|
line( origin + ( 0, 16, 0 ), origin + ( 0, -16, 0 ), ( 0, 1, 0 ), 1 );
|
|
line( origin + ( 0, 0, 16 ), origin + ( 0, 0, -16 ), ( 0, 0, 1 ), 1 );
|
|
}
|
|
|
|
*/
|