228 lines
5.6 KiB
Plaintext

#include maps/mp/animscripts/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++;
}
}
dog_wall_and_window_hop( traversename, height )
{
self endon( "killanimscript" );
self traversemode( "nogravity" );
self traversemode( "noclip" );
startnode = self getnegotiationstartnode();
/#
assert( isDefined( startnode ) );
#/
self orientmode( "face angle", startnode.angles[ 1 ] );
if ( isDefined( startnode.traverse_height ) )
{
realheight = startnode.traverse_height - startnode.origin[ 2 ];
self thread teleportthread( realheight - height );
}
else
{
if ( height != 36 )
{
self thread teleportthreadex( height - 36, 0,2, 7 );
}
}
debug_anim_print( "traverse::dog_wall_and_window_hop() - Setting " + traversename );
self setanimstate( traversename );
maps/mp/animscripts/shared::donotetracksfortime( 1, "done" );
debug_anim_print( "traverse::dog_wall_and_window_hop() - " + traversename );
self.traversecomplete = 1;
}
dog_jump_down( height, frames, time )
{
self endon( "killanimscript" );
self traversemode( "noclip" );
if ( !isDefined( time ) )
{
time = 0,3;
}
startnode = self getnegotiationstartnode();
/#
assert( isDefined( startnode ) );
#/
self orientmode( "face angle", startnode.angles[ 1 ] );
if ( isDefined( startnode.traverse_height ) )
{
realheight = startnode.traverse_height - startnode.origin[ 2 ];
self thread teleportthread( realheight - height );
}
else
{
if ( height != 40 )
{
self thread teleportthreadex( height - 40, 0,1, frames );
}
}
debug_anim_print( "traverse::dog_jump_down() - Setting traverse_jump_down_40" );
self setanimstate( "traverse_jump_down_40" );
maps/mp/animscripts/shared::donotetracksfortime( time, "done" );
debug_anim_print( "traverse::dog_jump_down() - traverse_jump_down_40 " );
self traversemode( "gravity" );
self.traversecomplete = 1;
}
dog_jump_down_far( height, frames, time )
{
self endon( "killanimscript" );
self traversemode( "noclip" );
if ( !isDefined( time ) )
{
time = 0,3;
}
startnode = self getnegotiationstartnode();
/#
assert( isDefined( startnode ) );
#/
self orientmode( "face angle", startnode.angles[ 1 ] );
if ( isDefined( startnode.traverse_height ) )
{
realheight = startnode.traverse_height - startnode.origin[ 2 ];
self thread teleportthread( realheight - height );
}
else
{
if ( height != 80 )
{
self thread teleportthreadex( 80 - height, 0,1, frames );
}
}
debug_anim_print( "traverse::dog_jump_down() - Setting traverse_jump_down_80" );
self setanimstate( "traverse_jump_down_80" );
maps/mp/animscripts/shared::donotetracksfortime( time, "done" );
debug_anim_print( "traverse::dog_jump_down() - traverse_jump_down_80 " );
self traversemode( "gravity" );
self.traversecomplete = 1;
}
dog_jump_up( height, frames )
{
self endon( "killanimscript" );
self traversemode( "noclip" );
startnode = self getnegotiationstartnode();
/#
assert( isDefined( startnode ) );
#/
self orientmode( "face angle", startnode.angles[ 1 ] );
if ( isDefined( startnode.traverse_height ) )
{
realheight = startnode.traverse_height - startnode.origin[ 2 ];
self thread teleportthread( realheight - height );
}
else
{
if ( height != 40 )
{
self thread teleportthreadex( height - 40, 0,2, frames );
}
}
debug_anim_print( "traverse::dog_jump_up() - Setting traverse_jump_up_40" );
self setanimstate( "traverse_jump_up_40" );
maps/mp/animscripts/shared::donotetracksfortime( 0,5, "done" );
debug_anim_print( "traverse::dog_jump_up() - traverse_jump_up_40 " );
self traversemode( "gravity" );
self.traversecomplete = 1;
}
dog_jump_up_high( height, frames )
{
/#
assert( self.type == "dog", "Only dogs can do this traverse currently." );
#/
self endon( "killanimscript" );
self traversemode( "nogravity" );
self traversemode( "noclip" );
startnode = self getnegotiationstartnode();
/#
assert( isDefined( startnode ) );
#/
self orientmode( "face angle", startnode.angles[ 1 ] );
if ( isDefined( startnode.traverse_height ) )
{
realheight = startnode.traverse_height - startnode.origin[ 2 ];
self thread teleportthreadex( height - 80, 0,2, frames );
}
else
{
if ( height != 80 )
{
self thread teleportthreadex( height - 80, 0,2, frames );
}
}
debug_anim_print( "traverse::dog_jump_up_80() - Setting traverse_jump_up_80" );
self setanimstate( "traverse_jump_up_80" );
maps/mp/animscripts/shared::donotetracksfortime( 0,6, "done" );
debug_anim_print( "traverse::dog_jump_up_80() - traverse_jump_up_80 " );
self traversemode( "gravity" );
self.traversecomplete = 1;
}