#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_ant_death" ); function main() { level.antNames = []; level.antNames[ level.antNames.size ] = "beer"; level.antNames[ level.antNames.size ] = "coffee"; level.antNames[ level.antNames.size ] = "cooler"; level.antNames[ level.antNames.size ] = "pizza"; level.antNames[ level.antNames.size ] = "soda"; level.ants = []; for( i = 0; i < level.antNames.size; i++ ) { ant_init_struct( i ); } } function ant_init_struct( locationNumber ) { level.ants[ level.ants.size ] = SpawnStruct(); ant = level.ants[ level.ants.size - 1 ]; ant.bundles = []; ant.bundles[ ant.bundles.size ] = "p7_fxanim_mp_mini_ant_" + level.antNames[ locationNumber ] + "_path_01_bundle"; ant.bundles[ ant.bundles.size ] = "p7_fxanim_mp_mini_ant_" + level.antNames[ locationNumber ] + "_path_02_bundle"; ant.currentCount = 0; for( i = 0; i < 2; i++ ) { level thread run_ants( ant.bundles ); } } function run_ants( a_bundles ) { s_ant_structs = []; foreach ( str_scene in a_bundles ) { scene::add_scene_func( str_scene, &ant_watcher ); if ( !isdefined( s_ant_structs ) ) s_ant_structs = []; else if ( !IsArray( s_ant_structs ) ) s_ant_structs = array( s_ant_structs ); s_ant_structs[s_ant_structs.size]=struct::get( str_scene, "scriptbundlename" );; } while ( true ) { waitTime = RandomIntRange( 9, 12 ); wait( waitTime ); s_ant = array::random( s_ant_structs ); s_unique_ant = SpawnStruct(); s_unique_ant.origin = s_ant.origin; s_unique_ant.angles = s_ant.angles; s_unique_ant thread scene::play( s_ant.scriptbundlename ); } } function ant_watcher( a_ents ) { e_ant = a_ents[ "ant" ]; e_ant endon( "death" ); e_ant waittill( "damage" ); PlayFxOnTag( "dlc4/mp_mini/fx_ant_death", e_ant, "body_jnt" ); {wait(.05);}; e_ant Delete(); }