// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool trench_spawn_functions() { maps\_utility::array_spawn_function_noteworthy( "trench_main_friendlies", ::trench_main_friendlies ); maps\_utility::array_spawn_function_noteworthy( "trench_friendly_orange_guy", ::trench_friendly_orange_guy ); getent( "trench_artemis_guy", "script_noteworthy" ) maps\_utility::add_spawn_function( ::trench_artemis_guy ); maps\_utility::array_spawn_function_noteworthy( "trench_artemis_friendlies", ::trench_artemis_friendlies ); getent( "trench_first_nh90_lander", "script_noteworthy" ) maps\_utility::add_spawn_function( ::trench_first_nh90_lander ); getent( "trench_artemis", "targetname" ) maps\_utility::add_spawn_function( ::trench_artemis ); getent( "trench_hovercraft_a10", "script_noteworthy" ) maps\_utility::add_spawn_function( ::trench_hovercraft_a10 ); maps\_utility::array_spawn_function_targetname( "trench_hovercraft", ::trench_hovercraft_over_moment ); getent( "trench_hovercraft_passer", "targetname" ) maps\_utility::add_spawn_function( ::trench_hovercraft_side_sand ); var_0 = getentarray( "tower_post_explosion_trigs", "script_noteworthy" ); common_scripts\utility::array_thread( var_0, common_scripts\utility::trigger_off ); } beach_sequence_trenches() { common_scripts\utility::flag_wait( "FLAG_start_trenches" ); common_scripts\utility::flag_set( "FLAG_stop_trench_drones" ); setsaveddvar( "ai_friendlysuppression", 1 ); setsaveddvar( "ai_friendlyfireblockduration", 1 ); maps\_utility::battlechatter_on( "allies" ); maps\_utility::battlechatter_on( "axis" ); level.mortar_min_dist = 700; level.mortarexcluders = [ getaiarray( "allies", "axis" ) ]; level.availabledrones = 25; var_0 = getentarray( "bunker_trench_drones", "script_noteworthy" ); foreach ( var_2 in var_0 ) { if ( isdefined( var_2 ) ) var_2 maps\homecoming_util::delete_safe(); } level notify( "stop_mortars 0" ); thread maps\homecoming_util::set_mortar_on( 3 ); thread maps\homecoming_util::ambient_distant_battlechatter( "distant_battlechatter_beach", "beach_ambient_battlechatter_stop", "us" ); thread trench_custom_mortars(); thread maps\homecoming_util::function_trigger_switch( "beach_ambient_on", "beach_ambient_off", ::trench_beach_axis_ambient, ::trench_beach_axis_ambient_off, "stop_beach_ambient_switch", 1 ); thread maps\homecoming_util::function_trigger_switch( "beach_start_stuff", "trenches_rightpath_start", ::trench_beach_allies_ambient, ::trench_beach_allies_ambient_off, "stop_beach_ambient_switch", 1 ); thread maps\homecoming_util::function_trigger_switch( "trench_ambient_hovercrafts_on", "trench_hovecraft_trigger", ::trench_beach_ambient_hovercrafts_on, ::trench_beach_ambient_hovercrafts_off, "stop_beach_ambient_switch" ); level.trench_beach_hovercrafts = maps\_utility::array_spawn( getentarray( "trench_bunker_hovercrafts", "script_noteworthy" ) ); level.hesh maps\homecoming_util::set_ai_array( "trench_main_friendlies" ); level.hesh maps\homecoming_util::ignore_everything(); level.hesh maps\_utility::enable_sprint(); level.hesh maps\_utility::delaythread( 8, maps\_utility::disable_sprint ); level.hesh maps\_utility::delaythread( 8, maps\homecoming_util::clear_ignore_everything ); level.player setthreatbiasgroup( "trench_player_squad" ); level.hesh setthreatbiasgroup( "trench_player_squad" ); thread beach_trenches_combat(); thread beach_trenches_dialogue(); common_scripts\utility::flag_wait_any( "FLAG_trench_a10_mechanic", "TRIGFLAG_a10_destroy_trench_tank" ); if ( !common_scripts\utility::flag( "TRIGFLAG_a10_destroy_trench_tank" ) ) { level.a10_mechanic_skip_end_vo = 1; thread maps\homecoming_a10::a10_strafe_mechanic( "player_a10_trench_area_3" ); } common_scripts\utility::flag_wait_any( "FLAG_trench_tank_destroyed", "TRIGFLAG_a10_destroy_trench_tank" ); var_4 = getentarray( "trenches_hovercraft_runners", "targetname" ); maps\_utility::array_notify( var_4, "stop_drone_runners" ); level.drone_runner_group["hovercraftRunners"] = common_scripts\utility::array_removeundefined( level.drone_runner_group["hovercraftRunners"] ); thread maps\homecoming_util::kill_over_time( level.drone_runner_group["hovercraftRunners"], 0, 0.5 ); maps\_utility::activate_trigger( "trenches_moveup_trig4", "targetname" ); level notify( "stop_trench_hovercraft_reinforcers" ); thread maps\homecoming_a10::a10_mechanic_off(); } beach_trenches_dialogue() { common_scripts\utility::flag_wait( "FLAG_hesh_balcony_wave" ); wait 0.5; maps\_utility::smart_radio_dialogue( "homcom_hsh_youregoodgetup" ); wait 0.5; thread maps\_utility::autosave_by_name( "trench" ); maps\_utility::smart_radio_dialogue( "homcom_hsh_enemytroopsadvancingout" ); common_scripts\utility::flag_wait( "FLAG_trench_first_strafe_done" ); maps\_utility::smart_radio_dialogue( "homcom_com_raptor21dronecontrols" ); level.hesh maps\_utility::dialogue_queue( "homcom_hsh_rogerthatpatchme" ); wait 0.5; maps\_utility::smart_radio_dialogue( "homcom_dcon_raptor21weresurrounded" ); level.hesh maps\_utility::dialogue_queue( "homcom_hsh_weremakingourway" ); wait 0.5; maps\_utility::smart_radio_dialogue( "homcom_com_alldefensiveunitsbe" ); if ( !common_scripts\utility::flag( "player_not_doing_strafe" ) ) common_scripts\utility::flag_wait( "player_not_doing_strafe" ); var_0 = getaiarray( "allies" ); var_0 = common_scripts\utility::array_remove( var_0, level.hesh ); var_1 = maps\homecoming_util::getclosest2d( level.player.origin, var_0 ); if ( isdefined( var_1 ) ) var_1 maps\_utility::play_sound_on_tag( "homcom_us2_sirthosetrenchesare", "j_head" ); else level.hesh maps\_utility::play_sound_on_tag( "homcom_us2_sirthosetrenchesare", "j_head" ); level.hesh maps\_utility::dialogue_queue( "homcom_hsh_ifthattowergoes" ); common_scripts\utility::flag_wait( "FLAG_trenches_hovercraft_spawned" ); level.hesh maps\_utility::dialogue_queue( "homcom_hsh_commandwehavean" ); maps\_utility::smart_radio_dialogue( "homcom_com_copythattheyvebeen" ); common_scripts\utility::flag_wait( "FLAG_trench_tank_unload_complete" ); var_0 = getaiarray( "allies" ); var_0 = common_scripts\utility::array_remove( var_0, level.hesh ); var_1 = maps\homecoming_util::getclosest2d( level.player.origin, var_0 ); if ( isdefined( var_1 ) ) var_1 maps\_utility::play_sound_on_tag( "homcom_us2_enemytankpullingout", "j_head" ); else level.hesh maps\_utility::play_sound_on_tag( "homcom_us2_enemytankpullingout", "j_head" ); level.hesh maps\_utility::dialogue_queue( "homcom_hsh_usethea10drones" ); common_scripts\utility::flag_set( "FLAG_trench_a10_mechanic" ); common_scripts\utility::flag_wait( "FLAG_trench_tank_destroyed" ); if ( isdefined( level.player_destroyed_trench_tank ) ) level.hesh maps\_utility::dialogue_queue( "homcom_hsh_tankdestroyedgoodjob" ); wait 1.5; maps\_utility::smart_radio_dialogue( "homcom_dcon_raptor21weresurrounded" ); level.hesh maps\_utility::dialogue_queue( "homcom_hsh_wilcowerealmostthere" ); thread beach_trenches_part2_dialogue(); } beach_trenches_part2_dialogue() { common_scripts\utility::flag_wait( "TRIGFLAG_start_trenches_part2" ); maps\homecoming_util::delete_ai_array( "trench_artemis_frendlies" ); common_scripts\utility::flag_wait( "TRIGFLAG_start_tower_destruction_sequence" ); level.hesh maps\_utility::dialogue_queue( "homcom_hsh_dronecontrolenemyforces" ); maps\_utility::smart_radio_dialogue( "homcom_dcon_rogerthatrepositioning" ); common_scripts\utility::flag_set( "FLAG_allow_tower_a10" ); level.hesh maps\_utility::dialogue_queue( "homcom_hsh_calleminmake" ); common_scripts\utility::flag_wait( "FLAG_allow_a10_strafe_crash" ); common_scripts\utility::flag_wait( "a10_strafe_complete" ); wait 5.9; level.hesh maps\_utility::dialogue_queue( "homcom_hsh_doorsopening" ); common_scripts\utility::flag_wait( "FLAG_player_a10_lockon" ); maps\_utility::smart_radio_dialogue( "homcom_dcon_enemylockonbeginning" ); maps\_utility::smart_radio_dialogue( "homcom_dcon_dronetwosbeenhit" ); } beach_trenches_combat() { thread trenches_combat_right_path(); thread initial_trench_enemies(); thread trench_main_friendlies_respawner_logic(); var_0 = getentarray( "trench_friendly_turret", "script_noteworthy" ); var_1 = getentarray( "trench_entrance_turret_targets", "targetname" ); foreach ( var_3 in var_0 ) var_3 thread maps\homecoming_util::turret_shoot_targets( var_1, 1 ); maps\_utility::activate_trigger( "trench_start_friendlies", "targetname" ); level endon( "TRIGFLAG_player_entering_nest" ); maps\homecoming_util::waittill_trigger( "trench_start_combat" ); var_5 = getent( "trenches_bridge_runner", "targetname" ); var_5.randomdeath = [ 7, 15 ]; var_5.drone_lookahead_value = 128; var_5 maps\_utility::add_spawn_function( maps\homecoming_drones::set_noragdoll ); var_5 maps\_utility::add_spawn_function( maps\homecoming_drones::drone_bloodfx ); var_5 maps\_utility::delaythread( 3, maps\homecoming_drones::beach_path_drones ); var_6 = getentarray( "trenches_hovercraft_runners", "targetname" ); foreach ( var_8 in var_6 ) { var_8.randomdeath = [ 5, 20 ]; var_8.drone_lookahead_value = 128; var_8 thread maps\homecoming_drones::beach_path_drones( "hovercraftRunners" ); } maps\homecoming_util::waittill_trigger( "trenches_street_trig" ); maps\_spawner::flood_spawner_scripted( getentarray( "trench_enemies_1_flooders", "targetname" ) ); maps\homecoming_util::waittill_trigger( "trench_chargers_1_trig" ); var_10 = getentarray( "trench_chargers_1", "targetname" ); if ( isdefined( var_10[0] ) ) { var_11 = common_scripts\utility::getstruct( var_10[0].target, "targetname" ); thread trench_chargers( var_10, var_11, 1.8, 3.5 ); } maps\_spawner::flood_spawner_scripted( getentarray( "trench_hescotower_lower_enemies", "targetname" ) ); maps\homecoming_util::waittill_trigger( "trenches_entrance_trig" ); var_12 = maps\homecoming_util::get_ai_array( "trench_main_friendlies" ); foreach ( var_14 in var_12 ) { var_14.ignorerandombulletdamage = 1; var_14.ignoresuppression = 1; var_14.disablebulletwhizbyreaction = 1; } var_5 thread maps\_utility::notify_delay( "stop_drone_runners", randomintrange( 2, 5 ) ); maps\_spawner::flood_spawner_scripted( getentarray( "trench_enemy_flooders_2", "targetname" ) ); maps\homecoming_util::waittill_trigger( "trenches_moveup_trig1" ); var_12 = maps\homecoming_util::get_ai_array( "trench_main_friendlies" ); foreach ( var_14 in var_12 ) { var_14.ignorerandombulletdamage = 0; var_14.ignoresuppression = 0; var_14.disablebulletwhizbyreaction = 0; } maps\_utility::activate_trigger( "trench_moveup_watcher_namer", "script_noteworthy" ); maps\homecoming_util::waittill_trigger( "trenches_rightpath_start" ); common_scripts\utility::flag_set( "FLAG_start_trench_hovercraft_tank" ); var_1 = getentarray( "trench_hovercraft_turret_targets", "targetname" ); foreach ( var_3 in var_0 ) var_3 thread maps\homecoming_util::turret_shoot_targets( var_1, 1 ); maps\_utility::activate_trigger( "trenches_rightpath_moveup_watcher", "script_noteworthy" ); maps\homecoming_util::waittill_trigger( "trenches_moveup_trig3" ); common_scripts\utility::flag_set( "FLAG_halfway_through_trenches" ); var_20 = getentarray( "trench_flooders_tank", "targetname" ); if ( var_20.size != 0 ) maps\_spawner::flood_spawner_scripted( var_20 ); } beach_trenches_combat_part2() { common_scripts\utility::flag_wait( "TRIGFLAG_start_trenches_part2" ); thread maps\_utility::autosave_by_name( "trench2" ); level.hesh.grenadeawareness = 0; level notify( "beach_ambient_battlechatter_stop" ); maps\_spawner::flood_spawner_scripted( getentarray( "tower_top_marine_flooders", "targetname" ) ); thread maps\homecoming_util::function_trigger_switch( "beach_tower_runners_on", "beach_tower_runners_off", ::beach_tower_runners_on, ::beach_tower_runners_off, "tower_pre_explosion_cleanup", 1 ); maps\_spawner::flood_spawner_scripted( getentarray( "tower_enemy_attackers", "targetname" ) ); common_scripts\utility::flag_wait( "TRIGFLAG_start_tower_entrance_battle" ); thread maps\homecoming_util::function_trigger_switch( "trench_tower_kill_player_on", "trench_tower_kill_player_off", ::beach_tower_killplayer_on, ::beach_tower_killplayer_off, "tower_pre_explosion_cleanup" ); setignoremegroup( "tower_ground_enemies_1", "trench_player_squad" ); var_0 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "tower_enemy_tanks" ); thread trench_tower_hind(); common_scripts\utility::flag_wait( "FLAG_allow_tower_a10" ); thread maps\homecoming_a10::a10_strafe_mechanic( "tower_player_a10_strafe", ::warthog_player_crash, ::a10_squadron_tower_crash, ::warthog_player_fadeout_crash ); common_scripts\utility::flag_wait( "FLAG_start_tower_explosion" ); thread maps\homecoming_a10::a10_mechanic_off( 1 ); common_scripts\utility::flag_wait( "a10_strafe_complete" ); thread maps\_utility::autosave_by_name( "tower_explosion" ); level notify( "stop_tower_hind" ); level notify( "tower_stop_killing_player" ); level notify( "tower_pre_explosion_cleanup" ); foreach ( var_2 in var_0 ) { if ( isdefined( var_2 ) && isalive( var_2 ) ) { var_2 delete(); continue; } var_2 thread maps\homecoming_util::delete_on_flag( "TRIGFLAG_player_leaving_tower_parking_area" ); } maps\_utility::array_notify( getentarray( "beach_tower_runners", "targetname" ), "stop_drone_runners" ); var_4 = level.drones["axis"].array; thread maps\homecoming_util::kill_over_time( var_4, 0.4, 0.8 ); maps\_spawner::killspawner( 666 ); maps\_spawner::killspawner( 665 ); var_5 = maps\homecoming_util::get_ai_array( "tower_top_marines" ); maps\_utility::array_delete( var_5 ); var_6 = maps\homecoming_util::get_ai_array( "tower_enemy_attackers" ); maps\_utility::array_kill( var_6 ); maps\_utility::clearthreatbias( "tower_top_marines", "tower_ground_enemies_1" ); maps\_utility::clearthreatbias( "trench_player_squad", "tower_ground_enemies_2" ); maps\homecoming_util::a10_vista_strafe_group_delete( "vista_pier_a10s" ); maps\homecoming_util::a10_vista_strafe_group_delete( "vista_ship_a10s" ); thread trench_tower_explosion_scene(); common_scripts\utility::flag_set( "FLAG_start_tower_retreat" ); } beach_tower_runners_on() { var_0 = getentarray( "beach_tower_runners", "targetname" ); foreach ( var_2 in var_0 ) { var_2.randomdeath = [ 4, 16 ]; var_3 = 0; if ( isdefined( var_2.script_wait ) ) var_3 = var_2.script_wait; var_2 maps\_utility::delaythread( var_3, maps\homecoming_drones::beach_path_drones ); } } beach_tower_runners_off() { var_0 = getentarray( "beach_tower_runners", "targetname" ); maps\_utility::array_notify( var_0, "stop_drone_runners" ); } beach_tower_killplayer_on() { level endon( "tower_stop_killing_player" ); for (;;) { var_0 = randomintrange( 5, 15 ); level.player dodamage( var_0, level.player.origin ); common_scripts\utility::flag_wait_or_timeout( "used_a10_strafe", randomfloatrange( 0.4, 1.2 ) ); if ( common_scripts\utility::flag( "used_a10_strafe" ) ) { level.player dodamage( 99999, level.player.origin ); break; } } } beach_tower_killplayer_off() { level notify( "tower_stop_killing_player" ); } trenches_combat_right_path() { common_scripts\utility::flag_wait( "TRIGFLAG_player_entering_nest" ); var_0 = getent( "trenches_moveup_trig3", "targetname" ); if ( isdefined( var_0 ) ) var_0 notify( "trigger" ); } trench_custom_mortars() { level endon( "stop_trench_custom_mortars" ); var_0 = common_scripts\utility::getstructarray( "trench_mortars", "targetname" ); var_1 = gettime(); var_2 = 400; var_3 = 1200; var_4 = 10000; var_5 = 500; var_6 = 0.4; var_7 = 0.2; var_8 = cos( 45 ); var_9 = var_0; while ( !common_scripts\utility::flag( "TRIGFLAG_tower_entrance" ) ) { wait( randomfloatrange( 2, 4 ) ); var_10 = []; foreach ( var_12 in var_9 ) { if ( maps\_utility::within_fov_2d( level.player geteye(), level.player getplayerangles(), var_12.origin, var_8 ) ) { var_13 = distance2dsquared( var_12.origin, level.player.origin ); if ( var_13 > squared( var_2 ) && var_13 < squared( var_3 ) ) { if ( isdefined( var_12.lastused ) ) { if ( gettime() - var_12.lastused < var_4 ) continue; } var_10 = common_scripts\utility::array_add( var_10, var_12 ); } } } if ( var_10.size == 0 ) continue; var_15 = common_scripts\utility::random( var_10 ); if ( !isdefined( var_15 ) ) continue; playfx( common_scripts\utility::getfx( var_15.script_fxid ), var_15.origin, anglestoforward( var_15.angles ) ); earthquake( var_6, var_7, var_15.origin, var_5 ); var_9 = common_scripts\utility::array_remove( var_0, var_15 ); var_15.lastused = gettime(); if ( common_scripts\utility::cointoss() ) { if ( gettime() - var_1 < 10000 ) continue; var_1 = gettime(); var_10 = common_scripts\utility::array_remove( var_10, var_15 ); if ( var_10.size == 0 ) continue; var_15 = common_scripts\utility::random( var_10 ); wait( randomfloatrange( 0.1, 0.3 ) ); playfx( common_scripts\utility::getfx( var_15.script_fxid ), var_15.origin, anglestoforward( var_15.angles ) ); earthquake( var_6, var_7, var_15.origin, var_5 ); var_9 = common_scripts\utility::array_remove( var_0, var_15 ); var_15.lastused = gettime(); } } } trench_main_friendlies() { level endon( "stop_main_friendlies_respawning" ); var_0 = self.spawner; maps\homecoming_util::set_ai_array( "trench_main_friendlies" ); self waittill( "death" ); var_1 = var_0; if ( common_scripts\utility::flag( "FLAG_trench_respawner_2" ) ) var_1 = getent( "trench_main_friendlies_respawner_2", "targetname" ); else if ( common_scripts\utility::flag( "FLAG_trench_respawner_1" ) ) var_1 = getent( "trench_main_friendlies_respawner_1", "targetname" ); for (;;) { var_2 = var_1 maps\_utility::spawn_ai(); if ( isdefined( var_2 ) ) break; wait 0.2; } } trench_main_friendlies_respawner_logic() { maps\homecoming_util::waittill_trigger( "trenches_moveup_trig2" ); common_scripts\utility::flag_set( "FLAG_trench_respawner_1" ); common_scripts\utility::flag_wait( "FLAG_over_trench_hovercraft_gone" ); common_scripts\utility::flag_set( "FLAG_trench_respawner_2" ); } trench_friendly_orange_guy() { maps\homecoming_util::set_ai_array( "trench_main_friendlies" ); thread maps\_utility::magic_bullet_shield(); maps\homecoming_util::waittill_trigger( "trenches_entrance_trig" ); maps\_utility::set_force_color( "g" ); maps\homecoming_util::waittill_trigger( "trenches_moveup_trig1" ); maps\_utility::set_force_color( "o" ); maps\homecoming_util::waittill_trigger( "trenches_moveup_trig4" ); maps\_utility::set_force_color( "g" ); } trench_hovercraft_side_sand() { var_0 = [ "tag_fx_water_splash9", "tag_fx_water_splash8", "tag_fx_water_splash7", "tag_fx_water_splash6" ]; foreach ( var_2 in var_0 ) { var_3 = -70; if ( var_2 == "tag_fx_water_splash6" ) var_3 = -90; thread trench_hovercraft_side_sand_fx( var_2, var_3 ); } } trench_hovercraft_side_sand_fx( var_0, var_1 ) { self endon( "death" ); self endon( "stop_fx" ); self endon( "stop_side_sand" ); for (;;) { var_2 = self gettagorigin( var_0 ); var_3 = anglestoright( self gettagangles( var_0 ) ); var_2 = var_2 + var_3 * var_1; var_2 = var_2 + ( 0, 0, 25 ); playfx( common_scripts\utility::getfx( "hovercraft_side_sand" ), var_2 ); wait 0.1; } } trench_first_nh90_lander() { self.takeoffdelay = 7; } trench_artemis() { var_0 = self; level.trench_artemis = var_0; var_0.artemisnofiresound = 1; var_0 thread maps\homecoming_util::artemis_think(); common_scripts\utility::flag_wait( "FLAG_start_trenches" ); var_0 notify( "stop_firing_for_good" ); var_1 = common_scripts\utility::getstruct( "trench_artemis_default_target", "targetname" ); var_0 setturrettargetvec( var_1.origin ); common_scripts\utility::flag_wait( "TRIGFLAG_player_leaving_tower_parking_area" ); level.trench_artemis.gunner maps\homecoming_util::delete_safe(); level.trench_artemis maps\homecoming_util::delete_safe(); } trench_artemis_guy() { thread maps\_utility::magic_bullet_shield(); maps\homecoming_util::set_ai_array( "trench_artemis_frendlies" ); maps\homecoming_util::waittill_trigger( getent( "trench_artemis_start_trig", "script_noteworthy" ) ); maps\homecoming_util::ignore_everything(); var_0 = level.trench_artemis; var_0.artemisnofiresound = undefined; level.trench_artemis.gunner = self; var_0 maps\_anim::anim_generic_reach( self, "artemis_getin", "tag_gunner" ); self linkto( var_0, "tag_gunner", ( 0, 0, 0 ), ( 0, 0, 0 ) ); var_0 maps\_anim::anim_generic( self, "artemis_getin", "tag_gunner" ); var_0 thread maps\_anim::anim_generic_loop( self, "artemis_loop", "stop_anim", "tag_gunner" ); var_0 thread maps\homecoming_util::artemis_think(); self waittill( "death" ); var_0 notify( "stop_firing_for_good" ); } trench_artemis_friendlies() { var_0 = self.spawner; maps\homecoming_util::set_ai_array( "trench_main_friendlies" ); maps\homecoming_util::set_ai_array( "trench_artemis_frendlies" ); self waittill( "death" ); if ( common_scripts\utility::flag( "TRIGFLAG_start_trenches_part2" ) ) return; while ( !common_scripts\utility::flag( "TRIGFLAG_start_trenches_part2" ) ) { var_1 = var_0 maps\_utility::spawn_ai(); if ( isdefined( var_1 ) ) break; wait 0.2; } } trench_chargers( var_0, var_1, var_2, var_3 ) { var_0 = common_scripts\utility::array_randomize( var_0 ); while ( var_0.size > 0 ) { foreach ( var_5 in var_0 ) { if ( !isdefined( var_5 ) ) { var_0 = common_scripts\utility::array_remove( var_0, var_5 ); continue; } var_6 = var_5 maps\_utility::spawn_ai(); var_6 thread trench_chargers_think( var_1 ); if ( var_5.count == 0 ) var_0 = common_scripts\utility::array_remove( var_0, var_5 ); wait( randomfloatrange( var_2, var_3 ) ); } } } trench_chargers_think( var_0 ) { self endon( "death" ); self.grenadeawareness = 0; self.ignoresuppression = 1; self.disablebulletwhizbyreaction = 1; self.ignorerandombulletdamage = 1; self setgoalpos( var_0.origin ); self.goalradius = var_0.radius; self waittill( "goal" ); wait( randomfloatrange( 0.2, 0.8 ) ); maps\_utility::die(); } tower_rappel_nh90() { var_0 = getnode( "tower_rappelers_node", "targetname" ); var_1 = self.riders; var_2 = []; var_3 = []; foreach ( var_5 in var_1 ) { if ( isdefined( var_5.script_startingposition ) ) continue; if ( isdefined( var_5.script_goalvolume ) ) { var_3 = common_scripts\utility::array_add( var_3, var_5 ); continue; } var_5 maps\homecoming_util::ignore_everything(); var_2 = common_scripts\utility::array_add( var_2, var_5 ); } self waittill( "unloaded" ); common_scripts\utility::flag_set( "FLAG_start_tower_hind" ); var_2 = maps\_utility::array_removedead_or_dying( var_2 ); common_scripts\utility::array_thread( var_2, maps\_utility::magic_bullet_shield ); common_scripts\utility::array_thread( var_2, maps\homecoming_util::waittill_real_goal, var_0, 1 ); var_3 = maps\_utility::array_removedead_or_dying( var_3 ); common_scripts\utility::array_thread( var_3, maps\_utility::set_ignoreall, 0 ); common_scripts\utility::array_thread( var_3, maps\_utility::set_ignoreme, 0 ); for (;;) { var_2 = maps\_utility::array_removedead_or_dying( var_2 ); if ( var_2.size == 0 ) break; wait 1; } } initial_trench_enemies() { maps\_utility::array_spawn( getentarray( "initial_trench_enemies", "targetname" ) ); var_0 = getentarray( "initial_trench_flooders", "targetname" ); maps\_spawner::flood_spawner_scripted( var_0 ); maps\homecoming_util::waittill_trigger( "trench_start_combat" ); foreach ( var_2 in var_0 ) { if ( !isdefined( var_2.script_index ) ) { var_2.count = 0; continue; } var_2.count = var_2.script_index; } } trench_enemy_nest_ai() { self endon( "death" ); var_0 = self.spawner; self.ignoreme = 1; self.a.disablelongdeath = 1; thread maps\homecoming_util::enemy_rpg_unlimited_ammo( "stop_rpg_ammo" ); var_1 = var_0 common_scripts\utility::get_linked_ents(); while ( !common_scripts\utility::flag( "TRIGFLAG_player_entering_nest" ) ) { if ( self.weapon != "panzerfaust3" ) maps\_utility::forceuseweapon( "panzerfaust3", "primary" ); var_2 = var_1[randomint( var_1.size )]; self setentitytarget( var_2 ); maps\_utility::add_wait( maps\_utility::waittill_msg, "shooting" ); maps\_utility::add_wait( common_scripts\utility::flag_wait, "TRIGFLAG_player_entering_nest" ); maps\_utility::do_wait_any(); if ( common_scripts\utility::flag( "TRIGFLAG_player_entering_nest" ) ) break; } self notify( "stop_rpg_ammo" ); self.a.rockets = 0; self.ignoreme = 0; self clearentitytarget(); } trench_hovercraft_a10() { common_scripts\utility::flag_set( "FLAG_trenches_hovercraft_spawned" ); self.deflaterate = 1.5; self.delaytankunload = 1; while ( !isdefined( self.tanks ) ) wait 0.1; var_0 = self.tanks[0]; var_0.turretturntime = 2; var_0.firetime = [ 3.5, 6 ]; maps\_utility::array_spawn( getentarray( "trench_hovecraft_ai", "targetname" ), undefined, 1 ); common_scripts\utility::flag_wait( "FLAG_start_trench_hovercraft_tank" ); self.delaytankunload = undefined; self.stopdroneunload = 1; maps\_utility::ent_flag_set( "hovercraft_allow_tank_unload" ); var_0 maps\_utility::ent_flag_wait( "hovercraft_unload_complete" ); common_scripts\utility::flag_set( "FLAG_trench_tank_unload_complete" ); if ( !common_scripts\utility::flag( "TRIGFLAG_a10_destroy_trench_tank" ) ) { var_1 = [ 1, 2 ]; thread maps\homecoming_util::spawn_and_reinforce( "trench_hovecraft_ai", var_1, "stop_trench_hovercraft_reinforcers", 1 ); level.strafetargetvehicles = common_scripts\utility::array_add( level.strafetargetvehicles, var_0 ); } var_0 maps\_utility::add_wait( maps\_utility::waittill_msg, "death" ); level maps\_utility::add_wait( common_scripts\utility::flag_waitopen, "player_not_doing_strafe" ); level maps\_utility::add_wait( common_scripts\utility::flag_wait, "TRIGFLAG_a10_destroy_trench_tank" ); maps\_utility::do_wait_any(); var_2 = 0; if ( !common_scripts\utility::flag( "player_not_doing_strafe" ) ) { common_scripts\utility::flag_wait( "player_not_doing_strafe" ); if ( isdefined( var_0 ) && isalive( var_0 ) ) { var_0 maps\_vehicle::godoff(); var_0 notify( "death" ); var_2 = 1; } level.player_destroyed_trench_tank = 1; common_scripts\utility::flag_set( "FLAG_trench_tank_destroyed" ); } if ( isdefined( var_0 ) && isalive( var_0 ) && !var_2 ) { common_scripts\utility::flag_set( "FLAG_trench_tank_destroyed" ); var_3 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "trench_hovercraft_a10" ); var_3 waittill( "strafe_done" ); var_0 maps\_vehicle::godoff(); var_0 notify( "death" ); } maps\_utility::ent_flag_set( "hovercraft_unload_complete" ); } #using_animtree("vehicles"); trench_hovercraft_over_moment() { self setanimrestart( %hovercraft_enemy_lower_fans, 1, 1, 1 ); self setanim( %hovercraft_enemy_upper_fans, 1, 0.2, 1 ); var_0 = self.script_index; self waittill( "startfx" ); setsaveddvar( "ai_friendlysuppression", 0 ); setsaveddvar( "ai_friendlyfireblockduration", 0 ); self notify( "stop_side_sand" ); var_1 = maps\homecoming_util::get_ai_array( "trench_main_friendlies" ); common_scripts\utility::array_thread( var_1, ::trench_hovercraft_over_moment_stumblers ); common_scripts\utility::exploder( "hovercraft_wash_" + var_0 ); var_2 = [ ( -4346.43, 7126.79, -95 ), ( -4539.72, 6679.33, -108.995 ) ]; var_3 = []; foreach ( var_7, var_5 in var_2 ) { var_6 = spawn( "script_origin", var_5 ); var_6 playloopsound( "trench_hovercraft_wind" ); var_6 scalevolume( 0, 0 ); var_6 common_scripts\utility::delaycall( 0.05, ::scalevolume, 1, 1 ); var_3[var_7] = var_6; } var_8 = [ "bottompropellerback1_jnt", "bottompropellermid1_jnt", "bottompropellerfront1_jnt" ]; var_9 = [ "trench_hovercraft_fans_back", "trench_hovercraft_fans_middle", "trench_hovercraft_fans_front" ]; foreach ( var_12, var_11 in var_8 ) thread maps\_utility::play_loop_sound_on_tag( var_9[var_12], var_11 ); common_scripts\utility::flag_wait_any( "TRIGFLAG_start_tower_destruction_sequence", "FLAG_over_trench_hovercraft_gone" ); if ( common_scripts\utility::flag( "TRIGFLAG_start_tower_destruction_sequence" ) ) { self vehicle_setspeed( 25, 5, 5 ); common_scripts\utility::flag_wait( "FLAG_over_trench_hovercraft_gone" ); } maps\_utility::stop_exploder( "hovercraft_wash_" + var_0 ); common_scripts\utility::array_thread( var_3, maps\_utility::sound_fade_and_delete, 2 ); setsaveddvar( "ai_friendlysuppression", 1 ); setsaveddvar( "ai_friendlyfireblockduration", 1 ); } trench_hovercraft_over_moment_stumblers() { self endon( "death" ); var_0 = getent( "trench_hovercraft_stumblers_trig", "targetname" ); if ( !isdefined( self.magic_bullet_shield ) ) maps\_utility::magic_bullet_shield(); while ( !common_scripts\utility::flag( "FLAG_over_trench_hovercraft_gone" ) ) { if ( self istouching( var_0 ) ) { maps\_utility::set_generic_run_anim( "hovercraft_stumble_walk_" + randomintrange( 1, 3 ) ); maps\homecoming_util::ignore_everything(); self pushplayer( 1 ); maps\_utility::disable_turnanims(); maps\_utility::pathrandompercent_zero(); maps\_utility::walkdist_zero(); while ( self istouching( var_0 ) ) { if ( common_scripts\utility::flag( "FLAG_over_trench_hovercraft_gone" ) ) break; wait 0.05; } maps\_utility::clear_generic_run_anim(); maps\_utility::enable_turnanims(); self pushplayer( 0 ); maps\_utility::pathrandompercent_reset(); maps\_utility::walkdist_reset(); if ( self == level.hesh ) self.ignoreall = 0; else maps\homecoming_util::clear_ignore_everything(); } wait 0.05; } if ( self != level.hesh ) maps\_utility::stop_magic_bullet_shield(); maps\_utility::clear_generic_run_anim(); self pushplayer( 0 ); maps\_utility::enable_turnanims(); if ( self == level.hesh ) self.ignoreall = 0; else maps\homecoming_util::clear_ignore_everything(); if ( isdefined( self.old_walkdistfacingmotion ) ) maps\_utility::walkdist_reset(); if ( isdefined( self.old_pathrandompercent ) ) maps\_utility::pathrandompercent_reset(); } trench_tower_explosion_scene() { thread warthog_player_tower_crash(); wait 0.8; trench_tower_explode(); } #using_animtree("script_model"); trench_tower_explode() { trench_tower_explode_missiles(); var_0 = getentarray( "tower_blowup_migs", "targetname" ); var_1 = 1.35; foreach ( var_3 in var_0 ) { var_4 = var_3 maps\_vehicle::spawn_vehicle_and_gopath(); playfxontag( level._effect["afterburner"], var_4, "tag_engine_right" ); playfxontag( level._effect["afterburner"], var_4, "tag_engine_left" ); var_1 = 1.55; if ( isdefined( var_3.script_delay ) ) var_1 = var_1 + var_3.script_delay; else var_1 = 1.35; common_scripts\utility::noself_delaycall( var_1, ::playfxontag, level._effect["mig_ignite"], var_4, "tag_engine_right" ); common_scripts\utility::noself_delaycall( var_1, ::playfxontag, level._effect["mig_ignite"], var_4, "tag_engine_left" ); } common_scripts\utility::exploder( "tower_exp" ); var_6 = ( -4488, 9376, 524 ); earthquake( 0.75, 2, var_6, 5000 ); thread common_scripts\utility::play_sound_in_space( "trench_tower_explosion", var_6 ); wait 0.1; var_7 = undefined; var_8 = getentarray( "trench_tower_pieces", "targetname" ); foreach ( var_10 in var_8 ) { var_10 maps\_utility::show_entity(); if ( isdefined( var_10.script_parameters ) ) { var_11 = strtok( var_10.script_parameters, " " ); foreach ( var_13 in var_11 ) { var_13 = "j_airport_tower_" + var_13; var_10 hidepart( var_13, var_10.model ); } } if ( !isdefined( var_10.animation ) ) continue; var_10 useanimtree( #animtree ); var_10.animname = "tower"; var_15 = var_10.animation; var_10 thread maps\_anim::anim_single_solo( var_10, var_15 ); var_16 = getanimlength( var_10 maps\_utility::getanim( var_15 ) ); var_10 common_scripts\utility::delaycall( var_16, ::hide ); } var_18 = getentarray( "guard_tower_intact", "targetname" ); var_19 = getentarray( "guard_tower_destroyed", "targetname" ); common_scripts\utility::array_thread( var_19, maps\_utility::show_entity ); common_scripts\utility::array_thread( var_18, maps\_utility::hide_entity ); var_20 = getentarray( "tower_explosion_models", "targetname" ); common_scripts\utility::array_thread( var_20, maps\_utility::hide_entity ); common_scripts\utility::flag_set( "FLAG_tower_explosion_done" ); } trench_tower_explode_missiles() { var_0 = common_scripts\utility::getstructarray( "tower_explosion_missile_start", "targetname" ); var_0 = sort_by_index( var_0 ); var_1 = 1.2; var_2 = 1; foreach ( var_10, var_4 in var_0 ) { var_5 = common_scripts\utility::getstruct( var_4.target, "targetname" ); var_6 = vectornormalize( var_5.origin - var_4.origin ); var_7 = vectortoangles( var_6 ); var_8 = spawn( "script_model", var_4.origin ); var_8 setmodel( "projectile_slamraam_missile" ); var_8.angles = var_7; playfxontag( common_scripts\utility::getfx( "tower_missile_trails" ), var_8, "tag_fx" ); var_9 = var_10 + 1; var_8 thread maps\_utility::play_sound_on_entity( "missile_incoming_0" + var_9 ); var_8 moveto( var_5.origin, var_1 ); var_8 common_scripts\utility::delaycall( var_1, ::delete ); if ( var_2 ) wait 0.4; var_2 = 0; } wait( var_1 - 0.4 ); } warthog_player_tower_crash() { var_0 = common_scripts\utility::getstruct( "a10_crash_start", "targetname" ); var_1 = common_scripts\utility::getstruct( var_0.target, "targetname" ); var_2 = spawn( "script_model", var_0.origin ); var_2 setmodel( "vehicle_a10_warthog_iw6" ); var_3 = vectornormalize( var_1.origin - var_0.origin ); var_4 = vectortoangles( var_3 ); var_2.angles = var_4; var_5 = anglestoforward( var_4 ); var_2.origin = var_2.origin + var_5 * 1500; var_2 thread warthog_crash_roll(); common_scripts\utility::noself_delaycall( 1.2, ::playfxontag, common_scripts\utility::getfx( "hind_damage_trail" ), var_2, "tag_engine_left" ); var_2 thread maps\homecoming_util::playloopingfx( "airplane_smoke_trail", 0.05, undefined, "tag_engine_left" ); var_2 thread maps\homecoming_util::playloopingfx( "airplane_smoke_trail", 0.05, undefined, "tag_engine_right" ); var_2 thread maps\homecoming_util::playloopingfx( "airplane_smoke_trail", 0.05, undefined, "tag_left_wingtip" ); var_2 thread maps\_utility::play_sound_on_entity( "scn_home_a10_incoming_crash" ); var_2 moveto( var_1.origin, 1.8, 1, 0 ); var_2 waittill( "movedone" ); var_2 delete(); } warthog_crash_roll() { self endon( "death" ); for (;;) { self rotateroll( 360, 1.5 ); wait 1.5; } } sort_by_index( var_0 ) { var_1 = var_0; foreach ( var_5, var_3 in var_0 ) { var_4 = var_3.script_index; var_1 = common_scripts\utility::array_remove( var_0, var_3 ); var_1 = common_scripts\utility::array_insert( var_1, var_3, var_4 ); } return var_1; } warthog_player_crash( var_0 ) { if ( level.a10_uses != 1 ) { common_scripts\utility::flag_set( "FLAG_allow_a10_strafe_crash" ); return; } var_0 endon( "death" ); wait 2; common_scripts\utility::flag_set( "FLAG_player_a10_lockon" ); level.player notify( "enable_a10_lockon_warning" ); } warthog_player_fadeout_crash( var_0 ) { if ( level.a10_uses != 1 ) { common_scripts\utility::flag_wait( "a10_strafe_complete" ); level.skipa10endfade = 1; level.a10_mechanic_ambient_dialogue_off = 1; level.lasta10cinematic = 1; return; } level.player thread maps\_utility::play_sound_on_entity( "a10_tablet_static" ); var_1 = maps\_hud_util::create_client_overlay( "overlay_static", 1, level.player ); var_2 = maps\_hud_util::create_client_overlay( "black", 1, level.player ); var_2.sort = -1; common_scripts\utility::flag_wait( "a10_strafe_complete" ); var_1 thread maps\_hud_util::fade_over_time( 0, 1 ); var_2 thread maps\_hud_util::fade_over_time( 0, 1 ); var_1 common_scripts\utility::delaycall( 1, ::destroy ); var_2 common_scripts\utility::delaycall( 1, ::destroy ); } a10_squadron_tower_crash( var_0 ) { if ( level.a10_uses != 1 ) return; if ( !var_0 maps\homecoming_util::parameters_check( "crasher" ) ) return; level.a10_mechanic_skip_end = 1; common_scripts\utility::flag_set( "FLAG_start_tower_explosion" ); var_1 = getvehiclenode( "tower_a10_squadron_carsh_path", "targetname" ); var_0 attachpath( var_1 ); var_2 = 4; thread a10_squadron_tower_crash_missile( var_0, var_2 ); thread a10_squadron_tower_crash_flares_warthog( var_0, var_2 ); common_scripts\utility::noself_delaycall( var_2, ::playfxontag, common_scripts\utility::getfx( "osprey_engine_explosion" ), var_0, "tag_origin" ); var_0 maps\_utility::delaythread( var_2, maps\homecoming_util::playloopingfx, "a10_damaged_smoke", 0.05, undefined, "TAG_LEFT_WINGTIP" ); var_0 maps\_utility::delaythread( var_2, maps\homecoming_util::playloopingfx, "a10_damaged_smoke", 0.05, undefined, "TAG_RIGHT_WINGTIP" ); var_0 common_scripts\utility::delaycall( 2, ::hudoutlinedisable ); var_0 waittill( "reached_end_node" ); playfx( common_scripts\utility::getfx( "aerial_explosion_mig29" ), var_0.origin + ( 0, 0, 250 ) ); wait 0.1; var_0 hide(); } a10_squadron_tower_crash_flares_warthog( var_0, var_1 ) { var_2 = 1.9; wait( var_2 ); var_1 = var_1 - var_2; var_3 = var_1 * 1000; var_4 = gettime(); while ( gettime() - var_4 < var_3 ) { var_0 thread maps\homecoming_util::shootflares( "tag_gun" ); wait 0.3; } } a10_squadron_tower_crash_missile( var_0, var_1 ) { wait( var_1 - 0.5 ); var_2 = var_0.origin + ( 0, -500, -1000 ); var_3 = magicbullet( "sparrow_missile", var_2, var_0.origin ); var_3 missile_settargetent( var_0 ); var_3 hudoutlineenable( 4, 0 ); } trench_tower_hind() { level endon( "stop_tower_hind" ); var_0 = getentarray( "trench_tower_hind", "targetname" ); for (;;) { if ( common_scripts\utility::flag( "FLAG_start_tower_explosion" ) ) return; var_1 = common_scripts\utility::random( var_0 ); var_2 = var_1 maps\_vehicle::spawn_vehicle_and_gopath(); level.towerhind = var_2; var_2 thread maps\homecoming_util::vehicle_path_notifications(); var_2 waittill( "reached_dynamic_path_end" ); var_2.script_burst_min = 9; var_2.script_burst_max = 21; var_2.firewait = 0.15; var_2.currenttrig = "back"; var_2.playerintrench = 1; var_2 thread tower_hind_targetplayer(); var_2 thread trench_tower_hind_pathlogic(); var_2 thread trench_tower_hind_leave(); var_2 maps\homecoming_util::heli_enable_rocketdeath( 1 ); var_2 waittill( "death" ); common_scripts\utility::flag_wait( "player_not_doing_strafe" ); } } trench_tower_hind_targetent() { var_0 = spawn( "script_origin", self.origin ); var_0 linkto( self, "tag_origin", ( 0, 0, -125 ), ( 0, 0, 0 ) ); target_set( var_0, ( 0, 0, 0 ) ); target_hidefromplayer( var_0, level.player ); self waittill( "death" ); var_0 delete(); } trench_tower_hind_pathlogic() { self endon( "death" ); self endon( "tower_hind_stop_logic" ); var_0 = common_scripts\utility::getstructarray( "tower_hind_dynamic_paths", "targetname" ); var_1 = getentarray( "tower_hind_trigs", "targetname" ); var_2 = []; var_3 = []; foreach ( var_8, var_5 in var_0 ) { var_6 = var_5 maps\_utility::get_linked_structs(); var_7 = []; var_7[0] = var_5; var_7 = common_scripts\utility::array_combine( var_7, var_6 ); var_2[var_5.script_noteworthy] = var_7; var_3[var_1[var_8].script_noteworthy] = var_1[var_8]; } var_9 = "back"; var_10 = undefined; for (;;) { var_11 = undefined; foreach ( var_13 in var_3 ) { if ( level.player istouching( var_13 ) ) { var_11 = var_13; break; } } if ( !isdefined( var_11 ) ) { var_10 = 1; var_11 = var_3[var_9]; self.playerintrench = 1; } else if ( isdefined( var_10 ) ) var_10 = undefined; var_15 = var_11.script_noteworthy; self.currenttrig = var_15; thread trench_tower_hind_gopath( var_2[var_15], var_15 ); if ( isdefined( var_10 ) ) { while ( !level.player istouching( var_11 ) ) wait 0.1; } self.playerintrench = 0; for (;;) { while ( level.player istouching( var_11 ) ) wait 0.1; wait 1.5; if ( !level.player istouching( var_11 ) ) break; } } } trench_tower_hind_gopath( var_0, var_1 ) { self endon( "death" ); self notify( "new_tower_path" ); self endon( "new_tower_path" ); self endon( "tower_hind_stop_logic" ); var_2 = common_scripts\utility::getclosest( self.origin, var_0 ); self vehicle_setspeed( 25, 25, 5 ); self setneargoalnotifydist( 64 ); for (;;) { var_3 = common_scripts\utility::array_remove( var_0, var_2 ); var_2 = var_3[randomint( var_3.size )]; self vehicle_helisetai( var_2.origin, undefined, undefined, undefined, var_2.script_goalyaw, undefined, var_2.angles[1], 0, 0, 0, 0, 0, 1 ); self waittill( "near_goal" ); self vehicle_setspeed( 15, 5, 5 ); wait( randomfloat( 2 ) ); } } trench_tower_hind_leave() { self endon( "death" ); common_scripts\utility::flag_wait( "FLAG_player_a10_lockon" ); self notify( "tower_hind_stop_logic" ); self notify( "stop_firing" ); self clearlookatent(); self vehicle_setspeed( 60, 40, 10 ); var_0 = common_scripts\utility::getstruct( "tower_hind_leave_start", "targetname" ); thread maps\_vehicle_code::vehicle_paths_helicopter( var_0 ); self waittill( "reached_dynamic_path_end" ); self delete(); } tower_hind_targetplayer() { self endon( "death" ); self endon( "tower_hind_stop_logic" ); var_0 = spawn( "script_origin", level.player.origin ); thread maps\homecoming_util::heli_fire_turret( var_0, 1 ); var_1 = common_scripts\utility::getstruct( "tower_hind_back_target", "targetname" ); var_2 = var_1; for (;;) { var_3 = 25; var_4 = 0.05; if ( self.playerintrench == 1 ) { var_5 = var_1.origin; var_3 = 128; var_4 = 0.2; } else if ( !common_scripts\utility::flag( "player_not_doing_strafe" ) ) var_5 = var_2; else { var_5 = level.player.origin + ( 0, 0, 30 ); level.player dodamage( 20, level.player.origin ); } var_2 = var_5; var_6 = maps\homecoming_util::return_point_in_circle( var_5, var_3 ); var_0.origin = var_6; wait( var_4 ); } } trench_beach_axis_ambient() { thread maps\homecoming_util::set_mortar_on( 5 ); var_0 = getentarray( "trench_beach_ambient_drones", "targetname" ); common_scripts\utility::array_thread( var_0, maps\homecoming_beach::bunker_enemy_cover_drones, "beach_ambient_stop", "beach_ambient_enemy_drones" ); common_scripts\utility::flag_clear( "FLAG_stop_trench_beach_runners" ); var_1 = getentarray( "trench_beach_ambient_runners", "targetname" ); maps\_utility::array_spawn_function( var_1, maps\homecoming_util::hovercraft_drone_default ); var_2 = [ "run", "run_n_gun" ]; var_3 = [ 2, 5 ]; var_1 thread maps\homecoming_drones::drone_infinite_runners( "FLAG_stop_trench_beach_runners", var_3, var_2, undefined, undefined, 10 ); var_1 = getentarray( "trench_beach_ambient_runners2", "targetname" ); maps\_utility::array_spawn_function( var_1, maps\homecoming_util::hovercraft_drone_default ); var_4 = [ 5, 8 ]; var_1 thread maps\homecoming_drones::drone_infinite_runners( "FLAG_stop_trench_beach_runners", var_3, var_2, undefined, var_4, 10 ); var_5 = common_scripts\utility::getstructarray( "trench_beach_ambient_fire", "targetname" ); foreach ( var_7 in var_5 ) thread maps\homecoming_util::ambient_smallarms_fire( var_7, "beach_ambient_stop" ); if ( isdefined( level.trench_beach_hovercrafts ) ) common_scripts\utility::array_thread( level.trench_beach_hovercrafts, maps\homecoming_util::hovercraft_deploy_smoke ); } trench_beach_axis_ambient_off() { level notify( "beach_ambient_stop" ); common_scripts\utility::flag_set( "FLAG_stop_trench_beach_runners" ); var_0 = maps\homecoming_util::get_ai_array( "beach_ambient_enemy_drones" ); common_scripts\utility::array_thread( var_0, maps\homecoming_util::delete_safe ); maps\_utility::array_notify( level.trench_beach_hovercrafts, "stop_deploying_smoke" ); } trench_beach_ambient_hovercrafts_on() { common_scripts\utility::array_call( level.trench_beach_hovercrafts, ::show ); } trench_beach_ambient_hovercrafts_off() { level endon( "stop_beach_ambient_switch" ); for (;;) { foreach ( var_1 in level.trench_beach_hovercrafts ) { if ( var_1 maps\homecoming_util::parameters_check( "donthide" ) ) continue; var_1 hide(); } common_scripts\utility::flag_wait( "player_inside_a10" ); common_scripts\utility::array_call( level.trench_beach_hovercrafts, ::show ); common_scripts\utility::flag_waitopen( "player_inside_a10" ); } } trench_beach_allies_ambient() { var_0 = getentarray( "trench_beach_ally_drones", "targetname" ); var_1 = []; foreach ( var_3 in var_0 ) { var_4 = var_3 maps\_utility::spawn_ai(); var_4 maps\_utility::magic_bullet_shield(); if ( var_3 maps\homecoming_util::noteworthy_check( "animate_on_path" ) ) { var_4.weaponsound = "drone_r5rgp_fire_npc"; var_4 thread maps\homecoming_drones::drone_animate_on_path(); } var_4 maps\homecoming_util::set_ai_array( "beach_ambient_ally_drones" ); var_1 = common_scripts\utility::array_add( var_1, var_4 ); } thread maps\homecoming_util::set_mortar_on( 17 ); } trench_beach_allies_ambient_off() { var_0 = maps\homecoming_util::get_ai_array( "beach_ambient_ally_drones" ); common_scripts\utility::array_thread( var_0, maps\homecoming_util::delete_safe ); level notify( "stop_mortars 17" ); } bottom_tower_enemies() { var_0 = getentarray( "tower_bottom_enemies", "targetname" ); var_1 = maps\_utility::array_spawn( var_0 ); for ( var_2 = gettime(); !common_scripts\utility::flag( "TRIGFLAG_player_entering_tower" ) && var_1.size > 2; var_1 = maps\_utility::array_removedead_or_dying( var_1 ) ) wait 0.1; while ( gettime() - var_2 < 5000 ) wait 0.1; common_scripts\utility::flag_set( "FLAG_hesh_move_through_tower" ); var_3 = getnodearray( "tower_top_runner_nodes", "targetname" ); foreach ( var_6, var_5 in var_1 ) { wait( randomfloatrange( 0, 0.8 ) ); if ( !isdefined( var_5 ) || !isalive( var_5 ) ) continue; var_5.ignoreall = 1; var_5.goalradius = 56; var_5 setgoalnode( var_3[var_6] ); } var_7 = getent( "tower_bottom_enemies_volume", "targetname" ); while ( var_1.size > 0 ) { wait 0.1; var_1 = maps\_utility::array_removedead_or_dying( var_1 ); foreach ( var_5 in var_1 ) { if ( !var_5 istouching( var_7 ) ) continue; if ( level.player maps\_utility::player_can_see_ai( var_5 ) ) continue; var_5 delete(); } } } top_tower_enemies() { self endon( "death" ); self.ignoreall = 1; self.ignoreme = 1; var_0 = self.health; self.health = 2; maps\_utility::disable_long_death(); thread maps\homecoming_util::waittill_stealth_notify(); maps\_utility::add_wait( common_scripts\utility::flag_wait, "TRIGFLAG_alert_tower_enemies" ); level maps\_utility::add_wait( maps\_utility::waittill_msg, "stealth_event_notify" ); maps\_utility::do_wait_any(); wait( randomfloatrange( 0.4, 0.8 ) ); self stopanimscripted(); self.animspot notify( "stop_loop" ); self notify( "stop_loop" ); self notify( "stop_fake_behavior" ); self.ignoreall = 0; self.ignoreme = 0; self.health = var_0; }