IW4-Dump-Files/animscripts/traverse/ladder_down.gsc

45 lines
1.4 KiB
Plaintext

// ladder_down.gsc
// Climbs down a ladder of any height by using a looping animation.
#using_animtree( "generic_human" );
main()
{
// do not do code prone in this script
self.desired_anim_pose = "crouch";
animscripts\utility::UpdateAnimPose();
self endon( "killanimscript" );
self traverseMode( "nogravity" );
self traverseMode( "noclip" );
// First, get on
endnode = self getnegotiationendnode();
assert( isdefined( endnode ) );
endPos = endnode.origin;
//("ladder_down: about to start climbing. Height to climb: " + (endPos[2] - self.origin[2]) );#/
// orient to the Negotiation start node
startnode = self getnegotiationstartnode();
assert( isdefined( startnode ) );
self OrientMode( "face angle", startnode.angles[ 1 ] );
self setFlaggedAnimKnoballRestart( "climbanim", %ladder_climbon, %body, 1, .1, 1 );
self animscripts\shared::DoNoteTracks( "climbanim" );
// Now do the cycle
climbAnim = %ladder_climbdown;
self setFlaggedAnimKnoballRestart( "climbanim", climbAnim, %body, 1, .1, 1 );
cycleDelta = GetMoveDelta( climbAnim, 0, 1 );
climbRate = cycleDelta[ 2 ] / getanimlength( climbAnim );
climbingTime = ( endPos[ 2 ] - self.origin[ 2 ] ) / climbRate;
self animscripts\shared::DoNoteTracksForTime( climbingTime, "climbanim" );
self traverseMode( "gravity" );
self.a.movement = "stop";
self.a.pose = "stand";
//("ladder_down: all done");#/
}