iw6-scripts/animscripts/grenade_return_throw.gsc
2024-02-13 13:20:49 +01:00

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" );
}