584 lines
18 KiB
Plaintext
584 lines
18 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
self endon( "killanimscript" );
|
|
self.blockgoalpos = 1;
|
|
var_0 = self getnegotiationstartnode();
|
|
var_1 = self getnegotiationendnode();
|
|
|
|
if ( var_0.type == "Jump" || var_0.type == "Jump Attack" )
|
|
{
|
|
var_2 = self getnegotiationnextnode();
|
|
|
|
if ( isdefined( var_0.target ) && isdefined( var_1.targetname ) && var_0.target == var_1.targetname )
|
|
{
|
|
self.traversetype = "canned";
|
|
dotraverse( var_0, var_1 );
|
|
return;
|
|
}
|
|
|
|
var_3 = find_attackable_enemy_at_node( var_1 );
|
|
|
|
if ( isdefined( var_3 ) )
|
|
{
|
|
self.traversetype = "jump_attack";
|
|
self.leapendpos = var_1.origin;
|
|
maps\mp\agents\alien\_alien_melee::melee_leap( var_3 );
|
|
return;
|
|
}
|
|
|
|
self.traversetype = "jump";
|
|
jump( var_0, var_1, var_2 );
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
self.traversetype = "canned";
|
|
dotraverse( var_0, var_1 );
|
|
}
|
|
}
|
|
|
|
find_attackable_enemy_at_node( var_0 )
|
|
{
|
|
if ( maps\mp\alien\_utility::get_alien_type() == "spitter" || maps\mp\alien\_utility::get_alien_type() == "seeder" )
|
|
return undefined;
|
|
|
|
var_1 = 16384;
|
|
var_2 = 0.707;
|
|
|
|
foreach ( var_4 in level.players )
|
|
{
|
|
if ( distancesquared( var_4.origin, var_0.origin ) > var_1 )
|
|
continue;
|
|
|
|
var_5 = vectornormalize( var_0.origin - var_4.origin );
|
|
var_6 = anglestoforward( var_4.angles );
|
|
var_7 = vectordot( var_5, var_6 );
|
|
|
|
if ( var_7 > var_2 )
|
|
return var_4;
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
end_script()
|
|
{
|
|
self.blockgoalpos = 0;
|
|
|
|
if ( self.traversetype == "jump" )
|
|
self.previousanimstate = "traverse_jump";
|
|
else if ( self.traversetype == "jump_attack" )
|
|
self.previousanimstate = "traverse_jump_attack";
|
|
else
|
|
self.previousanimstate = "traverse_canned";
|
|
|
|
self.traversetype = undefined;
|
|
}
|
|
|
|
jump( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = undefined;
|
|
|
|
if ( isdefined( var_2 ) )
|
|
var_3 = var_2.origin;
|
|
|
|
if ( isdefined( level.dlc_alien_jump_override ) )
|
|
{
|
|
[[ level.dlc_alien_jump_override ]]( var_0, var_1, var_2, var_3 );
|
|
return;
|
|
}
|
|
|
|
maps\mp\agents\alien\_alien_jump::jump( var_0.origin, var_0.angles, var_1.origin, var_1.angles, var_3, undefined, var_1.script_noteworthy );
|
|
}
|
|
|
|
dotraverse( var_0, var_1 )
|
|
{
|
|
var_2 = level.alienanimdata.cannedtraverseanims[var_0.animscript];
|
|
var_3 = var_2["animState"];
|
|
self.startnode = var_0;
|
|
self.endnode = var_1;
|
|
self scragentsetphysicsmode( "noclip" );
|
|
self scragentsetorientmode( "face angle abs", var_0.angles );
|
|
self scragentsetanimmode( "anim deltas" );
|
|
self scragentsetanimscale( 1.0, 1.0 );
|
|
|
|
if ( isdefined( var_2["traverseSound"] ) )
|
|
thread maps\mp\_utility::play_sound_on_tag( var_2["traverseSound"] );
|
|
|
|
if ( isdefined( var_2["traverseAnimScale"] ) )
|
|
self scragentsetanimscale( var_2["traverseAnimScale"], var_2["traverseAnimScale"] );
|
|
|
|
switch ( var_3 )
|
|
{
|
|
case "traverse_climb_up":
|
|
alienclimbup( var_0, var_1, "traverse_climb_up", self getanimentry( "traverse_climb_up", 4 ) );
|
|
break;
|
|
case "traverse_climb_up_over_56":
|
|
alienclimbup( var_0, var_1, "traverse_climb_up_over_56" );
|
|
break;
|
|
case "traverse_climb_up_ledge_18_run":
|
|
alienclimbup( var_0, var_1, "traverse_climb_up_ledge_18_run" );
|
|
break;
|
|
case "traverse_climb_up_ledge_18_idle":
|
|
alienclimbup( var_0, var_1, "traverse_climb_up_ledge_18_idle" );
|
|
break;
|
|
case "climb_up_end_jump_side_l":
|
|
alienclimbup( var_0, var_1, "climb_up_end_jump_side_l" );
|
|
break;
|
|
case "climb_up_end_jump_side_r":
|
|
alienclimbup( var_0, var_1, "climb_up_end_jump_side_r" );
|
|
break;
|
|
case "traverse_climb_down":
|
|
alienclimbdown( var_0, var_1, "traverse_climb_down" );
|
|
break;
|
|
case "traverse_climb_over_56_down":
|
|
alienclimbdown( var_0, var_1, "traverse_climb_over_56_down" );
|
|
break;
|
|
case "run":
|
|
alienwallrun( var_0, var_1, "run" );
|
|
break;
|
|
default:
|
|
alienregulartraversal( var_0, var_3, var_2["animIndexArray"], var_2["endInOriented"], var_2["flexHeightEndAtTraverseEnd"] );
|
|
break;
|
|
}
|
|
|
|
self.startnode = undefined;
|
|
self.endnode = undefined;
|
|
self scragentsetanimscale( 1, 1 );
|
|
}
|
|
|
|
alienregulartraversal( var_0, var_1, var_2, var_3, var_4 )
|
|
{
|
|
var_5 = var_2[randomint( var_2.size )];
|
|
var_6 = self getanimentry( var_1, var_5 );
|
|
var_7 = needflexibleheightsupport( var_6 );
|
|
var_8 = getanimlength( var_6 );
|
|
traverseanimlerp( var_6, var_0 );
|
|
|
|
if ( animhasnotetrack( var_6, "highest_point" ) )
|
|
self.apextraversaldeathvector = vectornormalize( self.startnode.origin - self.endnode.origin );
|
|
|
|
var_9 = getent( var_0.target, "targetname" );
|
|
|
|
if ( isdefined( var_9 ) )
|
|
var_9 thread runscriptabletraverse( var_8 );
|
|
|
|
if ( var_7.need_support )
|
|
dotraversalwithflexibleheight( var_1, var_5, var_6, var_7.start_notetrack, var_7.end_notetrack, var_4, ::alientraversenotetrackhandler );
|
|
else
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( var_1, var_5, "canned_traverse", "end", ::alientraversenotetrackhandler );
|
|
|
|
endregulartraversal( var_3 );
|
|
}
|
|
|
|
runscriptabletraverse( var_0 )
|
|
{
|
|
self notify( "stop_previous_traversal" );
|
|
self endon( "stop_previous_traversal" );
|
|
self setscriptablepartstate( 0, 1 );
|
|
wait( var_0 );
|
|
self setscriptablepartstate( 0, 0 );
|
|
}
|
|
|
|
endregulartraversal( var_0 )
|
|
{
|
|
if ( var_0 )
|
|
{
|
|
self scragentsetphysicsmode( "noclip" );
|
|
self.oriented = 1;
|
|
self.ignoreme = 1;
|
|
}
|
|
else
|
|
{
|
|
self scragentsetphysicsmode( "gravity" );
|
|
self.oriented = 0;
|
|
self.ignoreme = 0;
|
|
}
|
|
}
|
|
|
|
needflexibleheightsupport( var_0 )
|
|
{
|
|
var_1 = spawnstruct();
|
|
|
|
if ( animhasnotetrack( var_0, "traverse_up" ) )
|
|
{
|
|
var_1.need_support = 1;
|
|
var_1.start_notetrack = "traverse_up";
|
|
var_1.end_notetrack = "traverse_up_end";
|
|
return var_1;
|
|
}
|
|
|
|
if ( animhasnotetrack( var_0, "traverse_drop" ) )
|
|
{
|
|
var_1.need_support = 1;
|
|
var_1.start_notetrack = "traverse_drop";
|
|
var_1.end_notetrack = "traverse_drop_end";
|
|
return var_1;
|
|
}
|
|
|
|
var_1.need_support = 0;
|
|
return var_1;
|
|
}
|
|
|
|
dotraversalwithflexibleheight( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
|
|
{
|
|
var_7 = "canned_traverse";
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( var_0, var_1, var_7, var_3, var_6 );
|
|
|
|
if ( var_5 )
|
|
{
|
|
var_8 = self.endnode.origin;
|
|
var_9 = 1;
|
|
}
|
|
else
|
|
{
|
|
var_8 = common_scripts\utility::getstruct( self.endnode.target, "targetname" );
|
|
var_8 = var_8.origin;
|
|
var_10 = getnotetracktimes( var_2, "highest_point" );
|
|
var_9 = var_10[0];
|
|
}
|
|
|
|
dotraversalwithflexibleheight_internal( var_0, var_1, var_7, var_2, var_3, var_4, var_8, var_9, var_6 );
|
|
}
|
|
|
|
dotraversalwithflexibleheight_internal( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8 )
|
|
{
|
|
var_9 = abs( self.origin[2] - var_6[2] );
|
|
var_10 = getnotetracktimes( var_3, var_4 );
|
|
var_11 = var_10[0];
|
|
var_12 = getnotetracktimes( var_3, var_5 );
|
|
var_13 = var_12[0];
|
|
var_14 = getmovedelta( var_3, var_11, var_7 );
|
|
var_15 = abs( var_14[2] );
|
|
var_16 = getmovedelta( var_3, var_11, var_13 );
|
|
var_17 = abs( var_16[2] );
|
|
var_18 = var_15 - var_17;
|
|
|
|
if ( var_9 <= var_18 )
|
|
var_19 = 1;
|
|
else
|
|
var_19 = ( var_9 - var_18 ) / var_17;
|
|
|
|
var_20 = 1 / var_19;
|
|
self scragentsetanimscale( 1.0, var_19 );
|
|
maps\mp\agents\_scriptedagents::playanimnatrateuntilnotetrack( var_0, var_1, var_20, var_2, var_5, var_8 );
|
|
self scragentsetanimscale( 1.0, 1.0 );
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( var_0, var_1, var_2, "end", var_8 );
|
|
self.apextraversaldeathvector = undefined;
|
|
}
|
|
|
|
alientraversenotetrackhandler( var_0, var_1, var_2, var_3 )
|
|
{
|
|
switch ( var_0 )
|
|
{
|
|
case "apply_physics":
|
|
self scragentsetphysicsmode( "gravity" );
|
|
break;
|
|
case "highest_point":
|
|
if ( isdefined( self.apextraversaldeathvector ) )
|
|
self.apextraversaldeathvector = self.apextraversaldeathvector * -1;
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
alienclimbup( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = self getanimentry( var_2, 0 );
|
|
var_5 = self getanimentry( var_2, 1 );
|
|
var_6 = self getanimentry( var_2, 2 );
|
|
var_7 = self getanimentry( var_2, 3 );
|
|
var_8 = var_1.origin[2] - var_0.origin[2];
|
|
var_9 = getmovedelta( var_4, 0, 1 )[2];
|
|
var_10 = getmovedelta( var_5, 0, 1 )[2];
|
|
var_11 = getmovedelta( var_6, 0, 1 )[2];
|
|
var_12 = getmovedelta( var_7, 0, 1 )[2];
|
|
var_13 = undefined;
|
|
var_14 = getnotetracktimes( var_4, "climb_up_teleport" )[0];
|
|
var_15 = getmovedelta( var_4, 0, var_14 );
|
|
var_16 = getmovedelta( var_4, var_14, 1 );
|
|
var_17 = var_16[2];
|
|
|
|
if ( var_8 < var_9 + var_12 )
|
|
{
|
|
|
|
}
|
|
|
|
var_18 = var_8 - ( var_9 + var_12 );
|
|
var_19 = 0;
|
|
var_20 = 0;
|
|
|
|
if ( var_18 > 0 )
|
|
{
|
|
var_19 = var_18 - var_10 > 0;
|
|
var_20 = max( 0, floor( ( var_18 - var_19 * var_10 ) / var_11 ) );
|
|
}
|
|
|
|
var_21 = var_19 * var_10 + var_20 * var_11 + var_17;
|
|
var_22 = var_8 - var_12 - ( var_9 - var_17 );
|
|
var_23 = var_22 / var_21;
|
|
var_24 = 0;
|
|
|
|
if ( isdefined( var_3 ) )
|
|
{
|
|
var_13 = getmovedelta( var_3, 0, 1 )[2];
|
|
var_25 = var_13 - var_12;
|
|
var_24 = var_22 - var_21 > var_25;
|
|
var_23 = ( var_22 - var_24 * var_25 ) / var_21;
|
|
}
|
|
|
|
var_26 = var_7;
|
|
|
|
if ( var_24 )
|
|
var_26 = var_3;
|
|
|
|
var_27 = getnotetracktimes( var_26, "stop_teleport" )[0];
|
|
var_28 = getmovedelta( var_26, 0, var_27 )[2];
|
|
var_29 = getmovedelta( var_26, var_27, 1 );
|
|
var_30 = length( var_29 * ( 1, 1, 0 ) );
|
|
self scragentsetanimscale( 1, 1 );
|
|
traverseclimbuplerp( var_4, var_0 );
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( var_2, 0, "canned_traverse", "climb_up_teleport" );
|
|
self scragentsetanimscale( 1, var_23 );
|
|
maps\mp\agents\_scriptedagents::waituntilnotetrack( "canned_traverse", "end" );
|
|
self scragentsetanimscale( 1, var_23 );
|
|
|
|
if ( var_19 )
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( var_2, 1, "canned_traverse", "finish" );
|
|
|
|
for ( var_31 = 0; var_31 < var_20; var_31++ )
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( var_2, 2, "canned_traverse", "end" );
|
|
|
|
var_32 = var_1.origin[2] - self.origin[2] - var_29[2];
|
|
var_23 = 1.0;
|
|
|
|
if ( var_32 > var_28 )
|
|
var_23 = var_32 / var_28;
|
|
|
|
self scragentsetanimscale( 1, var_23 );
|
|
|
|
if ( var_24 )
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( var_2, 4, "canned_traverse", "stop_teleport", ::alientraversenotetrackhandler );
|
|
else
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( var_2, 3, "canned_traverse", "stop_teleport", ::alientraversenotetrackhandler );
|
|
|
|
var_33 = distance2d( self.origin, var_1.origin );
|
|
var_34 = var_33 / var_30;
|
|
self scragentsetanimscale( var_34, 1 );
|
|
maps\mp\agents\_scriptedagents::waituntilnotetrack( "canned_traverse", "end" );
|
|
}
|
|
|
|
alienclimbdown( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = self getanimentry( var_2, 0 );
|
|
var_4 = self getanimentry( var_2, 1 );
|
|
var_5 = self getanimentry( var_2, 2 );
|
|
var_6 = self getanimentry( var_2, 3 );
|
|
var_7 = self getanimentry( var_2, 4 );
|
|
var_8 = var_0.origin[2] - var_1.origin[2];
|
|
var_9 = -1 * getmovedelta( var_3, 0, 1 )[2];
|
|
var_10 = -1 * getmovedelta( var_5, 0, 1 )[2];
|
|
var_11 = -1 * getmovedelta( var_4, 0, 1 )[2];
|
|
var_12 = -1 * getmovedelta( var_6, 0, 1 )[2];
|
|
var_13 = -1 * getmovedelta( var_7, 0, 1 )[2];
|
|
|
|
if ( var_8 < var_9 + var_12 )
|
|
{
|
|
|
|
}
|
|
|
|
var_14 = var_6;
|
|
var_15 = var_12;
|
|
var_16 = 0;
|
|
|
|
if ( candojumpforend( var_0, var_1, var_3, var_7 ) )
|
|
{
|
|
var_14 = var_7;
|
|
var_15 = var_13;
|
|
var_16 = 1;
|
|
}
|
|
|
|
var_17 = var_8 - ( var_9 + var_15 );
|
|
var_18 = 0;
|
|
var_19 = 0;
|
|
|
|
if ( var_17 > 0 )
|
|
{
|
|
var_18 = var_17 - var_10 > 0;
|
|
var_19 = max( 0, floor( ( var_17 - var_18 * var_10 ) / var_11 ) );
|
|
}
|
|
|
|
self scragentsetanimscale( 1, 1 );
|
|
traverseclimbdownlerp( var_3, var_0 );
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( var_2, 0, "canned_traverse", "end" );
|
|
var_20 = var_18 * var_10 + var_19 * var_11;
|
|
|
|
if ( var_20 > 0 )
|
|
{
|
|
var_21 = abs( var_17 / var_20 );
|
|
self scragentsetanimscale( 1, var_21 );
|
|
}
|
|
|
|
for ( var_22 = 0; var_22 < var_19; var_22++ )
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( "traverse_climb_down_loop", 0, "traverse_climb_down_loop", "end" );
|
|
|
|
if ( var_18 )
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( "traverse_climb_down_slide", 0, "traverse_climb_down_slide", "end" );
|
|
|
|
var_23 = getnotetracktimes( var_14, "climb_down_teleport" )[0];
|
|
var_24 = getnotetracktimes( var_14, "stop_teleport" )[0];
|
|
var_25 = -1 * getmovedelta( var_14, var_23, var_24 )[2];
|
|
var_26 = abs( self.origin[2] - var_1.origin[2] - abs( getmovedelta( var_14, var_24, 1 )[2] ) );
|
|
var_21 = var_26 / var_25;
|
|
self scragentsetanimscale( 1, var_21 );
|
|
|
|
if ( var_16 )
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( var_2, 4, "canned_traverse", "stop_teleport" );
|
|
else
|
|
maps\mp\agents\_scriptedagents::playanimnuntilnotetrack( var_2, 3, "canned_traverse", "stop_teleport" );
|
|
|
|
self scragentsetanimscale( 1, 1 );
|
|
self scragentsetphysicsmode( "gravity" );
|
|
maps\mp\agents\_scriptedagents::waituntilnotetrack( "canned_traverse", "end" );
|
|
}
|
|
|
|
traverseanimlerp( var_0, var_1 )
|
|
{
|
|
var_2 = maps\mp\agents\alien\_alien_anim_utils::getlerptime( var_0 );
|
|
var_3 = maps\mp\agents\alien\_alien_anim_utils::getposinspaceatanimtime( var_0, var_1.origin, var_1.angles, var_2 );
|
|
thread maps\mp\agents\alien\_alien_anim_utils::dolerp( var_3, var_2 );
|
|
}
|
|
|
|
traverseclimbdownlerp( var_0, var_1 )
|
|
{
|
|
var_2 = -30;
|
|
var_3 = 60;
|
|
dotraverseclimblerp( var_0, var_1, var_2, var_3, 1 );
|
|
}
|
|
|
|
traverseclimbuplerp( var_0, var_1 )
|
|
{
|
|
var_2 = 0;
|
|
var_3 = 50;
|
|
dotraverseclimblerp( var_0, var_1, var_2, var_3, 0 );
|
|
}
|
|
|
|
dotraverseclimblerp( var_0, var_1, var_2, var_3, var_4 )
|
|
{
|
|
var_5 = maps\mp\agents\alien\_alien_anim_utils::getlerptime( var_0 );
|
|
var_6 = maps\mp\agents\alien\_alien_anim_utils::getposinspaceatanimtime( var_0, var_1.origin, var_1.angles, var_5 );
|
|
|
|
if ( var_4 )
|
|
var_7 = ( var_6 - var_1.origin ) * ( 1, 1, 0 );
|
|
else
|
|
var_7 = ( var_1.origin - var_6 ) * ( 1, 1, 0 );
|
|
|
|
var_8 = vectornormalize( var_7 );
|
|
var_8 = var_8 * var_3;
|
|
var_9 = maps\mp\agents\alien\_alien_anim_utils::getposinspaceatanimtime( var_0, var_1.origin, var_1.angles, getanimlength( var_0 ) );
|
|
var_10 = aligntoverticaledge( var_9, var_2, var_8 );
|
|
var_11 = var_10 - var_9;
|
|
var_6 = var_6 + var_11;
|
|
thread maps\mp\agents\alien\_alien_anim_utils::dolerp( var_6, var_5 );
|
|
}
|
|
|
|
aligntoverticaledge( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = 3.0;
|
|
var_0 = var_0 + var_2;
|
|
var_0 = var_0 + ( 0, 0, var_1 );
|
|
var_4 = var_0 - var_2 * var_3;
|
|
var_5 = bullettrace( var_0, var_4, 0 );
|
|
var_0 = var_5["position"];
|
|
var_0 = var_0 + ( 0, 0, -1 * var_1 );
|
|
return var_0;
|
|
}
|
|
|
|
candojumpforend( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = 10;
|
|
var_5 = ( 0, 0, 10 );
|
|
var_6 = 5;
|
|
var_7 = self.height;
|
|
var_8 = getmovedelta( var_2, 0, 1 );
|
|
var_9 = length2d( var_8 );
|
|
var_10 = var_8[2] * -1;
|
|
var_11 = getmovedelta( var_3, 0, 1 );
|
|
var_12 = length2d( var_11 );
|
|
var_13 = var_11[2] * -1;
|
|
var_14 = vectornormalize( ( var_1.origin - var_0.origin ) * ( 1, 1, 0 ) );
|
|
var_15 = var_0.origin + var_14 * var_9 - ( 0, 0, var_10 );
|
|
var_16 = physicstrace( var_15, var_15 + ( 0, 0, -2000 ) );
|
|
var_17 = var_15 - var_16[2];
|
|
|
|
if ( var_17 < var_13 )
|
|
return 0;
|
|
|
|
var_18 = var_16 + ( 0, 0, var_13 );
|
|
var_19 = var_16 + var_14 * var_12;
|
|
var_20 = var_18 + var_14 * var_4;
|
|
var_21 = var_19 + var_5;
|
|
return self aiphysicstracepassed( var_20, var_21, var_6, var_7, 0 );
|
|
}
|
|
|
|
alienwallrun( var_0, var_1, var_2 )
|
|
{
|
|
self.oriented = 1;
|
|
var_3 = var_1.origin - var_0.origin;
|
|
var_4 = anglestoup( var_1.angles );
|
|
var_5 = vectornormalize( var_3 );
|
|
var_6 = vectorcross( var_4, var_5 );
|
|
var_5 = vectorcross( var_6, var_4 );
|
|
var_7 = ( 0, 0, 0 ) - var_6;
|
|
var_8 = axistoangles( var_5, var_7, var_4 );
|
|
self scragentsetorientmode( "face angle abs", var_8 );
|
|
var_9 = self getanimentry( var_2, 0 );
|
|
var_10 = getanimlength( var_9 );
|
|
var_11 = getmovedelta( var_9 );
|
|
var_12 = length( var_11 );
|
|
var_13 = length( var_1.origin - self.origin );
|
|
var_14 = var_10 * ( var_13 / var_12 );
|
|
self scragentdoanimlerp( self.origin, var_1.origin, var_14 );
|
|
self setanimstate( var_2, 0 );
|
|
wait( var_14 );
|
|
alienwallrun_waitforangles( var_8 );
|
|
}
|
|
|
|
alienwallrun_anglesalmostequal( var_0, var_1, var_2 )
|
|
{
|
|
if ( abs( angleclamp180( var_1[0] - var_0[0] ) > var_2 ) )
|
|
return 0;
|
|
|
|
if ( abs( angleclamp180( var_1[1] - var_0[1] ) > var_2 ) )
|
|
return 0;
|
|
|
|
if ( abs( angleclamp180( var_1[2] - var_0[2] ) > var_2 ) )
|
|
return 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
alienwallrun_waitforangles( var_0 )
|
|
{
|
|
var_1 = 360;
|
|
|
|
for ( var_2 = 0.5; var_2 > 0; var_2 = var_2 - 0.05 )
|
|
{
|
|
if ( alienwallrun_anglesalmostequal( self.angles, var_0, 1 ) )
|
|
break;
|
|
|
|
var_3 = anglesdelta( var_0, self.angles );
|
|
|
|
if ( var_3 < 5 || var_3 >= var_1 )
|
|
break;
|
|
|
|
var_1 = var_3;
|
|
wait 0.05;
|
|
}
|
|
}
|