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

80 lines
2.0 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
#using_animtree("generic_human");
main()
{
self endon( "killanimscript" );
animscripts\utility::initialize( "grenadecower" );
if ( isdefined( self.grenadecowerfunction ) )
{
self [[ self.grenadecowerfunction ]]();
return;
}
if ( self.a.pose == "prone" )
{
animscripts\stop::main();
return;
}
self animmode( "zonly_physics" );
self orientmode( "face angle", self.angles[1] );
var_0 = 0;
if ( isdefined( self.grenade ) )
var_0 = angleclamp180( vectortoangles( self.grenade.origin - self.origin )[1] - self.angles[1] );
else
var_0 = self.angles[1];
if ( self.a.pose == "stand" )
{
if ( isdefined( self.grenade ) && trydive( var_0 ) )
return;
self setflaggedanimknoballrestart( "cowerstart", animscripts\utility::lookupanim( "grenade", "cower_squat" ), %body, 1, 0.2 );
animscripts\shared::donotetracks( "cowerstart" );
}
self.a.pose = "crouch";
self.a.movement = "stop";
self setflaggedanimknoballrestart( "cower", animscripts\utility::lookupanim( "grenade", "cower_squat_idle" ), %body, 1, 0.2 );
animscripts\shared::donotetracks( "cower" );
self waittill( "never" );
}
end_script()
{
self.safetochangescript = 1;
}
trydive( var_0 )
{
if ( randomint( 2 ) == 0 )
return 0;
if ( self.stairsstate != "none" )
return 0;
var_1 = undefined;
if ( abs( var_0 ) > 90 )
var_1 = animscripts\utility::lookupanim( "grenade", "cower_dive_back" );
else
var_1 = animscripts\utility::lookupanim( "grenade", "cower_dive_front" );
var_2 = getmovedelta( var_1, 0, 0.5 );
var_3 = self localtoworldcoords( var_2 );
if ( !self maymovetopoint( var_3 ) )
return 0;
self.safetochangescript = 0;
self setflaggedanimknoballrestart( "cowerstart", var_1, %body, 1, 0.2 );
animscripts\shared::donotetracks( "cowerstart" );
self.safetochangescript = 1;
return 1;
}