#using scripts\codescripts\struct; #using scripts\shared\scene_shared; #using scripts\shared\array_shared; #using scripts\shared\util_shared; #precache( "fx", "dlc4/mp_mini/fx_fly_death" ); function main() { scene::add_scene_func( "p7_fxanim_mp_mini_fly_idle_01_bundle", &run_fly ); scene::add_scene_func( "p7_fxanim_mp_mini_fly_idle_02_bundle", &run_fly ); scene::add_scene_func( "p7_fxanim_mp_mini_fly_land_01_bundle", &run_fly_idle, "done" ); level thread scene::play( "p7_fxanim_mp_mini_fly_idle_01_bundle" ); level thread scene::play( "p7_fxanim_mp_mini_fly_idle_02_bundle" ); } function run_fly( a_ents ) { self endon( "killed" ); e_fly = a_ents[ "fxanim_fly" ]; self thread fly_wait_death( e_fly ); wait 1; fly_wait_disturbed( e_fly ); self scene::play( "p7_fxanim_mp_mini_fly_takeoff_01_bundle", a_ents ); if ( IsSubStr( self.targetname, "vista" ) ) { self.script_play_multiple = true; wait ( RandomFloatRange( 10, 30 ) ); self scene::play( "p7_fxanim_mp_mini_fly_land_01_bundle" ); } } function run_fly_idle( a_ents ) { self thread scene::play( a_ents ); // plays the idle again, which will call run_fly to start the loop again } function fly_wait_death( e_fly ) { e_fly notify( "fly_wait_death" ); e_fly endon( "fly_wait_death" ); e_fly waittill( "damage" ); PlayFxOnTag( "dlc4/mp_mini/fx_fly_death", e_fly, "body_jnt" ); {wait(.05);}; e_fly Delete(); self notify( "killed" ); } function fly_wait_disturbed( e_fly ) { while ( true ) { foreach( player in level.players ) { if( DistanceSquared( player.origin, e_fly.origin ) < ( 300 * 300 ) ) { return; } } {wait(.05);}; } }