87 lines
2.5 KiB
Plaintext
87 lines
2.5 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
#using_animtree("generic_human");
|
|
|
|
main()
|
|
{
|
|
self orientmode( "face default" );
|
|
self endon( "killanimscript" );
|
|
animscripts\utility::initialize( "grenade_return_throw" );
|
|
self animmode( "zonly_physics" );
|
|
var_0 = undefined;
|
|
var_1 = 1000;
|
|
|
|
if ( isdefined( self.enemy ) )
|
|
var_1 = distance( self.origin, self.enemy.origin );
|
|
|
|
var_2 = [];
|
|
|
|
if ( var_1 < 600 && islowthrowsafe() )
|
|
{
|
|
if ( var_1 < 300 )
|
|
var_2 = animscripts\utility::lookupanim( "grenade", "return_throw_short" );
|
|
else
|
|
var_2 = animscripts\utility::lookupanim( "grenade", "return_throw_long" );
|
|
}
|
|
|
|
if ( var_2.size == 0 )
|
|
var_2 = animscripts\utility::lookupanim( "grenade", "return_throw_default" );
|
|
|
|
var_0 = var_2[randomint( var_2.size )];
|
|
self setflaggedanimknoballrestart( "throwanim", var_0, %body, 1, 0.3 );
|
|
var_4 = animhasnotetrack( var_0, "grenade_left" ) || animhasnotetrack( var_0, "grenade_right" );
|
|
|
|
if ( var_4 )
|
|
{
|
|
animscripts\shared::placeweaponon( self.weapon, "left" );
|
|
thread putweaponbackinrighthand();
|
|
thread notifygrenadepickup( "throwanim", "grenade_left" );
|
|
thread notifygrenadepickup( "throwanim", "grenade_right" );
|
|
self waittill( "grenade_pickup" );
|
|
self pickupgrenade();
|
|
animscripts\battlechatter_ai::evaluateattackevent( "grenade" );
|
|
self waittillmatch( "throwanim", "grenade_throw" );
|
|
}
|
|
else
|
|
{
|
|
self waittillmatch( "throwanim", "grenade_throw" );
|
|
self pickupgrenade();
|
|
animscripts\battlechatter_ai::evaluateattackevent( "grenade" );
|
|
}
|
|
|
|
if ( isdefined( self.grenade ) )
|
|
self throwgrenade();
|
|
|
|
wait 1;
|
|
|
|
if ( var_4 )
|
|
{
|
|
self notify( "put_weapon_back_in_right_hand" );
|
|
animscripts\shared::placeweaponon( self.weapon, "right" );
|
|
}
|
|
}
|
|
|
|
islowthrowsafe()
|
|
{
|
|
var_0 = ( self.origin[0], self.origin[1], self.origin[2] + 20 );
|
|
var_1 = var_0 + anglestoforward( self.angles ) * 50;
|
|
return sighttracepassed( var_0, var_1, 0, undefined );
|
|
}
|
|
|
|
putweaponbackinrighthand()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "put_weapon_back_in_right_hand" );
|
|
self waittill( "killanimscript" );
|
|
animscripts\shared::placeweaponon( self.weapon, "right" );
|
|
}
|
|
|
|
notifygrenadepickup( var_0, var_1 )
|
|
{
|
|
self endon( "killanimscript" );
|
|
self endon( "grenade_pickup" );
|
|
self waittillmatch( var_0, var_1 );
|
|
self notify( "grenade_pickup" );
|
|
}
|