#include maps\mp\animscripts\zm_shared; #include maps\mp\animscripts\utility; #include maps\mp\_utility; #include common_scripts\utility; #include maps\mp\animscripts\zm_run; 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 && is_true( self.no_powerups ) ) { self.no_powerups = old_powerups; } }