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

50 lines
1.6 KiB
Plaintext

// stairs_down.gsc
// Climbs down stairs 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 = "stand";
animscripts\utility::UpdateAnimPose();
self endon( "killanimscript" );
self traverseMode( "nogravity" );
endnode = self getnegotiationendnode()
assert( isdefined( endnode ) );
endPos = endnode.origin
horizontalDelta = ( endPos[ 0 ] - self.origin[ 0 ], endPos[ 1 ] - self.origin[ 1 ], 0 );
horizontalDistance = length( horizontalDelta );
// Do the cycle
//if ( self animscripts\utility::weaponAnims() == "none" || self animscripts\utility::weaponAnims() == "pistol" )
// climbAnim = %climbstairs_down;
//else
climbAnim = %climbstairs_down_armed;
// orient to the Negotiation start node
startnode = self getnegotiationstartnode();
assert( isdefined( startNode ) );
self OrientMode( "face angle", node.angles[ 1 ] );
self setFlaggedAnimKnoball( "climbanim", climbAnim, %body, 1, .3, 1 );
cycleDelta = GetMoveDelta( climbAnim, 0, 1 );
cycleDelta = ( cycleDelta[ 0 ], cycleDelta[ 1 ], 0 );
cycleHorDist = length( cycleDelta );
cycleTime = getanimlength( climbAnim );
climbingTime = ( horizontalDistance / cycleHorDist ) * cycleTime;
//("stairs_down: about to start climbing. Horizontal dist: " +horizontalDistance+ ", dist/cycle: "+cycleHorDist+", time/cycle: "+cycleTime+", time to play: "+climbingTime);#/
self animscripts\shared::DoNoteTracksForTime( climbingTime, "climbanim" );
// self traverseMode("gravity");
self.a.movement = "walk";
self.a.pose = "stand";
//("stairs_down: all done");#/
}