94 lines
2.1 KiB
Plaintext
94 lines
2.1 KiB
Plaintext
|
#include animscripts\Utility;
|
||
|
#include animscripts\SetPoseMovement;
|
||
|
#include animscripts\Combat_utility;
|
||
|
#include maps\_anim;
|
||
|
#include maps\_utility;
|
||
|
#using_animtree( "generic_human" );
|
||
|
|
||
|
|
||
|
initFlashed()
|
||
|
{
|
||
|
anim.flashAnimArray[ 0 ] = %exposed_flashbang_v1;
|
||
|
anim.flashAnimArray[ 1 ] = %exposed_flashbang_v2;
|
||
|
anim.flashAnimArray[ 2 ] = %exposed_flashbang_v3;
|
||
|
anim.flashAnimArray[ 3 ] = %exposed_flashbang_v4;
|
||
|
anim.flashAnimArray[ 4 ] = %exposed_flashbang_v5;
|
||
|
|
||
|
randomizeFlashAnimArray();
|
||
|
|
||
|
anim.flashAnimIndex = 0;
|
||
|
}
|
||
|
|
||
|
randomizeFlashAnimArray()
|
||
|
{
|
||
|
for ( i = 0; i < anim.flashAnimArray.size; i++ )
|
||
|
{
|
||
|
switchwith = randomint( anim.flashAnimArray.size );
|
||
|
temp = anim.flashAnimArray[ i ];
|
||
|
anim.flashAnimArray[ i ] = anim.flashAnimArray[ switchwith ];
|
||
|
anim.flashAnimArray[ switchwith ] = temp;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
getNextFlashAnim()
|
||
|
{
|
||
|
anim.flashAnimIndex++;
|
||
|
if ( anim.flashAnimIndex >= anim.flashAnimArray.size )
|
||
|
{
|
||
|
anim.flashAnimIndex = 0;
|
||
|
randomizeFlashAnimArray();
|
||
|
}
|
||
|
return anim.flashAnimArray[ anim.flashAnimIndex ];
|
||
|
}
|
||
|
|
||
|
flashBangAnim( animation )
|
||
|
{
|
||
|
self endon( "killanimscript" );
|
||
|
self setflaggedanimknoball( "flashed_anim", animation, %body, 0.2, randomFloatRange( 0.9, 1.1 ) );
|
||
|
self animscripts\shared::DoNoteTracks( "flashed_anim" );
|
||
|
}
|
||
|
|
||
|
main()
|
||
|
{
|
||
|
self endon( "death" );
|
||
|
self endon( "killanimscript" );
|
||
|
|
||
|
animscripts\utility::initialize( "flashed" );
|
||
|
|
||
|
flashDuration = self flashBangGetTimeLeftSec();
|
||
|
if ( flashDuration <= 0 )
|
||
|
return;
|
||
|
|
||
|
self animscripts\face::SayGenericDialogue( "flashbang" );
|
||
|
|
||
|
if ( isdefined( self.specialFlashedFunc ) )
|
||
|
{
|
||
|
self [[ self.specialFlashedFunc ]]();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
animation = getNextFlashAnim();
|
||
|
flashBangedLoop( animation, flashDuration );
|
||
|
}
|
||
|
|
||
|
flashBangedLoop( animation, duration )
|
||
|
{
|
||
|
self endon( "death" );
|
||
|
self endon( "killanimscript" );
|
||
|
|
||
|
assert( isDefined( animation ) );
|
||
|
assert( isDefined( duration ) );
|
||
|
assert( duration > 0 );
|
||
|
|
||
|
if ( self.a.pose == "prone" )
|
||
|
self ExitProneWrapper( 1 );
|
||
|
|
||
|
self.a.pose = "stand";
|
||
|
self.allowdeath = true;
|
||
|
|
||
|
self thread flashBangAnim( animation );
|
||
|
wait ( duration );
|
||
|
|
||
|
self notify( "stop_flashbang_effect" );
|
||
|
self.flashed = false;
|
||
|
}
|