mirror of
https://github.com/reaaLx/nx1-gsc-dump.git
synced 2025-06-27 23:01:49 +00:00
Incomplete SP dump provided by Louvenarde
This commit is contained in:
27
animscripts/traverse/crouch_jump_down_40.gsc
Normal file
27
animscripts/traverse/crouch_jump_down_40.gsc
Normal file
@ -0,0 +1,27 @@
|
||||
// crouch_jump_down_40.gsc
|
||||
// Makes the character roll down off a ledge at no higher than 32 units. Designed for 40 units but should work for 44-70 or so.
|
||||
|
||||
#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.a.movement = "walk";
|
||||
self traverseMode( "nogravity" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
//crouch_jump_down_40
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "stepanim", %jump_across_72, %body, 1, .1, 1 );
|
||||
wait .15;
|
||||
// self waittillmatch("stepanim", "gravity on");
|
||||
self traverseMode( "gravity" );
|
||||
self animscripts\shared::DoNoteTracks( "stepanim" );
|
||||
}
|
25
animscripts/traverse/duck_under_56.gsc
Normal file
25
animscripts/traverse/duck_under_56.gsc
Normal file
@ -0,0 +1,25 @@
|
||||
// Jump_across_72.gsc
|
||||
// Makes the character do a lateral jump of 72 units.
|
||||
|
||||
#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" );
|
||||
self traverseMode( "noclip" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "jumpanim", %gulag_pipe_traverse, %body, 1, .1, 1 );
|
||||
self waittillmatch( "jumpanim", "finish" );
|
||||
self traverseMode( "gravity" );
|
||||
self animscripts\shared::DoNoteTracks( "jumpanim" );
|
||||
}
|
27
animscripts/traverse/fence_climb.gsc
Normal file
27
animscripts/traverse/fence_climb.gsc
Normal file
@ -0,0 +1,27 @@
|
||||
// Fence_climb.gsc
|
||||
// Makes the character climb a 48 unit fence
|
||||
// TEMP - copied wall dive until we get an animation
|
||||
// Makes the character dive over a low wall
|
||||
|
||||
#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" );// So he doesn't get stuck if the wall is a little too high
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "diveanim", %fenceclimb, %body, 1, .1, 1 );
|
||||
// self waittillmatch("diveanim", "gravity on");
|
||||
self animscripts\shared::DoNoteTracks( "diveanim" );
|
||||
self traverseMode( "gravity" );
|
||||
}
|
30
animscripts/traverse/jump_across_100.gsc
Normal file
30
animscripts/traverse/jump_across_100.gsc
Normal file
@ -0,0 +1,30 @@
|
||||
// Jump_across_100.gsc
|
||||
// Makes the character do a lateral jump of 100 units.
|
||||
|
||||
#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" );
|
||||
self traverseMode( "noclip" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
jumpAnims = [];
|
||||
jumpAnims[0] = %jump_across_100_spring;
|
||||
jumpAnims[1] = %jump_across_100_lunge;
|
||||
jumpAnims[2] = %jump_across_100_stumble;
|
||||
|
||||
jumpanim = jumpAnims[ randomint( jumpAnims.size ) ];
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "jumpanim", jumpanim, %body, 1, .1, 1 );
|
||||
self animscripts\shared::DoNoteTracks( "jumpanim" );
|
||||
}
|
25
animscripts/traverse/jump_across_72.gsc
Normal file
25
animscripts/traverse/jump_across_72.gsc
Normal file
@ -0,0 +1,25 @@
|
||||
// Jump_across_72.gsc
|
||||
// Makes the character do a lateral jump of 72 units.
|
||||
|
||||
#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" );
|
||||
self traverseMode( "noclip" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "jumpanim", %jump_across_72, %body, 1, .1, 1 );
|
||||
self waittillmatch( "jumpanim", "gravity on" );
|
||||
self traverseMode( "gravity" );
|
||||
self animscripts\shared::DoNoteTracks( "jumpanim" );
|
||||
}
|
32
animscripts/traverse/jump_over_high_wall.gsc
Normal file
32
animscripts/traverse/jump_over_high_wall.gsc
Normal file
@ -0,0 +1,32 @@
|
||||
// Jump_over_high_wall.gsc
|
||||
// Makes the character dive over a high wall. Designed for getting bad guys into levels - it looks bad from the back.
|
||||
|
||||
#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" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self clearanim( %stand_and_crouch, 0.1 );
|
||||
self setFlaggedAnimKnoballRestart( "diveanim", %jump_over_high_wall, %body, 1, .1, 1 );
|
||||
self playsound( "dive_wall" );
|
||||
self waittillmatch( "diveanim", "gravity on" );
|
||||
self traverseMode( "nogravity" );
|
||||
self waittillmatch( "diveanim", "noclip" );
|
||||
self traverseMode( "noclip" );
|
||||
self waittillmatch( "diveanim", "gravity on" );
|
||||
self traverseMode( "gravity" );
|
||||
self animscripts\shared::DoNoteTracks( "diveanim" );
|
||||
}
|
||||
|
25
animscripts/traverse/jump_up_80.gsc
Normal file
25
animscripts/traverse/jump_up_80.gsc
Normal file
@ -0,0 +1,25 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "dog" );
|
||||
main()
|
||||
{
|
||||
assertex( self.type == "dog", "Only dogs can do this traverse currently." );
|
||||
self endon( "killanimscript" );
|
||||
self traverseMode( "nogravity" );
|
||||
self traverseMode( "noclip" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
realHeight = startnode.traverse_height - startnode.origin[ 2 ];
|
||||
self thread teleportThread( realHeight - 80 );
|
||||
|
||||
self clearanim( %root, 0.2 );
|
||||
self setflaggedanimrestart( "jump_up_80", anim.dogTraverseAnims[ "jump_up_80" ], 1, 0.2, 1 );
|
||||
|
||||
self animscripts\shared::DoNoteTracks( "jump_up_80" );
|
||||
|
||||
self.traverseComplete = true;
|
||||
}
|
19
animscripts/traverse/jumpdown_130.gsc
Normal file
19
animscripts/traverse/jumpdown_130.gsc
Normal file
@ -0,0 +1,19 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_jump_down( 7, 0.7 );
|
||||
else
|
||||
jumpdown_130_human();
|
||||
}
|
||||
|
||||
jumpdown_130_human()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %traverse_jumpdown_130;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
19
animscripts/traverse/jumpdown_40.gsc
Normal file
19
animscripts/traverse/jumpdown_40.gsc
Normal file
@ -0,0 +1,19 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_jump_down( 3, 1.0 );
|
||||
else
|
||||
low_wall_human();
|
||||
}
|
||||
|
||||
low_wall_human()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %traverse_jumpdown_40;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
19
animscripts/traverse/jumpdown_56.gsc
Normal file
19
animscripts/traverse/jumpdown_56.gsc
Normal file
@ -0,0 +1,19 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_jump_down( 5, 1.0 );
|
||||
else
|
||||
low_wall_human();
|
||||
}
|
||||
|
||||
low_wall_human()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %traverse_jumpdown_56;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
19
animscripts/traverse/jumpdown_96.gsc
Normal file
19
animscripts/traverse/jumpdown_96.gsc
Normal file
@ -0,0 +1,19 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_jump_down( 7, 0.8 );
|
||||
else
|
||||
low_wall_human();
|
||||
}
|
||||
|
||||
low_wall_human()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %traverse_jumpdown_96;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
44
animscripts/traverse/ladder_down.gsc
Normal file
44
animscripts/traverse/ladder_down.gsc
Normal file
@ -0,0 +1,44 @@
|
||||
// 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");#/
|
||||
}
|
51
animscripts/traverse/ladder_up.gsc
Normal file
51
animscripts/traverse/ladder_up.gsc
Normal file
@ -0,0 +1,51 @@
|
||||
// ladder_up.gsc
|
||||
// Climbs a ladder of any height by using a looping animation, and gets off at the top.
|
||||
|
||||
#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" );
|
||||
|
||||
climbAnim = %ladder_climbup;
|
||||
endAnim = %ladder_climboff;
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "climbanim", climbAnim, %body, 1, .1, 1 );
|
||||
|
||||
endAnimDelta = GetMoveDelta( endAnim, 0, 1 );
|
||||
|
||||
endNode = self getnegotiationendnode();
|
||||
assert( isdefined( endnode ) );
|
||||
endPos = endnode.origin - endAnimDelta + ( 0, 0, 1 ); // 1 unit padding
|
||||
|
||||
cycleDelta = GetMoveDelta( climbAnim, 0, 1 );
|
||||
climbRate = cycleDelta[ 2 ] / getanimlength( climbAnim );
|
||||
//("ladder_up: about to start climbing. Height to climb: " + (endAnimDelta[2] + endPos[2] - self.origin[2]) );#/
|
||||
|
||||
climbingTime = ( endPos[ 2 ] - self.origin[ 2 ] ) / climbRate;
|
||||
if ( climbingTime > 0 )
|
||||
{
|
||||
self.allowpain = true;
|
||||
self animscripts\shared::DoNoteTracksForTime( climbingTime, "climbanim" );
|
||||
// println ("elapsed ", (gettime() - timer) * 0.001);
|
||||
self setFlaggedAnimKnoballRestart( "climbanim", endAnim, %body, 1, .1, 1 );
|
||||
self animscripts\shared::DoNoteTracks( "climbanim" );
|
||||
}
|
||||
|
||||
self traverseMode( "gravity" );
|
||||
self.a.movement = "run";
|
||||
self.a.pose = "crouch";
|
||||
//("ladder_up: all done");#/
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_d112_f244.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_d112_f244.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_d112_f244;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_d128_f50.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_d128_f50.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_d128_f50;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_d160_f160.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_d160_f160.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_d160_f160;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_d160_f244.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_d160_f244.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_d160_f244;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_d200_f600.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_d200_f600.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_d200_f600;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_d220_f640.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_d220_f640.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_d220_f640;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_d240_f328.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_d240_f328.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_d240_f328;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_d64_f160.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_d64_f160.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_d64_f160;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
14
animscripts/traverse/moon_trav_jump_into_train_f104.gsc
Normal file
14
animscripts/traverse/moon_trav_jump_into_train_f104.gsc
Normal file
@ -0,0 +1,14 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_lava_jump_into_train_f104;
|
||||
traverseData[ "traverseToCoverAnim" ] = %tp_moon_lava_jump_into_train_f104;
|
||||
traverseData[ "coverType" ] = "Exposed";
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
14
animscripts/traverse/moon_trav_jump_into_train_f24.gsc
Normal file
14
animscripts/traverse/moon_trav_jump_into_train_f24.gsc
Normal file
@ -0,0 +1,14 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_lava_jump_into_train_f24;
|
||||
traverseData[ "traverseToCoverAnim" ] = %tp_moon_lava_jump_into_train_f24;
|
||||
traverseData[ "coverType" ] = "Exposed";
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
14
animscripts/traverse/moon_trav_jump_into_train_f352.gsc
Normal file
14
animscripts/traverse/moon_trav_jump_into_train_f352.gsc
Normal file
@ -0,0 +1,14 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_lava_jump_into_train_f352;
|
||||
traverseData[ "traverseToCoverAnim" ] = %tp_moon_lava_jump_into_train_f352;
|
||||
traverseData[ "coverType" ] = "Cover Crouch";
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
15
animscripts/traverse/moon_trav_jump_traintop_f104.gsc
Normal file
15
animscripts/traverse/moon_trav_jump_traintop_f104.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_lava_jump_traintop_f104;
|
||||
traverseData[ "traverseToCoverAnim" ] = %tp_moon_lava_jump_traintop_f104;
|
||||
traverseData[ "coverType" ] = "Cover Right";
|
||||
traverseData[ "forceTeleport" ] = true;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_u36_f_d188.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_u36_f_d188.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_u36_f_d188;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_u36_f_d248.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_u36_f_d248.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_u36_f_d248;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_u36_f_d284.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_u36_f_d284.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_u36_f_d284;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_jump_u48.gsc
Normal file
12
animscripts/traverse/moon_trav_jump_u48.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_u48;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
12
animscripts/traverse/moon_trav_storage_jump.gsc
Normal file
12
animscripts/traverse/moon_trav_storage_jump.gsc
Normal file
@ -0,0 +1,12 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_storage_jump;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
40
animscripts/traverse/moon_trav_wall_hop_u_40_d_40.gsc
Normal file
40
animscripts/traverse/moon_trav_wall_hop_u_40_d_40.gsc
Normal file
@ -0,0 +1,40 @@
|
||||
// moon_trav_wall_hop_u_40_d_40.gsc
|
||||
// Makes the character climb a 40 unit fence, lunar
|
||||
|
||||
#include animscripts\traverse\shared;
|
||||
|
||||
main()
|
||||
{
|
||||
wall_hop_human();
|
||||
}
|
||||
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
wall_hop_human()
|
||||
{
|
||||
if( !IsDefined( level.moon_trav_wall_hop_toggle ) )
|
||||
{
|
||||
level.moon_trav_wall_hop_toggle = 1;
|
||||
}
|
||||
|
||||
if ( level.moon_trav_wall_hop_toggle == 1 )
|
||||
{
|
||||
level.moon_trav_wall_hop_toggle = 0;
|
||||
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_u40_f_d40_a;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
level.moon_trav_wall_hop_toggle = 1;
|
||||
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_moon_trav_jump_u40_f_d40_b;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
|
||||
}
|
||||
}
|
19
animscripts/traverse/nx_proto_retro_jump_down_run.gsc
Normal file
19
animscripts/traverse/nx_proto_retro_jump_down_run.gsc
Normal file
@ -0,0 +1,19 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_jump_down( 3, 1.0 );
|
||||
else
|
||||
retro_jump_down_human();
|
||||
}
|
||||
|
||||
#using_animtree( "generic_human" );
|
||||
retro_jump_down_human()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %nx_proto_retro_jump_down_run;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
378
animscripts/traverse/shared.gsc
Normal file
378
animscripts/traverse/shared.gsc
Normal file
@ -0,0 +1,378 @@
|
||||
#include animscripts\utility;
|
||||
#include maps\_utility;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
// Deprecated. only used for old traverses that will be deleted.
|
||||
advancedTraverse( traverseAnim, normalHeight )
|
||||
{
|
||||
// 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" );// So he doesn't get stuck if the wall is a little too high
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
realHeight = startnode.traverse_height - startnode.origin[ 2 ];
|
||||
|
||||
self thread teleportThread( realHeight - normalHeight );
|
||||
|
||||
blendTime = 0.15;
|
||||
|
||||
self clearAnim( %body, blendTime );
|
||||
self setFlaggedAnimKnoballRestart( "traverse", traverseAnim, %root, 1, blendTime, 1 );
|
||||
|
||||
gravityToBlendTime = 0.2;
|
||||
endBlendTime = 0.2;
|
||||
|
||||
self thread animscripts\shared::DoNoteTracksForever( "traverse", "no clear" );
|
||||
if ( !animHasNotetrack( traverseAnim, "gravity on" ) )
|
||||
{
|
||||
magicWhateverTime_WhereTheHeckDidWeGetThisNumberAnyway = 1.23;
|
||||
wait( magicWhateverTime_WhereTheHeckDidWeGetThisNumberAnyway - gravityToBlendTime );
|
||||
self traverseMode( "gravity" );
|
||||
wait( gravityToBlendTime );
|
||||
}
|
||||
else
|
||||
{
|
||||
self waittillmatch( "traverse", "gravity on" );
|
||||
self traverseMode( "gravity" );
|
||||
if ( !animHasNotetrack( traverseAnim, "blend" ) )
|
||||
wait( gravityToBlendTime );
|
||||
else
|
||||
self waittillmatch( "traverse", "blend" );
|
||||
}
|
||||
}
|
||||
|
||||
teleportThread( verticalOffset )
|
||||
{
|
||||
self endon( "killanimscript" );
|
||||
self notify( "endTeleportThread" );
|
||||
self endon( "endTeleportThread" );
|
||||
|
||||
reps = 5;
|
||||
offset = ( 0, 0, verticalOffset / reps );
|
||||
|
||||
for ( i = 0; i < reps; i++ )
|
||||
{
|
||||
self forceTeleport( self.origin + offset );
|
||||
wait .05;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
teleportThreadEx( verticalOffset, delay, frames, animRate )
|
||||
{
|
||||
self endon( "killanimscript" );
|
||||
self notify( "endTeleportThread" );
|
||||
self endon( "endTeleportThread" );
|
||||
|
||||
if ( (verticalOffset == 0) || (frames <= 0) )
|
||||
return;
|
||||
|
||||
if ( delay > 0 )
|
||||
wait delay;
|
||||
|
||||
offset = ( 0, 0, verticalOffset / frames );
|
||||
|
||||
if ( isDefined( animRate ) && (animRate < 1.0) )
|
||||
self setFlaggedAnimKnoball( "traverseAnim", self.traverseAnim, self.traverseAnimRoot, 1, .2, animRate );
|
||||
|
||||
for ( i = 0; i < frames; i++ )
|
||||
{
|
||||
self forceTeleport( self.origin + offset );
|
||||
wait .05;
|
||||
}
|
||||
|
||||
if ( isDefined( animRate ) && (animRate < 1.0) )
|
||||
self setFlaggedAnimKnoball( "traverseAnim", self.traverseAnim, self.traverseAnimRoot, 1, .2, 1.0 );
|
||||
}
|
||||
|
||||
|
||||
DoTraverse( traverseData )
|
||||
{
|
||||
self endon( "killanimscript" );
|
||||
|
||||
self notify( "traverse_started" );
|
||||
|
||||
// do not do code prone in this script
|
||||
self.desired_anim_pose = "stand";
|
||||
animscripts\utility::UpdateAnimPose();
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getNegotiationStartNode();
|
||||
endNode = self getNegotiationEndNode();
|
||||
|
||||
assert( isDefined( startnode ) );
|
||||
assert( isDefined( endNode ) );
|
||||
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self.traverseHeight = traverseData[ "traverseHeight" ];
|
||||
self.traverseStartNode = startnode;
|
||||
|
||||
traverseAnim = traverseData[ "traverseAnim" ];
|
||||
traverseToCoverAnim = traverseData[ "traverseToCoverAnim" ]; // traversals that end up with 180-degree spins into cover at the end
|
||||
|
||||
self traverseMode( "nogravity" );
|
||||
self traverseMode( "noclip" );
|
||||
|
||||
self.traverseStartZ = self.origin[ 2 ];
|
||||
if ( !animHasNotetrack( traverseAnim, "traverse_align" ) )
|
||||
{
|
||||
/# println( "^1Warning: animation ", traverseAnim, " has no traverse_align notetrack" ); #/
|
||||
self handleTraverseAlignment();
|
||||
}
|
||||
|
||||
toCover = false;
|
||||
if ( isDefined( traverseToCoverAnim ) && isDefined( self.node ) && self.node.type == traverseData[ "coverType" ] && distanceSquared( self.node.origin, endNode.origin ) < 25 * 25 )
|
||||
{
|
||||
if ( AbsAngleClamp180( self.node.angles[ 1 ] - endNode.angles[ 1 ] ) > 160 )
|
||||
{
|
||||
toCover = true;
|
||||
traverseAnim = traverseToCoverAnim;
|
||||
}
|
||||
}
|
||||
|
||||
if ( toCover )
|
||||
{
|
||||
if ( isdefined( traverseData[ "traverseToCoverSound" ] ) )
|
||||
{
|
||||
self thread play_sound_on_entity( traverseData[ "traverseToCoverSound" ] );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( isdefined( traverseData[ "traverseSound" ] ) )
|
||||
{
|
||||
self thread play_sound_on_entity( traverseData[ "traverseSound" ] );
|
||||
}
|
||||
}
|
||||
self.traverseAnim = traverseAnim;
|
||||
self.traverseAnimRoot = %body;
|
||||
|
||||
// tagJW<NOTE>: Use the blend_finish tag to determine blend time on the traverse animation
|
||||
blend_time = 0.2;
|
||||
|
||||
if( self IsCQBWalking() )
|
||||
{
|
||||
blend_finish_time = GetNotetrackTimes( traverseAnim, "cqb_blend_finish" );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
blend_finish_time = GetNotetrackTimes( traverseAnim, "blend_finish" );
|
||||
}
|
||||
|
||||
if ( blend_finish_time.size > 0 )
|
||||
{
|
||||
blend_time = blend_finish_time[0] * GetAnimLength( traverseAnim );
|
||||
}
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "traverseAnim", traverseAnim, %body, 1, blend_time, 1 );
|
||||
|
||||
self.traverseDeathIndex = 0;
|
||||
self.traverseDeathAnim = traverseData[ "interruptDeathAnim" ];
|
||||
self animscripts\shared::DoNoteTracks( "traverseAnim", ::handleTraverseNotetracks );
|
||||
self traverseMode( "gravity" );
|
||||
|
||||
if ( self.delayedDeath )
|
||||
return;
|
||||
|
||||
self.a.nodeath = false;
|
||||
if ( toCover && isDefined( self.node ) && distanceSquared( self.origin, self.node.origin ) < 16 * 16 )
|
||||
{
|
||||
self.a.movement = "stop";
|
||||
|
||||
if( IsDefined( traverseData[ "forceTeleport" ] ) && traverseData[ "forceTeleport" ] )
|
||||
{
|
||||
self ForceTeleport( self.node.origin );
|
||||
}
|
||||
else
|
||||
{
|
||||
self Teleport( self.node.origin );
|
||||
}
|
||||
}
|
||||
else if( IsDefined( traverseData[ "traverseStopsAtEnd" ] ) )
|
||||
{
|
||||
self.a.movement = "stop";
|
||||
}
|
||||
else
|
||||
{
|
||||
self.a.movement = "run";
|
||||
//self setAnimKnobAllRestart( animscripts\run::GetRunAnim(), %body, 1, 0.0, 1 );
|
||||
self clearanim( traverseAnim, 0.2 );
|
||||
self animscripts\utility::handle_move_transition_notes( traverseAnim );
|
||||
}
|
||||
|
||||
self notify( "traverse_finished" );
|
||||
|
||||
self.traverseAnimRoot = undefined;
|
||||
self.traverseAnim = undefined;
|
||||
self.deathAnim = undefined;
|
||||
}
|
||||
|
||||
handleTraverseNotetracks( note )
|
||||
{
|
||||
if ( note == "traverse_death" )
|
||||
return handleTraverseDeathNotetrack();
|
||||
else if ( note == "traverse_align" )
|
||||
return handleTraverseAlignment();
|
||||
else if ( note == "traverse_drop" )
|
||||
return handleTraverseDrop();
|
||||
}
|
||||
|
||||
handleTraverseDeathNotetrack()
|
||||
{
|
||||
if ( isdefined( self.traverseDeathAnim ) )
|
||||
{
|
||||
deathAnimArray = self.traverseDeathAnim[ self.traverseDeathIndex ];
|
||||
self.deathAnim = deathAnimArray[ randomint( deathAnimArray.size ) ];
|
||||
self.traverseDeathIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
handleTraverseAlignment()
|
||||
{
|
||||
self traverseMode( "nogravity" );
|
||||
self traverseMode( "noclip" );
|
||||
if ( isDefined( self.traverseHeight ) && isDefined( self.traverseStartNode.traverse_height ) )
|
||||
{
|
||||
currentHeight = self.traverseStartNode.traverse_height - self.traverseStartZ;
|
||||
self thread teleportThread( currentHeight - self.traverseHeight );
|
||||
}
|
||||
}
|
||||
|
||||
handleTraverseDrop()
|
||||
{
|
||||
startpos = self.origin + ( 0, 0, 32 );
|
||||
trace = bullettrace( startpos, self.origin + ( 0, 0, -512 ), false, undefined );
|
||||
endpos = trace[ "position" ];
|
||||
dist = distance( startpos, endpos );
|
||||
realDropHeight = dist - 32 - 0.5;// 0.5 makes sure we end up above the ground a bit
|
||||
|
||||
traverseAnimPos = self getAnimTime( self.traverseAnim );
|
||||
traverseAnimDelta = getMoveDelta( self.traverseAnim, traverseAnimPos, 1.0 );
|
||||
traverseAnimLength = getAnimLength( self.traverseAnim );
|
||||
|
||||
animDropHeight = 0 - traverseAnimDelta[ 2 ];
|
||||
assertEx( animDropHeight >= 0, animDropHeight );
|
||||
dropOffset = animDropHeight - realDropHeight;
|
||||
|
||||
/#
|
||||
if ( getdvarint( "scr_traverse_debug" ) )
|
||||
{
|
||||
thread animscripts\utility::debugLine( startpos, endpos, ( 1, 1, 1 ), 2 * 20 );
|
||||
thread animscripts\utility::drawStringTime( "drop offset: " + dropOffset, endpos, ( 1, 1, 1 ), 2 );
|
||||
}
|
||||
#/
|
||||
|
||||
if ( animDropHeight < realDropHeight )
|
||||
animRate = animDropHeight / realDropHeight;
|
||||
else
|
||||
animRate = 1;
|
||||
|
||||
teleportLength = ( traverseAnimLength - traverseAnimPos ) / 3.0; // let's make the teleport take 1/3 of the animation time roughly
|
||||
numFrames = ceil( teleportLength * 20 ); // 0.05 per frame. Maximum number of frames we can use
|
||||
|
||||
self thread teleportThreadEx( dropOffset, 0, numFrames, animRate );
|
||||
self thread finishTraverseDrop( endpos[ 2 ] );
|
||||
}
|
||||
|
||||
finishTraverseDrop( finalz )
|
||||
{
|
||||
self endon( "killanimscript" );
|
||||
|
||||
finalz += 4.0;
|
||||
while ( 1 )
|
||||
{
|
||||
if ( self.origin[ 2 ] < finalz )
|
||||
{
|
||||
self traverseMode( "gravity" );
|
||||
break;
|
||||
}
|
||||
wait .05;
|
||||
}
|
||||
}
|
||||
|
||||
doNothingFunc()
|
||||
{
|
||||
self animMode( "zonly_physics" );
|
||||
self waittill( "killanimscript" );
|
||||
}
|
||||
|
||||
#using_animtree( "dog" );
|
||||
|
||||
dog_wall_and_window_hop( traverseName, height )
|
||||
{
|
||||
self endon( "killanimscript" );
|
||||
self traverseMode( "nogravity" );
|
||||
self traverseMode( "noclip" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
realHeight = startnode.traverse_height - startnode.origin[ 2 ];
|
||||
self thread teleportThread( realHeight - height );
|
||||
|
||||
self clearanim( %root, 0.2 );
|
||||
self setflaggedanimrestart( "dog_traverse", anim.dogTraverseAnims[ traverseName ], 1, 0.2, 1 );
|
||||
|
||||
self animscripts\shared::DoNoteTracks( "dog_traverse" );
|
||||
|
||||
self.traverseComplete = true;
|
||||
}
|
||||
|
||||
|
||||
dog_jump_down( frames, rate )
|
||||
{
|
||||
self endon( "killanimscript" );
|
||||
self traverseMode( "noclip" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
height = self getNegotiationStartNode().origin[2] - self getNegotiationEndNode().origin[2];
|
||||
self.traverseAnim = anim.dogTraverseAnims[ "jump_down_40" ];
|
||||
self.traverseAnimRoot = %root;
|
||||
self thread teleportThreadEx( 40.0 - height, 0.1, frames, rate );
|
||||
|
||||
self clearanim( %root, 0.2 );
|
||||
self setflaggedanimrestart( "traverseAnim", self.traverseAnim, 1, 0.2, 1 );
|
||||
self animscripts\shared::DoNoteTracks( "traverseAnim" );
|
||||
|
||||
self clearanim( self.traverseAnim, 0 ); // start run immediately
|
||||
self traverseMode( "gravity" );
|
||||
self.traverseComplete = true;
|
||||
self.traverseAnimRoot = undefined;
|
||||
self.traverseAnim = undefined;
|
||||
}
|
||||
|
||||
dog_jump_up( height, frames )
|
||||
{
|
||||
self endon( "killanimscript" );
|
||||
self traverseMode( "noclip" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self thread teleportThreadEx( height - 40.0, 0.2, frames );
|
||||
|
||||
self clearanim( %root, 0.25 );
|
||||
self setflaggedanimrestart( "traverseAnim", anim.dogTraverseAnims[ "jump_up_40" ], 1, 0.2, 1 );
|
||||
self animscripts\shared::DoNoteTracks( "traverseAnim" );
|
||||
|
||||
self clearanim( anim.dogTraverseAnims[ "jump_up_40" ], 0 ); // start run immediately
|
||||
self traverseMode( "gravity" );
|
||||
self.traverseComplete = true;
|
||||
}
|
54
animscripts/traverse/slide_across_car.gsc
Normal file
54
animscripts/traverse/slide_across_car.gsc
Normal file
@ -0,0 +1,54 @@
|
||||
#include animscripts\traverse\shared;
|
||||
#include animscripts\utility;
|
||||
#include common_scripts\utility;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
slide_across_car_dog();
|
||||
else
|
||||
slide_across_car_human();
|
||||
}
|
||||
|
||||
slide_across_car_human()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %slide_across_car;
|
||||
traverseData[ "traverseToCoverAnim" ] = %slide_across_car_2_cover;
|
||||
traverseData[ "coverType" ] = "Cover Crouch";
|
||||
traverseData[ "traverseHeight" ] = 38.0;
|
||||
traverseData[ "interruptDeathAnim" ][ 0 ] = array( %slide_across_car_death );
|
||||
traverseData[ "traverseSound" ] = "npc_car_slide_hood";
|
||||
traverseData[ "traverseToCoverSound" ] = "npc_car_slide_cover";
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
||||
|
||||
#using_animtree( "dog" );
|
||||
|
||||
slide_across_car_dog()
|
||||
{
|
||||
self endon( "killanimscript" );
|
||||
self traverseMode( "noclip" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self clearanim( %root, 0.1 );
|
||||
self setflaggedanimrestart( "traverse", anim.dogTraverseAnims[ "jump_up_40" ], 1, 0.1, 1 );
|
||||
self animscripts\shared::DoNoteTracks( "traverse" );
|
||||
|
||||
// TEMP, can't hear jump over sounds
|
||||
self thread play_sound_in_space( "anml_dog_bark", self gettagorigin( "tag_eye" ) );
|
||||
|
||||
self clearanim( %root, 0 );
|
||||
self setflaggedanimrestart( "traverse", anim.dogTraverseAnims[ "jump_down_40" ], 1, 0, 1 );
|
||||
self animscripts\shared::DoNoteTracks( "traverse" );
|
||||
|
||||
self traverseMode( "gravity" );
|
||||
self.traverseComplete = true;
|
||||
}
|
49
animscripts/traverse/stairs_down.gsc
Normal file
49
animscripts/traverse/stairs_down.gsc
Normal file
@ -0,0 +1,49 @@
|
||||
// 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");#/
|
||||
}
|
47
animscripts/traverse/stairs_up.gsc
Normal file
47
animscripts/traverse/stairs_up.gsc
Normal file
@ -0,0 +1,47 @@
|
||||
// stairs_up.gsc
|
||||
// Climbs stairs of any height by using a looping animation, and gets off at the top.
|
||||
|
||||
#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" );
|
||||
|
||||
//if ( self animscripts\utility::weaponAnims() == "none" || self animscripts\utility::weaponAnims() == "pistol" )
|
||||
// climbAnim = %climbstairs_up;
|
||||
//else
|
||||
climbAnim = %climbstairs_up_armed;
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startNode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "climbanim", climbAnim, %body, 1, .1, 1 );
|
||||
|
||||
endnode = self getnegotiationendnode();
|
||||
assert( isdefined( endnode ) );
|
||||
endPos = endnode.origin + ( 0, 0, 1 ); // 1 unit padding
|
||||
|
||||
horizontalDelta = ( endPos[ 0 ] - self.origin[ 0 ], endPos[ 1 ] - self.origin[ 1 ], 0 );
|
||||
horizontalDistance = length( horizontalDelta );
|
||||
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_up: all done");#/
|
||||
}
|
||||
|
39
animscripts/traverse/step_down.gsc
Normal file
39
animscripts/traverse/step_down.gsc
Normal file
@ -0,0 +1,39 @@
|
||||
#include animscripts\traverse\shared;
|
||||
|
||||
// step_down.gsc
|
||||
// Makes the character step down off a ledge. Currently the ledge is assumed to be 36 units.
|
||||
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_jump_down( 40, 3 );
|
||||
else
|
||||
step_down_human();
|
||||
}
|
||||
|
||||
|
||||
step_down_human()
|
||||
{
|
||||
// do not do code prone in this script
|
||||
self.desired_anim_pose = "crouch";
|
||||
animscripts\utility::UpdateAnimPose();
|
||||
|
||||
self endon( "killanimscript" );
|
||||
self.a.movement = "walk";
|
||||
self traverseMode( "nogravity" );
|
||||
// self traverseMode("noclip"); // Testing to see if a clip brush will stop regular pathfinding and force the traverse script to be used.
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "stepanim", %step_down_low_wall, %body, 1, .1, 1 );
|
||||
self waittillmatch( "stepanim", "gravity on" );
|
||||
self traverseMode( "gravity" );
|
||||
self animscripts\shared::DoNoteTracks( "stepanim" );
|
||||
}
|
38
animscripts/traverse/step_up.gsc
Normal file
38
animscripts/traverse/step_up.gsc
Normal file
@ -0,0 +1,38 @@
|
||||
#include animscripts\traverse\shared;
|
||||
|
||||
// step_up.gsc
|
||||
// Makes the character step up onto a ledge. Currently the ledge is assumed to be 36 units.
|
||||
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_jump_up( 40, 3 );
|
||||
else
|
||||
step_up_human();
|
||||
}
|
||||
|
||||
step_up_human()
|
||||
{
|
||||
// do not do code prone in this script
|
||||
self.desired_anim_pose = "crouch";
|
||||
animscripts\utility::UpdateAnimPose();
|
||||
|
||||
self endon( "killanimscript" );
|
||||
self.a.movement = "walk";
|
||||
self traverseMode( "nogravity" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "stepanim", %step_up_low_wall, %body, 1, .1, 1 );
|
||||
self waittillmatch( "stepanim", "gravity on" );
|
||||
self traverseMode( "gravity" );
|
||||
self animscripts\shared::DoNoteTracks( "stepanim" );
|
||||
self setAnimKnobAllRestart( animscripts\run::GetCrouchRunAnim(), %body, 1, 0.1, 1 );
|
||||
}
|
||||
|
29
animscripts/traverse/step_up_12.gsc
Normal file
29
animscripts/traverse/step_up_12.gsc
Normal file
@ -0,0 +1,29 @@
|
||||
// step_up.gsc
|
||||
// Makes the character step up onto a ledge. Currently the ledge is assumed to be 36 units.
|
||||
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
// do not do code prone in this script
|
||||
|
||||
self endon( "killanimscript" );
|
||||
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
realHeight = startnode.traverse_height - startnode.origin[ 2 ];
|
||||
destination = ( realHeight );
|
||||
|
||||
reps = 6;
|
||||
offset = ( 0, 0, destination / reps );
|
||||
self traverseMode( "noclip" );// So he doesn't get stuck if the wall is a little too high
|
||||
for ( i = 0;i < reps;i++ )
|
||||
{
|
||||
self teleport( self.origin + offset );
|
||||
wait( 0.05 );
|
||||
}
|
||||
self traverseMode( "gravity" );
|
||||
|
||||
}
|
20
animscripts/traverse/stepup_52.gsc
Normal file
20
animscripts/traverse/stepup_52.gsc
Normal file
@ -0,0 +1,20 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_jump_up( 52.0, 5 );
|
||||
else
|
||||
low_wall_human();
|
||||
}
|
||||
|
||||
low_wall_human()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %traverse_stepup_52;
|
||||
traverseData[ "traverseHeight" ] = 52.0;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
6
animscripts/traverse/trench_jump_out.gsc
Normal file
6
animscripts/traverse/trench_jump_out.gsc
Normal file
@ -0,0 +1,6 @@
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
main()
|
||||
{
|
||||
self advancedTraverse( %trench_jump_out, 47.8 );
|
||||
}
|
22
animscripts/traverse/trench_jumpout.gsc
Normal file
22
animscripts/traverse/trench_jumpout.gsc
Normal file
@ -0,0 +1,22 @@
|
||||
#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.a.movement = "walk";
|
||||
self traverseMode( "nogravity" );
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "stepanim", %gully_trenchjump, %body, 1, .1, 1 );
|
||||
self waittillmatch( "stepanim", "gravity on" );
|
||||
self traverseMode( "gravity" );
|
||||
self animscripts\shared::DoNoteTracks( "stepanim" );
|
||||
self setAnimKnobAllRestart( animscripts\run::GetCrouchRunAnim(), %body, 1, 0.1, 1 );
|
||||
}
|
11
animscripts/traverse/vault_down_32_56.gsc
Normal file
11
animscripts/traverse/vault_down_32_56.gsc
Normal file
@ -0,0 +1,11 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %tp_border_vault_jump_56d;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
27
animscripts/traverse/wall_dive.gsc
Normal file
27
animscripts/traverse/wall_dive.gsc
Normal file
@ -0,0 +1,27 @@
|
||||
// Wall_dive.gsc
|
||||
// Makes the character dive over a low wall
|
||||
|
||||
#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" );// JBW Was getting caught on wall in test / obstacle
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "diveanim", %jump_over_low_wall, %body, 1, .1, 1 );
|
||||
self playsound( "dive_wall" );
|
||||
self waittillmatch( "diveanim", "gravity on" );
|
||||
self traverseMode( "gravity" );
|
||||
self animscripts\shared::DoNoteTracks( "diveanim" );
|
||||
self.a.movement = "run";
|
||||
}
|
24
animscripts/traverse/wall_hop.gsc
Normal file
24
animscripts/traverse/wall_hop.gsc
Normal file
@ -0,0 +1,24 @@
|
||||
// Fence_climb.gsc
|
||||
// Makes the character climb a 48 unit fence
|
||||
// TEMP - copied wall dive until we get an animation
|
||||
// Makes the character dive over a low wall
|
||||
|
||||
#include animscripts\traverse\shared;
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_wall_and_window_hop( "wallhop", 40 );
|
||||
else
|
||||
wall_hop_human();
|
||||
}
|
||||
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
wall_hop_human()
|
||||
{
|
||||
if ( randomint( 100 ) < 30 )
|
||||
self advancedTraverse( %traverse_wallhop_3, 39.875 );
|
||||
else
|
||||
self advancedTraverse( %traverse_wallhop, 39.875 );
|
||||
}
|
24
animscripts/traverse/wall_over_40.gsc
Normal file
24
animscripts/traverse/wall_over_40.gsc
Normal file
@ -0,0 +1,24 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_wall_and_window_hop( "window_40", 40 );
|
||||
else
|
||||
low_wall_human();
|
||||
}
|
||||
|
||||
low_wall_human()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %traverse40;
|
||||
traverseData[ "traverseToCoverAnim" ] = %traverse40_2_cover;
|
||||
traverseData[ "coverType" ] = "Cover Crouch";
|
||||
traverseData[ "traverseHeight" ] = 40.0;
|
||||
traverseData[ "interruptDeathAnim" ][ 0 ] = array( %traverse40_death_start, %traverse40_death_start_2 );
|
||||
traverseData[ "interruptDeathAnim" ][ 1 ] = array( %traverse40_death_end, %traverse40_death_end_2 );
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
74
animscripts/traverse/wall_over_96.gsc
Normal file
74
animscripts/traverse/wall_over_96.gsc
Normal file
@ -0,0 +1,74 @@
|
||||
#include animscripts\Utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
self.traverseDeath = 1;
|
||||
self advancedTraverse2( %traverse90, 96 );
|
||||
}
|
||||
|
||||
|
||||
advancedTraverse2( traverseAnim, normalHeight )
|
||||
{
|
||||
// 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" );// So he doesn't get stuck if the wall is a little too high
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
realHeight = startnode.traverse_height - startnode.origin[ 2 ];
|
||||
|
||||
// self thread teleportThread(realHeight - normalHeight);
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "traverse", traverseAnim, %body, 1, 0.15, 1 );
|
||||
timer = gettime();
|
||||
self thread animscripts\shared::DoNoteTracksForever( "traverse", "no clear", ::handle_death );
|
||||
if ( !animhasnotetrack( traverseAnim, "gravity on" ) )
|
||||
{
|
||||
timer = 1.23;
|
||||
timerOffset = 0.2;
|
||||
// wait (timer - timerOffset);
|
||||
wait 5.0;
|
||||
self traverseMode( "gravity" );
|
||||
wait( timerOffset );
|
||||
}
|
||||
else
|
||||
{
|
||||
self waittillmatch( "traverse", "gravity on" );
|
||||
self traverseMode( "gravity" );
|
||||
if ( !animhasnotetrack( traverseAnim, "blend" ) )
|
||||
wait( 0.2 );
|
||||
else
|
||||
self waittillmatch( "traverse", "blend" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
handle_death( note )
|
||||
{
|
||||
println( note );
|
||||
|
||||
if ( note != "traverse_death" )
|
||||
return;
|
||||
|
||||
self endon( "killanimscript" );
|
||||
|
||||
if ( self.health == 1 )
|
||||
{
|
||||
self.a.nodeath = true;
|
||||
if ( self.traverseDeath > 1 )
|
||||
self setFlaggedAnimKnobAll( "deathanim", %traverse90_end_death, %body, 1, .2, 1 );
|
||||
else
|
||||
self setFlaggedAnimKnobAll( "deathanim", %traverse90_start_death, %body, 1, .2, 1 );
|
||||
|
||||
self animscripts\face::SayGenericDialogue( "death" );
|
||||
}
|
||||
self.traverseDeath++ ;
|
||||
}
|
27
animscripts/traverse/window.gsc
Normal file
27
animscripts/traverse/window.gsc
Normal file
@ -0,0 +1,27 @@
|
||||
// Window.gsc
|
||||
// Makes the character climb through a window with a 36 unit high lower edge.
|
||||
// TEMP - copied wall dive until we get an animation
|
||||
// Makes the character dive over a low wall
|
||||
|
||||
#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" );// JBW - hitting window
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "diveanim", %windowclimb, %body, 1, .1, 1 );
|
||||
self waittillmatch( "diveanim", "gravity on" );
|
||||
self traverseMode( "gravity" );
|
||||
self animscripts\shared::DoNoteTracks( "diveanim" );
|
||||
}
|
42
animscripts/traverse/window_2.gsc
Normal file
42
animscripts/traverse/window_2.gsc
Normal file
@ -0,0 +1,42 @@
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_wall_and_window_hop( "wallhop", 40 );
|
||||
else
|
||||
self advancedWindowTraverse( %windowclimb, 35 );
|
||||
}
|
||||
|
||||
advancedWindowTraverse( traverseAnim, normalHeight )
|
||||
{
|
||||
// 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" );// So he doesn't get stuck if the wall is a little too high
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
realHeight = startnode.traverse_height - startnode.origin[ 2 ];
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "traverse", traverseAnim, %body, 1, 0.15, 1 );
|
||||
|
||||
// self waittillmatch("traverse", "gravity on");
|
||||
|
||||
// keeps the actor from sinking in to the ground or from levitating to some extent.
|
||||
wait 0.7;
|
||||
self thread teleportThread( realHeight - normalHeight );
|
||||
wait 0.9;
|
||||
// wait 1.6;
|
||||
|
||||
self traverseMode( "gravity" );
|
||||
|
||||
self animscripts\shared::DoNoteTracks( "traverse" );
|
||||
|
||||
}
|
25
animscripts/traverse/window_divethrough_36.gsc
Normal file
25
animscripts/traverse/window_divethrough_36.gsc
Normal file
@ -0,0 +1,25 @@
|
||||
#include animscripts\utility;
|
||||
#include animscripts\traverse\shared;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
{
|
||||
dog_wall_and_window_hop( "window_40", 40 );
|
||||
}
|
||||
else
|
||||
{
|
||||
low_wall_human();
|
||||
}
|
||||
}
|
||||
|
||||
low_wall_human()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %traverse_window_M_2_dive;
|
||||
traverseData[ "traverseStopsAtEnd" ] = true;
|
||||
traverseData[ "traverseHeight" ] = 36.0;
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
134
animscripts/traverse/window_down.gsc
Normal file
134
animscripts/traverse/window_down.gsc
Normal file
@ -0,0 +1,134 @@
|
||||
#include animscripts\traverse\shared;
|
||||
#include maps\_utility;
|
||||
#include common_scripts\utility;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
main()
|
||||
{
|
||||
|
||||
traverseAnim = %windowclimb_fall;
|
||||
landAnim = %windowclimb_land;
|
||||
normalHeight = 35;
|
||||
|
||||
// do not do code prone in this script
|
||||
self.desired_anim_pose = "crouch";
|
||||
animscripts\utility::UpdateAnimPose();
|
||||
|
||||
self endon( "killanimscript" );
|
||||
self traverseMode( "noclip" );// So he doesn't get stuck if the wall is a little too high
|
||||
|
||||
// orient to the Negotiation start node
|
||||
startnode = self getnegotiationstartnode();
|
||||
assert( isdefined( startnode ) );
|
||||
self OrientMode( "face angle", startnode.angles[ 1 ] );
|
||||
realHeight = startnode.traverse_height - startnode.origin[ 2 ];
|
||||
|
||||
self setFlaggedAnimKnoballRestart( "traverse", traverseAnim, %body, 1, 0.15, 1 );
|
||||
thread animscripts\shared::DoNoteTracksForever( "traverse", "stop_traverse_notetracks" );
|
||||
|
||||
|
||||
// keeps the actor from sinking in to the ground or from levitating to some extent.
|
||||
wait 1.5;
|
||||
angles = ( 0, startnode.angles[ 1 ], 0 );
|
||||
forward = anglestoforward( angles );
|
||||
//println(forward);
|
||||
forward = vector_multiply( forward, 85 );
|
||||
trace = bullettrace( startnode.origin + forward, startnode.origin + forward + ( 0, 0, -500 ), false, undefined );
|
||||
// thread showLine(startnode.origin + forward, trace["position"]);
|
||||
endheight = trace[ "position" ][ 2 ];
|
||||
|
||||
finaldif = startnode.origin[ 2 ] - endheight;
|
||||
heightChange = 0;
|
||||
for ( i = 0;i < level._window_down_height.size;i++ )
|
||||
{
|
||||
if ( finaldif < level._window_down_height[ i ] )
|
||||
continue;
|
||||
heightChange = finaldif - level._window_down_height[ i ];
|
||||
}
|
||||
assertEx( heightChange > 0, "window_jump at " + startnode.origin + " is too high off the ground" );
|
||||
// heightChange -= 0;
|
||||
self thread teleportThread( heightChange * - 1 );
|
||||
|
||||
// thread printerdebugger(heightchange, trace["position"]);
|
||||
|
||||
oldheight = self.origin[ 2 ];
|
||||
change = 0;
|
||||
level.traverseFall = [];
|
||||
for ( ;; )
|
||||
{
|
||||
/*
|
||||
/#
|
||||
thread printer(self.origin);
|
||||
#/
|
||||
*/
|
||||
change = oldheight - self.origin[ 2 ];
|
||||
if ( self.origin[ 2 ] - change < endheight )// predict when he's about to hit the ground
|
||||
{
|
||||
break;
|
||||
}
|
||||
oldheight = self.origin[ 2 ];
|
||||
wait( 0.05 );
|
||||
}
|
||||
if ( isdefined( self.groundtype ) )
|
||||
self playsound( "Land_" + self.groundtype );
|
||||
|
||||
self notify( "stop_traverse_notetracks" );
|
||||
self setFlaggedAnimKnoballRestart( "traverse", landAnim, %body, 1, 0.15, 1 );
|
||||
// self waittillmatch("traverse", "gravity on");
|
||||
self traverseMode( "gravity" );
|
||||
self animscripts\shared::DoNoteTracks( "traverse" );
|
||||
// wait 0.9;
|
||||
}
|
||||
|
||||
printer( org )
|
||||
{
|
||||
level notify( "print_this_" + org );
|
||||
level endon( "print_this_" + org );
|
||||
for ( ;; )
|
||||
{
|
||||
print3d( org, ".", ( 1, 1, 1 ), 5 );
|
||||
wait( 0.05 );
|
||||
}
|
||||
}
|
||||
|
||||
showline( start, end )
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
line( start, end + ( -1, -1, -1 ), ( 1, 0, 0 ) );
|
||||
wait( 0.05 );
|
||||
}
|
||||
}
|
||||
|
||||
printerdebugger( msg, org )
|
||||
{
|
||||
level notify( "prrint_this_" + org );
|
||||
level endon( "prrint_this_" + org );
|
||||
for ( ;; )
|
||||
{
|
||||
print3d( org, msg, ( 1, 1, 1 ), 5 );
|
||||
wait( 0.05 );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/#
|
||||
dif = startNode.origin[2] - self.origin[2];
|
||||
included = false;
|
||||
for (i=0;i<level.traverseFall.size;i++)
|
||||
{
|
||||
if (level.traverseFall[i] != dif)
|
||||
continue;
|
||||
included = true;
|
||||
break;
|
||||
}
|
||||
if (!includeD)
|
||||
level.traverseFall[level.traverseFall.size] = dif;
|
||||
if (getdebugdvar("debug_traversefall") != "")
|
||||
{
|
||||
setdvar("debug_traversefall", "");
|
||||
for (i=0;i<level.traverseFall.size;i++)
|
||||
println (" level.window_down_height[", i, "] = ", level.traverseFall[i], ";");
|
||||
}
|
||||
#/
|
||||
*/
|
26
animscripts/traverse/window_over_40.gsc
Normal file
26
animscripts/traverse/window_over_40.gsc
Normal file
@ -0,0 +1,26 @@
|
||||
#include animscripts\traverse\shared;
|
||||
#include animscripts\utility;
|
||||
#include maps\_utility;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_wall_and_window_hop( "window_40", 40 );
|
||||
else
|
||||
jump_through_window_human();
|
||||
}
|
||||
|
||||
jump_through_window_human()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %traverse_window_M_2_run;
|
||||
traverseData[ "traverseToCoverAnim" ] = %traverse_window_M_2_stop;
|
||||
traverseData[ "coverType" ] = "Cover Crouch";
|
||||
traverseData[ "traverseHeight" ] = 36.0;
|
||||
traverseData[ "interruptDeathAnim" ][ 0 ] = array( %traverse_window_death_start );
|
||||
traverseData[ "interruptDeathAnim" ][ 1 ] = array( %traverse_window_death_end );
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
25
animscripts/traverse/window_over_quick.gsc
Normal file
25
animscripts/traverse/window_over_quick.gsc
Normal file
@ -0,0 +1,25 @@
|
||||
#include animscripts\traverse\shared;
|
||||
#include animscripts\utility;
|
||||
#include maps\_utility;
|
||||
#using_animtree( "generic_human" );
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
if ( self.type == "dog" )
|
||||
dog_wall_and_window_hop( "window_40", 40 );
|
||||
else
|
||||
jump_through_window_human();
|
||||
}
|
||||
|
||||
jump_through_window_human()
|
||||
{
|
||||
traverseData = [];
|
||||
traverseData[ "traverseAnim" ] = %traverse_window_quick;
|
||||
traverseData[ "coverType" ] = "Cover Crouch";
|
||||
traverseData[ "traverseHeight" ] = 36.0;
|
||||
traverseData[ "interruptDeathAnim" ][ 0 ] = array( %traverse_window_death_start );
|
||||
traverseData[ "interruptDeathAnim" ][ 1 ] = array( %traverse_window_death_end );
|
||||
|
||||
DoTraverse( traverseData );
|
||||
}
|
Reference in New Issue
Block a user