iw6-scripts/maps/homecoming_trench.gsc
2024-02-13 13:20:49 +01:00

1406 lines
51 KiB
Plaintext

// 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;
}