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

2312 lines
85 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
retreat_spawn_functions()
{
maps\_utility::array_spawn_function_targetname( "tower_hesco_guys", ::tower_entrance_hesco_guys );
maps\_utility::array_spawn_function_targetname( "tower_entrance_attackers", ::tower_entrance_attackers_think );
maps\_utility::array_spawn_function_noteworthy( "tower_retreaters", ::tower_retreaters );
maps\_utility::array_spawn_function_targetname( "tower_nh90_guys", ::tower_nh90_guys );
maps\_utility::array_spawn_function_noteworthy( "elias_street_dead_runners", ::elias_street_dead_runners );
maps\_utility::array_spawn_function_targetname( "tower_courtyard_advancing_mid_flooders", ::tower_courtyard_advancing_mid_flooders );
getent( "elias_street_artemis", "targetname" ) maps\_utility::add_spawn_function( ::elias_street_artemis );
maps\_utility::array_spawn_function_targetname( "tower_retreat_hind", ::tower_retreat_hind );
maps\_utility::array_spawn_function_noteworthy( "retreat_hovercraft", ::retreat_hovercraft );
}
tower_retreat_sequence()
{
level.mortarearthquakeradius = 3000;
level.mortarwithinfov = cos( 65 );
level.mortarmininterval = 0.2;
level.mortarmaxinterval = 0.5;
level.nomaxmortardist = undefined;
level.mortar_min_dist = 400;
level.mortar_max_dist = 1000;
level.mortarexcluders = [ level.player, level.hesh ];
common_scripts\utility::flag_wait( "FLAG_start_tower_retreat" );
var_0 = getentarray( "tower_post_explosion_trigs", "script_noteworthy" );
common_scripts\utility::array_thread( var_0, common_scripts\utility::trigger_on );
thread tower_dialogue();
var_1 = maps\_utility::array_spawn( getentarray( "trench_retreat_enemies_1", "targetname" ) );
foreach ( var_3 in var_1 )
{
var_3 maps\homecoming_util::set_ai_array( "tower_entrance_attackers" );
level.mortarexcluders = common_scripts\utility::array_add( level.mortarexcluders, var_3 );
}
level.mortarexcluders = [ level.player, level.hesh ];
thread maps\homecoming_util::set_mortar_on( 16 );
thread tower_entrance_door();
thread tower_sprinker_screeneffect();
thread tower_helicopter_flyover();
thread tower_entrance_fakeshooters();
thread tower_entrance_attackers();
thread tower_hesh_help_wounded();
thread tower_firefighter();
thread tower_dying_guy();
thread tower_pickup_b();
thread maps\homecoming_util::create_dead_guys( "tower_dead_bodies", "TRIGFLAG_tower_entrance" );
thread tower_courtyard_advancing_enemies();
level.player thread maps\_utility::ignore_me_timer( 5 );
thread tower_hesh_wave();
common_scripts\utility::flag_wait( "TRIGFLAG_kill_tower_attackers" );
level notify( "stop_main_friendlies_respawning" );
var_5 = maps\homecoming_util::get_ai_array( "trench_main_friendlies" );
var_5 = common_scripts\utility::array_remove( var_5, level.hesh );
thread maps\homecoming_util::kill_over_time( var_5, 5, 10 );
var_6 = maps\homecoming_util::get_ai_array( "tower_entrance_attackers" );
thread maps\homecoming_util::kill_over_time( var_6, 8, 15 );
common_scripts\utility::flag_wait( "TRIGFLAG_tower_entrance" );
thread maps\homecoming_util::ambient_smallarms_fire( "tower_courtyard_fakefire", "tower_fakefire_stop" );
thread maps\_utility::music_play( "mus_homecoming_tower_battle" );
maps\_utility::array_spawn( getentarray( "tower_retreat_runners", "targetname" ) );
common_scripts\utility::flag_wait( "TRIGFLAG_player_entering_tower" );
maps\_utility::array_spawn( getentarray( "tower_retreat_runners_murdered", "targetname" ) );
maps\_utility::array_spawn( getentarray( "tower_courtyard_enemies", "targetname" ) );
maps\_utility::add_wait( common_scripts\utility::flag_wait, "FLAG_start_retreat_paths" );
maps\_utility::add_wait( maps\homecoming_util::waittill_trigger, "tower_start_mortars" );
maps\_utility::do_wait_any();
level notify( "tower_fakefire_stop" );
thread tower_retreat_mortars();
thread tower_retreat_mortar_kill_player();
var_7 = maps\homecoming_util::get_ai_array( "tower_courtyard_enemies" );
maps\_utility::add_wait( maps\homecoming_util::waittill_trigger, "player_leaving_tower_trig_3" );
maps\_utility::add_wait( common_scripts\utility::flag_wait, "FLAG_start_retreat_paths" );
maps\_utility::do_wait_any();
if ( !common_scripts\utility::flag( "FLAG_start_retreat_paths" ) )
common_scripts\utility::flag_set( "FLAG_start_retreat_paths" );
maps\homecoming_util::notify_trigger( getent( "player_leaving_tower_trig_3", "targetname" ) );
thread maps\homecoming_util::kill_over_time( maps\homecoming_util::get_ai_array( "tower_courtyard_enemies" ), 0.5, 2 );
level.hesh maps\homecoming_util::ignore_everything();
thread tower_mortar_allow_target_ai();
if ( isdefined( level.hovercrafts ) )
{
level.hovercrafts = common_scripts\utility::array_removeundefined( level.hovercrafts );
foreach ( var_9 in level.hovercrafts )
{
if ( !isdefined( var_9.i_delete_myself ) )
var_9 delete();
}
}
level notify( "stop_tower_flyovers" );
common_scripts\utility::flag_set( "FLAG_start_elias_street" );
}
tower_dialogue()
{
common_scripts\utility::flag_wait( "FLAG_tower_explosion_done" );
wait 1.5;
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_dronecontrolcomein" );
common_scripts\utility::flag_set( "FLAG_start_retreat_friendly_movement" );
common_scripts\utility::flag_wait( "FLAG_hesh_retreat_wave_dialog" );
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_shitcomeonlets" );
common_scripts\utility::flag_wait( "FLAG_tower_entrance_enemies_dead" );
if ( !common_scripts\utility::flag( "TRIGFLAG_tower_entrance" ) )
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_thatsthelastof" );
common_scripts\utility::flag_wait( "TRIGFLAG_tower_entrance" );
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_commandthisisraptor_2" );
maps\_utility::smart_radio_dialogue( "homcom_com_allunitsthisis" );
common_scripts\utility::flag_set( "FLAG_start_retreat_paths" );
for (;;)
{
level.retreat_waver waittill( "starting_anim", var_0 );
if ( var_0 == "payback_escape_forward_wave_right_price" )
break;
}
level.retreat_waver maps\_utility::dialogue_queue( "homcom_us3_fallbackfallback" );
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_comeonadamwe" );
}
tower_sprinker_screeneffect()
{
var_0 = getent( "tower_sprinkler_trigger", "targetname" );
for (;;)
{
var_0 waittill( "trigger" );
var_1 = common_scripts\utility::spawn_tag_origin();
var_1.origin = level.player geteye();
var_1.angles = level.player.origin;
var_1 linktoplayerview( level.player, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ), 1 );
playfxontag( common_scripts\utility::getfx( "sprinkler_screeneffect" ), var_1, "tag_origin" );
while ( level.player istouching( var_0 ) )
wait 0.05;
stopfxontag( common_scripts\utility::getfx( "sprinkler_screeneffect" ), var_1, "tag_origin" );
var_1 delete();
}
}
tower_entrance_door()
{
thread maps\homecoming_util::function_trigger_switch( "tower_mid_trigger", "tower_entrance_trigger", ::tower_entrance_door_close_true, ::tower_entrance_door_close_false, "tower_garage_door_closed" );
var_0 = getent( "trench_tower_garage_entrance", "targetname" );
var_1 = var_0.origin;
var_0 moveto( var_0.origin + ( 0, 0, 75 ), 1, 0.5, 0 );
var_0 connectpaths();
common_scripts\utility::exploder( "tower_entrance_smoke" );
common_scripts\utility::flag_wait_any( "FLAG_tower_entrance_enemies_dead", "TRIGFLAG_player_entering_tower" );
maps\_utility::stop_exploder( "tower_entrance_smoke" );
common_scripts\utility::exploder( "tower_entrance_smoke_light" );
common_scripts\utility::flag_wait( "FLAG_allow_garage_door_close" );
var_2 = cos( 65 );
var_3 = getent( "player_in_tower_check", "targetname" );
for (;;)
{
if ( common_scripts\utility::flag( "FLAG_allow_garage_door_close" ) )
{
if ( !maps\_utility::within_fov_2d( level.player geteye(), level.player.angles, var_0.origin, var_2 ) )
{
if ( !common_scripts\utility::flag( "FLAG_hesh_inside_tower" ) )
{
if ( !maps\_utility::within_fov_2d( level.player geteye(), level.player.angles, level.hesh.origin + ( 0, 0, 80 ), var_2 ) )
break;
}
else
break;
}
}
wait 0.05;
}
maps\_utility::stop_exploder( "tower_entrance_smoke_light" );
var_0.origin = var_1;
var_0 disconnectpaths();
var_4 = common_scripts\utility::getstruct( "hesh_inside_tower_struct", "targetname" );
if ( !common_scripts\utility::flag( "FLAG_hesh_inside_tower" ) )
{
level.hesh forceteleport( var_4.origin, var_4.angles );
level.hesh notify( "stop_path" );
level.hesh thread maps\_utility::follow_path_and_animate( var_4, 0 );
}
level notify( "tower_garage_door_closed" );
level notify( "stop_mortars 16" );
}
tower_entrance_door_close_true()
{
common_scripts\utility::flag_set( "FLAG_allow_garage_door_close" );
}
tower_entrance_door_close_false()
{
common_scripts\utility::flag_clear( "FLAG_allow_garage_door_close" );
}
tower_entrance_attackers()
{
common_scripts\utility::exploder( "tower_entrance_smoke" );
var_0 = getentarray( "tower_entrance_respawners", "targetname" );
foreach ( var_2 in var_0 )
{
var_2 maps\_utility::add_spawn_function( ::tower_entrance_attackers_think );
var_2.spawningguy = 0;
}
level.tower_entrance_respawners = var_0;
var_4 = getent( "tower_attackers_target", "targetname" );
var_5 = maps\_utility::array_spawn( getentarray( "tower_entrance_attackers", "targetname" ) );
foreach ( var_7 in var_5 )
var_7 setentitytarget( var_4 );
common_scripts\utility::flag_wait( "TRIGFLAG_kill_tower_attackers" );
var_9 = getent( "tower_entrance_goalvolume", "targetname" );
var_5 = maps\_utility::array_removedead_or_dying( var_5 );
foreach ( var_7 in var_5 )
{
var_7 clearentitytarget();
var_7 setgoalvolumeauto( var_9 );
}
var_4 delete();
}
tower_entrance_attackers_think()
{
level endon( "tower_attackers_stop" );
level.mortarexcluders = common_scripts\utility::array_add( level.mortarexcluders, self );
maps\homecoming_util::set_ai_array( "tower_entrance_attackers" );
self waittill( "death" );
var_0 = undefined;
for (;;)
{
level.tower_entrance_respawners = common_scripts\utility::array_removeundefined( level.tower_entrance_respawners );
if ( level.tower_entrance_respawners.size == 0 )
return;
var_1 = level.tower_entrance_respawners;
foreach ( var_3 in var_1 )
{
if ( var_3.count == 0 )
continue;
if ( var_3.spawningguy == 1 )
var_1 = common_scripts\utility::array_remove( var_1, var_3 );
}
var_0 = common_scripts\utility::random( level.tower_entrance_respawners );
var_0.spawningguy = 1;
var_5 = var_0 maps\_utility::spawn_ai();
common_scripts\utility::waitframe();
var_0.spawningguy = 0;
if ( isdefined( var_5 ) )
break;
wait 0.2;
}
if ( var_0.count == 0 )
level.tower_entrance_respawners = common_scripts\utility::array_remove( level.tower_entrance_respawners, var_0 );
if ( level.tower_entrance_respawners.size == 0 )
level notify( "tower_attackers_stop" );
}
tower_entrance_fakeshooters()
{
thread maps\homecoming_util::ambient_smallarms_fire( "tower_fake_shootspot", "stop_tower_entrance_shooters", 0.1, 0.2, "mg_tracer" );
common_scripts\utility::flag_wait_any( "FLAG_tower_entrance_enemies_dead", "TRIGFLAG_tower_entrance" );
level notify( "stop_tower_entrance_shooters" );
}
tower_hesh_wave()
{
level.hesh maps\_utility::disable_ai_color();
var_0 = getnode( "hesh_wave_tele_node", "targetname" );
level.hesh maps\_utility::teleport_ai( var_0 );
level.hesh maps\homecoming_util::disable_arrivals_and_exits( 0 );
level.hesh maps\homecoming_util::ignore_everything();
common_scripts\utility::flag_wait( "FLAG_start_retreat_friendly_movement" );
var_1 = common_scripts\utility::getstruct( "tower_hesh_wavespot", "targetname" );
var_1 maps\_anim::anim_reach_solo( level.hesh, "tower_hesh_wave" );
common_scripts\utility::flag_set( "FLAG_hesh_retreat_wave_dialog" );
var_1 maps\_anim::anim_single_solo( level.hesh, "tower_hesh_wave" );
level.hesh maps\_utility::enable_ai_color();
level.hesh maps\homecoming_util::clear_ignore_everything();
maps\homecoming_util::notify_trigger( getent( "post_explosion_movetrig_start", "script_noteworthy" ) );
}
tower_retreaters()
{
var_0 = self.spawner;
self endon( "death" );
maps\_utility::disable_long_death();
self.grenadeawareness = 0;
level.tower_retreaters = common_scripts\utility::array_add( level.tower_retreaters, self );
if ( isdefined( var_0.targetname ) && var_0.targetname == "tower_retreat_runners_murdered" )
{
maps\homecoming_util::disable_arrivals_and_exits();
maps\homecoming_util::ignore_everything();
}
maps\_utility::magic_bullet_shield( 1 );
var_1 = maps\_utility::getent_or_struct_or_node( var_0.script_linkto, "script_linkname" );
thread maps\_utility::follow_path_and_animate( var_1, 0 );
if ( maps\homecoming_util::parameters_check( "sprint" ) )
maps\_utility::enable_sprint();
else if ( maps\homecoming_util::parameters_check( "combat_jog" ) )
maps\_utility::set_generic_run_anim( "combat_jog" );
else if ( maps\homecoming_util::parameters_check( "scared_run" ) )
{
maps\_utility::set_generic_run_anim( "scared_run" );
maps\_utility::set_moveplaybackrate( 0.9 );
}
if ( maps\homecoming_util::parameters_check( "killme" ) )
{
wait( randomfloatrange( 2, 3 ) );
maps\homecoming_util::kill_safe();
}
common_scripts\utility::flag_wait( "FLAG_start_retreat_paths" );
maps\homecoming_util::ignore_everything();
}
tower_hesh_help_wounded()
{
common_scripts\utility::flag_wait_any( "FLAG_tower_entrance_enemies_dead", "TRIGFLAG_tower_entrance" );
var_0 = getent( "tower_inside_wounded_hesh", "targetname" );
var_1 = var_0 maps\_utility::spawn_ai();
var_1.animname = "wounded";
var_2 = common_scripts\utility::getstruct( var_0.target, "targetname" );
var_2 thread maps\_anim::anim_generic_loop( var_1, "tower_pickup_wounded_idle" );
var_3 = getnode( "hesh_retreat_path", "targetname" );
level.hesh thread maps\_utility::follow_path_and_animate( var_3, 0 );
level.hesh maps\homecoming_util::ignore_everything();
thread maps\homecoming_util::func_waittill_msg( level.hesh, "at_tower_node", maps\homecoming_util::clear_ignore_everything );
for (;;)
{
level.hesh waittill( "starting_anim", var_4 );
if ( var_4 == "tower_pickup_soldier" )
break;
}
var_2 notify( "stop_loop" );
var_1 maps\_utility::anim_stopanimscripted();
var_2 maps\_anim::anim_generic_run( var_1, "tower_pickup_wounded" );
var_5 = common_scripts\utility::getstruct( var_0.script_linkto, "script_linkname" );
var_1 thread maps\_utility::follow_path_and_animate( var_5, 0 );
var_1 maps\homecoming_util::ignore_everything();
}
tower_pickup_b()
{
common_scripts\utility::flag_wait( "TRIGFLAG_tower_entrance" );
var_0 = getentarray( "tower_pickup_2_guys", "targetname" );
var_1 = undefined;
var_2 = undefined;
var_3 = undefined;
foreach ( var_5 in var_0 )
{
var_6 = var_5 maps\_utility::spawn_ai();
var_6.movestruct = var_5 maps\homecoming_util::get_linked_struct();
var_6 maps\_utility::magic_bullet_shield();
var_6 maps\homecoming_util::ignore_everything();
if ( var_5 maps\homecoming_util::parameters_check( "wounded" ) )
{
var_2 = var_6;
var_1 = common_scripts\utility::getstruct( var_5.target, "targetname" );
level.tower_retreaters = common_scripts\utility::array_add( level.tower_retreaters, var_6 );
continue;
}
var_3 = var_6;
}
var_2.animname = "wounded";
var_3.animname = "helper";
level.retreat_waver = var_2;
var_8 = [ var_2, var_3 ];
var_1 maps\_anim::anim_first_frame( var_8, "tower_pickup_b" );
while ( !maps\_utility::player_looking_at( var_1.origin ) )
wait 0.05;
var_1 maps\_anim::anim_single_run( var_8, "tower_pickup_b" );
foreach ( var_6 in var_8 )
var_6 thread maps\_utility::follow_path_and_animate( var_6.movestruct, 0 );
var_2.animname = "generic";
var_3 waittill( "path_end_reached" );
playfxontag( common_scripts\utility::getfx( "headshot_blood" ), var_3, "j_head" );
var_3 maps\homecoming_util::kill_safe();
}
tower_dying_guy()
{
common_scripts\utility::flag_wait( "TRIGFLAG_tower_entrance" );
var_0 = getent( "tower_dying_guy", "targetname" );
var_1 = var_0 maps\_utility::spawn_ai();
var_1.animname = "cougher";
var_1 maps\_utility::magic_bullet_shield();
var_2 = var_0 maps\homecoming_util::get_linked_struct();
var_2 thread maps\_anim::anim_single_solo( var_1, "tower_coughing_death" );
common_scripts\utility::waitframe();
var_2 maps\_anim::anim_set_time( [ var_1 ], "tower_coughing_death", 0.2 );
var_2 maps\_anim::anim_set_rate_single( var_1, "tower_coughing_death", 0 );
while ( !maps\_utility::player_looking_at( var_1 gettagorigin( "j_head" ) ) )
wait 0.05;
var_2 maps\_anim::anim_set_rate_single( var_1, "tower_coughing_death", 1 );
wait 5.6;
var_2 maps\_anim::anim_set_rate_single( var_1, "tower_coughing_death", 0 );
var_1 maps\homecoming_drones::drone_setname( "" );
var_1 notsolid();
}
tower_firefighter()
{
common_scripts\utility::flag_wait( "TRIGFLAG_tower_entrance" );
var_0 = getent( "tower_firefighter", "targetname" );
var_1 = var_0 maps\_utility::spawn_ai();
var_1 maps\_utility::magic_bullet_shield();
var_1.animname = "firefighter";
var_2 = maps\_utility::spawn_anim_model( "extinguisher" );
var_3 = [ var_2, var_1 ];
var_4 = common_scripts\utility::getstruct( var_0.target, "targetname" );
var_4 thread maps\_anim::anim_loop( var_3, "extinguisher_loop" );
var_2 thread maps\homecoming_util::playloopingfx( "extinguisher_spray", 0.1, undefined, "tag_fx", 1 );
var_5 = spawn( "script_origin", var_2.origin );
var_5 linkto( var_2 );
var_5 thread common_scripts\utility::play_loop_sound_on_entity( "scn_home_fire_extinguisher" );
common_scripts\utility::flag_wait( "FLAG_start_retreat_paths" );
var_2 notify( "stop_looping_fx" );
var_4 notify( "stop_loop" );
var_5 delete();
var_4 maps\_anim::anim_single( var_3, "extinguisher_out" );
var_6 = var_0 maps\homecoming_util::get_linked_struct();
var_1 maps\_utility::follow_path_and_animate( var_6, 0 );
var_1 maps\homecoming_util::kill_safe();
common_scripts\utility::flag_wait( "TRIGFLAG_player_leaving_tower_parking_area" );
var_2 delete();
}
tower_explosion_guy()
{
maps\_utility::add_wait( maps\homecoming_util::waittill_trigger, "tower_explosion_guy_trigger" );
maps\_utility::do_wait_any();
var_0 = getent( "tower_explosion_guy", "script_noteworthy" );
var_1 = var_0 maps\homecoming_util::get_linked_struct();
var_2 = var_0 maps\_utility::spawn_ai();
var_3 = common_scripts\utility::getstruct( "tower_door_explosion_spot", "targetname" );
var_4 = anglestoforward( var_3.angles );
playfx( common_scripts\utility::getfx( "vfx_hallway_explosion" ), var_3.origin, var_4 );
var_5 = getentarray( "tower_interior_doors", "targetname" );
foreach ( var_7 in var_5 )
{
var_7.originalangles = var_7.angles;
if ( var_7 maps\homecoming_util::parameters_check( "left" ) )
{
var_7 rotateto( var_7.angles + ( 0, -95, 0 ), 0.15 );
continue;
}
var_7 rotateto( var_7.angles + ( 0, 90, 0 ), 0.15 );
}
thread common_scripts\utility::play_sound_in_space( "artillery_explosion", var_1.origin );
var_1 thread maps\_anim::anim_generic( var_2, "tower_explosion_death" );
wait 0.15;
foreach ( var_7 in var_5 )
{
var_10 = undefined;
if ( var_7 maps\homecoming_util::parameters_check( "left" ) )
var_10 = var_7.originalangles + ( 0, randomintrange( -10, 0 ), 0 );
else
var_10 = var_7.originalangles + ( 0, randomintrange( 0, 10 ), 0 );
var_7 rotateto( var_10, randomfloatrange( 0.75, 1 ), 0, 0.5 );
}
wait 0.85;
var_2.allowdeath = 1;
var_2.a.nodeath = 1;
var_2 kill();
}
tower_broken_support()
{
var_0 = getent( "tower_broken_support", "targetname" );
common_scripts\utility::flag_wait( "TRIGFLAG_player_entering_tower" );
earthquake( 0.3, 0.8, var_0.origin, 800 );
wait 0.15;
var_0 rotateto( var_0.angles + ( 0, 0, 17 ), 0.65, 0.6 );
var_0 waittill( "movedone" );
var_0 rotateto( var_0.angles + ( 0, 0, -5 ), 0.65, 0.6 );
}
tower_inside_hurt_guys()
{
var_0 = getentarray( "tower_inside_hurt_guys", "targetname" );
var_1 = [];
foreach ( var_3 in var_0 )
{
var_4 = var_3 maps\homecoming_util::get_linked_struct();
var_5 = var_3 maps\_utility::spawn_ai();
var_5 maps\_utility::gun_remove();
var_5 maps\_utility::magic_bullet_shield( 1 );
var_5.animname = "generic";
var_5 thread maps\_anim::anim_generic_loop( var_5, "HC_wounded_D" );
var_1 = common_scripts\utility::array_add( var_1, var_5 );
}
common_scripts\utility::flag_wait( "TRIGFLAG_player_entering_tower" );
var_7 = getentarray( "tower_inside_hurt_guys_helper", "targetname" );
var_8 = [];
foreach ( var_3 in var_7 )
{
var_5 = var_3 maps\_utility::spawn_ai();
var_5 maps\homecoming_util::ignore_everything();
var_5 maps\_utility::magic_bullet_shield( 1 );
var_8 = common_scripts\utility::array_add( var_8, var_5 );
}
common_scripts\utility::flag_wait( "TRIGFLAG_player_leaving_tower_parking_area" );
maps\_utility::array_delete( var_8 );
maps\_utility::array_delete( var_1 );
}
tower_helicopter_flyover()
{
level endon( "stop_tower_flyovers" );
common_scripts\utility::flag_wait( "TRIGFLAG_player_entering_tower" );
var_0 = getentarray( "tower_flyover_choppers", "targetname" );
for (;;)
{
var_1 = 0;
var_2 = undefined;
foreach ( var_4 in var_0 )
{
var_5 = 0;
if ( isdefined( var_4.script_wait ) )
var_5 = var_4.script_wait;
if ( var_5 > var_1 )
var_1 = var_5;
maps\_utility::delaythread( var_5, ::elias_street_helicopter_spawn, var_4, undefined );
}
wait( var_1 + randomfloatrange( 1, 3 ) );
}
}
tower_retreat_hind()
{
self waittill( "missile_fired", var_0 );
var_0 waittill( "death" );
level.retreat_artemis notify( "death" );
level.retreat_artemis maps\_vehicle::godoff();
}
tower_nh90_guys()
{
self endon( "death" );
self waittill( "jumpedout" );
var_0 = getent( "tower_front_center_goalvolume", "targetname" );
self setgoalvolumeauto( var_0 );
}
tower_retreat_mortars()
{
level endon( "stop_tower_retreat_mortars" );
var_0 = level.tower_courtyard_mortars;
var_1 = getent( "tower_courtyard_mortar_volume", "targetname" );
var_2 = cos( 50 );
var_3 = cos( 35 );
var_4 = squared( 200 );
var_5 = squared( 700 );
var_6 = 1;
level.tower_mortars_target_ai = 0;
var_7 = 0;
var_8 = var_0;
for (;;)
{
var_9 = anglestoforward( level.player.angles );
var_10 = level.player.origin + var_9 * 150;
common_scripts\utility::play_sound_in_space( "mortar_incoming", var_10 );
var_11 = undefined;
if ( level.tower_mortars_target_ai == 1 && var_7 < 3 )
{
level.tower_retreaters = maps\_utility::array_removedead_or_dying( level.tower_retreaters );
level.tower_retreaters = common_scripts\utility::array_randomize( level.tower_retreaters );
foreach ( var_13 in level.tower_retreaters )
{
if ( !var_13 istouching( var_1 ) )
continue;
if ( maps\_utility::within_fov_2d( level.player geteye(), level.player.angles, var_13.origin, var_2 ) )
{
var_14 = distance2dsquared( level.player.origin, var_13.origin );
if ( var_14 > var_4 && var_14 < var_5 )
{
var_11 = var_13;
var_7++;
var_6 = 1;
break;
}
}
}
}
if ( !isdefined( var_11 ) )
{
var_8 = common_scripts\utility::array_randomize( var_8 );
var_16 = [];
foreach ( var_18 in var_8 )
{
var_14 = distance2dsquared( level.player.origin, var_18.origin );
if ( var_14 > var_4 && var_14 < var_5 )
var_16 = common_scripts\utility::array_add( var_16, var_18 );
}
foreach ( var_18 in var_16 )
{
var_21 = maps\homecoming_util::get_fov_2d( level.player geteye(), level.player.angles, var_18.origin );
if ( var_21 >= var_2 )
{
if ( !common_scripts\utility::flag( "FLAG_start_retreat_paths" ) )
{
if ( var_3 <= var_21 )
continue;
}
var_11 = var_18;
break;
}
}
}
var_23 = undefined;
if ( !isdefined( var_11 ) )
{
var_23 = sortbydistance( var_8, level.player.origin );
foreach ( var_18 in var_23 )
{
if ( !common_scripts\utility::flag( "FLAG_start_retreat_paths" ) )
{
var_21 = maps\homecoming_util::get_fov_2d( level.player geteye(), level.player getplayerangles(), var_18.origin );
if ( var_3 <= var_21 )
continue;
}
var_14 = distance2dsquared( level.player.origin, var_18.origin );
if ( var_14 > var_4 )
{
var_11 = var_18;
break;
}
}
}
if ( !isdefined( var_11 ) )
var_11 = var_23[var_23.size - 1];
if ( !isai( var_11 ) )
var_7 = 0;
tower_retreat_mortars_hit( var_11 );
var_8 = common_scripts\utility::array_remove( var_0, var_11 );
wait( randomfloatrange( 0.2, 0.6 ) );
}
}
tower_retreat_mortars_hit( var_0 )
{
var_1 = var_0.origin;
if ( isai( var_0 ) )
{
if ( isdefined( var_0.magic_bullet_shield ) && var_0.magic_bullet_shield == 1 )
var_0 maps\_utility::stop_magic_bullet_shield();
var_0 maps\homecoming_util::clear_ignore_everything();
var_0 dodamage( 99999, var_1, var_0, var_0, "MOD_EXPLOSIVE" );
}
if ( level.player.health > 30 && common_scripts\utility::flag( "FLAG_start_retreat_paths" ) )
radiusdamage( var_1, 700, 25, 12.5 );
playfx( common_scripts\utility::getfx( "mortar_sm" ), var_1 );
playrumbleonposition( "artillery_rumble", var_1 );
earthquake( 0.65, 0.8, var_1, 700 );
thread common_scripts\utility::play_sound_in_space( "mortar_explosion_dirt", var_1 );
}
tower_retreat_mortar_kill_player()
{
var_0 = getent( "tower_courtyard_mortar_volume", "targetname" );
common_scripts\utility::flag_wait( "TRIGFLAG_player_leaving_tower_parking_area" );
maps\_utility::add_wait( maps\homecoming_util::waittill_trigger, "elias_street_trig_1" );
maps\_utility::add_wait( maps\_utility::timeout, 10 );
maps\_utility::do_wait_any();
level notify( "stop_tower_retreat_mortars" );
level.mortarearthquakeradius = 3000;
level.mortarwithinfov = cos( 35 );
level.mortarmininterval = 0.2;
level.mortarmaxinterval = 0.5;
level.nomaxmortardist = 1;
level.mortarexcluders = [ level.hesh ];
thread maps\homecoming_util::set_mortar_on( 15 );
for (;;)
{
while ( !level.player istouching( var_0 ) )
wait 0.05;
wait 2;
if ( level.player istouching( var_0 ) )
{
level.player maps\_utility::play_sound_on_entity( "mortar_incoming" );
thread common_scripts\utility::play_sound_in_space( "mortar_explosion_dirt", level.player.origin );
playfx( common_scripts\utility::getfx( "mortar_sm" ), level.player.origin );
wait 0.1;
radiusdamage( level.player.origin, 99999, 99999, 99999 );
return;
}
}
}
tower_mortar_allow_target_ai()
{
wait 3;
level.tower_mortars_target_ai = 1;
}
tower_entrance_hesco_guys()
{
var_0 = self.spawner;
var_1 = var_0 maps\homecoming_util::get_linked_struct();
var_2 = self;
var_2.grenadeawareness = 0;
var_2.badplaceawareness = 0;
var_1 thread maps\_anim::anim_generic( var_2, "traverse_stepup_52" );
maps\homecoming_util::set_ai_array( "tower_entrance_attackers" );
}
tower_vista_retreat_tank()
{
self.firetime = [];
self.firetime[0] = 0.5;
self.firetime[1] = 1;
var_0 = common_scripts\utility::getstruct( self.script_linkto, "script_linkname" );
self setturrettargetvec( var_0.origin );
common_scripts\utility::flag_wait( "FLAG_player_leaving_tower" );
maps\_vehicle::gopath( self );
}
tower_ally_retreaters_wave1()
{
level endon( "stop_tower_ally_retreaters_wave1" );
var_0 = getentarray( "tower_exit_ally_retreater", "targetname" );
foreach ( var_2 in var_0 )
{
var_3 = var_2 maps\_utility::spawn_ai();
var_4 = common_scripts\utility::getstruct( var_2.target, "targetname" );
var_3 thread maps\homecoming_util::move_on_path( var_4, 1 );
common_scripts\utility::waitframe();
}
}
tower_courtyard_advancing_enemies()
{
var_0 = getent( "tower_exit_enemy_goalvolume_mid", "targetname" );
var_1 = getent( "tower_front_center_goalvolume", "targetname" );
var_2 = getent( "tower_courtyard_front_goalvolume", "targetname" );
level.tower_enemies_volume = var_0;
common_scripts\utility::flag_wait( "TRIGFLAG_start_tower_advancing_enemies" );
maps\_spawner::flood_spawner_scripted( getentarray( "tower_courtyard_advancing_mid_flooders", "targetname" ) );
maps\_spawner::flood_spawner_scripted( getentarray( "tower_courtyard_advancing_top_flooders", "targetname" ) );
common_scripts\utility::flag_wait( "TRIGFLAG_player_end_elias_street" );
maps\_spawner::killspawner( 1099 );
maps\_utility::array_delete( maps\homecoming_util::get_ai_array( "tower_enemy_advancers" ) );
}
tower_courtyard_advancing_mid_flooders()
{
self endon( "death" );
for (;;)
{
self setgoalvolumeauto( level.tower_enemies_volume );
level waittill( "advancers_new_goalvolume" );
}
}
retreat_hovercraft()
{
self.i_delete_myself = 1;
common_scripts\utility::flag_wait( "TRIGFLAG_player_entering_tower" );
maps\homecoming_util::hovercraft_delete();
}
elias_street_sequence()
{
common_scripts\utility::flag_wait( "FLAG_start_elias_street" );
thread maps\_utility::autosave_by_name( "elias_street" );
common_scripts\utility::exploder( "elias_entrance_smoke_start" );
thread elias_street_dialogue();
thread green_house_ladder();
thread elias_house_window_explosion();
thread elias_street_helicopter_flyover();
thread dog_reunite();
maps\homecoming_util::waittill_trigger( "elias_street_trig_1" );
common_scripts\utility::flag_set( "FLAG_player_at_elias_street" );
thread maps\homecoming_util::ambient_smallarms_fire( "elias_street_fakefire", "elias_street_fakefire_stop", 0.09, 0.2 );
maps\_utility::add_wait( common_scripts\utility::flag_wait, "elias_street_heli_unload" );
maps\_utility::add_wait( maps\homecoming_util::waittill_trigger, "elias_street_flee_guys_trig" );
maps\_utility::do_wait_any();
thread maps\homecoming_util::player_push_quad( ( -1328, 10844, 148 ), ( -1280, 11244, 292 ), ( 0, 0, 0 ), "whatever" );
thread elias_street_dragging_wounded();
thread elias_street_flee_guys_enemies();
common_scripts\utility::array_thread( getentarray( "elias_street_scared_runners", "targetname" ), ::elias_street_flee_guys );
common_scripts\utility::flag_wait( "FLAG_elias_street_ground_enemies" );
var_0 = maps\homecoming_util::get_ai_array( "elias_street_street_allies" );
thread maps\homecoming_util::kill_over_time( var_0, 5, 15, 1 );
var_1 = maps\homecoming_util::get_ai_array( "elias_street_enemies" );
maps\_utility::waittill_dead_or_dying( var_1, var_1.size - 2 );
common_scripts\utility::flag_wait( "FLAG_dog_reunite_done" );
level.hesh maps\_utility::set_ignoresuppression( 1 );
level.hesh.grenadeawareness = 0;
level.hesh thread maps\homecoming_util::heroes_move( "movespot_elias_street_3" );
var_1 = maps\homecoming_util::get_ai_array( "elias_street_enemies" );
var_2 = common_scripts\utility::getclosest( level.dog.origin, var_1 );
if ( isdefined( var_2 ) )
{
common_scripts\utility::flag_set( "FLAG_elias_street_cairo_attack" );
level.dog setgoalentity( var_2 );
level.dog setdogattackradius( 512 );
level.dog.meleealwayswin = 1;
}
var_1 = maps\homecoming_util::get_ai_array( "elias_street_enemies" );
maps\_utility::waittill_dead_or_dying( var_1, var_1.size );
level.hesh maps\_utility::set_ignoresuppression( 0 );
common_scripts\utility::flag_set( "FLAG_start_elias_house" );
}
crack_exploder_test()
{
for (;;)
{
var_0 = common_scripts\utility::spawn_tag_origin();
var_0.origin = level.player.origin;
var_0.angles = level.player.angles;
playfxontag( common_scripts\utility::getfx( "vfx_ceiling_cracks" ), var_0, "tag_origin" );
wait 3;
stopfxontag( common_scripts\utility::getfx( "vfx_ceiling_cracks" ), var_0, "tag_origin" );
var_0 delete();
iprintlnbold( "off" );
wait 3;
}
}
elias_street_dialogue()
{
common_scripts\utility::flag_wait( "FLAG_player_at_elias_street" );
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_overlordraptor21have" );
common_scripts\utility::flag_wait( "FLAG_dog_reunite_started" );
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_theresriley" );
common_scripts\utility::flag_wait( "FLAG_hesh_at_riley" );
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_rileycmonboy" );
common_scripts\utility::flag_wait( "FLAG_cairo_reunite_complete" );
if ( !common_scripts\utility::flag( "FLAG_elias_street_cairo_attack" ) && !common_scripts\utility::flag( "TRIGFLAG_player_end_elias_street" ) )
{
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_enemiesendofthe" );
wait 0.2;
var_0 = maps\homecoming_util::get_ai_array( "elias_street_street_allies" );
var_1 = maps\homecoming_util::getclosest2d( level.player.origin, var_0 );
if ( isdefined( var_1 ) )
var_1 maps\_utility::play_sound_on_tag( "homcom_us1_wegotenemiesfast", "j_head" );
else
level.hesh maps\_utility::play_sound_on_tag( "homcom_us1_wegotenemiesfast", "j_head" );
level.hesh maps\_utility::dialogue_queue( "homcom_hqr_sorryraptor21nothing" );
}
common_scripts\utility::flag_wait( "FLAG_elias_street_cairo_attack" );
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_cairogo" );
}
elias_street_artemis()
{
maps\_vehicle::godon();
thread maps\homecoming_util::artemis_think();
level.retreat_artemis = self;
}
elias_house_window_explosion()
{
maps\homecoming_util::waittill_trigger( "elias_house_windows_explosion" );
var_0 = getglass( "house_glass_1" );
var_1 = getglassarray( "house_glass_2" );
common_scripts\utility::exploder( "house_window_smash" );
var_2 = anglestoforward( ( 0, 0, 0 ) );
destroyglass( var_0, var_2 );
foreach ( var_4 in var_1 )
common_scripts\utility::noself_delaycall( 0.1, ::destroyglass, var_4, var_2 );
common_scripts\utility::flag_wait( "FLAG_garage_door_closed" );
maps\_utility::stop_exploder( "house_window_smash" );
}
green_house_ladder()
{
maps\homecoming_util::waittill_trigger( "green_house_ladder_guy_trig" );
var_0 = getent( "green_house_ladder_spawner", "targetname" );
var_1 = var_0 maps\_utility::spawn_ai();
var_2 = common_scripts\utility::getstruct( var_0.target, "targetname" );
var_2 maps\_anim::anim_generic_reach( var_1, "ladder_climbon" );
var_2 thread maps\_anim::anim_generic( var_1, "ladder_climbon" );
var_3 = var_0 maps\_utility::spawn_ai();
var_3.animname = "generic";
var_3 hide();
var_4 = common_scripts\utility::getstruct( var_2.target, "targetname" );
var_4 thread maps\_anim::anim_generic( var_3, "ladder_slide" );
common_scripts\utility::waitframe();
var_3 setanimtime( maps\_utility::getanim_generic( "ladder_slide" ), 0.17 );
thread maps\_anim::anim_set_rate_single( var_3, "ladder_slide", 0 );
wait 0.65;
if ( !isdefined( var_1 ) && !isalive( var_1 ) )
{
var_3 delete();
return;
}
var_3 show();
var_1 delete();
thread maps\_anim::anim_set_rate_single( var_3, "ladder_slide", 0.62 );
wait 1;
thread maps\_anim::anim_set_rate_single( var_3, "ladder_slide", 1 );
wait 1.15;
var_3 stopanimscripted();
var_3 endon( "death" );
var_5 = common_scripts\utility::getstruct( var_3.script_linkto, "script_linkname" );
var_3 thread maps\_utility::follow_path_and_animate( var_5, 0 );
}
#using_animtree("generic_human");
elias_street_dead_runners()
{
var_0 = self.spawner;
maps\_utility::magic_bullet_shield();
self.noragdoll = 1;
self.runanim = level.drone_anims["allies"]["stand"]["run_n_gun"];
self.weaponsound = "drone_r5rgp_fire_npc";
thread maps\homecoming_drones::drone_fire_randomly_loop();
self.deathanim = common_scripts\utility::random( [ %stand_death_tumbleback, %stand_death_headshot_slowfall, %stand_death_shoulderback ] );
self waittill( "goal" );
var_1 = [ "j_head", "tag_weapon_chest", "j_SpineUpper", "J_SpineLower" ];
var_2 = common_scripts\utility::random( var_1 );
var_3 = randomintrange( 1, 3 );
for ( var_4 = 0; var_4 < var_3; var_4++ )
{
var_2 = common_scripts\utility::random( var_1 );
var_5 = "body_impact1";
if ( var_2 == "j_head" )
var_5 = "headshot_blood";
playfxontag( common_scripts\utility::getfx( var_5 ), self, var_2 );
}
maps\homecoming_util::kill_safe();
if ( !isdefined( level.elias_street_dead_runners ) )
level.elias_street_dead_runners = 0;
level.elias_street_dead_runners++;
if ( level.elias_street_dead_runners == 3 )
{
wait 0.2;
level notify( "elias_street_fakefire_stop" );
}
}
dog_reunite()
{
common_scripts\utility::flag_init( "dog_at_animspot" );
common_scripts\utility::flag_init( "hesh_at_animspot" );
var_0 = getent( "dog_reunite_marine", "targetname" );
var_1 = common_scripts\utility::getstruct( var_0.target, "targetname" );
var_2 = common_scripts\utility::getstruct( "dog_reunite_spot", "targetname" );
common_scripts\utility::flag_wait( "TRIGFLAG_player_leaving_tower_parking_area" );
var_3 = var_0 maps\_utility::spawn_ai();
level.dog = maps\homecoming_util::dog_spawn();
var_2 thread maps\_anim::anim_loop_solo( level.dog, "attackidle_bark" );
level.dog thread dog_bark( 1 );
maps\homecoming_util::waittill_trigger( "elias_street_start_dog_reunite" );
var_4 = common_scripts\utility::getstruct( "dog_reunite_spot_2", "targetname" );
thread dog_reunite_hesh( var_4 );
var_5 = getent( "dog_reunite_trigger", "targetname" );
for (;;)
{
var_5 waittill( "trigger", var_6 );
if ( var_6 == level.hesh )
break;
}
level.dog notify( "stop_barking" );
var_2 notify( "stop_loop" );
level.dog stopanimscripted();
}
dog_reunite_hesh( var_0 )
{
level.hesh notify( "stop_path" );
var_1 = common_scripts\utility::getstruct( "hesh_dog_reunite_goal_1", "targetname" );
level.hesh setgoalpos( var_1.origin );
level.hesh.goalradius = 56;
level.hesh maps\_utility::enable_sprint();
level.hesh maps\homecoming_util::ignore_everything();
level.hesh maps\homecoming_util::disable_arrivals_and_exits();
level.hesh maps\_utility::walkdist_zero();
level.hesh waittill( "goal" );
common_scripts\utility::flag_set( "FLAG_dog_reunite_started" );
var_2 = common_scripts\utility::getstruct( "dog_reunite_hesh_corner", "targetname" );
var_2 maps\_anim::anim_reach_solo( level.hesh, "hesh_dog_reunite_corner" );
common_scripts\utility::flag_set( "FLAG_hesh_at_riley" );
var_2 thread maps\_anim::anim_generic_gravity( level.hesh, "hesh_dog_reunite_corner" );
var_3 = getanimlength( maps\_utility::getanim_generic( "hesh_dog_reunite_corner" ) );
maps\_utility::delaythread( var_3, common_scripts\utility::flag_set, "FLAG_cairo_reunite_complete" );
level.hesh maps\_utility::disable_sprint();
level.hesh maps\homecoming_util::clear_ignore_everything();
level.hesh maps\_utility::walkdist_reset();
wait 0.5;
level.dog thread maps\homecoming_util::move_to_goal( "movespot_elias_street_2" );
level.hesh thread maps\homecoming_util::move_to_goal( "movespot_elias_street_2" );
common_scripts\utility::flag_set( "FLAG_dog_reunite_done" );
}
dog_bark( var_0, var_1, var_2 )
{
self endon( "stop_barking" );
self endon( "death" );
if ( !isdefined( var_1 ) )
var_1 = 0.2;
if ( !isdefined( var_2 ) )
var_2 = 0.4;
if ( !isdefined( var_0 ) )
var_0 = 0;
for (;;)
{
if ( var_0 )
maps\_utility::play_sound_on_entity( "anml_dog_bark_attention_npc" );
else
maps\_utility_dogs::dog_bark( "anml_dog_bark_attention_npc" );
wait( randomfloatrange( var_1, var_2 ) );
}
}
dog_whine( var_0, var_1 )
{
self endon( "stop_whining" );
self endon( "death" );
if ( !isdefined( var_0 ) )
var_0 = 0.2;
if ( !isdefined( var_1 ) )
var_1 = 0.4;
for (;;)
{
maps\_utility::play_sound_on_entity( "anml_dog_whine" );
wait( randomfloatrange( var_0, var_1 ) );
}
}
#using_animtree("vehicles");
elias_street_helicopter_flyover()
{
level endon( "stop_street_flyovers" );
maps\homecoming_util::waittill_trigger( "elias_street_flyover" );
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "elias_street_unload_chopper" );
var_0 setanim( %nh90_left_door_open );
var_0 setanim( %nh90_right_door_open );
var_1 = getent( "helicopter_check_volume", "targetname" );
var_2 = getentarray( "elias_street_flyover_choppers", "targetname" );
for (;;)
{
var_3 = 0;
var_4 = undefined;
foreach ( var_6 in var_2 )
{
var_7 = 0;
if ( isdefined( var_6.script_wait ) )
var_7 = var_6.script_wait;
if ( var_7 > var_3 )
var_3 = var_7;
maps\_utility::delaythread( var_7, ::elias_street_helicopter_spawn, var_6, var_1 );
}
wait( var_3 + randomfloatrange( 1, 3 ) );
}
}
elias_street_helicopter_spawn( var_0, var_1 )
{
if ( isdefined( var_1 ) )
{
if ( !level.player istouching( var_1 ) )
{
if ( !common_scripts\utility::flag( "FLAG_garage_door_closed" ) )
return;
}
}
if ( level.player maps\_utility::player_looking_at( var_0.origin ) )
return;
var_2 = var_0 maps\_vehicle::spawn_vehicle_and_gopath();
if ( !var_0 maps\homecoming_util::parameters_check( "engine_on" ) )
var_2 vehicle_turnengineoff();
wait 0.1;
var_2 notify( "stop_kicking_up_dust" );
}
elias_street_flee_guys()
{
var_0 = self;
if ( isdefined( var_0.script_wait ) )
wait( var_0.script_wait );
var_1 = var_0 maps\_utility::spawn_ai();
if ( !isdefined( var_1 ) || !isalive( var_1 ) )
return;
var_1 maps\homecoming_util::ignore_everything();
var_1.ignoreme = 1;
var_1 maps\_utility::magic_bullet_shield();
var_1 maps\_utility::pathrandompercent_zero();
var_2 = common_scripts\utility::getstruct( var_1.target, "targetname" );
if ( var_0 maps\homecoming_util::noteworthy_check( "shoot_behind" ) )
{
var_1 maps\_utility::set_generic_deathanim( "run_death_roll" );
var_2 maps\_anim::anim_generic_reach( var_1, "flee_run_shoot_behind" );
var_2 thread maps\_anim::anim_generic( var_1, "flee_run_shoot_behind" );
wait 1.3;
playfxontag( common_scripts\utility::getfx( "headshot_blood" ), var_1, "j_head" );
var_1 stopanimscripted();
var_1 maps\_utility::stop_magic_bullet_shield();
var_1 maps\_utility::die();
}
else
{
if ( var_0 maps\homecoming_util::parameters_check( "killme" ) )
var_1 maps\_utility::delaythread( randomfloatrange( 0.5, 1 ), maps\homecoming_util::kill_safe );
var_1 setgoalpos( var_2.origin );
var_1.goalradius = 56;
var_1 waittill( "goal" );
var_1 maps\homecoming_util::delete_safe();
}
}
elias_street_flee_guys_enemies()
{
var_0 = getentarray( "street_flee_guys_enemy_spawner", "targetname" );
thread elias_street_flee_guys_enemies_fakeshots( var_0 );
level thread maps\_utility::notify_delay( "stop_fake_street_shots", 2.5 );
wait 2.2;
var_1 = 0;
foreach ( var_3 in var_0 )
{
wait( var_1 );
var_4 = var_3 maps\_utility::spawn_ai();
var_4 maps\homecoming_util::ignore_everything();
var_4 maps\_utility::magic_bullet_shield();
var_4 maps\_utility::delaythread( 1, maps\homecoming_util::clear_ignore_everything );
var_4 maps\_utility::delaythread( 1, maps\_utility::stop_magic_bullet_shield );
var_1 = randomfloatrange( 0.4, 0.6 );
}
common_scripts\utility::flag_set( "FLAG_elias_street_ground_enemies" );
}
elias_street_flee_guys_enemies_fakeshots( var_0 )
{
level endon( "stop_fake_street_shots" );
var_1 = common_scripts\utility::getstruct( "elias_street_shoot_spot", "targetname" );
var_2 = [ "sc2010", "honeybadger" ];
for (;;)
{
var_3 = var_0[randomint( var_0.size )];
var_4 = randomintrange( 6, 8 );
for ( var_5 = 0; var_5 < var_4; var_5++ )
{
var_6 = maps\homecoming_util::return_point_in_circle( var_1.origin, var_1.radius, var_1.height );
var_7 = var_2[randomint( var_2.size )];
magicbullet( var_7, var_3.origin + ( 0, 0, 46 ), var_6 );
wait 0.1;
}
wait( randomfloatrange( 0.3, 0.6 ) );
}
}
#using_animtree("generic_human");
elias_street_dragging_wounded()
{
var_0 = getent( "elias_street_dragger_spawner", "targetname" );
var_1 = common_scripts\utility::getstruct( var_0.script_linkto, "script_linkname" );
var_2 = var_0 maps\_utility::spawn_ai();
var_2.animname = "dragger";
var_2.deathanim = %stand_death_tumbleback;
var_2 maps\_utility::magic_bullet_shield();
var_3 = var_0 maps\_utility::spawn_ai();
var_3.animname = "wounded";
var_3 maps\_utility::magic_bullet_shield();
var_3.deathanim = %airport_civ_dying_groupb_wounded_death;
var_4 = [ var_2, var_3 ];
var_1 thread maps\_anim::anim_single( var_4, "elias_street_drag_wounded_drag" );
foreach ( var_6 in var_4 )
var_6 setanimtime( var_6 maps\_utility::getanim( "elias_street_drag_wounded_drag" ), 0.2 );
var_1 waittill( "elias_street_drag_wounded_drag" );
playfxontag( common_scripts\utility::getfx( "headshot_blood" ), var_2, "j_head" );
foreach ( var_6 in var_4 )
{
var_6.noragdoll = 1;
var_6 maps\_utility::stop_magic_bullet_shield();
var_6 maps\_utility::die();
}
}
elias_house_sequence()
{
common_scripts\utility::flag_wait( "FLAG_start_elias_house" );
thread maps\_utility::autosave_by_name( "elias_street_2" );
maps\_utility::flavorbursts_off();
level.hesh maps\homecoming_util::ignore_everything();
level.dog maps\homecoming_util::ignore_everything();
level.hesh pushplayer( 1 );
level.dog pushplayer( 1 );
level.hesh maps\_utility::pathrandompercent_zero();
level.dog maps\_utility::pathrandompercent_zero();
thread maps\homecoming_util::create_dead_guys( "house_dead_bodies", undefined, "FLAG_elias_house_attack_began" );
thread elias_house_dialogue();
thread elias_house_dog_logic();
var_0 = getent( "elias_house_garage_ai_blocker", "targetname" );
var_0 connectpaths();
var_0 maps\_utility::hide_entity();
var_1 = common_scripts\utility::getstruct( "elias_garage_hesh_spot", "targetname" );
var_1 maps\_anim::anim_reach_solo( level.hesh, "elias_garage_lift" );
common_scripts\utility::flag_set( "FLAG_allow_dog_scratch" );
thread elias_street_advancing_enemies();
var_2 = getent( "elias_house_garage_door", "targetname" );
level.garagedoor = var_2;
var_1 thread maps\_anim::anim_single_solo( level.hesh, "elias_garage_lift" );
getent( "house_downstairs_effects_on", "script_noteworthy" ) notify( "trigger" );
thread maps\homecoming_util::function_trigger_switch( "house_fx_firstfloor_on", "house_fx_secondfloor_on", ::house_firstfloor_exploder, ::house_firstfloor_exploder_off, "elias_house_exploder_switch_off", 1 );
thread maps\homecoming_util::function_trigger_switch( "house_fx_secondfloor_on", "house_fx_firstfloor_on", ::house_secondfloor_exploder, ::house_secondfloor_exploder_off, "elias_house_exploder_switch_off" );
maps\_utility::delaythread( 1.1, common_scripts\utility::flag_set, "FLAG_dont_allow_dog_scratch" );
maps\_utility::delaythread( 2.5, maps\_utility::stop_exploder, "elias_entrance_smoke_start" );
maps\_utility::delaythread( 2.5, common_scripts\utility::exploder, "elias_entrance_smoke" );
wait 2;
level.hesh thread garage_door_logic( var_2 );
var_3 = var_2.origin;
wait 1;
var_1 waittill( "elias_garage_lift" );
var_1 thread maps\_anim::anim_loop_solo( level.hesh, "elias_garage_idle" );
thread garage_door_nag();
common_scripts\utility::flag_set( "FLAG_garage_door_open" );
maps\homecoming_util::waittill_trigger( "elias_house_garage_trig" );
level notify( "player_in_elias_garage" );
var_4 = getent( "elias_house_bottomfloor_check", "targetname" );
while ( !level.dog istouching( var_4 ) )
wait 0.05;
var_0 disconnectpaths();
var_0 maps\_utility::show_entity();
while ( !level.player istouching( var_4 ) )
wait 0.05;
getent( "elias_house_garage_player_blocker", "targetname" ) maps\_utility::show_entity();
var_1 notify( "stop_loop" );
level.hesh maps\_utility::anim_stopanimscripted();
var_1 thread maps\_anim::anim_single_solo_run( level.hesh, "elias_garage_thru" );
level.hesh.garagetag = "j_wrist_ri";
var_2 thread maps\_utility::play_sound_on_entity( "scn_home_garage_close" );
wait 1.6;
level notify( "stop_elias_garage_door_logic" );
var_5 = ( var_3[0], var_3[1], 16 );
var_2 moveto( var_5, 0.2 );
var_2 disconnectpaths();
maps\_utility::stop_exploder( "elias_entrance_smoke" );
level.hesh thread maps\homecoming_util::move_to_goal( "movespot_elias_house_2" );
thread maps\_utility::autosave_by_name( "elias_house" );
common_scripts\utility::flag_set( "FLAG_garage_door_closed" );
common_scripts\utility::flag_set( "FLAG_hesh_inside_elias_house" );
common_scripts\utility::flag_set( "FLAG_stop_elias_street_ambient_retreaters" );
maps\_utility::battlechatter_off( "allies" );
maps\_utility::battlechatter_off( "axis" );
maps\_utility::battlechatter_off( "neutral" );
common_scripts\utility::flag_wait( "TRIGFLAG_player_leaving_elias_garage" );
thread elias_street_advancing_drones();
thread elias_house_lift_rubble_scene();
common_scripts\utility::flag_wait( "TRIGFLAG_player_elias_secondfloor" );
common_scripts\utility::flag_set( "FLAG_start_elias_house_attack" );
}
elias_house_dialogue()
{
common_scripts\utility::flag_wait_all( "TRIGFLAG_player_leaving_elias_garage", "FLAG_garage_dialoge_done" );
wait 0.2;
if ( !common_scripts\utility::flag( "TRIGFLAG_player_elias_secondfloor" ) )
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_upthestairs" );
common_scripts\utility::flag_wait( "FLAG_hesh_dropped_beam" );
level.hesh thread maps\_utility::dialogue_queue( "homcom_hsh_watchout" );
}
garage_door_logic( var_0 )
{
level endon( "stop_elias_garage_door_logic" );
level.hesh.garagetag = "j_wrist_le";
var_1 = self gettagorigin( level.hesh.garagetag )[2];
for (;;)
{
var_2 = var_1;
wait 0.05;
var_1 = self gettagorigin( level.hesh.garagetag );
var_1 = var_1[2];
var_3 = var_1 - var_2;
if ( abs( var_3 ) > 5 )
continue;
var_4 = var_0.origin;
var_0.origin = var_4 + ( 0, 0, var_3 );
}
}
garage_door_nag()
{
level endon( "player_in_elias_garage" );
var_0 = [];
var_0[0] = "homcom_hsh_getinside";
var_0[1] = "homcom_hsh_comeonadamwe";
var_0[2] = "homcom_hsh_adamgetinhere";
var_0[3] = "homcom_hsh_adamweneedto";
var_1 = var_0;
for (;;)
{
var_2 = var_1[randomint( var_1.size )];
level.hesh maps\_utility::dialogue_queue( var_2 );
wait( randomintrange( 4, 7 ) );
var_1 = var_0;
var_1 = common_scripts\utility::array_remove( var_0, var_2 );
}
}
elias_house_dog_logic()
{
if ( !common_scripts\utility::flag( "FLAG_allow_dog_scratch" ) )
{
level.dog thread maps\homecoming_util::move_to_goal( "movespot_elias_street_3" );
level.dog waittill( "goal" );
}
common_scripts\utility::flag_wait( "FLAG_allow_dog_scratch" );
if ( !common_scripts\utility::flag( "FLAG_dont_allow_dog_scratch" ) )
{
var_0 = common_scripts\utility::getstruct( "garage_dog_scratch_spot", "targetname" );
level maps\_utility::add_wait( common_scripts\utility::flag_wait, "FLAG_garage_door_open" );
var_0 maps\_utility::add_wait( maps\_anim::anim_reach_solo, level.dog, "dog_scratch_door" );
maps\_utility::do_wait_any();
if ( common_scripts\utility::flag( "FLAG_garage_door_open" ) )
self notify( "new_anim_reach" );
else
{
level.dog thread maps\_utility::play_sound_on_entity( "scn_home_dog_scratching_door" );
level.dog thread maps\_utility::play_sound_on_entity( "anml_dog_whine" );
var_0 maps\_anim::anim_single_solo( level.dog, "dog_scratch_door" );
}
}
level.dog thread dog_bark();
level.dog thread maps\_utility::notify_delay( "stop_barking", 2 );
var_1 = common_scripts\utility::getstruct( "garage_dog_path", "targetname" );
level.dog thread maps\_utility::follow_path_and_animate( var_1, 0 );
var_2 = getnode( "house_bottom_stairs_dog_node", "targetname" );
common_scripts\utility::flag_wait( "FLAG_dog_allow_teleport" );
var_3 = 0;
var_4 = cos( 65 );
for (;;)
{
wait 0.05;
if ( common_scripts\utility::flag( "FLAG_dog_garage_end_goal" ) )
{
var_3 = 1;
break;
}
if ( common_scripts\utility::flag( "TRIGFLAG_player_leaving_elias_garage" ) )
{
var_3 = 1;
break;
}
if ( common_scripts\utility::within_fov( level.player geteye(), level.player.angles, level.dog.origin, var_4 ) )
continue;
if ( level.player maps\_utility::player_looking_at( level.dog.origin ) )
continue;
break;
}
if ( !var_3 )
{
level.dog notify( "stop_path" );
level.dog maps\_utility::teleport_ai( var_2 );
}
common_scripts\utility::flag_wait( "TRIGFLAG_player_leaving_elias_garage" );
level.dog thread dog_bark();
level.dog thread maps\_utility::notify_delay( "stop_barking", 2 );
var_5 = common_scripts\utility::getstruct( "house_dog_hop1", "targetname" );
var_5 maps\_anim::anim_reach_solo( level.dog, "dog_hop_1" );
level.dog thread dog_whine();
var_5 thread maps\_anim::anim_loop_solo( level.dog, "casualidle" );
if ( !common_scripts\utility::flag( "TRIGFLAG_player_elias_secondfloor" ) )
{
level.dog thread dog_bark();
level.dog thread maps\_utility::notify_delay( "stop_barking", 2 );
}
common_scripts\utility::flag_wait( "FLAG_rubble_scene_started" );
wait 2.5;
level.dog notify( "stop_whining" );
var_5 notify( "stop_loop" );
level.dog thread maps\_utility::play_sound_on_entity( "anml_dog_whine" );
var_5 maps\_anim::anim_single_solo( level.dog, "dog_hop_1" );
level.dog thread dog_whine( 0.4, 1 );
level.dog thread maps\_anim::anim_loop_solo( level.dog, "casualidle" );
common_scripts\utility::flag_wait( "FLAG_hesh_dropped_beam" );
level.dog notify( "stop_whining" );
wait 2;
level.dog thread dog_bark();
var_5 notify( "stop_loop" );
level.dog maps\_utility::anim_stopanimscripted();
level.dog thread elias_house_heroes_delete();
}
#using_animtree("vehicles");
elias_street_advancing_enemies()
{
common_scripts\utility::flag_wait( "TRIGFLAG_player_end_elias_street" );
maps\_spawner::flood_spawner_scripted( getentarray( "elias_street_advancing_enemy_spawner", "targetname" ) );
var_0 = getent( "advancing_enemies_accuracy_high", "targetname" );
var_0 common_scripts\utility::trigger_on();
var_1 = getent( "advancing_enemies_accuracy_low", "targetname" );
var_1 common_scripts\utility::trigger_on();
thread maps\homecoming_util::function_trigger_switch( var_0, var_1, ::elias_street_advancing_accuracy_high, ::elias_street_advancing_accuracy_low, "FLAG_stop_elias_street_ambient_retreaters" );
var_2 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "elias_street_enemy_heli_2" );
var_2 setanim( %nh90_left_door_open );
var_2 setanim( %nh90_right_door_open );
common_scripts\utility::flag_wait( "FLAG_stop_elias_street_ambient_retreaters" );
maps\_spawner::killspawner( 405 );
maps\_utility::array_delete( maps\homecoming_util::get_ai_array( "elias_street_advancing_enemies" ) );
if ( isdefined( var_2 ) )
var_2 delete();
}
elias_street_advancing_accuracy_high()
{
var_0 = maps\homecoming_util::get_ai_array( "elias_street_advancing_enemies" );
foreach ( var_2 in var_0 )
{
var_2.advancer_oldaccuraccy = var_2.baseaccuracy;
var_2 maps\_utility::set_baseaccuracy( 9999 );
var_2.favoriteenemy = level.player;
}
}
elias_street_advancing_accuracy_low()
{
var_0 = maps\homecoming_util::get_ai_array( "elias_street_advancing_enemies" );
foreach ( var_2 in var_0 )
{
if ( isdefined( var_2.advancer_oldaccuraccy ) )
{
var_2 maps\_utility::set_baseaccuracy( var_2.advancer_oldaccuraccy );
var_2.favoriteenemy = undefined;
}
}
}
elias_street_advancing_drones()
{
var_0 = getentarray( "elias_street_advancing_drones", "targetname" );
var_1 = [ "run" ];
var_2 = [ 2.5, 5 ];
common_scripts\utility::array_thread( var_0, maps\homecoming_drones::drone_infinite_runners, "FLAG_elias_house_attack_began", var_2, var_1 );
}
elias_house_lift_rubble_scene()
{
var_0 = common_scripts\utility::getstruct( "elias_house_rubble_lift", "targetname" );
var_1 = getent( "beam_player_blocker", "targetname" );
var_2 = getent( "falling_beam", "targetname" );
var_3 = maps\_utility::spawn_anim_model( "blocker" );
var_2 linkto( var_3, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_4 = common_scripts\utility::getstructarray( "beam_fx_spot", "script_noteworthy" );
var_5 = [];
foreach ( var_7 in var_4 )
{
var_8 = common_scripts\utility::spawn_tag_origin();
var_8.origin = var_7.origin;
var_8.angles = var_7.angles;
var_8 linkto( var_2 );
var_8 thread maps\homecoming_util::playloopingfx( "beam_fire", 0.05, undefined, "tag_origin", 1 );
var_5 = common_scripts\utility::array_add( var_5, var_8 );
}
var_0 maps\_anim::anim_first_frame_solo( var_3, "elais_house_blocker_in" );
var_10 = [ level.hesh, var_3 ];
var_0 maps\_anim::anim_reach_solo( level.hesh, "elais_house_blocker_in" );
common_scripts\utility::flag_set( "FLAG_rubble_scene_started" );
var_11 = cos( 45 );
if ( !common_scripts\utility::flag( "TRIGFLAG_player_elias_secondfloor" ) )
{
var_0 maps\_anim::anim_first_frame( var_10, "elais_house_blocker_in" );
while ( !common_scripts\utility::flag( "TRIGFLAG_player_elias_secondfloor" ) )
{
if ( level.player maps\_utility::player_looking_at( level.hesh gettagorigin( "j_head" ), var_11 ) )
break;
wait 0.05;
}
}
var_12 = 4.5;
thread elias_house_lift_prone_hint( var_12 );
var_1 maps\_utility::delaythread( var_12, maps\_utility::hide_entity );
var_0 thread maps\_anim::anim_single( var_10, "elais_house_blocker_in" );
var_0 maps\_utility::add_wait( maps\_utility::waittill_msg, "elais_house_blocker_in" );
maps\_utility::add_wait( common_scripts\utility::flag_wait, "TRIGFLAG_player_through_beam_blocker" );
maps\_utility::do_wait_any();
if ( !common_scripts\utility::flag( "TRIGFLAG_player_through_beam_blocker" ) )
{
var_0 thread maps\_anim::anim_loop( var_10, "elais_house_blocker_idle" );
common_scripts\utility::flag_wait( "TRIGFLAG_player_through_beam_blocker" );
var_0 notify( "stop_loop" );
}
var_1 maps\_utility::show_entity();
var_0 thread maps\_anim::anim_single( var_10, "elais_house_blocker_out" );
common_scripts\utility::waitframe();
var_0 maps\_anim::anim_set_time( var_10, "elais_house_blocker_out", 0.18 );
thread elias_house_lift_rubble_collapse();
common_scripts\utility::flag_set( "FLAG_hesh_dropped_beam" );
common_scripts\utility::trigger_on( "beam_hurt_trigger", "targetname" );
getent( "house_downstairs_effects_off", "script_noteworthy" ) notify( "trigger" );
getent( "house_topfloor_effects_on", "script_noteworthy" ) notify( "trigger" );
level.hesh thread elias_house_heroes_delete();
common_scripts\utility::flag_wait( "FLAG_elias_house_attack_began" );
maps\_utility::stop_exploder( "beam_drop_fire" );
maps\_utility::array_delete( var_5 );
var_2 unlink();
var_3 delete();
var_2 delete();
}
elias_house_lift_rubble_collapse()
{
var_0 = ( -1305.33, 11798, 258.165 );
thread maps\homecoming_util::earthquake_loop( 0.2, var_0 );
wait 0.2;
level.player notify( "stop_earthquake_loop" );
earthquake( 0.6, 2.5, var_0, 50000 );
level.player playrumbleonentity( "artillery_rumble" );
common_scripts\utility::exploder( "elias_house_beam_collapse" );
common_scripts\utility::exploder( "beam_drop_fire" );
level.player shellshock( "homecoming_attack", 3 );
}
elias_house_lift_prone_hint( var_0 )
{
wait( var_0 );
maps\homecoming_util::waittill_trigger( "elias_house_player_at_beam" );
common_scripts\utility::flag_clear( "FLAG_player_went_prone" );
var_1 = getkeybinding( "+stance" );
var_2 = getkeybinding( "toggleprone" );
var_3 = getkeybinding( "+prone" );
if ( isdefined( var_1 ) && var_1["count"] > 0 )
maps\_utility::display_hint( "prone_hint_hold" );
else if ( isdefined( var_2 ) && var_2["count"] > 0 )
maps\_utility::display_hint( "prone_hint_toggle" );
else if ( isdefined( var_3 ) && var_3["count"] > 0 )
maps\_utility::display_hint( "prone_hint" );
}
elias_house_heroes_delete()
{
var_0 = common_scripts\utility::getstruct( "elias_house_blocker_delete_spot", "targetname" );
maps\_utility::follow_path_and_animate( var_0, 0 );
maps\homecoming_util::delete_safe();
}
#using_animtree("generic_human");
elias_house_attack()
{
level.player endon( "player_knife_failed" );
attack_sound_setup();
common_scripts\utility::flag_wait( "FLAG_start_elias_house_attack" );
thread maps\homecoming_recruits::recruits_dog_spawn();
var_0 = common_scripts\utility::getstruct( "elias_house_attack_sequence", "targetname" );
var_1 = getent( "house_attack_enemy", "targetname" );
var_2 = getent( "start_house_attack_trig", "targetname" );
for (;;)
{
wait 0.05;
if ( !level.player istouching( var_2 ) )
continue;
var_3 = level.player getstance();
if ( var_3 == "prone" )
continue;
if ( elias_house_attack_pangles_check() )
break;
}
level.player allowstand( 1 );
level.player allowcrouch( 0 );
level.player allowprone( 0 );
var_3 = level.player getstance();
while ( var_3 != "stand" )
{
var_3 = level.player getstance();
wait 0.05;
}
common_scripts\utility::flag_set( "FLAG_elias_house_attack_began" );
level.player setclienttriggeraudiozone( "homecoming_upstairs_fight", 0.5 );
thread common_scripts\utility::play_sound_in_space( "scn_home_upstairs_fight", level.player.origin );
maps\_utility::delaythread( 5.5, common_scripts\utility::play_sound_in_space, "scn_home_upstairs_fight_02", level.player.origin );
maps\_utility::music_play( "mus_homecoming_upstairs" );
common_scripts\utility::exploder( "house_ambient_thirdfloor" );
level notify( "stop_street_flyovers" );
var_4 = spawn( "script_model", level.player.origin );
var_4 character\character_elite_pmc_assault_a_black::main();
var_4 useanimtree( #animtree );
var_4.animname = "elite";
level.attacker = var_4;
level.knife = spawn( "script_model", var_4.origin );
level.knife setmodel( "weapon_parabolic_knife" );
level.knife linkto( var_4, "tag_inhand", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_4 thread maps\_utility::play_sound_on_entity( "homcom_fs4_grabthrow" );
var_5 = maps\homecoming_util::dog_spawn();
var_5 maps\_utility::delaythread( 6.0, ::dog_bark, 0, 0.1, 0.2 );
var_5 thread maps\_utility::notify_delay( "stop_barking", 7.5 );
var_6 = getanimlength( var_5 maps\_utility::getanim( "house_attack_grab" ) );
var_5 maps\_utility::delaythread( var_6, maps\homecoming_util::delete_safe );
var_7 = maps\_utility::spawn_anim_model( "player_rig" );
var_8 = [ var_4, var_7, var_5 ];
common_scripts\utility::array_call( var_8, ::hide );
var_0 thread maps\_anim::anim_first_frame( var_8, "house_attack_grab" );
var_9 = common_scripts\utility::spawn_tag_origin();
var_9.origin = var_7.origin;
var_9.angles = var_7.angles;
var_9 linkto( var_7, "tag_player", ( 0, 0, 0 ), ( 0, 0, 0 ) );
maps\homecoming_util::cinematicmode_on( 1 );
if ( level.player ismeleeing() || level.player isthrowinggrenade() )
level.player takeallweapons();
var_9 maps\_utility::lerp_player_view_to_tag( level.player, "tag_origin", 0.15, 1, 0, 0, 0, 0 );
level.player playerlinktoabsolute( var_9, "tag_origin" );
thread elias_house_attack_door();
thread elias_house_attack_wall();
thread elias_house_attack_grab_dof();
thread elias_house_attack_grab_sound();
foreach ( var_11 in var_8 )
{
if ( var_11 == var_7 )
{
var_7 common_scripts\utility::delaycall( 0.45, ::show );
continue;
}
var_11 show();
}
var_0 thread maps\_anim::anim_single( var_8, "house_attack_grab" );
level.player common_scripts\utility::delaycall( 0.2, ::playrumbleonentity, "damage_light" );
level.player common_scripts\utility::delaycall( 1.1, ::playrumbleonentity, "damage_light" );
maps\_utility::delaythread( 4.5, maps\_utility::autosave_by_name_silent, "elias_house_attack" );
var_13 = 2.7;
wait( var_13 );
thread elias_house_attack_hit_ground();
wait( 9 - var_13 );
var_8 = common_scripts\utility::array_remove( var_8, var_5 );
elias_house_attack_knife_think( var_0, var_8 );
maps\_utility::delaythread( 0.2, maps\_art::dof_disable_script, 1 );
var_14 = getent( "house_attack_hesh", "targetname" );
var_15 = var_14 maps\_utility::spawn_ai();
level.hesh = var_15;
var_15.animname = "hesh";
var_15 maps\_utility::magic_bullet_shield();
var_15.weaponsound = "scn_home_r5rgp_hesh_fire";
var_15 animscripts\init::initweapon( "r5rgp+eotech_sp" );
var_15 animscripts\shared::placeweaponon( "r5rgp+eotech_sp", "right" );
var_8 = common_scripts\utility::array_add( var_8, var_15 );
common_scripts\utility::flag_set( "FLAG_house_attack_hesh_enter" );
maps\_utility::delaythread( 1.2, common_scripts\utility::play_sound_in_space, "scn_home_upstairs_chopper_in", level.player.origin );
level.player common_scripts\utility::delaycall( 2.0, ::setclienttriggeraudiozone, "homecoming_upstairs_post_fight", 3.5 );
level.player notify( "stop_player_heartbeat" );
maps\_utility::delaythread( 3, maps\homecoming_util::player_hurt, undefined, 1 );
var_0 thread maps\_anim::anim_single( var_8, "house_attack_save" );
thread elias_house_attack_roof_explosion();
common_scripts\utility::flag_wait( "FLAG_house_attack_heli_over" );
var_16 = maps\_vehicle::spawn_vehicle_from_targetname( "house_attack_ghost_heli" );
var_16 vehicle_turnengineoff();
common_scripts\utility::flag_wait( "FLAG_house_attack_ghosts_enter" );
level.player notify( "stop_player_breathing" );
var_17 = getentarray( "house_attack_ghosts", "targetname" );
var_8 = [];
var_18 = undefined;
foreach ( var_21, var_1 in var_17 )
{
var_20 = var_1 maps\_utility::spawn_ai();
var_20.animname = var_1.script_noteworthy;
if ( var_1.script_noteworthy == "merrick" )
var_18 = var_20;
var_8 = common_scripts\utility::array_add( var_8, var_20 );
}
var_8 = common_scripts\utility::array_add( var_8, maps\_utility::spawn_anim_model( "rope1", ( 0, 0, 0 ) ) );
var_8 = common_scripts\utility::array_add( var_8, maps\_utility::spawn_anim_model( "rope2", ( 0, 0, 0 ) ) );
var_0 thread maps\_anim::anim_single( var_8, "house_attack_save" );
var_22 = getanimlength( var_18 maps\_utility::getanim( "house_attack_save" ) );
var_23 = 1;
var_24 = var_22 - var_23;
wait( var_24 );
level.black_overlay = maps\_hud_util::create_client_overlay( "black", 0, level.player );
level.black_overlay thread maps\_hud_util::fade_over_time( 1, var_23 );
wait( var_23 );
setslowmotion( 0.45, 1, 1 );
level.player lerpfov( 65, 0.05 );
maps\_utility::array_delete( var_8 );
level.knife delete();
var_16 delete();
var_4 delete();
maps\_utility::transient_switch( "homecoming_transient_beach_tr", "homecoming_transient_recruits_tr" );
common_scripts\utility::flag_wait( "homecoming_transient_recruits_tr_loaded" );
wait 0.5;
common_scripts\utility::flag_set( "FLAG_start_recruit_scene" );
}
elias_house_attack_dialogue()
{
common_scripts\utility::flag_wait( "FLAG_house_attack_hesh_enter" );
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_logan" );
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_shityourebleeding" );
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_holdonillget" );
common_scripts\utility::flag_wait( "FLAG_house_attack_heli_over" );
level.hesh maps\_utility::dialogue_queue( "homcom_hsh_getdown" );
}
elias_house_attack_grab_sound()
{
common_scripts\utility::flag_wait( "FLAG_house_attack_through_wall" );
level.player thread common_scripts\utility::play_sound_in_space( "house_attack_wall" );
}
elias_house_attack_grab_dof()
{
var_0 = 0.8;
wait( var_0 );
thread maps\_art::dof_enable_script( 0, 0, 0, 15, 25, 15, 0.1 );
maps\_utility::delaythread( 1, maps\_art::dof_disable_script, 0.5 );
wait( 9 - var_0 );
thread maps\_art::dof_enable_script( 0, 0, 0, 15, 50, 15, 3 );
}
elias_house_attack_hit_ground()
{
level.player shellshock( "homecoming_attack", 60 );
setslowmotion( 1, 0.3, 0.5 );
level.player dodamage( 50 / level.player.damagemultiplier, level.player.origin );
level.player lerpfov( 45, 0.05 );
common_scripts\utility::waitframe();
level.player lerpfov( 65, 4 );
var_0 = maps\_hud_util::create_client_overlay( "black", 0, level.player );
var_0 thread maps\_hud_util::fade_over_time( 0.4, 0.15 );
wait 0.3;
level.player playrumbleonentity( "damage_light" );
var_0 thread maps\_hud_util::fade_over_time( 0, 0.15 );
wait 0.4;
level.player playrumbleonentity( "damage_light" );
wait 1.2;
wait 0.65;
setslowmotion( 0.2, 1, 0.4 );
level.player fadeoutshellshock();
}
elias_house_attacker_breath_sequence( var_0 )
{
wait 0.5;
elias_house_attacker_breath( var_0 );
}
elias_house_attack_knife_think( var_0, var_1 )
{
level.player endon( "player_knife_failed" );
level.player notifyonplayercommand( "resist", "+activate" );
level.player notifyonplayercommand( "resist", "+usereload" );
thread elias_house_attack_knife_hint_logic();
thread elias_house_attack_knife_vision();
setslowmotion( 1, 0.1, 0.1 );
common_scripts\utility::flag_wait_or_timeout( "FLAG_first_resist_press", 0.15 );
setslowmotion( 0.1, 1, 0.1 );
level.player playrumblelooponentity( "steady_rumble" );
var_0 waittill( "house_attack_grab" );
if ( !common_scripts\utility::flag( "FLAG_first_resist_press" ) )
{
thread elias_house_attack_knife_fail_killplayer( var_0, var_1 );
return;
}
var_0 thread maps\_anim::anim_single( var_1, "house_attack_knife" );
thread elias_house_attack_knife_anim_logic( var_0, var_1 );
var_2 = getanimlength( var_1[0] maps\_utility::getanim( "house_attack_knife" ) );
wait 5;
level.player notify( "player_knife_resisted" );
level.player notify( "stop_earthquake_loop" );
level.player common_scripts\utility::delaycall( 0.7, ::stoprumble, "steady_rumble" );
level.resisthint destroy();
}
elias_house_attack_knife_anim_logic( var_0, var_1 )
{
level.player endon( "player_knife_failed" );
level.player endon( "player_knife_resisted" );
elias_house_attack_knife_setupvariables();
thread maps\homecoming_util::earthquake_loop( level.knifevariables["earthquake"]["current"] );
level.player common_scripts\utility::waittill_notify_or_timeout( "resist", 2 );
thread elias_house_attack_knife_fail( var_0, var_1 );
for (;;)
{
var_2 = level.player common_scripts\utility::waittill_notify_or_timeout_return( "resist", 0.3 );
var_3 = 0;
if ( isdefined( var_2 ) && var_2 == "timeout" )
var_3 = 1;
else
thread elias_house_attack_knife_fail( var_0, var_1 );
var_4 = elias_house_attack_knife_getvariable( "animrate", var_3 );
var_0 maps\_anim::anim_set_rate( var_1, "house_attack_knife", var_4 );
var_5 = elias_house_attack_knife_getvariable( "earthquake", var_3 );
thread maps\homecoming_util::earthquake_loop( var_5 );
}
}
elias_house_attack_knife_fail( var_0, var_1 )
{
level.player endon( "resist" );
level.player endon( "player_knife_resisted" );
wait 1;
thread elias_house_attack_knife_fail_killplayer( var_0, var_1 );
}
elias_house_attack_knife_fail_killplayer( var_0, var_1 )
{
level.player notify( "stop_earthquake_loop" );
level.player notify( "player_knife_failed" );
thread maps\_art::dof_disable_script( 0.05 );
level.player stoprumble( "steady_rumble" );
var_0 thread maps\_anim::anim_single( var_1, "house_attack_knife_fail" );
common_scripts\utility::flag_wait( "FLAG_attack_fail_kill_player" );
thread common_scripts\utility::play_sound_in_space( "scn_home_upstairs_fight_stab_death", level.player.origin );
var_0 maps\_anim::anim_set_rate( var_1, "house_attack_knife_fail", 0.5 );
var_2 = level.knife gettagorigin( "TAG_FX" );
var_3 = anglestoforward( level.knife gettagangles( "TAG_FX" ) );
playfxontag( common_scripts\utility::getfx( "player_stabbed" ), level.knife, "tag_fx" );
wait 0.05;
level.player playrumbleonentity( "damage_heavy" );
level.player dodamage( 999999, level.player.origin );
wait 0.5;
missionfailed();
if ( getdvarint( "daniel" ) )
iprintln( "failed" );
}
elias_house_attack_knife_getvariable( var_0, var_1 )
{
var_2 = level.knifevariables[var_0];
var_3 = level.knifevariables[var_0]["current"];
if ( var_1 )
var_3 = var_3 + var_2["increase"];
else
var_3 = var_3 - var_2["decrease"];
if ( var_3 >= var_2["max"] )
var_3 = var_2["max"];
else if ( var_3 <= var_2["min"] )
var_3 = var_2["min"];
if ( getdvarint( "daniel" ) )
iprintln( var_0 + " : " + var_3 );
level.knifevariables[var_0]["current"] = var_3;
return var_3;
}
elias_house_attack_knife_setupvariables()
{
var_0 = [];
var_0["animrate"] = [];
var_0["animrate"]["current"] = 1;
var_0["animrate"]["increase"] = 0.5;
var_0["animrate"]["decrease"] = -0.01;
var_0["animrate"]["max"] = 2;
var_0["animrate"]["min"] = 0.2;
var_0["earthquake"]["current"] = 0.1;
var_0["earthquake"]["increase"] = 0.01;
var_0["earthquake"]["decrease"] = -0.01;
var_0["earthquake"]["max"] = 0.25;
var_0["earthquake"]["min"] = 0.1;
level.knifevariables = var_0;
}
elias_house_attack_knife_vision()
{
common_scripts\utility::flag_wait( "FLAG_attacker_killing_player" );
level.player stoprumble( "steady_rumble" );
level.player common_scripts\utility::delaycall( 0.3, ::playrumblelooponentity, "steady_rumble" );
thread common_scripts\utility::play_sound_in_space( "scn_home_upstairs_fight_stab", level.player.origin );
level.player dodamage( 25 / level.player.damagemultiplier, level.player.origin );
playfxontag( common_scripts\utility::getfx( "player_stabbed" ), level.knife, "tag_origin" );
thread elias_house_blood_overlay();
level.player maps\_utility::set_vision_set( "homecoming_tower_middle", 0 );
var_0 = "homecoming_tower_middle";
if ( maps\_utility::game_is_current_gen() )
var_0 = "aftermath_hurt";
while ( !common_scripts\utility::flag( "FLAG_house_attack_hesh_enter" ) )
{
var_1 = randomfloatrange( 0.7, 0.9 );
level.player maps\_utility::set_vision_set( var_0, var_1 );
wait( var_1 );
if ( var_0 == "homecoming_tower_middle" )
{
var_0 = "homecoming_elias_secondfloor";
continue;
}
var_0 = "homecoming_tower_middle";
}
if ( var_0 == "homecoming_tower_middle" )
{
var_1 = randomfloatrange( 0.8, 1.2 );
level.player maps\_utility::set_vision_set( var_0, var_1 );
wait( var_1 );
}
level.player maps\_utility::set_vision_set( "", 2 );
}
elias_house_blood_overlay()
{
var_0 = newclienthudelem( level.player );
var_0.x = 0;
var_0.y = 0;
var_0.splatter = 1;
var_0.alignx = "left";
var_0.aligny = "top";
var_0.sort = 1;
var_0.foreground = 0;
var_0.horzalign = "fullscreen";
var_0.vertalign = "fullscreen";
var_0.alpha = 1;
var_0.enablehudlighting = 1;
var_0 setshader( "vfx_blood_screen_overlay", 640, 480 );
while ( !common_scripts\utility::flag( "FLAG_house_attack_hesh_enter" ) )
{
var_1 = randomfloatrange( 0.5, 1 );
var_2 = randomfloatrange( 0.5, 0.7 );
var_0 fadeovertime( var_1 );
var_0.alpha = var_2;
wait( var_1 );
var_1 = randomfloatrange( 0.5, 1 );
var_0 fadeovertime( var_1 );
var_0.alpha = 1;
wait( var_1 );
}
var_1 = 8;
var_0 fadeovertime( var_1 );
var_0.alpha = 0;
wait( var_1 );
var_0 destroy();
}
elias_house_attack_knife_hint_logic()
{
level.player endon( "player_knife_failed" );
level.player endon( "player_knife_resisted" );
var_0 = elias_house_attack_knife_hint();
level.resisthint = var_0;
wait 0.1;
level.player waittill( "resist" );
common_scripts\utility::flag_set( "FLAG_first_resist_press" );
thread common_scripts\utility::play_sound_in_space( "scn_home_upstairs_fight_03", level.player.origin );
thread common_scripts\utility::play_sound_in_space( "homcom_plyr_knifed", level.player.origin );
thread common_scripts\utility::play_sound_in_space( "homcom_death_justgiveupamerican", ( -1381, 11982, 324 ) );
var_1 = 1;
for (;;)
{
var_0.alpha = 0;
wait 0.15;
var_0.alpha = 1;
wait 0.15;
}
}
elias_house_attack_knife_hint()
{
var_0 = 90;
var_1 = 35;
var_2 = level.player maps\_hud_util::createclientfontstring( "default", 2 );
var_2.y = var_0;
var_2 set_default_hud_stuff();
var_2.alpha = 1;
var_2 settext( &"HOMECOMING_HINT_KNIFE_RESIST" );
return var_2;
}
set_default_hud_stuff()
{
self.alignx = "center";
self.aligny = "middle";
self.horzalign = "center";
self.vertalign = "middle";
self.hidewhendead = 1;
self.hidewheninmenu = 1;
self.sort = 205;
self.foreground = 1;
self.alpha = 0;
}
elias_house_attacker_breath_knife()
{
level.player endon( "player_knife_resisted" );
for (;;)
{
elias_house_attacker_breath( level.attacker );
wait( randomfloatrange( 1, 1.5 ) );
}
}
elias_house_attack_door()
{
var_0 = getentarray( "elias_house_attack_door", "targetname" );
var_1 = undefined;
var_2 = [];
foreach ( var_4 in var_0 )
{
if ( var_4 maps\homecoming_util::parameters_check( "model" ) )
{
var_2 = common_scripts\utility::array_add( var_2, var_4 );
continue;
}
var_1 = var_4;
}
foreach ( var_4 in var_2 )
var_4 linkto( var_1 );
wait 0.7;
var_8 = var_1.angles + ( 0, -50, 0 );
var_9 = 1.5;
var_1 rotateto( var_8, 1.5, 0, var_9 / 2 );
}
elias_house_attacker_breath( var_0 )
{
var_1 = var_0 gettagorigin( "j_head" );
var_2 = anglestoforward( var_0 gettagangles( "tag_eye" ) );
var_3 = anglestoup( var_0 gettagangles( "tag_eye" ) );
var_4 = var_1 + var_2 * -5 + var_3 * 1;
playfx( common_scripts\utility::getfx( "enemy_mask_breath" ), var_4, var_2 );
wait 0.6;
var_0 maps\_utility::play_sound_on_entity( "house_attacker_breath" );
}
elias_house_attack_pangles_check()
{
var_0 = level.player.angles;
var_0 = var_0[1];
if ( var_0 <= -150 && var_0 >= -180 )
return 1;
if ( var_0 <= 180 && var_0 >= 160 )
return 1;
return 0;
}
elias_house_attack_wall()
{
common_scripts\utility::flag_wait( "FLAG_house_attack_through_wall" );
common_scripts\utility::exploder( "house_wall_breach" );
level.player playrumbleonentity( "artillery_rumble" );
}
elias_house_attack_roof_explosion()
{
wait 9.5;
common_scripts\utility::exploder( "house_ceiling_breach" );
var_0 = ( -1436, 11992, 548 );
maps\_utility::delaythread( 0.8, common_scripts\utility::play_sound_in_space, "scn_homecoming_roof_entry", var_0 );
maps\_utility::delaythread( 1.2, common_scripts\utility::play_sound_in_space, "scn_home_upstairs_transition_to_recruits_lr", var_0 );
maps\_utility::delaythread( 5.0, common_scripts\utility::play_sound_in_space, "homcom_els_easysonyoullbeok", level.player.origin );
level.player setclienttriggeraudiozone( "homecoming_transition_to_black", 3.0 );
wait 1.2;
level.player lerpfov( 55, 0.05 );
level.player common_scripts\utility::delaycall( 0.05, ::lerpfov, 65, 6.5 );
playrumbleonposition( "artillery_rumble", var_0 );
level.player shellshock( "homecoming_attack", 60 );
setblur( 4.5, 0.05 );
common_scripts\utility::noself_delaycall( 0.05, ::setblur, 0, 0.5 );
level.player thread maps\_gameskill::grenade_dirt_on_screen( "right" );
earthquake( 0.45, 1, var_0, 500 );
maps\_utility::stop_exploder( "house_ceiling_breach" );
getent( "elias_house_roof_dmg", "targetname" ) show();
getent( "elias_house_roof_intact", "targetname" ) delete();
}
attack_sound_setup()
{
soundsettimescalefactor( "Music", 0 );
soundsettimescalefactor( "Menu", 0 );
soundsettimescalefactor( "local3", 0.0 );
soundsettimescalefactor( "mission", 0.0 );
soundsettimescalefactor( "Announcer", 0.0 );
soundsettimescalefactor( "Bulletimpact", 0.0 );
soundsettimescalefactor( "Voice", 0.0 );
soundsettimescalefactor( "effects2", 0.0 );
soundsettimescalefactor( "local", 0.0 );
soundsettimescalefactor( "physics", 0.0 );
soundsettimescalefactor( "ambient", 0.0 );
soundsettimescalefactor( "auto", 0.0 );
soundsettimescalefactor( "effects2d1", 0 );
soundsettimescalefactor( "effects2d2", 0 );
soundsettimescalefactor( "shellshock", 0 );
soundsettimescalefactor( "hurt", 0.25 );
soundsettimescalefactor( "vehicle", 0.5 );
soundsettimescalefactor( "effects1", 0 );
}
house_firstfloor_exploder()
{
common_scripts\utility::exploder( "house_ambient_firstfloor" );
}
house_firstfloor_exploder_off()
{
maps\_utility::stop_exploder( "house_ambient_firstfloor" );
}
house_secondfloor_exploder()
{
common_scripts\utility::exploder( "house_ambient_secondfloor" );
}
house_secondfloor_exploder_off()
{
maps\_utility::stop_exploder( "house_ambient_secondfloor" );
}