Files
Recompilable-gscs-for-BO2-z…/patch_zm/maps/mp/animscripts/traverse/zm_shared.gsc

152 lines
3.3 KiB
Plaintext

#include maps/mp/animscripts/zm_run;
#include maps/mp/animscripts/zm_shared;
#include common_scripts/utility;
#include maps/mp/_utility;
#include maps/mp/animscripts/utility;
init_traverse()
{
point = getent( self.target, "targetname" );
if ( isDefined( point ) )
{
self.traverse_height = point.origin[ 2 ];
point delete();
}
else
{
point = getstruct( self.target, "targetname" );
if ( isDefined( point ) )
{
self.traverse_height = point.origin[ 2 ];
}
}
}
teleportthread( verticaloffset )
{
self endon( "killanimscript" );
self notify( "endTeleportThread" );
self endon( "endTeleportThread" );
reps = 5;
offset = ( 0, 0, verticaloffset / reps );
i = 0;
while ( i < reps )
{
self teleport( self.origin + offset );
wait 0,05;
i++;
}
}
teleportthreadex( verticaloffset, delay, frames )
{
self endon( "killanimscript" );
self notify( "endTeleportThread" );
self endon( "endTeleportThread" );
if ( verticaloffset == 0 )
{
return;
}
wait delay;
amount = verticaloffset / frames;
if ( amount > 10 )
{
amount = 10;
}
else
{
if ( amount < -10 )
{
amount = -10;
}
}
offset = ( 0, 0, amount );
i = 0;
while ( i < frames )
{
self teleport( self.origin + offset );
wait 0,05;
i++;
}
}
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 );
}
}
dosimpletraverse( traversealias, no_powerups, traversestate )
{
if ( !isDefined( traversestate ) )
{
traversestate = "zm_traverse";
}
if ( isDefined( level.ignore_traverse ) )
{
if ( self [[ level.ignore_traverse ]]() )
{
return;
}
}
if ( isDefined( level.zm_traversal_override ) )
{
traversealias = self [[ level.zm_traversal_override ]]( traversealias );
}
if ( !self.has_legs )
{
traversestate += "_crawl";
traversealias += "_crawl";
}
self dotraverse( traversestate, traversealias, no_powerups );
}
dotraverse( traversestate, traversealias, no_powerups )
{
self endon( "killanimscript" );
self traversemode( "nogravity" );
self traversemode( "noclip" );
old_powerups = 0;
if ( isDefined( no_powerups ) && no_powerups )
{
old_powerups = self.no_powerups;
self.no_powerups = 1;
}
self.is_traversing = 1;
self notify( "zombie_start_traverse" );
self.traversestartnode = self getnegotiationstartnode();
/#
assert( isDefined( self.traversestartnode ) );
#/
self orientmode( "face angle", self.traversestartnode.angles[ 1 ] );
self.traversestartz = self.origin[ 2 ];
if ( isDefined( self.pre_traverse ) )
{
self [[ self.pre_traverse ]]();
}
self setanimstatefromasd( traversestate, traversealias );
self maps/mp/animscripts/zm_shared::donotetracks( "traverse_anim" );
self traversemode( "gravity" );
self.a.nodeath = 0;
if ( isDefined( self.post_traverse ) )
{
self [[ self.post_traverse ]]();
}
self maps/mp/animscripts/zm_run::needsupdate();
if ( !self.isdog )
{
self maps/mp/animscripts/zm_run::moverun();
}
self.is_traversing = 0;
self notify( "zombie_end_traverse" );
if ( isDefined( no_powerups ) && no_powerups )
{
self.no_powerups = old_powerups;
}
}