iw6-scripts/animscripts/animmode.gsc
2024-02-13 13:20:49 +01:00

118 lines
3.1 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
self endon( "death" );
self endon( "stop_animmode" );
self notify( "killanimscript" );
self._tag_entity endon( self._anime );
if ( isdefined( self._custom_anim_thread ) )
{
self thread [[ self._custom_anim_thread ]]();
self._custom_anim_thread = undefined;
}
var_0 = isdefined( self._custom_anim_loop ) && self._custom_anim_loop;
if ( var_0 )
{
self endon( "stop_loop" );
self._custom_anim_loop = undefined;
}
else
thread notify_on_end( self._anime );
var_1 = self._anime;
self._anime = undefined;
var_2 = 0;
if ( var_0 )
{
var_2 = level.scr_anim[self._animname][var_1].size;
var_3 = level.scr_anim[self._animname][var_1][randomint( var_2 )];
}
else
var_3 = level.scr_anim[self._animname][var_1];
var_4 = getstartorigin( self._tag_entity.origin, self._tag_entity.angles, var_3 );
var_5 = getstartangles( self._tag_entity.origin, self._tag_entity.angles, var_3 );
var_6 = self getdroptofloorposition( var_4 );
if ( isdefined( var_6 ) )
var_4 = var_6;
else
{
}
if ( !isdefined( self.noteleport ) )
self teleport( var_4, var_5 );
self.pushable = 0;
var_7 = 0.3;
var_8 = 0.2;
if ( isdefined( self.anim_blend_time_override ) )
{
var_7 = self.anim_blend_time_override;
var_8 = self.anim_blend_time_override;
}
self animmode( self._animmode );
self clearanim( self.root_anim, var_7 );
self orientmode( "face angle", var_5[1] );
var_9 = "custom_animmode";
self setflaggedanimrestart( var_9, var_3, 1, var_8, 1 );
self._tag_entity thread maps\_anim::start_notetrack_wait( self, var_9, var_1, self._animname );
self._tag_entity thread maps\_anim::animscriptdonotetracksthread( self, var_9, var_1 );
var_10 = self._tag_entity;
self._tag_entity = undefined;
self._animmode = undefined;
self endon( "killanimscript" );
var_11 = "end";
if ( !var_0 )
{
if ( animhasnotetrack( var_3, "finish" ) )
var_11 = "finish";
else if ( animhasnotetrack( var_3, "stop anim" ) )
var_11 = "stop anim";
}
for (;;)
{
self waittillmatch( var_9, var_11 );
if ( var_0 )
{
var_3 = level.scr_anim[self._animname][var_1][randomint( var_2 )];
self setflaggedanimknoblimitedrestart( var_9, var_3, 1, 0.2, 1 );
if ( isdefined( var_10 ) )
{
var_10 thread maps\_anim::start_notetrack_wait( self, var_9, var_1, self._animname );
var_10 thread maps\_anim::animscriptdonotetracksthread( self, var_9, var_1 );
}
continue;
}
break;
}
if ( var_11 != "end" )
self orientmode( "face motion" );
self notify( "finished_custom_animmode" + var_1 );
}
notify_on_end( var_0 )
{
self endon( "death" );
self endon( "finished_custom_animmode" + var_0 );
self waittill( "killanimscript" );
self notify( "finished_custom_animmode" + var_0 );
}