2828 lines
100 KiB
Plaintext
2828 lines
100 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
cornered_interior_pre_load()
|
|
{
|
|
common_scripts\utility::flag_init( "courtyard_finished" );
|
|
common_scripts\utility::flag_init( "bar_finished" );
|
|
common_scripts\utility::flag_init( "junction_finished" );
|
|
common_scripts\utility::flag_init( "stealth_enabled" );
|
|
common_scripts\utility::flag_init( "stealth_broken" );
|
|
common_scripts\utility::flag_init( "hvt_got_away" );
|
|
common_scripts\utility::flag_init( "baker_at_hallway_exit" );
|
|
common_scripts\utility::flag_init( "courtyard_intro_elevator_button" );
|
|
common_scripts\utility::flag_init( "elevator_guy1_done" );
|
|
common_scripts\utility::flag_init( "courtyard_intro_rorke_done" );
|
|
common_scripts\utility::flag_init( "courtyard_intro_elevator_opening" );
|
|
common_scripts\utility::flag_init( "cy_elevator_open" );
|
|
common_scripts\utility::flag_init( "cy_elevator_closed" );
|
|
common_scripts\utility::flag_init( "rorke_open_office_a" );
|
|
common_scripts\utility::flag_init( "courtyard_office_id_vo" );
|
|
common_scripts\utility::flag_init( "office_guy_killed" );
|
|
common_scripts\utility::flag_init( "courtyard_reception_office_a_chopper_shine_spotlight" );
|
|
common_scripts\utility::flag_init( "courtyard_reception_office_a_chopper_exit" );
|
|
common_scripts\utility::flag_init( "office_a_chopper_spotlight_on" );
|
|
common_scripts\utility::flag_init( "office_a_chopper_spotlight_off_and_exit" );
|
|
common_scripts\utility::flag_init( "at_cy_exit_door" );
|
|
common_scripts\utility::flag_init( "cy_office_stealth_broken" );
|
|
common_scripts\utility::flag_init( "skipped_firework_office" );
|
|
common_scripts\utility::flag_init( "bar_light_shot" );
|
|
common_scripts\utility::flag_init( "rorke_shoot_tv" );
|
|
common_scripts\utility::flag_init( "rorke_shot_tv" );
|
|
common_scripts\utility::flag_init( "strobe_on" );
|
|
common_scripts\utility::flag_init( "strobe_off" );
|
|
common_scripts\utility::flag_init( "bar_wave2" );
|
|
common_scripts\utility::flag_init( "activate_strobe_off_failsafe" );
|
|
common_scripts\utility::flag_init( "starting_bar_reaction" );
|
|
common_scripts\utility::flag_init( "bar_enemies_reacted" );
|
|
common_scripts\utility::flag_init( "bar_guy_killed" );
|
|
common_scripts\utility::flag_init( "player_touched_enemy" );
|
|
common_scripts\utility::flag_init( "2nd_wave_standard" );
|
|
common_scripts\utility::flag_init( "last_bar_enemy_reacted" );
|
|
common_scripts\utility::flag_init( "player_started_bar_combat" );
|
|
common_scripts\utility::flag_init( "player_broke_bar_combat" );
|
|
common_scripts\utility::flag_init( "e09_path_done" );
|
|
common_scripts\utility::flag_init( "e10_path_done" );
|
|
common_scripts\utility::flag_init( "merrick_in_airlock" );
|
|
common_scripts\utility::flag_init( "rorke_opening_junction_exit_door" );
|
|
common_scripts\utility::flag_init( "rorke_starts_handoff_anim" );
|
|
common_scripts\utility::flag_init( "start_junction_pip_scenario" );
|
|
common_scripts\utility::flag_init( "hesh_elevator_vo_said" );
|
|
common_scripts\utility::flag_init( "start_hesh_elevator_exit" );
|
|
common_scripts\utility::flag_init( "player_shutting_down_elevators" );
|
|
common_scripts\utility::flag_init( "start_disable_elevators" );
|
|
common_scripts\utility::flag_init( "spawn_junction_enemies_wave_2" );
|
|
common_scripts\utility::flag_init( "junction_enemies_wave_2" );
|
|
common_scripts\utility::flag_init( "junction_enemies_dead" );
|
|
common_scripts\utility::flag_init( "c4_vo_over" );
|
|
precachemodel( "cnd_banner_sim" );
|
|
precachemodel( "cnd_banner2_sim" );
|
|
precachemodel( "cnd_server_control_panel_anim_obj" );
|
|
precachemodel( "weapon_c4" );
|
|
precachemodel( "cnd_rope_rappel_coil_04_obj" );
|
|
precachemodel( "com_blackhawk_spotlight_on_mg_setup" );
|
|
precacheturret( "heli_spotlight" );
|
|
precachemodel( "cnd_controlpanel_elevator_grn_01" );
|
|
precachemodel( "cnd_controlpanel_elevator_grn_02" );
|
|
precachemodel( "cnd_controlpanel_elevator_grn_03" );
|
|
precachemodel( "cnd_controlpanel_elevator_grn_04" );
|
|
precachemodel( "cnd_controlpanel_elevator_grn_05" );
|
|
precachemodel( "cnd_controlpanel_elevator_grn_06" );
|
|
precachemodel( "cnd_controlpanel_elevator_red_07" );
|
|
precachemodel( "cnd_controlpanel_elevator_red_08" );
|
|
precachemodel( "cnd_controlpanel_elevator_red_09" );
|
|
precachemodel( "cnd_controlpanel_elevator_red_10" );
|
|
precachemodel( "cnd_controlpanel_elevator_red_11" );
|
|
precachemodel( "cnd_controlpanel_elevator_red_12" );
|
|
precacheshader( "hud_icon_strobe" );
|
|
precachestring( &"CORNERED_RORKE_WAS_KILLED" );
|
|
precachestring( &"CORNERED_BAKER_WAS_KILLED" );
|
|
precachestring( &"CORNERED_HVT_GOT_AWAY" );
|
|
precachestring( &"CORNERED_STROBE_ON" );
|
|
precachestring( &"CORNERED_STROBE_OFF" );
|
|
precachestring( &"CORNERED_DISABLE_ELEVATORS" );
|
|
precachestring( &"CORNERED_DISABLE_ELEVATORS_CONSOLE" );
|
|
maps\_utility::add_hint_string( "turn_on_strobe", &"CORNERED_STROBE_ON", ::strobe_on_hide_hint );
|
|
maps\_utility::add_hint_string( "turn_off_strobe", &"CORNERED_STROBE_OFF", ::strobe_off_hide_hint );
|
|
level.combat_rappel_rope_coil_rorke = getent( "combat_rappel_rope_coil_rorke", "targetname" );
|
|
level.combat_rappel_rope_coil_rorke hide();
|
|
level.combat_rappel_rope_coil_player = getent( "combat_rappel_rope_coil_player", "targetname" );
|
|
level.combat_rappel_rope_coil_player hide();
|
|
level.combat_rappel_rope_coil_baker = getent( "combat_rappel_rope_coil_baker", "targetname" );
|
|
level.combat_rappel_rope_coil_baker hide();
|
|
}
|
|
|
|
setup_courtyard()
|
|
{
|
|
if ( maps\cornered_code::is_e3() )
|
|
{
|
|
thread maps\cornered::e3_transition_start();
|
|
return;
|
|
}
|
|
|
|
maps\cornered_code::setup_player();
|
|
maps\cornered_code::spawn_allies();
|
|
level.started_courtyard_from_startpoint = 1;
|
|
level.player switchtoweapon( "imbel+acog_sp+silencer_sp" );
|
|
level.allies[level.const_baker] thread courtyard_intro_baker_exit();
|
|
common_scripts\utility::flag_set( "inverted_baker_done" );
|
|
thread maps\cornered_code::handle_intro_fx();
|
|
thread maps\cornered_audio::aud_check( "courtyard" );
|
|
thread maps\cornered_lighting::fireworks_courtyard();
|
|
thread courtyard_intro_elevator();
|
|
thread courtyard_directory();
|
|
thread courtyard_intro_elevator_guys();
|
|
thread maps\cornered_code::delete_building_glow();
|
|
thread maps\cornered_code::delete_window_reflectors();
|
|
thread maps\cornered_code::cleanup_outside_ents_on_entry();
|
|
maps\cornered_lighting::do_specular_sun_lerp( 1 );
|
|
level.player thread maps\cornered_building_entry::player_handle_outside_effects();
|
|
}
|
|
|
|
setup_bar()
|
|
{
|
|
if ( maps\cornered_code::is_e3() )
|
|
{
|
|
thread maps\cornered::e3_transition_start();
|
|
return;
|
|
}
|
|
|
|
maps\cornered_code::setup_player();
|
|
maps\cornered_code::spawn_allies();
|
|
level.started_bar_from_startpoint = 1;
|
|
maps\_utility::vision_set_fog_changes( "cornered_04", 0.05 );
|
|
level.player switchtoweapon( "imbel+acog_sp+silencer_sp" );
|
|
thread bar_prep();
|
|
thread maps\cornered_code::handle_intro_fx();
|
|
thread maps\cornered_lighting::fireworks_courtyard_post();
|
|
thread maps\cornered_audio::aud_check( "bar" );
|
|
thread maps\cornered_audio::aud_bar( "amb" );
|
|
thread maps\cornered_audio::aud_bar( "stop" );
|
|
thread maps\cornered_code::delete_building_glow();
|
|
thread maps\cornered_code::delete_window_reflectors();
|
|
thread maps\cornered_code::cleanup_outside_ents_on_entry();
|
|
maps\cornered_code::custom_cornered_stealth_settings();
|
|
level.player maps\_stealth_utility::stealth_default();
|
|
level.allies[level.const_rorke] maps\_stealth_utility::stealth_default();
|
|
level.allies[level.const_rorke] thread maps\cornered_code::ally_stealth_settings();
|
|
level.allies[level.const_rorke] maps\_utility::disable_ai_color();
|
|
level.allies[level.const_rorke] maps\_utility::enable_arrivals();
|
|
level.allies[level.const_rorke] maps\_utility::enable_exits();
|
|
level.allies[level.const_baker] maps\_stealth_utility::stealth_default();
|
|
level.allies[level.const_baker] thread maps\cornered_code::ally_stealth_settings();
|
|
level.allies[level.const_baker] maps\_utility::disable_ai_color();
|
|
level.allies[level.const_baker] maps\_utility::enable_arrivals();
|
|
level.allies[level.const_baker] maps\_utility::enable_exits();
|
|
thread maps\cornered_code::custom_bar_stealth_setting();
|
|
thread maps\_stealth_utility::stealth_corpse_reset_time_custom( 10 );
|
|
}
|
|
|
|
setup_junction()
|
|
{
|
|
if ( maps\cornered_code::is_e3() )
|
|
{
|
|
thread maps\cornered::e3_transition_start();
|
|
return;
|
|
}
|
|
|
|
maps\cornered_code::setup_player();
|
|
maps\cornered_code::spawn_allies();
|
|
level.started_junction_from_startpoint = 1;
|
|
level.player switchtoweapon( "imbel+acog_sp+silencer_sp" );
|
|
thread maps\cornered_code::handle_intro_fx();
|
|
thread maps\cornered_audio::aud_check( "junction" );
|
|
maps\cornered_code::delete_building_glow();
|
|
thread maps\cornered_code::cleanup_outside_ents_on_entry();
|
|
maps\cornered_code::custom_cornered_stealth_settings();
|
|
level.player maps\_stealth_utility::stealth_default();
|
|
level.allies[level.const_rorke] thread maps\cornered_code::ally_stealth_settings();
|
|
level.allies[level.const_rorke] maps\_utility::disable_ai_color();
|
|
level.allies[level.const_rorke] maps\_utility::enable_arrivals();
|
|
level.allies[level.const_rorke] maps\_utility::enable_exits();
|
|
level.allies[level.const_baker] thread maps\cornered_code::ally_stealth_settings();
|
|
level.allies[level.const_baker] maps\_utility::disable_ai_color();
|
|
level.allies[level.const_baker] maps\_utility::enable_arrivals();
|
|
level.allies[level.const_baker] maps\_utility::enable_exits();
|
|
var_0 = getent( "junction_entrance_player_clip", "targetname" );
|
|
var_0 delete();
|
|
}
|
|
|
|
begin_courtyard()
|
|
{
|
|
if ( maps\cornered_code::is_e3() )
|
|
return;
|
|
|
|
thread courtyard_transient_unload();
|
|
thread courtyard_transient_load();
|
|
maps\cornered_code::take_away_offhands();
|
|
maps\cornered_code::custom_cornered_stealth_settings();
|
|
level.player maps\_stealth_utility::stealth_default();
|
|
level.allies[level.const_rorke] thread maps\cornered_code::ally_stealth_settings();
|
|
level.allies[level.const_rorke] maps\_utility::disable_ai_color();
|
|
level.allies[level.const_rorke] maps\_utility::enable_arrivals();
|
|
level.allies[level.const_rorke] maps\_utility::enable_exits();
|
|
level.allies[level.const_baker] thread maps\cornered_code::ally_stealth_settings();
|
|
level.allies[level.const_baker] maps\_utility::disable_ai_color();
|
|
level.allies[level.const_baker] maps\_utility::enable_arrivals();
|
|
level.allies[level.const_baker] maps\_utility::enable_exits();
|
|
common_scripts\utility::waitframe();
|
|
thread maps\cornered_lighting::cnd_reception_elevator();
|
|
thread courtyard_intro_handler();
|
|
common_scripts\utility::flag_wait( "courtyard_finished" );
|
|
}
|
|
|
|
begin_bar()
|
|
{
|
|
if ( maps\cornered_code::is_e3() )
|
|
return;
|
|
|
|
maps\cornered_code::take_away_offhands();
|
|
common_scripts\utility::exploder( "light_halogen_bar" );
|
|
level.allies[level.const_rorke] thread bar_rorke();
|
|
common_scripts\utility::flag_wait( "bar_finished" );
|
|
thread maps\_utility::autosave_now();
|
|
}
|
|
|
|
begin_junction()
|
|
{
|
|
if ( maps\cornered_code::is_e3() )
|
|
return;
|
|
|
|
maps\cornered_code::take_away_offhands();
|
|
thread junction_handler();
|
|
common_scripts\utility::flag_wait( "junction_finished" );
|
|
thread maps\_utility::autosave_now();
|
|
}
|
|
|
|
junction_fireworks()
|
|
{
|
|
maps\cornered_lighting::fireworks_stop();
|
|
common_scripts\utility::waitframe();
|
|
maps\cornered_lighting::fireworks_junction();
|
|
}
|
|
|
|
courtyard_intro_handler()
|
|
{
|
|
level.allies[level.const_rorke] thread courtyard_intro_rorke();
|
|
thread courtyard_intro_ally_vo();
|
|
common_scripts\utility::flag_wait_all( "courtyard_intro_rorke_done", "courtyard_intro_patrol_dead" );
|
|
common_scripts\utility::flag_clear( "stealth_broken" );
|
|
|
|
while ( !maps\_stealth_utility::stealth_is_everything_normal() )
|
|
common_scripts\utility::waitframe();
|
|
|
|
common_scripts\utility::flag_clear( "_stealth_spotted" );
|
|
level.allies[level.const_rorke] thread courtyard_rorke();
|
|
}
|
|
|
|
courtyard_transient_unload()
|
|
{
|
|
common_scripts\utility::flag_wait( "courtyard_transient_unload" );
|
|
maps\_utility::transient_unload( "cornered_start_tr" );
|
|
}
|
|
|
|
courtyard_directory()
|
|
{
|
|
setsaveddvar( "cg_cinematicFullScreen", "0" );
|
|
cinematicingameloopresident( "cornered_directory" );
|
|
common_scripts\utility::flag_wait( "move_to_office_a_half_wall" );
|
|
stopcinematicingame();
|
|
}
|
|
|
|
courtyard_intro_rorke()
|
|
{
|
|
level endon( "rorke_killed" );
|
|
level endon( "rorke_killed_2" );
|
|
self endon( "death" );
|
|
self.shootstyle = "single";
|
|
self.oldgoalradius = self.goalradius;
|
|
self.goalradius = 16;
|
|
maps\_utility::set_battlechatter( 0 );
|
|
var_0 = getnode( "cy_rorke_01", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
common_scripts\utility::flag_wait( "courtyard_intro_check_stairs" );
|
|
var_1 = common_scripts\utility::getstruct( "courtyard_entry_animnode", "targetname" );
|
|
var_1 maps\_anim::anim_reach_solo( self, "cornered_courtyard_rail_check" );
|
|
|
|
if ( !common_scripts\utility::flag( "move_to_courtyard_new" ) )
|
|
var_1 maps\_anim::anim_single_solo( self, "cornered_courtyard_rail_check" );
|
|
|
|
var_0 = getnode( "hallway_stairs_rorke", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
common_scripts\utility::flag_wait( "move_to_courtyard_entrance" );
|
|
var_0 = getnode( "hallway_stairs2_rorke", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
wait 5.0;
|
|
|
|
if ( !common_scripts\utility::flag( "courtyard_intro_patrol_dead" ) )
|
|
{
|
|
level notify( "rorke_stealth_end" );
|
|
self.maxsightdistsqrd = 64000000;
|
|
self.ignoreall = 0;
|
|
self.ignoresuppression = 1;
|
|
self.dontevershoot = undefined;
|
|
self.baseaccuracy = 5000000;
|
|
var_2 = maps\_utility::get_living_ai( "courtyard_intro_guys_elevator", "script_noteworthy" );
|
|
var_3 = maps\_utility::get_living_ai( "courtyard_intro_guys_elevator_2", "script_noteworthy" );
|
|
|
|
if ( isdefined( var_2 ) && isalive( var_2 ) )
|
|
{
|
|
while ( isalive( var_2 ) )
|
|
{
|
|
self.favoriteenemy = var_2;
|
|
var_2.threatbias = 20000;
|
|
var_2.ignoreme = 0;
|
|
var_2.dontattackme = undefined;
|
|
var_2.health = 1;
|
|
wait 0.25;
|
|
}
|
|
|
|
wait 0.5;
|
|
}
|
|
|
|
if ( isdefined( var_3 ) && isalive( var_3 ) )
|
|
{
|
|
while ( isalive( var_3 ) )
|
|
{
|
|
self.favoriteenemy = var_3;
|
|
var_3.threatbias = 20000;
|
|
var_3.ignoreme = 0;
|
|
var_3.dontattackme = undefined;
|
|
var_3.health = 1;
|
|
wait 0.25;
|
|
}
|
|
}
|
|
|
|
wait 0.5;
|
|
common_scripts\utility::flag_clear( "stealth_broken" );
|
|
thread maps\cornered_code::ally_stealth_settings();
|
|
}
|
|
|
|
common_scripts\utility::flag_set( "courtyard_intro_rorke_done" );
|
|
}
|
|
|
|
courtyard_intro_ally_vo()
|
|
{
|
|
common_scripts\utility::flag_wait( "move_to_courtyard_new" );
|
|
|
|
if ( !common_scripts\utility::flag( "_stealth_spotted" ) && !common_scripts\utility::flag( "courtyard_intro_patrol_dead" ) )
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_dropem" );
|
|
|
|
common_scripts\utility::flag_wait( "courtyard_intro_patrol_dead" );
|
|
wait 0.25;
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_clear" );
|
|
}
|
|
|
|
courtyard_intro_baker_exit()
|
|
{
|
|
level endon( "baker_killed" );
|
|
self endon( "death" );
|
|
var_0 = getnode( "courtyard_baker_wait", "targetname" );
|
|
common_scripts\utility::flag_wait( "inverted_baker_done" );
|
|
var_1 = common_scripts\utility::getstruct( "elevator_script_node", "targetname" );
|
|
var_1.angles = ( 0, 0, 0 );
|
|
var_1 maps\_anim::anim_first_frame_solo( self, "baker_enter_junction" );
|
|
self setgoalpos( self.origin );
|
|
self setgoalnode( var_0 );
|
|
}
|
|
|
|
courtyard_intro_elevator_guys()
|
|
{
|
|
maps\_utility::array_spawn_function_targetname( "courtyard_intro_elevator_guy", ::courtyard_intro_elevator_guy );
|
|
common_scripts\utility::flag_wait( "courtyard_intro_goto_elevator" );
|
|
maps\_utility::array_spawn_targetname( "courtyard_intro_elevator_guy", 1 );
|
|
}
|
|
|
|
courtyard_intro_elevator_guy()
|
|
{
|
|
self.grenadeammo = 0;
|
|
self.allowdeath = 1;
|
|
self.health = 1;
|
|
thread courtyard_intro_elevator_guy_fail();
|
|
maps\_stealth_utility::stealth_pre_spotted_function_custom( ::bar_spotted_func );
|
|
var_0 = [];
|
|
var_0["hidden"] = maps\_stealth_behavior_enemy::enemy_state_hidden;
|
|
var_0["spotted"] = maps\cornered_code::custom_bar_enemy_state_spotted;
|
|
maps\_stealth_behavior_enemy::enemy_custom_state_behavior( var_0 );
|
|
self endon( "damage" );
|
|
self endon( "death" );
|
|
self endon( "_stealth_spotted" );
|
|
self.animname = "generic";
|
|
var_1 = common_scripts\utility::getstruct( "courtyard_lobby_elevator_door_r_dest", "targetname" );
|
|
|
|
if ( self.script_noteworthy == "courtyard_intro_guys_elevator" )
|
|
{
|
|
var_1 thread maps\_anim::anim_single_solo( self, "cornered_courtyard_elevator_enter" );
|
|
common_scripts\utility::flag_set( "courtyard_intro_elevator_button" );
|
|
self waittillmatch( "single anim", "elevator_open" );
|
|
self waittillmatch( "single anim", "elevator_close" );
|
|
common_scripts\utility::flag_set( "elevator_guy1_done" );
|
|
thread maps\cornered_audio::aud_door( "elevator_close" );
|
|
}
|
|
else
|
|
var_1 thread maps\_anim::anim_single_solo( self, "cornered_courtyard_elevator_enter_enemy2" );
|
|
|
|
self waittillmatch( "single anim", "end" );
|
|
common_scripts\utility::flag_wait( "cy_elevator_closed" );
|
|
|
|
if ( isalive( self ) )
|
|
self delete();
|
|
}
|
|
|
|
courtyard_intro_elevator_guy_fail()
|
|
{
|
|
self endon( "death" );
|
|
common_scripts\utility::flag_wait( "_stealth_spotted" );
|
|
|
|
if ( common_scripts\utility::flag( "cy_elevator_closed" ) )
|
|
{
|
|
self.ignoreall = 1;
|
|
self.ignoreme = 1;
|
|
self delete();
|
|
}
|
|
else if ( common_scripts\utility::flag( "elevator_guy1_done" ) && !common_scripts\utility::flag( "cy_elevator_closed" ) )
|
|
{
|
|
maps\_stealth_utility::disable_stealth_for_ai();
|
|
common_scripts\utility::flag_wait( "cy_elevator_open" );
|
|
var_0 = getnodearray( "elevator_guy_fail_node", "targetname" );
|
|
|
|
if ( !isnodeoccupied( var_0[0] ) )
|
|
self setgoalnode( var_0[0] );
|
|
else
|
|
self setgoalnode( var_0[1] );
|
|
}
|
|
else
|
|
{
|
|
self notify( "end_patrol" );
|
|
maps\_stealth_utility::disable_stealth_for_ai();
|
|
var_0 = getnodearray( "elevator_guy_fail_node", "targetname" );
|
|
|
|
if ( !isnodeoccupied( var_0[0] ) )
|
|
self setgoalnode( var_0[0] );
|
|
else
|
|
self setgoalnode( var_0[1] );
|
|
}
|
|
}
|
|
|
|
courtyard_intro_elevator()
|
|
{
|
|
level endon( "cy_elevator_closed" );
|
|
var_0 = getent( "courtyard_lobby_elevator_door_r", "targetname" );
|
|
var_1 = getent( "courtyard_lobby_elevator_door_l", "targetname" );
|
|
var_2 = getent( "courtyard_lobby_elevator_door_l_clip", "targetname" );
|
|
var_3 = getent( "courtyard_lobby_elevator_door_r_clip", "targetname" );
|
|
var_4 = var_0.origin;
|
|
var_5 = var_1.origin;
|
|
var_6 = common_scripts\utility::getstruct( "courtyard_lobby_elevator_door_r_dest", "targetname" );
|
|
var_7 = common_scripts\utility::getstruct( "courtyard_lobby_elevator_door_l_dest", "targetname" );
|
|
var_2 linkto( var_1 );
|
|
var_3 linkto( var_0 );
|
|
var_8 = getent( "courtyard_lobby_elevator_blocker", "targetname" );
|
|
common_scripts\utility::flag_wait( "courtyard_intro_elevator_button" );
|
|
wait 2.25;
|
|
wait 3.55;
|
|
var_9 = getent( "courtyard_lobby_elevator_door_r", "targetname" );
|
|
thread common_scripts\utility::play_sound_in_space( "crnd_elev_bell", var_9.origin );
|
|
wait 1;
|
|
common_scripts\utility::flag_set( "courtyard_intro_elevator_opening" );
|
|
thread maps\cornered_audio::aud_door( "elevator_open" );
|
|
var_0 moveto( var_6.origin, 1.5, 0.25, 0.4 );
|
|
var_1 moveto( var_7.origin, 1.5, 0.25, 0.4 );
|
|
wait 0.95;
|
|
var_8 notsolid();
|
|
var_8 connectpaths();
|
|
var_2 connectpaths();
|
|
var_3 connectpaths();
|
|
}
|
|
|
|
courtyard_rorke()
|
|
{
|
|
level endon( "rorke_killed" );
|
|
level endon( "rorke_killed_2" );
|
|
level.allies[1] endon( "death" );
|
|
level.player endon( "death" );
|
|
thread maps\_stealth_visibility_system::system_event_change( "hidden" );
|
|
thread maps\cornered_code::custom_bar_stealth_setting();
|
|
var_0 = common_scripts\utility::getstruct( "courtyard_office_entry_animnode", "targetname" );
|
|
thread add_magic_bullet_shield_if_off();
|
|
thread courtyard_office_ally_vo();
|
|
thread courtyard_office_a_doors();
|
|
thread courtyard_office_enemies();
|
|
thread courtyard_office_props();
|
|
thread courtyard_office_stealth_end();
|
|
var_1 = getnode( "cy_rorke_02", "targetname" );
|
|
self setgoalnode( var_1 );
|
|
common_scripts\utility::flag_wait( "move_to_office_door" );
|
|
common_scripts\utility::exploder( 13 );
|
|
var_0 maps\_anim::anim_reach_solo( self, "cornered_courtyard_office_door_merrick_enter" );
|
|
var_0 maps\_anim::anim_single_solo( self, "cornered_courtyard_office_door_merrick_enter" );
|
|
|
|
if ( !common_scripts\utility::flag( "baker_security_vo" ) )
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "cornered_courtyard_office_door_merrick_idle", "stop_loop" );
|
|
|
|
common_scripts\utility::flag_wait( "baker_security_vo" );
|
|
var_0 notify( "stop_loop" );
|
|
common_scripts\utility::flag_set( "rorke_open_office_a" );
|
|
thread maps\_utility::autosave_by_name( "courtyard_office" );
|
|
var_0 thread maps\_anim::anim_single_solo( self, "cornered_courtyard_office_door_merrick_exit" );
|
|
common_scripts\utility::flag_set( "courtyard_office_id_vo" );
|
|
thread bar_prep();
|
|
maps\_utility::delaythread( 0.5, ::courtyard_office_chopper );
|
|
maps\_utility::delaythread( 1, ::setup_office_enemy_vo );
|
|
thread maps\cornered_audio::aud_door( "carani" );
|
|
wait 3.0;
|
|
maps\_utility::forceuseweapon( "kriss+eotechsmg_sp+silencer_sp", "primary" );
|
|
self.lastweapon = self.weapon;
|
|
|
|
if ( !common_scripts\utility::flag( "cy_office_stealth_broken" ) )
|
|
self waittillmatch( "single anim", "end" );
|
|
else
|
|
self stopanimscripted();
|
|
|
|
if ( !common_scripts\utility::flag( "move_to_office_a_half_wall" ) )
|
|
{
|
|
if ( !common_scripts\utility::flag( "cy_office_stealth_broken" ) )
|
|
{
|
|
var_1 = common_scripts\utility::spawn_tag_origin();
|
|
var_1 thread maps\_anim::anim_loop_solo( self, "CornerCrR_alert_idle", "stop_loop" );
|
|
common_scripts\utility::flag_wait_or_timeout( "move_to_office_a_half_wall", 3 );
|
|
var_1 notify( "stop_loop" );
|
|
waittillframeend;
|
|
var_1 delete();
|
|
}
|
|
}
|
|
|
|
if ( !common_scripts\utility::flag( "cy_office_stealth_broken" ) )
|
|
var_0 maps\_anim::anim_single_solo( self, "cornered_courtyard_office_sneak_merrick_exit" );
|
|
|
|
self.fixednode = 0;
|
|
|
|
if ( !common_scripts\utility::flag( "cy_office_stealth_broken" ) )
|
|
{
|
|
var_2 = getent( "office_rorke_gundown_volume", "targetname" );
|
|
self setgoalvolumeauto( var_2 );
|
|
}
|
|
else
|
|
{
|
|
var_2 = getent( "player_in_office", "targetname" );
|
|
self setgoalvolumeauto( var_2 );
|
|
}
|
|
|
|
if ( !common_scripts\utility::flag( "_stealth_spotted" ) )
|
|
wait 0.35;
|
|
|
|
if ( !common_scripts\utility::flag( "office_guys_dead" ) )
|
|
{
|
|
thread courtyard_rorke_failsafe();
|
|
level notify( "rorke_stealth_end" );
|
|
self.maxsightdistsqrd = 64000000;
|
|
self.ignoreall = 0;
|
|
self.ignoresuppression = 1;
|
|
self.dontevershoot = undefined;
|
|
self.baseaccuracy = 5000000;
|
|
add_magic_bullet_shield_if_off();
|
|
var_3 = maps\_utility::get_living_ai_array( "office_guys", "script_noteworthy" );
|
|
|
|
if ( isalive( level.office_guy_c ) )
|
|
{
|
|
if ( !isalive( self.enemy ) )
|
|
self.favoriteenemy = level.office_guy_c;
|
|
|
|
while ( isalive( level.office_guy_c ) )
|
|
{
|
|
level.office_guy_c.dontattackme = undefined;
|
|
level.office_guy_c.health = 1;
|
|
level.office_guy_c.threatbias = 20000;
|
|
level.office_guy_c.ignoreme = 0;
|
|
wait 0.75;
|
|
}
|
|
}
|
|
|
|
wait 1;
|
|
|
|
while ( !common_scripts\utility::flag( "office_guys_dead" ) )
|
|
{
|
|
foreach ( var_5 in var_3 )
|
|
{
|
|
if ( !isalive( var_5 ) )
|
|
continue;
|
|
|
|
if ( !isalive( self.enemy ) )
|
|
self.favoriteenemy = var_5;
|
|
|
|
while ( isalive( var_5 ) )
|
|
{
|
|
var_5.dontattackme = undefined;
|
|
var_5.health = 1;
|
|
var_5.threatbias = 20000;
|
|
var_5.ignoreme = 0;
|
|
wait 0.75;
|
|
}
|
|
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
wait 0.5;
|
|
}
|
|
|
|
foreach ( var_8 in level.players )
|
|
{
|
|
if ( var_8 maps\_utility::ent_flag_exist( "_stealth_enabled" ) )
|
|
var_8 maps\_utility::ent_flag_set( "_stealth_enabled" );
|
|
|
|
if ( isalive( var_8 ) )
|
|
var_8 thread maps\_stealth_visibility_friendly::friendly_visibility_logic();
|
|
}
|
|
|
|
thread maps\cornered_code::ally_stealth_settings();
|
|
common_scripts\utility::flag_wait( "office_guys_dead" );
|
|
maps\_utility::enable_cqbwalk();
|
|
self cleargoalvolume();
|
|
self.fixednode = 1;
|
|
|
|
if ( !common_scripts\utility::flag( "skipped_firework_office" ) )
|
|
{
|
|
thread maps\_stealth_visibility_system::system_event_change( "hidden" );
|
|
maps\_utility::delaythread( 0.1, maps\cornered_code::custom_bar_stealth_setting );
|
|
maps\_utility::delaythread( 0.1, maps\_stealth_utility::stealth_corpse_reset_time_custom, 10 );
|
|
var_0 = common_scripts\utility::getstruct( "rorke_exit_office_approach", "targetname" );
|
|
var_0 maps\_anim::anim_reach_solo( self, "corner_standL_trans_CQB_IN_2" );
|
|
}
|
|
|
|
if ( !common_scripts\utility::flag( "move_across_bridge" ) && !common_scripts\utility::flag( "skipped_firework_office" ) )
|
|
{
|
|
var_0 maps\_anim::anim_single_solo( self, "corner_standL_trans_CQB_IN_2" );
|
|
common_scripts\utility::flag_set( "at_cy_exit_door" );
|
|
}
|
|
|
|
var_0 = common_scripts\utility::getstruct( "courtyard_office_exit_animnode", "targetname" );
|
|
|
|
if ( !common_scripts\utility::flag( "move_across_bridge" ) && !common_scripts\utility::flag( "skipped_firework_office" ) )
|
|
{
|
|
var_1 = common_scripts\utility::spawn_tag_origin();
|
|
var_1 thread maps\_anim::anim_loop_solo( self, "corner_standL_alert_idle", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "move_across_bridge" );
|
|
var_1 notify( "stop_loop" );
|
|
waittillframeend;
|
|
var_1 delete();
|
|
}
|
|
else
|
|
common_scripts\utility::flag_wait( "move_across_bridge" );
|
|
|
|
if ( common_scripts\utility::flag( "at_cy_exit_door" ) )
|
|
var_0 maps\_anim::anim_single_solo( self, "cornered_courtyard_office_exit_merrick" );
|
|
|
|
thread maps\cornered_audio::aud_bar( "amb" );
|
|
thread maps\cornered_audio::aud_bar( "stop" );
|
|
var_0 = common_scripts\utility::getstruct( "rorke_bridge_anim", "targetname" );
|
|
|
|
if ( !common_scripts\utility::flag( "skipped_firework_office" ) )
|
|
{
|
|
var_0 maps\_anim::anim_reach_solo( self, "cornered_courtyard_bridge_check" );
|
|
|
|
if ( !common_scripts\utility::flag( "go_bar_walker" ) )
|
|
var_0 maps\_anim::anim_single_solo( self, "cornered_courtyard_bridge_check" );
|
|
|
|
var_1 = getnode( "bar_entrance_stairs_rorke", "targetname" );
|
|
self setgoalnode( var_1 );
|
|
common_scripts\utility::flag_wait( "rorke_bar_position" );
|
|
}
|
|
|
|
common_scripts\utility::flag_set( "courtyard_finished" );
|
|
thread maps\_utility::autosave_stealth();
|
|
}
|
|
|
|
courtyard_rorke_failsafe()
|
|
{
|
|
level endon( "office_guys_dead" );
|
|
common_scripts\utility::flag_wait( "rorke_shoot_tv" );
|
|
|
|
if ( !common_scripts\utility::flag( "office_guys_dead" ) )
|
|
{
|
|
common_scripts\utility::flag_set( "skipped_firework_office" );
|
|
|
|
foreach ( var_1 in level.firework_enemies )
|
|
{
|
|
if ( isalive( var_1 ) )
|
|
var_1 kill();
|
|
}
|
|
}
|
|
}
|
|
|
|
courtyard_office_stealth_end()
|
|
{
|
|
level endon( "cy_office_stealth" );
|
|
level waittill( "cy_office_spotted" );
|
|
maps\_stealth_utility::disable_stealth_system();
|
|
common_scripts\utility::flag_set( "cy_office_stealth_broken" );
|
|
level notify( "cy_office_stealth" );
|
|
}
|
|
|
|
courtyard_office_enemies()
|
|
{
|
|
maps\_utility::array_spawn_function_targetname( "office_guys_new", ::courtyard_office_death );
|
|
maps\_utility::array_spawn_function_targetname( "office_guys_new", ::courtyard_office_enemy_anim );
|
|
common_scripts\utility::flag_wait( "rorke_open_office_a" );
|
|
level.firework_enemies = maps\_utility::array_spawn_targetname( "office_guys_new", 1 );
|
|
}
|
|
|
|
courtyard_office_death()
|
|
{
|
|
self waittill( "death" );
|
|
common_scripts\utility::flag_set( "office_guy_killed" );
|
|
}
|
|
|
|
courtyard_office_enemy_anim()
|
|
{
|
|
self endon( "death" );
|
|
maps\_stealth_utility::stealth_pre_spotted_function_custom( ::bar_spotted_func );
|
|
var_0 = common_scripts\utility::getstruct( "courtyard_office_animnode", "targetname" );
|
|
self.allowdeath = 1;
|
|
self.animname = "generic";
|
|
var_1 = [];
|
|
var_1["hidden"] = maps\_stealth_behavior_enemy::enemy_state_hidden;
|
|
var_1["spotted"] = maps\cornered_code::custom_bar_enemy_state_spotted;
|
|
maps\_stealth_behavior_enemy::enemy_custom_state_behavior( var_1 );
|
|
|
|
if ( self.script_parameters == "office_guy_a" )
|
|
{
|
|
level.office_guy_a = self;
|
|
self.health = 20;
|
|
var_0 maps\_anim::anim_first_frame_solo( self, "cornered_office_fireworks_crowd_guard1" );
|
|
common_scripts\utility::flag_wait( "rorke_open_office_a" );
|
|
var_0 thread maps\_anim::anim_single_solo( self, "cornered_office_fireworks_crowd_guard1" );
|
|
}
|
|
|
|
if ( self.script_parameters == "office_guy_b" )
|
|
{
|
|
self.health = 20;
|
|
var_0 maps\_anim::anim_first_frame_solo( self, "cornered_office_fireworks_crowd_guard2" );
|
|
common_scripts\utility::flag_wait( "rorke_open_office_a" );
|
|
var_0 thread maps\_anim::anim_single_solo( self, "cornered_office_fireworks_crowd_guard2" );
|
|
}
|
|
|
|
if ( self.script_parameters == "office_guy_c" )
|
|
{
|
|
level.office_guy_c = self;
|
|
self.health = 1;
|
|
var_0 maps\_anim::anim_first_frame_solo( self, "cornered_office_fireworks_crowd_guard3" );
|
|
common_scripts\utility::flag_wait( "rorke_open_office_a" );
|
|
var_0 thread maps\_anim::anim_single_solo( self, "cornered_office_fireworks_crowd_guard3" );
|
|
}
|
|
|
|
if ( self.script_parameters == "office_guy_d" )
|
|
{
|
|
level.office_guy_d = self;
|
|
self.health = 20;
|
|
var_0 maps\_anim::anim_first_frame_solo( self, "cornered_office_fireworks_crowd_guard4" );
|
|
common_scripts\utility::flag_wait( "rorke_open_office_a" );
|
|
var_0 thread maps\_anim::anim_single_solo( self, "cornered_office_fireworks_crowd_guard4" );
|
|
}
|
|
|
|
if ( self.script_parameters == "office_guy_e" )
|
|
{
|
|
level.office_guy_e = self;
|
|
self.health = 20;
|
|
var_0 maps\_anim::anim_first_frame_solo( self, "cornered_office_fireworks_crowd_guard5" );
|
|
common_scripts\utility::flag_wait( "rorke_open_office_a" );
|
|
var_0 thread maps\_anim::anim_single_solo( self, "cornered_office_fireworks_crowd_guard5" );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait_either( "office_guy_killed", "_stealth_spotted" );
|
|
level notify( "cy_office_spotted" );
|
|
self.fixednode = 0;
|
|
self stopanimscripted();
|
|
maps\_stealth_utility::disable_stealth_for_ai();
|
|
self.dontevershoot = undefined;
|
|
thread maps\_utility::set_battlechatter( 1 );
|
|
var_2 = getent( "player_in_office", "targetname" );
|
|
|
|
if ( self.script_parameters == "office_guy_d" || self.script_parameters == "office_guy_e" )
|
|
{
|
|
if ( level.player istouching( var_2 ) )
|
|
{
|
|
var_3 = getent( "cy_office_enemy_volume", "targetname" );
|
|
self setgoalvolumeauto( var_3 );
|
|
}
|
|
else
|
|
thread maps\_utility::player_seek_enable();
|
|
}
|
|
else if ( level.player istouching( var_2 ) )
|
|
{
|
|
var_3 = getent( "cy_office_enemy_volume_2", "targetname" );
|
|
self setgoalvolumeauto( var_3 );
|
|
}
|
|
else
|
|
thread maps\_utility::player_seek_enable();
|
|
}
|
|
|
|
courtyard_office_props()
|
|
{
|
|
thread courtyard_office_chair();
|
|
thread courtyard_office_glass();
|
|
}
|
|
|
|
courtyard_office_chair()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "courtyard_office_animnode", "targetname" );
|
|
var_1 = maps\_utility::spawn_anim_model( "courtyard_office" );
|
|
var_2 = getent( "office_a_conf_chair", "targetname" );
|
|
var_0 maps\_anim::anim_first_frame_solo( var_1, "cornered_office_fireworks_crowd_chair" );
|
|
var_3 = var_1 gettagorigin( "J_prop_1" );
|
|
var_4 = var_1 gettagangles( "J_prop_1" );
|
|
common_scripts\utility::waitframe();
|
|
var_2.origin = var_3;
|
|
var_2.angles = var_4;
|
|
common_scripts\utility::waitframe();
|
|
var_2 linkto( var_1, "J_prop_1" );
|
|
common_scripts\utility::flag_wait( "rorke_open_office_a" );
|
|
|
|
if ( isalive( level.office_guy_c ) && !common_scripts\utility::flag( "_stealth_spotted" ) )
|
|
{
|
|
var_1 thread courtyard_rig_kill( level.office_guy_c );
|
|
var_0 thread maps\_anim::anim_single_solo( var_1, "cornered_office_fireworks_crowd_chair" );
|
|
var_1 waittillmatch( "single anim", "end" );
|
|
}
|
|
|
|
var_2 unlink();
|
|
}
|
|
|
|
courtyard_rig_kill( var_0 )
|
|
{
|
|
var_0 waittill( "death" );
|
|
self stopanimscripted();
|
|
self delete();
|
|
}
|
|
|
|
courtyard_office_glass()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "courtyard_office_animnode", "targetname" );
|
|
var_1 = maps\_utility::spawn_anim_model( "courtyard_office" );
|
|
var_2 = getent( "office_a_conf_glass", "targetname" );
|
|
var_0 maps\_anim::anim_first_frame_solo( var_1, "cornered_office_fireworks_crowd_drink" );
|
|
var_3 = var_1 gettagorigin( "J_prop_1" );
|
|
var_4 = var_1 gettagangles( "J_prop_1" );
|
|
common_scripts\utility::waitframe();
|
|
var_2.origin = var_3;
|
|
var_2.angles = var_4;
|
|
common_scripts\utility::waitframe();
|
|
var_2 linkto( var_1, "J_prop_1" );
|
|
common_scripts\utility::flag_wait( "rorke_open_office_a" );
|
|
|
|
if ( isalive( level.office_guy_a ) && !common_scripts\utility::flag( "_stealth_spotted" ) )
|
|
{
|
|
var_1 thread courtyard_rig_kill( level.office_guy_a );
|
|
var_0 thread maps\_anim::anim_single_solo( var_1, "cornered_office_fireworks_crowd_drink" );
|
|
var_2 thread courtyard_glass_drop();
|
|
wait 11.15;
|
|
|
|
if ( isdefined( var_1 ) && common_scripts\utility::flag( "_stealth_spotted" ) )
|
|
var_1 stopanimscripted();
|
|
else
|
|
{
|
|
wait 15.45;
|
|
level notify( "glass_on_table" );
|
|
|
|
if ( isdefined( var_1 ) )
|
|
var_1 waittillmatch( "single anim", "end" );
|
|
}
|
|
}
|
|
|
|
var_2 unlink();
|
|
}
|
|
|
|
courtyard_glass_drop()
|
|
{
|
|
level endon( "glass_on_table" );
|
|
level.office_guy_a waittill( "death" );
|
|
self unlink();
|
|
self physicslaunchclient( self.origin + ( 0, 0, 4 ), ( 0, 0, -10 ) );
|
|
}
|
|
|
|
courtyard_office_a_doors()
|
|
{
|
|
var_0 = getent( "office_a_door_right", "targetname" );
|
|
var_1 = getent( "office_a_door_left", "targetname" );
|
|
var_2 = getentarray( "office_a_door_right_hinges", "targetname" );
|
|
var_3 = getentarray( "office_a_door_left_hinges", "targetname" );
|
|
|
|
foreach ( var_5 in var_2 )
|
|
var_5 linkto( var_0 );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
var_5 linkto( var_1 );
|
|
|
|
var_9 = common_scripts\utility::getstruct( "courtyard_office_entry_animnode", "targetname" );
|
|
thread maps\cornered_code::generic_prop_raven_anim( var_9, "courtyard_office", "cornered_courtyard_office_door_door", "office_a_door_right", undefined, undefined, "rorke_open_office_a" );
|
|
common_scripts\utility::flag_wait( "rorke_open_office_a" );
|
|
wait 0.65;
|
|
wait 0.75;
|
|
var_0 connectpaths();
|
|
}
|
|
|
|
courtyard_office_ally_vo()
|
|
{
|
|
level.allies[level.const_rorke] endon( "death" );
|
|
common_scripts\utility::flag_wait( "courtyard_office_id_vo" );
|
|
wait 8.75;
|
|
|
|
if ( !common_scripts\utility::flag( "_stealth_spotted" ) && !common_scripts\utility::flag( "cy_office_stealth_broken" ) )
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_icount5tangos" );
|
|
|
|
common_scripts\utility::flag_wait_or_timeout( "move_to_office_a_half_wall", 3 );
|
|
|
|
if ( !common_scripts\utility::flag( "office_guy_killed" ) || !common_scripts\utility::flag( "cy_office_stealth_broken" ) )
|
|
{
|
|
wait 3.5;
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_dropem_2" );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "office_guys_dead" );
|
|
wait 1.25;
|
|
|
|
if ( !common_scripts\utility::flag( "starting_bar_reaction" ) )
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_kgn_lookslikeeliastraining" );
|
|
|
|
common_scripts\utility::flag_wait( "move_across_bridge" );
|
|
wait 1.9;
|
|
|
|
if ( common_scripts\utility::flag( "at_cy_exit_door" ) )
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_clearright" );
|
|
|
|
wait 2.25;
|
|
|
|
if ( !common_scripts\utility::flag( "starting_bar_reaction" ) )
|
|
{
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_heshcheckin" );
|
|
wait 0.1;
|
|
maps\_utility::smart_radio_dialogue( "cornered_hsh_mainelevatorsoffline" );
|
|
}
|
|
|
|
if ( !common_scripts\utility::flag( "starting_bar_reaction" ) )
|
|
{
|
|
wait 0.1;
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_copyseeyain" );
|
|
}
|
|
}
|
|
|
|
setup_office_enemy_vo()
|
|
{
|
|
wait 2.0;
|
|
|
|
if ( common_scripts\utility::flag( "_stealth_spotted" ) )
|
|
return;
|
|
|
|
var_0 = maps\_utility::get_living_ai_array( "office_guys", "script_noteworthy" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( isalive( var_2 ) && isdefined( var_2.script_parameters ) && var_2.script_parameters == "office_guy_a" )
|
|
{
|
|
level.office_guy_a = var_2;
|
|
level.office_guy_a.animname = "generic";
|
|
}
|
|
|
|
if ( isalive( var_2 ) && isdefined( var_2.script_parameters ) && var_2.script_parameters == "office_guy_b" )
|
|
{
|
|
level.office_guy_b = var_2;
|
|
level.office_guy_b.animname = "generic";
|
|
}
|
|
|
|
var_2 thread stop_vo_on_event();
|
|
}
|
|
|
|
thread office_enemy_vo( level.office_guy_a, level.office_guy_b );
|
|
level.office_guy_a thread stop_vo_on_spotted();
|
|
level.office_guy_b thread stop_vo_on_spotted();
|
|
}
|
|
|
|
office_enemy_vo( var_0, var_1 )
|
|
{
|
|
var_0 endon( "stop_my_vo" );
|
|
var_1 endon( "stop_my_vo" );
|
|
var_0 maps\_utility::smart_dialogue( "cornered_saf1_wowwouldyoulook" );
|
|
wait 0.2;
|
|
var_1 maps\_utility::smart_dialogue( "cornered_saf2_theymakememiss" );
|
|
wait 0.1;
|
|
var_0 maps\_utility::smart_dialogue( "cornered_saf1_metooigo" );
|
|
wait 0.3;
|
|
var_1 maps\_utility::smart_dialogue( "cornered_saf2_youluckybastardi" );
|
|
}
|
|
|
|
stop_vo_on_spotted()
|
|
{
|
|
self endon( "death" );
|
|
level common_scripts\utility::waittill_either( "_stealth_spotted", "enemy_office_hurt" );
|
|
self notify( "stop_vo" );
|
|
}
|
|
|
|
stop_vo_on_event()
|
|
{
|
|
common_scripts\utility::waittill_any( "stop_vo", "death", "damage", "_stealth_spotted" );
|
|
level notify( "enemy_office_hurt" );
|
|
|
|
if ( isdefined( self ) )
|
|
{
|
|
self notify( "stop_my_vo" );
|
|
self stopsounds();
|
|
}
|
|
}
|
|
|
|
courtyard_office_chopper()
|
|
{
|
|
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "courtyard_reception_office_a_chopper" );
|
|
var_1 = getent( "courtyard_reception_office_a_chopper_spotlight_target", "targetname" );
|
|
var_0 thread maps\cornered_code::littlebird_handle_spotlight( 0.5, undefined, undefined, 50, var_1 );
|
|
common_scripts\utility::flag_wait( "courtyard_reception_office_a_chopper_shine_spotlight" );
|
|
wait 4.0;
|
|
common_scripts\utility::flag_set( "courtyard_reception_office_a_chopper_exit" );
|
|
var_0 thread maps\cornered_code::littlebird_spotlight_off();
|
|
var_0 notify( "stop_littlebird_spotlight" );
|
|
}
|
|
|
|
courtyard_transient_load()
|
|
{
|
|
common_scripts\utility::flag_wait( "courtyard_transient_load" );
|
|
maps\_utility::transient_load( "cornered_end_tr" );
|
|
}
|
|
|
|
bar_prep()
|
|
{
|
|
if ( !isdefined( level.started_bar_from_startpoint ) )
|
|
common_scripts\utility::flag_wait( "move_across_bridge" );
|
|
|
|
thread bar_props();
|
|
thread bar_enemies();
|
|
thread bar_light();
|
|
thread bar_enemies_wave2();
|
|
level.allies[level.const_rorke] thread bar_rorke_shoot_tv();
|
|
}
|
|
|
|
bar_rorke()
|
|
{
|
|
level endon( "bar_strobe_starting" );
|
|
level endon( "_stealth_spotted" );
|
|
level endon( "bar_guy_killed" );
|
|
self endon( "death" );
|
|
|
|
if ( common_scripts\utility::flag( "bar_guy_killed" ) || common_scripts\utility::flag( "_stealth_spotted" ) || common_scripts\utility::flag( "player_bar_sneaking" ) )
|
|
return;
|
|
|
|
level notify( "rorke_stealth_end" );
|
|
self.goalradius = 16;
|
|
var_0 = getnode( "rorke_bar_floor_1", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
self waittill( "goal" );
|
|
self.disableplayeradsloscheck = 1;
|
|
wait 0.5;
|
|
thread maps\_utility::smart_dialogue( "cornered_mrk_biggroupwellneed" );
|
|
wait 1.25;
|
|
var_0 = getnode( "bar_strobe_rorke", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
self waittill( "goal" );
|
|
self.disableplayeradsloscheck = 0;
|
|
common_scripts\utility::flag_wait( "player_on_bar_floor" );
|
|
maps\_utility::smart_dialogue( "cornered_mrk_takeoutthelight" );
|
|
maps\_utility::smart_dialogue( "cornered_mrk_leftside" );
|
|
thread bar_rorke_warning_vo();
|
|
wait 8;
|
|
maps\_utility::smart_dialogue( "cornered_mrk_ivegotit" );
|
|
wait 0.25;
|
|
common_scripts\utility::flag_set( "rorke_shoot_tv" );
|
|
}
|
|
|
|
bar_rorke_shoot_tv()
|
|
{
|
|
self endon( "death" );
|
|
common_scripts\utility::flag_wait( "rorke_shoot_tv" );
|
|
|
|
if ( !common_scripts\utility::flag( "bar_light_shot" ) )
|
|
{
|
|
self.goalradius = 16;
|
|
var_0 = getnode( "bar_strobe_rorke_failsafe", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
self waittill( "goal" );
|
|
var_1 = getent( "bar_light_origin", "targetname" );
|
|
self.baseaccuracy = 5000000;
|
|
wait 0.4;
|
|
self setlookatentity( var_1 );
|
|
wait 0.4;
|
|
magicbullet( self.weapon, self gettagorigin( "tag_flash" ), var_1.origin );
|
|
wait 0.05;
|
|
self.baseaccuracy = 1;
|
|
common_scripts\utility::flag_set( "rorke_shot_tv" );
|
|
self setlookatentity();
|
|
}
|
|
|
|
thread bar_rorke_strobe_attack();
|
|
}
|
|
|
|
bar_rorke_warning_vo()
|
|
{
|
|
level endon( "bar_strobe_starting" );
|
|
level endon( "_stealth_spotted" );
|
|
level endon( "bar_light_shot" );
|
|
self endon( "death" );
|
|
self endon( "gave_warning" );
|
|
var_0 = maps\_utility::get_living_ai_array( "bar_guys", "script_noteworthy" );
|
|
|
|
for (;;)
|
|
{
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
var_3 = 4096.0;
|
|
var_4 = level.player geteye();
|
|
var_5 = level.player getplayerangles();
|
|
var_6 = vectornormalize( anglestoforward( var_5 ) );
|
|
var_7 = bullettrace( var_4, var_4 + var_6 * var_3, 1, level.player, 1 );
|
|
|
|
if ( isdefined( var_7["entity"] ) && var_7["entity"] == var_2 )
|
|
{
|
|
maps\_utility::smart_dialogue( "cornered_mrk_nohitthelight" );
|
|
self notify( "gave_warning" );
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
bar_rorke_strobe_attack()
|
|
{
|
|
self endon( "death" );
|
|
level notify( "bar_strobe_starting" );
|
|
wait 0.35;
|
|
thread bar_strobe_player_on();
|
|
thread bar_strobe_player_force_off();
|
|
maps\_utility::smart_dialogue( "cornered_mrk_strobeson" );
|
|
maps\_utility::smart_dialogue( "cornered_mrk_takeemdown" );
|
|
thread maps\cornered_audio::aud_bar( "stop2" );
|
|
|
|
if ( !common_scripts\utility::flag( "rorke_shot_tv" ) )
|
|
common_scripts\utility::flag_wait_or_timeout( "strobe_on", 6 );
|
|
|
|
thread bar_strobe_ally();
|
|
wait 0.4;
|
|
var_0 = getent( "rorke_bar_volume", "targetname" );
|
|
self setgoalvolumeauto( var_0 );
|
|
add_magic_bullet_shield_if_off();
|
|
self.maxsightdistsqrd = 64000000;
|
|
self.ignoreall = 0;
|
|
self.ignoresuppression = 1;
|
|
self.dontevershoot = undefined;
|
|
self.baseaccuracy = 5000000;
|
|
self.allowpain = 0;
|
|
var_1 = maps\_utility::get_living_ai_array( "bar_guys", "script_noteworthy" );
|
|
|
|
while ( !common_scripts\utility::flag( "bar_guys_new_dead" ) )
|
|
{
|
|
var_1 = maps\_utility::array_removedead( var_1 );
|
|
var_2 = common_scripts\utility::getclosest( self.origin, var_1 );
|
|
|
|
if ( !isalive( var_2 ) )
|
|
{
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
|
|
if ( !isalive( self.enemy ) )
|
|
self.favoriteenemy = var_2;
|
|
|
|
if ( isalive( var_2 ) )
|
|
{
|
|
self.ignoreall = 0;
|
|
var_2.dontattackme = undefined;
|
|
var_2.health = 1;
|
|
var_3 = [];
|
|
var_3[0] = var_2;
|
|
maps\_utility::waittill_dead( var_3, 1 );
|
|
}
|
|
|
|
self.ignoreall = 1;
|
|
wait 1.0;
|
|
}
|
|
|
|
level notify( "bar_wave1_dead" );
|
|
self cleargoalvolume();
|
|
wait 1;
|
|
|
|
if ( !common_scripts\utility::flag( "2nd_wave_standard" ) && !common_scripts\utility::flag( "bar_wave2_failsafe" ) )
|
|
maps\_utility::smart_dialogue( "cornered_mrk_checkyourcorners" );
|
|
|
|
var_4 = getnode( "bar_corner_rorke", "targetname" );
|
|
self setgoalnode( var_4 );
|
|
self.ignoreall = 1;
|
|
common_scripts\utility::flag_wait( "bar_wave2_failsafe" );
|
|
wait 3.4;
|
|
self.ignoreall = 0;
|
|
var_1 = maps\_utility::get_living_ai_array( "bar_guys_2", "script_noteworthy" );
|
|
|
|
while ( !common_scripts\utility::flag( "bar_guys_new_2_dead" ) )
|
|
{
|
|
var_1 = maps\_utility::array_removedead( var_1 );
|
|
var_2 = common_scripts\utility::getclosest( self.origin, var_1 );
|
|
|
|
if ( !isalive( var_2 ) )
|
|
{
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
|
|
if ( !isalive( self.enemy ) )
|
|
self.favoriteenemy = var_2;
|
|
|
|
if ( isalive( var_2 ) )
|
|
{
|
|
self.ignoreall = 0;
|
|
var_2.dontattackme = undefined;
|
|
var_2.health = 1;
|
|
var_3 = [];
|
|
var_3[0] = var_2;
|
|
maps\_utility::waittill_dead( var_3, 1 );
|
|
}
|
|
|
|
self.ignoreall = 1;
|
|
wait 1.0;
|
|
}
|
|
|
|
level notify( "bar_combat_done" );
|
|
wait 0.5;
|
|
self.allowpain = 1;
|
|
|
|
if ( common_scripts\utility::flag( "rorke_shot_tv" ) && common_scripts\utility::flag( "player_started_bar_combat" ) )
|
|
maps\_utility::smart_dialogue( "cornered_mrk_thatwasntasmart" );
|
|
else
|
|
maps\_utility::smart_dialogue( "cornered_mrk_clear" );
|
|
|
|
wait 0.75;
|
|
|
|
if ( common_scripts\utility::flag( "strobe_on" ) )
|
|
maps\_utility::smart_dialogue( "cornered_mrk_strobesoffthisway" );
|
|
else
|
|
level.player setweaponhudiconoverride( "actionslot1", "" );
|
|
|
|
common_scripts\utility::flag_set( "activate_strobe_off_failsafe" );
|
|
thread bar_rorke_move_on();
|
|
wait 1;
|
|
|
|
if ( common_scripts\utility::flag( "strobe_on" ) )
|
|
thread handle_strobe_off_hint();
|
|
}
|
|
|
|
bar_rorke_move_on()
|
|
{
|
|
var_0 = getnode( "bar_rorke", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
common_scripts\utility::flag_wait( "move_to_junction_entrance" );
|
|
common_scripts\utility::flag_set( "bar_finished" );
|
|
}
|
|
|
|
tv_play( var_0 )
|
|
{
|
|
var_0 endon( "trigger" );
|
|
thread tv_stop( var_0 );
|
|
setsaveddvar( "cg_cinematicFullScreen", "0" );
|
|
|
|
for (;;)
|
|
{
|
|
cinematicingame( "cornered_concert" );
|
|
common_scripts\utility::waitframe();
|
|
|
|
while ( iscinematicplaying() )
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
tv_stop( var_0 )
|
|
{
|
|
var_0 waittill( "trigger" );
|
|
stopcinematicingame();
|
|
}
|
|
|
|
bar_light()
|
|
{
|
|
var_0 = getent( "bar_light_volume", "targetname" );
|
|
var_1 = getent( "bar_script_light", "targetname" );
|
|
var_2 = getent( "bar_light_origin", "targetname" );
|
|
var_3 = var_2 common_scripts\utility::spawn_tag_origin();
|
|
var_4 = getent( "bar_light_aim_assist", "targetname" );
|
|
var_4 notsolid();
|
|
thread tv_play( var_0 );
|
|
common_scripts\utility::exploder( 1972 );
|
|
var_4 enableaimassist();
|
|
var_0 waittill( "trigger" );
|
|
common_scripts\utility::flag_set( "bar_light_shot" );
|
|
level notify( "bar_light_shot" );
|
|
playfxontag( level._effect["spark_fall_shortrun_mp"], var_3, "tag_origin" );
|
|
thread maps\cornered_audio::aud_bar( "light" );
|
|
thread maps\cornered_audio::aud_bar( "panic" );
|
|
thread maps\cornered_audio::aud_bar( "shuffle" );
|
|
var_1 setlightintensity( 0 );
|
|
maps\_utility::stop_exploder( 1972 );
|
|
var_4 disableaimassist();
|
|
var_4 delete();
|
|
wait 2;
|
|
var_3 delete();
|
|
}
|
|
|
|
strobe_on_hide_hint()
|
|
{
|
|
if ( common_scripts\utility::flag( "strobe_on" ) || common_scripts\utility::flag( "bar_guys_new_2_dead" ) || common_scripts\utility::flag( "rorke_killed" ) || common_scripts\utility::flag( "rorke_killed_2" ) )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
handle_strobe_on_hint()
|
|
{
|
|
level endon( "strobe_off_failsafe" );
|
|
level endon( "activate_strobe_off_failsafe" );
|
|
level endon( "bar_guys_new_2_dead" );
|
|
level endon( "rorke_killed" );
|
|
level endon( "rorke_killed_2" );
|
|
level.player endon( "death" );
|
|
|
|
if ( !isdefined( level.player ) || !isalive( level.player ) )
|
|
return;
|
|
|
|
var_0 = 2;
|
|
var_1 = 2;
|
|
var_2 = 1;
|
|
|
|
for (;;)
|
|
{
|
|
level.player maps\_utility::ent_flag_waitopen( "global_hint_in_use" );
|
|
level.player thread maps\_utility::display_hint_timeout( "turn_on_strobe", var_0 );
|
|
level.player maps\_utility::ent_flag_waitopen( "global_hint_in_use" );
|
|
|
|
if ( common_scripts\utility::flag( "strobe_on" ) )
|
|
{
|
|
common_scripts\utility::flag_wait( "strobe_off" );
|
|
var_2 = 0;
|
|
}
|
|
|
|
if ( !var_2 )
|
|
wait( var_1 );
|
|
|
|
if ( var_1 == 2 )
|
|
var_1 = 5;
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
strobe_off_hide_hint()
|
|
{
|
|
if ( common_scripts\utility::flag( "strobe_off" ) )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
handle_strobe_off_hint()
|
|
{
|
|
level endon( "strobe_off" );
|
|
level endon( "strobe_off_failsafe" );
|
|
level.player endon( "death" );
|
|
|
|
if ( !isdefined( level.player ) || !isalive( level.player ) )
|
|
return;
|
|
|
|
for (;;)
|
|
{
|
|
level.player maps\_utility::ent_flag_waitopen( "global_hint_in_use" );
|
|
common_scripts\utility::waitframe();
|
|
level.player thread maps\_utility::display_hint( "turn_off_strobe" );
|
|
}
|
|
}
|
|
|
|
bar_strobe_player_on()
|
|
{
|
|
level endon( "strobe_off_failsafe" );
|
|
thread handle_strobe_on_hint();
|
|
level.player setweaponhudiconoverride( "actionslot1", "hud_icon_strobe" );
|
|
refreshhudammocounter();
|
|
|
|
for (;;)
|
|
{
|
|
level.player notifyonplayercommand( "activate_strobe", "+actionslot 1" );
|
|
level.player waittill( "activate_strobe" );
|
|
common_scripts\utility::flag_set( "strobe_on" );
|
|
level notify( "strobe_on" );
|
|
thread maps\cornered_audio::aud_bar( "strobe" );
|
|
maps\_utility::vision_set_fog_changes( "cornered_strobe", 0.5 );
|
|
common_scripts\utility::flag_clear( "strobe_off" );
|
|
level.strobe_tag = spawn( "script_model", ( 0, 0, 0 ) );
|
|
level.strobe_tag setmodel( "tag_origin" );
|
|
level.strobe_tag.angles = level.player.angles;
|
|
level.strobe_tag linktoplayerview( level.player, "tag_flash", ( 2, 0.5, 0.5 ), ( 0, 0, 0 ), 0 );
|
|
playfxontag( level._effect["cnd_spotlight_strobe"], level.strobe_tag, "tag_origin" );
|
|
wait 0.05;
|
|
level.player notifyonplayercommand( "deactivate_strobe", "+actionslot 1" );
|
|
level.player waittill( "deactivate_strobe" );
|
|
common_scripts\utility::flag_set( "strobe_off" );
|
|
thread maps\cornered_audio::aud_bar( "strobe_stop" );
|
|
maps\_utility::vision_set_fog_changes( "cornered_03", 0.5 );
|
|
common_scripts\utility::flag_clear( "strobe_on" );
|
|
common_scripts\utility::waitframe();
|
|
level.strobe_tag delete();
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
bar_strobe_player_force_off()
|
|
{
|
|
level waittill( "strobe_off_failsafe" );
|
|
|
|
if ( isdefined( level.strobe_tag ) )
|
|
{
|
|
common_scripts\utility::flag_set( "strobe_off" );
|
|
thread maps\cornered_audio::aud_bar( "strobe_stop" );
|
|
common_scripts\utility::flag_clear( "strobe_on" );
|
|
maps\_utility::vision_set_fog_changes( "cornered_04", 1.5 );
|
|
level.strobe_tag delete();
|
|
}
|
|
|
|
level.player setweaponhudiconoverride( "actionslot1", "" );
|
|
}
|
|
|
|
bar_strobe_ally()
|
|
{
|
|
playfxontag( level._effect["cnd_ally_strobe"], level.allies[level.const_rorke], "tag_flash" );
|
|
thread bar_strobe_ally_force_off();
|
|
common_scripts\utility::flag_wait_all( "bar_guys_new_dead", "bar_guys_new_2_dead" );
|
|
wait 1.5;
|
|
stopfxontag( level._effect["cnd_ally_strobe"], level.allies[level.const_rorke], "tag_flash" );
|
|
}
|
|
|
|
bar_strobe_ally_force_off()
|
|
{
|
|
level waittill( "strobe_off_failsafe" );
|
|
stopfxontag( level._effect["cnd_ally_strobe"], level.allies[level.const_rorke], "tag_flash" );
|
|
}
|
|
|
|
bar_enemies()
|
|
{
|
|
level.bar_animnode = common_scripts\utility::getstruct( "courtyard_bar_animnode", "targetname" );
|
|
maps\_utility::array_spawn_function_targetname( "bar_guys", ::bar_enemy_setup );
|
|
maps\_utility::array_spawn_function_targetname( "bar_guys", ::bar_enemy_react );
|
|
maps\_utility::array_spawn_function_targetname( "bar_guys", ::bar_enemy_strobe_react );
|
|
maps\_utility::array_spawn_function_targetname( "bar_guys", ::bar_death );
|
|
maps\_utility::array_spawn_targetname( "bar_guys", 1 );
|
|
wait 1;
|
|
thread bar_enemy_vo();
|
|
thread bar_enemy_panic_vo();
|
|
thread bar_enemy_strobe_vo();
|
|
common_scripts\utility::flag_wait_any( "strobe_on", "_stealth_spotted", "bar_light_shot", "bar_guy_killed", "player_bar_sneaking" );
|
|
var_0 = getentarray( "stealth_clipbrush_custom", "targetname" );
|
|
maps\_utility::array_delete( var_0 );
|
|
thread bar_enemy_seek_player();
|
|
|
|
if ( !common_scripts\utility::flag( "rorke_shoot_tv" ) )
|
|
{
|
|
var_1 = getent( "player_in_bar", "targetname" );
|
|
|
|
while ( !level.player istouching( var_1 ) && !level.allies[level.const_rorke] istouching( var_1 ) )
|
|
common_scripts\utility::waitframe();
|
|
|
|
common_scripts\utility::flag_set( "rorke_shoot_tv" );
|
|
}
|
|
|
|
foreach ( var_3 in level.players )
|
|
{
|
|
var_3.maxvisibledist = 8192;
|
|
|
|
if ( var_3 maps\_utility::ent_flag_exist( "_stealth_enabled" ) )
|
|
var_3 maps\_utility::ent_flag_clear( "_stealth_enabled" );
|
|
}
|
|
|
|
wait 10;
|
|
maps\_stealth_utility::disable_stealth_system();
|
|
level.allies[level.const_baker].ignoreall = 1;
|
|
}
|
|
|
|
bar_death()
|
|
{
|
|
self waittill( "death" );
|
|
common_scripts\utility::flag_set( "bar_guy_killed" );
|
|
}
|
|
|
|
bar_spotted_func()
|
|
{
|
|
wait 0.1;
|
|
}
|
|
|
|
bar_enemy_setup()
|
|
{
|
|
self endon( "death" );
|
|
self.health = 10;
|
|
self.allowdeath = 1;
|
|
self.animname = "generic";
|
|
maps\_stealth_utility::stealth_pre_spotted_function_custom( ::bar_spotted_func );
|
|
var_0 = [];
|
|
var_0["hidden"] = maps\_stealth_behavior_enemy::enemy_state_hidden;
|
|
var_0["spotted"] = maps\cornered_code::custom_bar_enemy_state_spotted;
|
|
maps\_stealth_behavior_enemy::enemy_custom_state_behavior( var_0 );
|
|
|
|
if ( isdefined( self.script_parameters ) && self.script_parameters == "e09" )
|
|
{
|
|
level.bar_guy9 = self;
|
|
thread stop_vo_on_event();
|
|
}
|
|
|
|
if ( isdefined( self.script_parameters ) && self.script_parameters == "e10" )
|
|
{
|
|
level.bar_guy10 = self;
|
|
thread stop_vo_on_event();
|
|
}
|
|
|
|
if ( isdefined( self.script_parameters ) && self.script_parameters == "e11" )
|
|
{
|
|
level.bar_guy11 = self;
|
|
thread stop_vo_on_event();
|
|
}
|
|
|
|
if ( isdefined( self.script_parameters ) && self.script_parameters == "e01" )
|
|
{
|
|
level.e01_glass = spawn( "script_model", self.origin );
|
|
level.e01_glass.origin = self gettagorigin( "tag_weapon_chest" );
|
|
level.e01_glass.angles = self gettagangles( "tag_weapon_chest" );
|
|
level.e01_glass setmodel( "cnd_glass_01" );
|
|
level.e01_glass linkto( self, "tag_weapon_chest" );
|
|
thread bar_enemy_glass_launch( level.e01_glass );
|
|
}
|
|
|
|
if ( isdefined( self.script_parameters ) && self.script_parameters == "e02" )
|
|
{
|
|
level.e02_glass = spawn( "script_model", self.origin );
|
|
level.e02_glass.origin = self gettagorigin( "tag_weapon_chest" );
|
|
level.e02_glass.angles = self gettagangles( "tag_weapon_chest" );
|
|
level.e02_glass setmodel( "cnd_glass_01" );
|
|
level.e02_glass linkto( self, "tag_weapon_chest" );
|
|
thread bar_enemy_glass_launch( level.e02_glass );
|
|
}
|
|
|
|
if ( isdefined( self.script_parameters ) )
|
|
{
|
|
if ( self.script_parameters == "e09" || self.script_parameters == "e10" )
|
|
bar_enemy_reach();
|
|
else
|
|
level.bar_animnode thread maps\_anim::anim_loop_solo( self, "cornered_bar_" + self.script_parameters + "_idle", "stop_loop" );
|
|
}
|
|
}
|
|
|
|
bar_enemy_reach()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "enemy_spotted" + self.script_parameters );
|
|
level endon( "_stealth_spotted" );
|
|
level endon( "strobe_on" );
|
|
level endon( "bar_guy_killed" );
|
|
level endon( "player_bar_sneaking" );
|
|
level endon( "bar_light_shot" );
|
|
self.goalradius = 16;
|
|
self waittill( "_patrol_reached_path_end" );
|
|
level.bar_animnode maps\_anim::anim_reach_solo( self, "cornered_bar_" + self.script_parameters + "_idle" );
|
|
common_scripts\utility::flag_set( self.script_parameters + "_path_done" );
|
|
level.bar_animnode thread maps\_anim::anim_loop_solo( self, "cornered_bar_" + self.script_parameters + "_idle", "stop_loop" );
|
|
}
|
|
|
|
bar_enemy_glass_launch( var_0 )
|
|
{
|
|
common_scripts\utility::waittill_any( "death", "damage", "starting_bar_reaction" );
|
|
var_0 unlink();
|
|
var_0 physicslaunchclient( var_0.origin - ( 0, 0, 2 ), ( 50, -50, -500 ) );
|
|
}
|
|
|
|
bar_enemy_react()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "enemy_spotted" + self.script_parameters );
|
|
maps\_utility::ent_flag_init( "doing_bar_reaction" );
|
|
common_scripts\utility::flag_wait_any( "_stealth_spotted", "bar_guy_killed", "player_bar_sneaking", "bar_light_shot" );
|
|
common_scripts\utility::flag_set( "starting_bar_reaction" );
|
|
maps\_utility::ent_flag_set( "doing_bar_reaction" );
|
|
|
|
if ( !common_scripts\utility::flag( "bar_light_shot" ) )
|
|
common_scripts\utility::flag_set( "player_started_bar_combat" );
|
|
|
|
self notify( "stop_vo" );
|
|
self.ignoreall = 1;
|
|
thread maps\_utility::set_battlechatter( 1 );
|
|
|
|
if ( self.script_parameters == "e01" || self.script_parameters == "e02" || self.script_parameters == "e03" || self.script_parameters == "e04" || self.script_parameters == "e07" || self.script_parameters == "e11" )
|
|
{
|
|
level.bar_animnode notify( "stop_loop" );
|
|
level.bar_animnode maps\_anim::anim_single_solo( self, "cornered_bar_" + self.script_parameters + "_react_shoot" );
|
|
}
|
|
else if ( self.script_parameters == "e09" )
|
|
{
|
|
if ( common_scripts\utility::flag( self.script_parameters + "_path_done" ) )
|
|
{
|
|
level.bar_animnode notify( "stop_loop" );
|
|
level.bar_animnode maps\_anim::anim_single_solo( self, "cornered_bar_" + self.script_parameters + "_react_shoot" );
|
|
}
|
|
else
|
|
{
|
|
self notify( "end_patrol" );
|
|
self setgoalpos( self.origin );
|
|
level.bar_animnode notify( "stop_loop" );
|
|
maps\_utility::anim_stopanimscripted();
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
else if ( self.script_parameters == "e10" )
|
|
{
|
|
self notify( "end_patrol" );
|
|
self setgoalpos( self.origin );
|
|
level.bar_animnode notify( "stop_loop" );
|
|
maps\_utility::anim_stopanimscripted();
|
|
}
|
|
else
|
|
{
|
|
self notify( "end_patrol" );
|
|
level.bar_animnode notify( "stop_loop" );
|
|
maps\_utility::anim_stopanimscripted();
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
maps\_utility::ent_flag_clear( "doing_bar_reaction" );
|
|
bar_react_variable_wait();
|
|
self.ignoreall = 0;
|
|
maps\_stealth_utility::disable_stealth_for_ai();
|
|
self.dontevershoot = undefined;
|
|
var_0 = getent( "enemy_bar_volume", "targetname" );
|
|
|
|
if ( !common_scripts\utility::flag( "player_broke_bar_combat" ) )
|
|
self setgoalvolumeauto( var_0 );
|
|
|
|
thread bar_enemy_lights_out_accuracy();
|
|
common_scripts\utility::flag_set( "bar_enemies_reacted" );
|
|
}
|
|
|
|
bar_react_variable_wait()
|
|
{
|
|
level endon( "strobe_on" );
|
|
self endon( "death" );
|
|
level endon( "player_bar_sneaking" );
|
|
|
|
if ( common_scripts\utility::flag( "player_bar_sneaking" ) )
|
|
return;
|
|
|
|
if ( common_scripts\utility::flag( "_stealth_spotted" ) || common_scripts\utility::flag( "bar_guy_killed" ) )
|
|
wait( randomfloatrange( 1.8, 2.5 ) );
|
|
else
|
|
wait 6;
|
|
}
|
|
|
|
bar_enemy_lights_out_accuracy()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "end_failsafe" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( common_scripts\utility::flag( "bar_light_shot" ) )
|
|
{
|
|
self.oldaccuracy = self.baseaccuracy;
|
|
self.baseaccuracy = 0.001;
|
|
wait( randomfloatrange( 2.5, 3.0 ) );
|
|
self.baseaccuracy = self.oldaccuracy;
|
|
self notify( "end_failsafe" );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
bar_enemy_strobe_react()
|
|
{
|
|
self endon( "death" );
|
|
var_0 = [];
|
|
var_0[0] = level.player;
|
|
var_0[1] = level.allies[level.const_rorke];
|
|
common_scripts\utility::flag_wait( "strobe_on" );
|
|
|
|
if ( maps\_utility::ent_flag_exist( "doing_bar_reaction" ) )
|
|
{
|
|
while ( maps\_utility::ent_flag( "doing_bar_reaction" ) )
|
|
wait 0.05;
|
|
}
|
|
|
|
level.bar_animnode notify( "stop_loop" );
|
|
maps\_utility::anim_stopanimscripted();
|
|
common_scripts\utility::waitframe();
|
|
|
|
for (;;)
|
|
{
|
|
if ( !common_scripts\utility::flag( "strobe_on" ) )
|
|
common_scripts\utility::flag_wait( "strobe_on" );
|
|
|
|
var_1 = vectornormalize( level.player.origin - self.origin );
|
|
var_2 = anglestoforward( self.angles );
|
|
var_3 = vectordot( var_1, var_2 );
|
|
var_4 = vectorcross( var_1, var_2 );
|
|
var_5 = vectordot( var_4, var_2 );
|
|
self.ignoreall = 1;
|
|
self.dontevershoot = 1;
|
|
|
|
if ( var_3 >= 0.7 )
|
|
thread maps\_anim::anim_custom_animmode_loop_solo( self, "gravity", "cornered_bar_react_front" );
|
|
else if ( var_3 <= -0.7 )
|
|
thread maps\_anim::anim_custom_animmode_loop_solo( self, "gravity", "cornered_bar_react_rear" );
|
|
else if ( var_5 >= 0.0 )
|
|
thread maps\_anim::anim_custom_animmode_loop_solo( self, "gravity", "cornered_bar_react_left" );
|
|
else
|
|
thread maps\_anim::anim_custom_animmode_loop_solo( self, "gravity", "cornered_bar_react_right" );
|
|
|
|
common_scripts\utility::flag_wait( "strobe_off" );
|
|
wait( randomfloatrange( 0.75, 1.25 ) );
|
|
self notify( "stop_animmode" );
|
|
self stopanimscripted();
|
|
self.ignoreall = 0;
|
|
self.dontevershoot = undefined;
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
bar_enemies_wave2()
|
|
{
|
|
maps\_utility::array_spawn_function_targetname( "bar_guys_new_2", ::bar_enemy_wave2_behavior );
|
|
common_scripts\utility::flag_wait_any( "bar_wave2_failsafe", "2nd_wave_standard" );
|
|
maps\_utility::array_spawn_targetname( "bar_guys_new_2", 1 );
|
|
}
|
|
|
|
bar_enemy_wave2_behavior()
|
|
{
|
|
self endon( "death" );
|
|
self.ignoreall = 1;
|
|
self.dontevershoot = 1;
|
|
self.goalradius = 40;
|
|
stop_magic_bullet_shield_if_on();
|
|
self.allowdeath = 1;
|
|
self.animname = "generic";
|
|
|
|
while ( !self cansee( level.player ) )
|
|
wait 0.05;
|
|
|
|
wait 0.75;
|
|
thread bar_enemy_wave2_3_react();
|
|
}
|
|
|
|
bar_enemy_wave2_3_react()
|
|
{
|
|
self endon( "death" );
|
|
|
|
if ( common_scripts\utility::flag( "bar_light_shot" ) )
|
|
thread bar_enemy_strobe_react();
|
|
else
|
|
{
|
|
self.ignoreall = 0;
|
|
maps\_stealth_utility::disable_stealth_for_ai();
|
|
self.dontevershoot = undefined;
|
|
thread bar_enemy_lights_out_accuracy();
|
|
common_scripts\utility::flag_set( "bar_enemies_reacted" );
|
|
common_scripts\utility::flag_wait( "strobe_on" );
|
|
thread bar_enemy_strobe_react();
|
|
self.ignoreall = 1;
|
|
self.dontevershoot = 1;
|
|
}
|
|
}
|
|
|
|
bar_enemy_seek_player()
|
|
{
|
|
level endon( "bar_combat_done" );
|
|
level.player endon( "death" );
|
|
level.allies[level.const_rorke] endon( "death" );
|
|
common_scripts\utility::flag_wait( "bar_enemies_reacted" );
|
|
common_scripts\utility::flag_set( "player_broke_bar_combat" );
|
|
thread bar_enemy_kill_rorke();
|
|
var_0 = getent( "player_in_bar", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( !level.player istouching( var_0 ) )
|
|
{
|
|
var_1 = getaiarray( "axis" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
if ( isdefined( var_3 ) && isalive( var_3 ) )
|
|
{
|
|
wait 0.1;
|
|
var_3 cleargoalvolume();
|
|
var_3.baseaccuracy = 100;
|
|
var_3 thread maps\_utility::player_seek_enable();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
bar_enemy_kill_rorke()
|
|
{
|
|
level endon( "bar_combat_done" );
|
|
level.player endon( "death" );
|
|
level.allies[level.const_rorke] endon( "death" );
|
|
var_0 = getent( "player_in_office", "targetname" );
|
|
var_1 = getent( "player_in_bar", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.player istouching( var_0 ) && level.allies[level.const_rorke] istouching( var_1 ) )
|
|
{
|
|
level thread mission_failed_watcher();
|
|
level.allies[level.const_rorke] stop_magic_bullet_shield_if_on();
|
|
level.allies[level.const_rorke] kill();
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
bar_props()
|
|
{
|
|
thread bar_stool_anim( "bar_01_1", "bar_01_2", "cornered_bar_chair_e01" );
|
|
thread bar_stool_anim( "bar_02a_1", "bar_02a_2", "cornered_bar_chair_e02a" );
|
|
thread bar_stool_anim( "bar_02b_1", undefined, "cornered_bar_chair_e02b" );
|
|
thread bar_stool_anim( "bar_04_1", "bar_04_2", "cornered_bar_chair_e04" );
|
|
}
|
|
|
|
bar_stool_anim( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = common_scripts\utility::getstruct( "courtyard_bar_animnode", "targetname" );
|
|
var_4 = maps\_utility::spawn_anim_model( "bar_chair" );
|
|
var_5 = undefined;
|
|
var_6 = undefined;
|
|
var_7 = undefined;
|
|
var_8 = undefined;
|
|
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
var_9 = getentarray( var_0, "targetname" );
|
|
|
|
foreach ( var_11 in var_9 )
|
|
{
|
|
if ( var_11.script_noteworthy == "stool" )
|
|
var_5 = var_11;
|
|
|
|
if ( var_11.script_noteworthy == "clip_stool" )
|
|
var_6 = var_11;
|
|
}
|
|
|
|
var_6 linkto( var_5 );
|
|
}
|
|
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
var_13 = getentarray( var_1, "targetname" );
|
|
|
|
foreach ( var_11 in var_13 )
|
|
{
|
|
if ( var_11.script_noteworthy == "stool" )
|
|
var_7 = var_11;
|
|
|
|
if ( var_11.script_noteworthy == "clip_stool" )
|
|
var_8 = var_11;
|
|
}
|
|
|
|
var_8 linkto( var_7 );
|
|
}
|
|
|
|
var_3 maps\_anim::anim_first_frame_solo( var_4, var_2 );
|
|
var_16 = var_4 gettagorigin( "J_prop_1" );
|
|
var_17 = var_4 gettagangles( "J_prop_1" );
|
|
var_18 = var_4 gettagorigin( "J_prop_2" );
|
|
var_19 = var_4 gettagangles( "J_prop_2" );
|
|
common_scripts\utility::waitframe();
|
|
|
|
if ( isdefined( var_5 ) )
|
|
{
|
|
var_5.origin = var_16;
|
|
var_5.angles = var_17;
|
|
var_5 linkto( var_4, "J_prop_1" );
|
|
}
|
|
|
|
if ( isdefined( var_7 ) )
|
|
{
|
|
var_7.origin = var_18;
|
|
var_7.angles = var_19;
|
|
var_7 linkto( var_4, "J_prop_2" );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "starting_bar_reaction" );
|
|
var_3 maps\_anim::anim_single_solo( var_4, var_2 );
|
|
}
|
|
|
|
bar_guy_watch_death()
|
|
{
|
|
level endon( "end_bar_vo" );
|
|
self waittill( "death" );
|
|
level notify( "end_bar_vo" );
|
|
}
|
|
|
|
bar_enemy_vo()
|
|
{
|
|
level.bar_guy9 endon( "stop_my_vo" );
|
|
level.bar_guy10 endon( "stop_my_vo" );
|
|
level.bar_guy11 endon( "stop_my_vo" );
|
|
level endon( "end_bar_vo" );
|
|
level.bar_guy9 thread bar_guy_watch_death();
|
|
level.bar_guy10 thread bar_guy_watch_death();
|
|
level.bar_guy11 thread bar_guy_watch_death();
|
|
level.bar_guy9 maps\_utility::smart_dialogue( "cornered_saf1_tothefederation" );
|
|
level.bar_guy10 maps\_utility::smart_dialogue( "cornered_saf2_thefederation" );
|
|
level.bar_guy11 maps\_utility::smart_dialogue( "cornered_pmc3_yesthefederation" );
|
|
wait( randomfloatrange( 3.5, 6.0 ) );
|
|
level.bar_guy11 maps\_utility::smart_dialogue( "cornered_pmc3_whenarethelights" );
|
|
level.bar_guy9 maps\_utility::smart_dialogue( "cornered_saf1_ihaventheard" );
|
|
level.bar_guy10 maps\_utility::smart_dialogue( "cornered_saf2_thefireworkslookbetter" );
|
|
wait( randomfloatrange( 3.5, 6.0 ) );
|
|
level.bar_guy10 maps\_utility::smart_dialogue( "cornered_saf2_drinkupthebeer" );
|
|
level.bar_guy11 maps\_utility::smart_dialogue( "cornered_pmc3_thatsthebestorder" );
|
|
level.bar_guy9 maps\_utility::smart_dialogue( "cornered_saf1_laughing" );
|
|
wait( randomfloatrange( 3.5, 6.0 ) );
|
|
level.bar_guy9 maps\_utility::smart_dialogue( "cornered_saf1_thisamericantequilatastes" );
|
|
level.bar_guy10 maps\_utility::smart_dialogue( "cornered_saf2_theirbeerisworse" );
|
|
level.bar_guy11 maps\_utility::smart_dialogue( "cornered_pmc3_iknowitslike" );
|
|
}
|
|
|
|
bar_enemy_panic_vo()
|
|
{
|
|
level endon( "strobe_on" );
|
|
common_scripts\utility::flag_wait( "bar_light_shot" );
|
|
wait 0.25;
|
|
var_0 = maps\_utility::get_living_ai_array( "bar_guys", "script_noteworthy" );
|
|
var_1 = [];
|
|
var_1[0] = "cornered_saf1_whatthehellis";
|
|
var_1[1] = "cornered_saf2_whoturnedoffthe";
|
|
var_1[2] = "cornered_pmc3_whathappened";
|
|
var_1[3] = "cornered_saf1_areweunderattack";
|
|
var_1[4] = "cornered_saf2_getarepaircrew";
|
|
var_1[5] = "cornered_pmc3_someonegetthelights";
|
|
var_1[6] = "cornered_saf1_isanyonethere";
|
|
var_2 = 0;
|
|
|
|
for (;;)
|
|
{
|
|
var_0 = maps\_utility::array_removedead( var_0 );
|
|
common_scripts\utility::array_randomize( var_0 );
|
|
|
|
if ( !isalive( var_0[0] ) )
|
|
{
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
|
|
if ( isalive( var_0[0] ) )
|
|
{
|
|
if ( var_2 >= var_1.size )
|
|
var_2 = 0;
|
|
|
|
var_3 = var_1[var_2];
|
|
var_0[0] maps\_utility::smart_dialogue( var_3 );
|
|
var_2++;
|
|
}
|
|
|
|
wait( randomfloatrange( 0.5, 1.0 ) );
|
|
}
|
|
}
|
|
|
|
bar_enemy_strobe_vo()
|
|
{
|
|
level endon( "bar_wave1_dead" );
|
|
common_scripts\utility::flag_wait( "strobe_on" );
|
|
wait 0.25;
|
|
var_0 = maps\_utility::get_living_ai_array( "bar_guys", "script_noteworthy" );
|
|
var_1 = [];
|
|
var_1[0] = "cornered_saf1_overthere";
|
|
var_1[1] = "cornered_saf2_theretheyare";
|
|
var_1[2] = "cornered_pmc3_icantseethem";
|
|
var_1[3] = "cornered_saf1_howmanyarethere";
|
|
var_1[4] = "cornered_saf2_whatthehellis_2";
|
|
var_1[5] = "cornered_pmc3_getreinforcementsuphere";
|
|
var_1[6] = "cornered_saf1_weneedthoselights";
|
|
var_2 = 0;
|
|
|
|
for (;;)
|
|
{
|
|
var_0 = maps\_utility::array_removedead( var_0 );
|
|
common_scripts\utility::array_randomize( var_0 );
|
|
|
|
if ( !isalive( var_0[0] ) )
|
|
{
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
|
|
if ( isalive( var_0[0] ) )
|
|
{
|
|
if ( var_2 >= var_1.size )
|
|
var_2 = 0;
|
|
|
|
var_3 = var_1[var_2];
|
|
var_0[0] maps\_utility::smart_dialogue( var_3 );
|
|
var_2++;
|
|
}
|
|
|
|
wait( randomfloatrange( 0.5, 1.0 ) );
|
|
}
|
|
}
|
|
|
|
courtyard_cleanup_enemies()
|
|
{
|
|
var_0 = getentarray( "stealth_clipbrush_custom", "targetname" );
|
|
maps\_utility::array_delete( var_0 );
|
|
}
|
|
|
|
junction_handler()
|
|
{
|
|
level.allies[level.const_rorke] thread junction_airlock_rorke();
|
|
level.allies[level.const_baker] thread junction_baker_open_elevator_control_room();
|
|
thread junction_elevator_control_panel();
|
|
thread junction_pip_init();
|
|
thread junction_pip_scenario();
|
|
var_0 = getent( "send_in_junction_enemies_trigger", "targetname" );
|
|
var_0 common_scripts\utility::trigger_off();
|
|
common_scripts\utility::flag_wait( "rorke_opening_junction_exit_door" );
|
|
maps\_stealth_utility::disable_stealth_system();
|
|
var_1 = getent( "combat_rappel_fall_volume", "targetname" );
|
|
var_1 thread maps\cornered_code::cornered_falling_death();
|
|
maps\_utility::delaythread( 1.5, ::junction_vo );
|
|
level.allies[level.const_rorke] thread junction_rorke_window();
|
|
common_scripts\utility::flag_wait( "obj_disable_elevators_complete" );
|
|
thread maps\_utility::autosave_now();
|
|
thread junction_enemies();
|
|
var_0 common_scripts\utility::trigger_on();
|
|
maps\cornered_code::give_back_offhands();
|
|
level.allies[level.const_rorke] thread junction_ally_combat_state();
|
|
level.allies[level.const_baker] thread junction_ally_combat_state();
|
|
level.allies[level.const_baker] thread force_baker_to_node();
|
|
var_2 = getnode( "junction_backup_spot_rorke", "targetname" );
|
|
level.allies[level.const_rorke] setgoalnode( var_2 );
|
|
level.allies[level.const_rorke] maps\_utility::teleport_ai( var_2 );
|
|
common_scripts\utility::flag_wait( "junction_enemies_dead" );
|
|
wait 1.5;
|
|
level.allies[level.const_rorke] thread rorke_rappel_hookup();
|
|
level.allies[level.const_baker] thread baker_rappel_hookup();
|
|
}
|
|
|
|
force_baker_to_node()
|
|
{
|
|
var_0 = getnode( "junction_backup_spot_baker", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
maps\_utility::set_goal_radius( 16 );
|
|
maps\_utility::disable_surprise();
|
|
maps\_utility::disable_pain();
|
|
self.ignoresuppression = 1;
|
|
self.disablebulletwhizbyreaction = 1;
|
|
self.disablefriendlyfirereaction = 1;
|
|
self.disablereactionanims = 1;
|
|
self.ignoreall = 1;
|
|
self waittill( "goal" );
|
|
maps\_utility::enable_surprise();
|
|
maps\_utility::enable_pain();
|
|
self.ignoresuppression = 0;
|
|
self.disablebulletwhizbyreaction = 0;
|
|
self.disablefriendlyfirereaction = 0;
|
|
self.disablereactionanims = 0;
|
|
self.ignoreall = 0;
|
|
}
|
|
|
|
rorke_rappel_hookup()
|
|
{
|
|
level endon( "c_rappel_player_on_rope" );
|
|
level.rorke_and_combat_rappel_rope = [];
|
|
level.rorke_and_combat_rappel_rope[0] = self;
|
|
level.rorke_and_combat_rappel_rope[1] = level.combat_rappel_rope_rorke;
|
|
level.player_start_rappel_struct thread maps\_anim::anim_single( level.rorke_and_combat_rappel_rope, "cornered_junction_c4_enter_rorke" );
|
|
self waittillmatch( "single anim", "ps_cornered_mrk_hookuptothe_2" );
|
|
common_scripts\utility::flag_set( "c4_vo_over" );
|
|
self waittillmatch( "single anim", "end" );
|
|
|
|
if ( !common_scripts\utility::flag( "c_rappel_player_on_rope" ) )
|
|
level.player_start_rappel_struct thread maps\_anim::anim_loop( level.rorke_and_combat_rappel_rope, "cornered_junction_c4_idle_rorke", "stop_loop_rorke" );
|
|
}
|
|
|
|
baker_rappel_hookup()
|
|
{
|
|
level endon( "c_rappel_player_on_rope" );
|
|
var_0 = spawn( "script_model", ( 0, 0, 0 ) );
|
|
var_0 setmodel( "weapon_c4" );
|
|
var_0.animname = "junction_baker_c4";
|
|
var_0 maps\_anim::setanimtree();
|
|
var_0 hide();
|
|
var_0 thread maps\cornered_code::entity_cleanup( "c_rappel_player_on_rope" );
|
|
var_1 = spawn( "script_model", ( 0, 0, 0 ) );
|
|
var_1 setmodel( "weapon_c4" );
|
|
var_1.animname = "junction_rorke_c4";
|
|
var_1 maps\_anim::setanimtree();
|
|
var_1 hide();
|
|
var_1 thread maps\cornered_code::entity_cleanup( "c_rappel_player_on_rope" );
|
|
level.player_start_rappel_struct maps\_anim::anim_first_frame_solo( var_0, "cornered_junction_c4_enter_baker" );
|
|
level.player_start_rappel_struct maps\_anim::anim_first_frame_solo( var_1, "cornered_junction_c4_enter_baker" );
|
|
var_2 = [];
|
|
var_2[0] = self;
|
|
var_2[1] = var_0;
|
|
var_2[2] = var_1;
|
|
var_0 show();
|
|
var_1 show();
|
|
thread maps\cornered_audio::aud_c4_hesh( var_0 );
|
|
thread maps\cornered_audio::aud_c4_keegan( var_1 );
|
|
level.player_start_rappel_struct maps\_anim::anim_single( var_2, "cornered_junction_c4_enter_baker" );
|
|
|
|
if ( !common_scripts\utility::flag( "c_rappel_player_on_rope" ) )
|
|
level.player_start_rappel_struct thread maps\_anim::anim_loop( var_2, "cornered_junction_c4_idle_" + self.animname, "stop_loop_" + self.animname );
|
|
}
|
|
|
|
junction_cameras()
|
|
{
|
|
setsaveddvar( "cg_cinematicFullScreen", "0" );
|
|
cinematicingameloopresident( "cornered_security_cam" );
|
|
common_scripts\utility::flag_wait( "c_rappel_player_on_rope" );
|
|
stopcinematicingame();
|
|
}
|
|
|
|
junction_airlock_rorke()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "junction_entry_animnode", "targetname" );
|
|
|
|
if ( !isdefined( level.started_junction_from_startpoint ) )
|
|
{
|
|
var_1 = getent( "junction_entrance_player_clip", "targetname" );
|
|
var_1 notsolid();
|
|
var_0 maps\_anim::anim_reach_solo( self, "junction_door1_merrick_enter" );
|
|
thread maps\cornered_audio::aud_door( "stealth1" );
|
|
thread junction_airlock_door_open( "junction_door", "junction_door_handle", "junction_door1" );
|
|
var_0 maps\_anim::anim_single_solo( self, "junction_door1_merrick_enter" );
|
|
common_scripts\utility::flag_set( "merrick_in_airlock" );
|
|
|
|
if ( !common_scripts\utility::flag( "junction_entrance_close" ) )
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "junction_door1_merrick_loop", "stop_loop" );
|
|
|
|
common_scripts\utility::flag_wait( "junction_entrance_close" );
|
|
var_0 notify( "stop_loop" );
|
|
thread maps\cornered_audio::aud_door( "stealth1b" );
|
|
var_1 solid();
|
|
var_0 maps\_anim::anim_single_solo( self, "junction_door1_merrick_exit" );
|
|
var_1 delete();
|
|
}
|
|
|
|
thread junction_banners();
|
|
thread courtyard_cleanup_enemies();
|
|
thread junction_fireworks();
|
|
var_0 maps\_anim::anim_reach_solo( self, "junction_door2_merrick_enter" );
|
|
thread maps\cornered_audio::aud_door( "stealth2" );
|
|
thread junction_airlock_door_open( "junction_exit_door", "junction_door_exit_handle", "junction_door2" );
|
|
common_scripts\utility::flag_set( "rorke_opening_junction_exit_door" );
|
|
var_0 maps\_anim::anim_single_solo( self, "junction_door2_merrick_enter" );
|
|
}
|
|
|
|
junction_airlock_door_open( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = getent( var_0, "targetname" );
|
|
var_4 = getentarray( var_1, "targetname" );
|
|
|
|
foreach ( var_6 in var_4 )
|
|
var_6 linkto( var_3 );
|
|
|
|
var_8 = common_scripts\utility::getstruct( "junction_entry_animnode", "targetname" );
|
|
var_9 = maps\_utility::spawn_anim_model( "junction_airlock_door" );
|
|
var_8 maps\_anim::anim_first_frame_solo( var_9, var_2 + "_enter" );
|
|
var_3 linkto( var_9, "J_prop_1" );
|
|
var_8 thread maps\_anim::anim_single_solo( var_9, var_2 + "_enter" );
|
|
wait 2.5;
|
|
var_3 connectpaths();
|
|
var_9 waittillmatch( "single anim", "end" );
|
|
|
|
if ( var_3.targetname == "junction_door" )
|
|
{
|
|
if ( !common_scripts\utility::flag( "junction_entrance_close" ) )
|
|
var_8 thread maps\_anim::anim_loop_solo( var_9, var_2 + "_loop", "stop_loop" );
|
|
|
|
common_scripts\utility::flag_wait( "junction_entrance_close" );
|
|
var_8 notify( "stop_loop" );
|
|
var_3 disconnectpaths();
|
|
var_8 maps\_anim::anim_single_solo( var_9, var_2 + "_exit" );
|
|
}
|
|
|
|
var_3 unlink();
|
|
|
|
if ( isdefined( var_9 ) )
|
|
var_9 delete();
|
|
|
|
common_scripts\utility::flag_wait( "part_one_start" );
|
|
|
|
if ( isdefined( var_4 ) )
|
|
maps\_utility::array_delete( var_4 );
|
|
}
|
|
|
|
junction_rorke_window()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "elevator_script_node", "targetname" );
|
|
var_0.angles = ( 0, 0, 0 );
|
|
var_0 maps\_anim::anim_reach_solo( self, "rorke_enter_junction" );
|
|
common_scripts\utility::flag_set( "rorke_starts_handoff_anim" );
|
|
var_0 maps\_anim::anim_single_solo( self, "rorke_enter_junction" );
|
|
self.dontavoidplayer = 1;
|
|
|
|
if ( !common_scripts\utility::flag( "obj_disable_elevators_complete" ) )
|
|
{
|
|
var_1 = getnode( "combat_rappel_hookup_spot_rorke", "targetname" );
|
|
level.allies[level.const_rorke] setgoalnode( var_1 );
|
|
}
|
|
}
|
|
|
|
junction_vo()
|
|
{
|
|
wait 0.05;
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_heshwereenteringfrom" );
|
|
wait 0.2;
|
|
level.allies[level.const_baker] maps\_utility::smart_dialogue( "cornered_hsh_rogerthatimalmost" );
|
|
thread help_baker_control_panel_vo();
|
|
common_scripts\utility::flag_wait( "baker_open_elevator_control_room_doors" );
|
|
common_scripts\utility::flag_wait( "hesh_elevator_vo_said" );
|
|
var_0 = maps\_utility::make_array( "cornered_hsh_shutitdown", "cornered_hsh_goonshutem", "cornered_hsh_hurryupshutdown", "cornered_hsh_goontakeout" );
|
|
thread maps\cornered_code::nag_until_flag( var_0, "start_disable_elevators", 5, 10, 5 );
|
|
common_scripts\utility::flag_wait( "start_hesh_elevator_exit" );
|
|
thread maps\_utility::battlechatter_on( "axis" );
|
|
common_scripts\utility::flag_wait( "obj_disable_elevators_complete" );
|
|
wait 2.0;
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_theyvefoundusget" );
|
|
wait 1.0;
|
|
maps\_utility::music_play( "mus_cornered_combat_quick" );
|
|
maps\_utility::set_team_bcvoice( "allies", "taskforce" );
|
|
thread maps\_utility::battlechatter_on( "allies" );
|
|
common_scripts\utility::flag_wait( "junction_enemies_wave_2" );
|
|
wait 1;
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_werelosingtimewe" );
|
|
common_scripts\utility::flag_wait( "junction_enemies_dead" );
|
|
common_scripts\utility::flag_wait( "c4_vo_over" );
|
|
wait 0.5;
|
|
var_1 = getent( "hesh_junction_vo_volume", "targetname" );
|
|
thread vo_by_volume( level.allies[level.const_baker], var_1, "cornered_hsh_gohookupadam" );
|
|
var_1 = getent( "merrick_junction_vo_volume", "targetname" );
|
|
thread vo_by_volume( level.allies[level.const_rorke], var_1, "cornered_mrk_grabyourlinewe" );
|
|
common_scripts\utility::flag_set( "junction_finished" );
|
|
}
|
|
|
|
help_baker_control_panel_vo()
|
|
{
|
|
common_scripts\utility::flag_wait( "rorke_starts_handoff_anim" );
|
|
wait 5;
|
|
|
|
if ( !common_scripts\utility::flag( "baker_open_elevator_control_room_doors" ) )
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_gogivehesha" );
|
|
}
|
|
|
|
vo_by_volume( var_0, var_1, var_2 )
|
|
{
|
|
level endon( "c_rappel_player_on_rope" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.player istouching( var_1 ) && !isdefined( level.vo_by_volume ) )
|
|
{
|
|
level.vo_by_volume = 1;
|
|
var_0 maps\_utility::smart_dialogue( var_2 );
|
|
wait 1;
|
|
level.vo_by_volume = undefined;
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
junction_baker_open_elevator_control_room()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "elevator_script_node", "targetname" );
|
|
var_0.angles = ( 0, 0, 0 );
|
|
var_0 maps\_anim::anim_first_frame_solo( self, "baker_enter_junction" );
|
|
thread baker_junction_door_open( var_0 );
|
|
common_scripts\utility::flag_wait( "baker_enter_junction" );
|
|
var_0 maps\_anim::anim_single_solo( self, "baker_enter_junction" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "baker_keypad_loop", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "baker_open_elevator_control_room_doors" );
|
|
thread if_offhands_are_grabbed();
|
|
thread junction_cameras();
|
|
var_0 notify( "stop_loop" );
|
|
waittillframeend;
|
|
thread junction_elevator_control_doors_open( var_0 );
|
|
common_scripts\utility::flag_set( "start_junction_pip_scenario" );
|
|
var_0 maps\_anim::anim_single_solo( self, "baker_elevator_enter" );
|
|
common_scripts\utility::flag_set( "hesh_elevator_vo_said" );
|
|
var_0 thread maps\_anim::anim_loop_solo( self, "baker_elevator_loop", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "player_shutting_down_elevators" );
|
|
var_0 notify( "stop_loop" );
|
|
self stopanimscripted();
|
|
waittillframeend;
|
|
var_0 maps\_anim::anim_first_frame_solo( self, "baker_elevator_exit" );
|
|
common_scripts\utility::flag_wait( "start_hesh_elevator_exit" );
|
|
var_0 maps\_anim::anim_single_solo( self, "baker_elevator_exit" );
|
|
maps\_utility::disable_cqbwalk();
|
|
}
|
|
|
|
if_offhands_are_grabbed()
|
|
{
|
|
level endon( "obj_disable_elevators_complete" );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 = level.player getweaponammoclip( "fraggrenade" );
|
|
|
|
if ( var_0 > 0 )
|
|
{
|
|
level.player enableoffhandweapons();
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
baker_junction_door_open( var_0 )
|
|
{
|
|
var_1 = getent( "baker_junction_hallway_door_brushes", "targetname" );
|
|
var_2 = getent( "baker_junction_hallway_door_model", "targetname" );
|
|
var_2 linkto( var_1 );
|
|
var_3 = maps\_utility::spawn_anim_model( "baker_junction_door" );
|
|
var_0 maps\_anim::anim_first_frame_solo( var_3, "baker_enter_junction" );
|
|
var_1 linkto( var_3, "J_prop_1" );
|
|
common_scripts\utility::flag_wait( "baker_enter_junction" );
|
|
thread maps\cornered_audio::aud_junction( "hesh" );
|
|
var_0 maps\_anim::anim_single_solo( var_3, "baker_enter_junction" );
|
|
var_1 unlink();
|
|
|
|
if ( isdefined( var_3 ) )
|
|
var_3 delete();
|
|
}
|
|
|
|
junction_elevator_control_doors_open( var_0 )
|
|
{
|
|
var_1 = maps\_utility::spawn_anim_model( "junction_keypad_door" );
|
|
var_0 maps\_anim::anim_first_frame_solo( var_1, "cornered_junction_keypad_door" );
|
|
var_2 = getent( "elevator_control_room_door_left", "targetname" );
|
|
var_3 = getent( "elevator_control_room_door_right", "targetname" );
|
|
var_4 = getent( "elevator_control_room_door_clip", "targetname" );
|
|
common_scripts\utility::waitframe();
|
|
var_3 linkto( var_1, "J_prop_1" );
|
|
var_2 linkto( var_1, "J_prop_2" );
|
|
thread maps\cornered_audio::aud_door( "elevator_room" );
|
|
var_0 thread maps\_anim::anim_single_solo( var_1, "cornered_junction_keypad_door" );
|
|
wait 3.5;
|
|
var_4 notsolid();
|
|
var_4 connectpaths();
|
|
var_4 delete();
|
|
}
|
|
|
|
junction_elevator_control_panel()
|
|
{
|
|
var_0 = getent( "disable_elevators_trigger", "targetname" );
|
|
var_0 common_scripts\utility::trigger_off();
|
|
var_1 = getent( "disable_elevators_trigger_old", "targetname" );
|
|
|
|
if ( isdefined( var_1 ) )
|
|
var_1 delete();
|
|
|
|
if ( level.player common_scripts\utility::is_player_gamepad_enabled() )
|
|
var_0 sethintstring( &"CORNERED_DISABLE_ELEVATORS_CONSOLE" );
|
|
else
|
|
var_0 sethintstring( &"CORNERED_DISABLE_ELEVATORS" );
|
|
|
|
var_2 = maps\_utility::spawn_anim_model( "elevator_control_panel" );
|
|
var_3 = maps\_utility::spawn_anim_model( "elevator_control_panel" );
|
|
var_4 = maps\_utility::spawn_anim_model( "multi_tool" );
|
|
maps\cornered_code::hide_player_arms();
|
|
var_4 hide();
|
|
var_5 = common_scripts\utility::getstruct( "elevator_script_node", "targetname" );
|
|
var_5.angles = ( 0, 0, 0 );
|
|
var_4 maps\_anim::anim_first_frame_solo( var_4, "cornered_elevator_junction_player_clippers" );
|
|
var_5 maps\_anim::anim_first_frame_solo( var_2, "cornered_elevator_junction_upper_panel" );
|
|
var_5 maps\_anim::anim_first_frame_solo( var_3, "cornered_elevator_junction_lower_panel" );
|
|
var_5 maps\_anim::anim_first_frame_solo( level.cornered_player_arms, "cornered_elevator_junction_player" );
|
|
var_3 thread control_panel_setup_lights();
|
|
var_2 thread control_panel_setup_lights();
|
|
var_2 setmodel( "cnd_server_control_panel_anim_obj" );
|
|
common_scripts\utility::flag_wait( "start_junction_pip_scenario" );
|
|
wait 8;
|
|
var_0 common_scripts\utility::trigger_on();
|
|
maps\player_scripted_anim_util::waittill_trigger_activate_looking_at( var_0, var_2, cos( 40 ), 0, 1 );
|
|
common_scripts\utility::flag_set( "start_disable_elevators" );
|
|
level.player allowcrouch( 0 );
|
|
level.player allowprone( 0 );
|
|
|
|
if ( level.player getstance() != "stand" )
|
|
level.player setstance( "stand" );
|
|
|
|
level.combat_rappel_rope_coil_rorke show();
|
|
level.combat_rappel_rope_coil_player show();
|
|
level.combat_rappel_rope_coil_baker show();
|
|
level.combat_rappel_rope_rorke = maps\_utility::spawn_anim_model( "cnd_rappel_tele_rope" );
|
|
level.combat_rappel_rope_rorke.animname = "combat_rappel_exit_rope_rorke";
|
|
level.player_start_rappel_struct = common_scripts\utility::getstruct( "player_start_rappel_struct", "targetname" );
|
|
level.player_start_rappel_struct maps\_anim::anim_first_frame_solo( level.combat_rappel_rope_rorke, "cornered_junction_c4_enter_rorke" );
|
|
var_2 setmodel( "cnd_server_control_panel_anim" );
|
|
level.player disableweapons();
|
|
var_6 = 0.5;
|
|
var_7 = 18;
|
|
var_8 = 18;
|
|
var_9 = 5;
|
|
var_10 = 20;
|
|
level.player playerlinktoblend( level.cornered_player_arms, "tag_player", 0.5 );
|
|
wait 0.6;
|
|
common_scripts\utility::flag_set( "player_shutting_down_elevators" );
|
|
level.player playerlinktodelta( level.cornered_player_arms, "tag_player", 1, var_7, 5, var_9, var_10, 1 );
|
|
maps\cornered_code::show_player_arms();
|
|
var_4 show();
|
|
thread maps\cornered_audio::aud_junction( "panel" );
|
|
var_5 thread maps\_anim::anim_single_solo( var_4, "cornered_elevator_junction_player_clippers" );
|
|
var_5 thread maps\_anim::anim_single_solo( var_2, "cornered_elevator_junction_upper_panel" );
|
|
var_3 maps\_utility::delaythread( 3.5, ::junction_elevator_control_panel_lights_off, var_3 );
|
|
var_5 thread maps\_anim::anim_single_solo( level.cornered_player_arms, "cornered_elevator_junction_player" );
|
|
var_2 thread waittill_control_panel_notetrack();
|
|
var_3 thread waittill_control_panel_notetrack();
|
|
level.cornered_player_arms waittillmatch( "single anim", "start_hesh" );
|
|
common_scripts\utility::flag_set( "start_hesh_elevator_exit" );
|
|
level.player lerpviewangleclamp( 0.5, 0, 0, 0, 0, 0, 0 );
|
|
level.cornered_player_arms waittillmatch( "single anim", "gun_up" );
|
|
level.player enableweapons();
|
|
level.cornered_player_arms waittillmatch( "single anim", "end" );
|
|
var_4 delete();
|
|
maps\cornered_code::hide_player_arms();
|
|
level.player unlink();
|
|
level.player allowcrouch( 1 );
|
|
level.player allowprone( 1 );
|
|
common_scripts\utility::flag_set( "obj_disable_elevators_complete" );
|
|
var_11 = getent( "junction_elevator_light", "targetname" );
|
|
var_11 setlightintensity( 0 );
|
|
common_scripts\utility::flag_wait( "c_rappel_player_on_rope" );
|
|
|
|
foreach ( var_13 in var_2.green_lights )
|
|
var_13 delete();
|
|
|
|
foreach ( var_13 in var_2.red_lights )
|
|
var_13 delete();
|
|
|
|
foreach ( var_13 in var_3.green_lights )
|
|
var_13 delete();
|
|
|
|
foreach ( var_13 in var_3.red_lights )
|
|
var_13 delete();
|
|
|
|
var_2 delete();
|
|
var_3 delete();
|
|
}
|
|
|
|
waittill_control_panel_notetrack()
|
|
{
|
|
self waittillmatch( "single anim", "wire_spark" );
|
|
playfxontag( level._effect["spark_flash_15"], self, "tag_fx" );
|
|
}
|
|
|
|
junction_pip_init()
|
|
{
|
|
common_scripts\utility::flag_wait( "baker_open_elevator_control_room_doors" );
|
|
level.pip.rendertotexture = 1;
|
|
var_0 = common_scripts\utility::getstruct( "pip_monitor_cam", "targetname" );
|
|
level.pip.entity = spawn( "script_model", var_0.origin );
|
|
level.pip.entity setmodel( "tag_origin" );
|
|
level.pip.entity.angles = var_0.angles;
|
|
common_scripts\utility::waitframe();
|
|
level.pip.tag = "tag_origin";
|
|
level.pip.fov = 65;
|
|
level.pip.freecamera = 1;
|
|
level.pip.enableshadows = 0;
|
|
level.pip.x = 50;
|
|
level.pip.y = 50;
|
|
level.pip.width = 240;
|
|
level.pip.height = 120;
|
|
level.pip.enable = 1;
|
|
level.pip.opened_x = 50;
|
|
level.pip.opened_y = 50;
|
|
level.pip.opened_width = level.pip.width;
|
|
level.pip.opened_height = level.pip.height;
|
|
common_scripts\utility::flag_wait( "send_in_junction_enemies" );
|
|
level.pip.entity delete();
|
|
level.pip.entity = undefined;
|
|
common_scripts\utility::waitframe();
|
|
level.pip.enable = 0;
|
|
}
|
|
|
|
junction_pip_scenario()
|
|
{
|
|
common_scripts\utility::flag_wait( "start_junction_pip_scenario" );
|
|
wait 2;
|
|
thread junction_pip_waver_drone();
|
|
wait 2;
|
|
level.total_drones = 0;
|
|
level.total_runner_drone_spawn_count = 0;
|
|
level.total_times_without_waver = 0;
|
|
var_0 = getentarray( "junction_pip_drone_far_right", "targetname" );
|
|
common_scripts\utility::array_thread( var_0, ::junction_pip_drone_think, "player_shutting_down_elevators" );
|
|
var_1 = getentarray( "junction_pip_drone_far_right_2", "targetname" );
|
|
common_scripts\utility::array_thread( var_1, ::junction_pip_drone_think, "player_shutting_down_elevators" );
|
|
var_2 = getentarray( "junction_pip_drone_close_right", "targetname" );
|
|
common_scripts\utility::array_thread( var_2, ::junction_pip_drone_think, "player_shutting_down_elevators" );
|
|
common_scripts\utility::flag_wait( "start_hesh_elevator_exit" );
|
|
thread junction_pip_waver_drone();
|
|
var_0 = getentarray( "junction_pip_drone_far_right", "targetname" );
|
|
common_scripts\utility::array_thread( var_0, ::junction_pip_drone_think, "send_in_junction_enemies" );
|
|
var_1 = getentarray( "junction_pip_drone_far_right_2", "targetname" );
|
|
common_scripts\utility::array_thread( var_1, ::junction_pip_drone_think, "send_in_junction_enemies" );
|
|
var_2 = getentarray( "junction_pip_drone_close_right", "targetname" );
|
|
common_scripts\utility::array_thread( var_2, ::junction_pip_drone_think, "send_in_junction_enemies" );
|
|
}
|
|
|
|
junction_pip_drone_think( var_0 )
|
|
{
|
|
wait( randomfloatrange( 0.6, 0.8 ) );
|
|
spawn_junction_pip_drones( var_0 );
|
|
}
|
|
|
|
spawn_junction_pip_drones( var_0 )
|
|
{
|
|
level endon( var_0 );
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = randomintrange( 1, 3 );
|
|
|
|
for ( var_2 = 0; var_2 < var_1; var_2++ )
|
|
{
|
|
thread spawn_a_drone();
|
|
wait( randomfloatrange( 0.4, 0.7 ) );
|
|
}
|
|
|
|
wait( randomfloatrange( 14, 18 ) );
|
|
level.total_runner_drone_spawn_count++;
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.total_runner_drone_spawn_count == 3 )
|
|
break;
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
wait 1;
|
|
level.total_times_without_waver++;
|
|
|
|
if ( level.total_times_without_waver == 9 )
|
|
{
|
|
thread junction_pip_waver_drone();
|
|
level.total_times_without_waver = 0;
|
|
wait 1;
|
|
}
|
|
|
|
level.total_runner_drone_spawn_count = 0;
|
|
}
|
|
}
|
|
|
|
spawn_a_drone()
|
|
{
|
|
var_0 = 4;
|
|
|
|
if ( level.total_drones >= var_0 )
|
|
return;
|
|
|
|
var_1 = maps\_utility::dronespawn();
|
|
var_1 drone_count();
|
|
}
|
|
|
|
drone_count()
|
|
{
|
|
level.total_drones++;
|
|
|
|
while ( isdefined( self ) )
|
|
wait 0.05;
|
|
|
|
level.total_drones--;
|
|
}
|
|
|
|
junction_pip_waver_drone()
|
|
{
|
|
var_0 = "";
|
|
|
|
if ( common_scripts\utility::cointoss() )
|
|
{
|
|
var_0 = "left";
|
|
var_1 = getent( "junction_pip_scenario_drone_left_waver", "targetname" );
|
|
var_2 = var_1 maps\_utility::dronespawn();
|
|
}
|
|
else
|
|
{
|
|
var_0 = "right";
|
|
var_1 = getent( "junction_pip_scenario_drone_right_waver", "targetname" );
|
|
var_2 = var_1 maps\_utility::dronespawn();
|
|
}
|
|
|
|
var_2.animname = "generic";
|
|
wait 1;
|
|
var_3 = common_scripts\utility::getstruct( var_0 + "_wave_struct", "targetname" );
|
|
var_2 waittill( "goal" );
|
|
var_3 maps\_anim::anim_generic_run( var_2, "wave_" + var_0 );
|
|
var_4 = common_scripts\utility::getstruct( "after_" + var_0 + "_wave_struct", "targetname" );
|
|
var_2.target = var_4.targetname;
|
|
var_2 thread maps\_drone::drone_move();
|
|
var_2 waittill( "goal" );
|
|
var_2 delete();
|
|
}
|
|
|
|
control_panel_setup_lights()
|
|
{
|
|
common_scripts\utility::waitframe();
|
|
self.green_lights = [];
|
|
self.red_lights = [];
|
|
var_0 = 6;
|
|
var_1 = 7;
|
|
var_2 = 1;
|
|
|
|
for ( var_3 = 0; var_3 < var_0; var_3++ )
|
|
{
|
|
var_4 = spawn( "script_model", ( 0, 0, 0 ) );
|
|
var_4 setmodel( "cnd_controlpanel_elevator_grn_0" + var_2 );
|
|
var_4.origin = self.origin;
|
|
var_4.angles = self.angles;
|
|
var_2++;
|
|
self.green_lights[var_3] = var_4;
|
|
var_5 = spawn( "script_model", ( 0, 0, 0 ) );
|
|
|
|
if ( var_1 < 10 )
|
|
var_5 setmodel( "cnd_controlpanel_elevator_red_0" + var_1 );
|
|
else
|
|
var_5 setmodel( "cnd_controlpanel_elevator_red_" + var_1 );
|
|
|
|
var_5.origin = self.origin;
|
|
var_5.angles = self.angles;
|
|
var_5 hide();
|
|
var_1++;
|
|
self.red_lights[var_3] = var_5;
|
|
}
|
|
}
|
|
|
|
junction_elevator_control_panel_lights_off( var_0 )
|
|
{
|
|
var_1 = var_0.green_lights.size;
|
|
var_2 = 0.2;
|
|
|
|
for ( var_3 = var_1 - 1; var_3 >= 0; var_3-- )
|
|
{
|
|
var_0.green_lights[var_3] hide();
|
|
var_0.red_lights[var_3] show();
|
|
wait( var_2 );
|
|
}
|
|
}
|
|
|
|
junction_enemy_setup()
|
|
{
|
|
maps\_utility::set_baseaccuracy( 0.1 );
|
|
common_scripts\utility::flag_wait( "send_in_junction_enemies" );
|
|
|
|
if ( isdefined( self ) )
|
|
maps\_utility::set_baseaccuracy( 1 );
|
|
}
|
|
|
|
junction_enemies()
|
|
{
|
|
maps\_utility::array_spawn_function_targetname( "junction_backup_guys_starters", ::junction_enemy_setup );
|
|
var_0 = maps\_utility::array_spawn_targetname( "junction_backup_guys_starters", 1 );
|
|
common_scripts\utility::array_thread( var_0, ::magicbullet_spray );
|
|
common_scripts\utility::flag_wait( "send_in_junction_enemies" );
|
|
maps\_utility::array_spawn_function_targetname( "junction_backup_guys1", ::junction_enemy_setup );
|
|
var_1 = maps\_utility::array_spawn_targetname( "junction_backup_guys1", 1 );
|
|
common_scripts\utility::waitframe();
|
|
maps\_utility::remove_dead_from_array( var_0 );
|
|
var_2 = common_scripts\utility::array_combine( var_0, var_1 );
|
|
thread maps\cornered_code::ai_array_killcount_flag_set( var_2, 3, "spawn_junction_enemies_wave_2" );
|
|
common_scripts\utility::flag_wait_either( "spawn_junction_enemies_wave_2", "spawn_junction_enemies_second_wave" );
|
|
common_scripts\utility::flag_set( "junction_enemies_wave_2" );
|
|
var_3 = maps\_utility::array_spawn_targetname( "junction_backup_guys2", 1 );
|
|
common_scripts\utility::waitframe();
|
|
maps\_utility::remove_dead_from_array( var_2 );
|
|
var_2 = common_scripts\utility::array_combine( var_2, var_3 );
|
|
thread junction_last_stand( var_2 );
|
|
maps\_utility::waittill_dead_or_dying( var_2 );
|
|
common_scripts\utility::flag_set( "junction_enemies_dead" );
|
|
}
|
|
|
|
magicbullet_spray()
|
|
{
|
|
level endon( "send_in_junction_enemies" );
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 = level.allies[level.const_rorke];
|
|
var_1 = var_0 gettagorigin( "j_head" ) + ( 0, 0, 20 );
|
|
var_2 = self gettagorigin( "j_head" );
|
|
var_3 = vectornormalize( var_1 - var_2 );
|
|
var_4 = var_2 + var_3 * ( distance( var_1, var_2 ) - 10 );
|
|
|
|
if ( self.weapon != "none" )
|
|
magicbullet( self.weapon, var_4, var_1 );
|
|
|
|
wait( randomfloatrange( 0.5, 2.2 ) );
|
|
}
|
|
}
|
|
|
|
junction_last_stand( var_0 )
|
|
{
|
|
var_1 = [];
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
if ( isdefined( var_3.script_noteworthy ) && var_3.script_noteworthy == "upper" )
|
|
continue;
|
|
|
|
var_1 = common_scripts\utility::add_to_array( var_1, var_3 );
|
|
}
|
|
|
|
while ( var_1.size > 3 )
|
|
{
|
|
var_1 = maps\_utility::remove_dead_from_array( var_1 );
|
|
wait 0.05;
|
|
}
|
|
|
|
var_5 = getent( "junction_backup_guys_last_stand_volume", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = maps\_utility::remove_dead_from_array( var_1 );
|
|
|
|
if ( var_1.size == 0 )
|
|
break;
|
|
|
|
foreach ( var_7 in var_1 )
|
|
{
|
|
wait( randomfloatrange( 1, 2.5 ) );
|
|
|
|
if ( isalive( var_7 ) )
|
|
var_7 setgoalvolumeauto( var_5 );
|
|
}
|
|
|
|
wait 5;
|
|
}
|
|
}
|
|
|
|
junction_ally_combat_state()
|
|
{
|
|
maps\_utility::set_ignoreall( 0 );
|
|
maps\_utility::set_ignoreme( 0 );
|
|
maps\_utility::set_baseaccuracy( 0.1 );
|
|
maps\_utility::disable_dontevershoot();
|
|
self.favoriteenemy = undefined;
|
|
maps\_utility::forceuseweapon( "p226", "secondary" );
|
|
maps\_utility::forceuseweapon( "kriss+eotechsmg_sp+silencer_sp", "primary" );
|
|
self.lastweapon = self.weapon;
|
|
|
|
if ( self.animname == "rorke" )
|
|
{
|
|
self stopanimscripted();
|
|
self.dontavoidplayer = 0;
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "send_in_junction_enemies" );
|
|
maps\_utility::set_baseaccuracy( 1 );
|
|
}
|
|
|
|
junction_banners()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "banner_org", "targetname" );
|
|
var_1 = maps\_utility::spawn_anim_model( "elevator_junction_banner" );
|
|
var_2 = maps\_utility::spawn_anim_model( "elevator_junction_banner_3" );
|
|
var_0 thread maps\_anim::anim_loop_solo( var_1, "banner_1_loop", "stop_banner_loop" );
|
|
var_0 thread maps\_anim::anim_loop_solo( var_2, "banner_3_loop", "stop_banner_loop" );
|
|
common_scripts\utility::flag_wait( "rappel_finished" );
|
|
var_0 notify( "stop_banner_loop" );
|
|
waittillframeend;
|
|
var_1 delete();
|
|
var_2 delete();
|
|
}
|
|
|
|
stop_magic_bullet_shield_if_on()
|
|
{
|
|
if ( isdefined( self.magic_bullet_shield ) && self.magic_bullet_shield == 1 )
|
|
maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
add_magic_bullet_shield_if_off()
|
|
{
|
|
if ( !isdefined( self.magic_bullet_shield ) && !self.delayeddeath )
|
|
maps\_utility::magic_bullet_shield();
|
|
}
|
|
|
|
mission_failed_watcher()
|
|
{
|
|
var_0 = common_scripts\utility::flag_wait_any_return( "rorke_killed", "rorke_killed_2", "baker_killed", "hvt_got_away" );
|
|
var_1 = undefined;
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case "rorke_killed":
|
|
var_1 = &"CORNERED_RORKE_WAS_KILLED";
|
|
break;
|
|
case "rorke_killed_2":
|
|
var_1 = &"CORNERED_RORKE_WAS_KILLED";
|
|
break;
|
|
case "baker_killed":
|
|
var_1 = &"CORNERED_BAKER_WAS_KILLED";
|
|
break;
|
|
case "hvt_got_away":
|
|
var_1 = &"CORNERED_HVT_GOT_AWAY";
|
|
break;
|
|
}
|
|
|
|
setdvar( "ui_deadquote", var_1 );
|
|
thread maps\_utility::missionfailedwrapper();
|
|
level notify( "stop_mission_failed_watcher" );
|
|
}
|