4182 lines
161 KiB
Plaintext
4182 lines
161 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
cornered_building_entry_pre_load()
|
|
{
|
|
common_scripts\utility::flag_init( "player_out_of_rorkes_way" );
|
|
common_scripts\utility::flag_init( "player_looking_towards_rorke" );
|
|
common_scripts\utility::flag_init( "rorke_started_cutting_glass" );
|
|
common_scripts\utility::flag_init( "player_finished_cutting" );
|
|
common_scripts\utility::flag_init( "player_jumped_into_building" );
|
|
common_scripts\utility::flag_init( "enter_building_ready" );
|
|
common_scripts\utility::flag_init( "player_in_building" );
|
|
common_scripts\utility::flag_init( "rorke_at_wave_node" );
|
|
common_scripts\utility::flag_init( "move_rorke_to_power_junction_entrance" );
|
|
common_scripts\utility::flag_init( "rorke_reached_power_junction_room_node" );
|
|
common_scripts\utility::flag_init( "player_entering_building" );
|
|
common_scripts\utility::flag_init( "player_can_upload_virus" );
|
|
common_scripts\utility::flag_init( "rorke_at_virus_upload" );
|
|
common_scripts\utility::flag_init( "virus_upload_loop" );
|
|
common_scripts\utility::flag_init( "player_started_virus_upload" );
|
|
common_scripts\utility::flag_init( "player_started_uploading" );
|
|
common_scripts\utility::flag_init( "player_start_upload" );
|
|
common_scripts\utility::flag_init( "player_stop_upload" );
|
|
common_scripts\utility::flag_init( "player_leave_upload" );
|
|
common_scripts\utility::flag_init( "spawn_power_junction_patrol" );
|
|
common_scripts\utility::flag_init( "start_power_junction_patrol_chatter" );
|
|
common_scripts\utility::flag_init( "start_power_junction_patrol_wave_1" );
|
|
common_scripts\utility::flag_init( "start_power_junction_patrol_wave_2" );
|
|
common_scripts\utility::flag_init( "start_power_junction_patrol_shadowkill_enemy" );
|
|
common_scripts\utility::flag_init( "rorke_in_guard_loop" );
|
|
common_scripts\utility::flag_init( "virus_upload_bar_almost_complete" );
|
|
common_scripts\utility::flag_init( "force_virus_upload_bar_complete" );
|
|
common_scripts\utility::flag_init( "virus_upload_bar_complete" );
|
|
common_scripts\utility::flag_init( "virus_audio_stop_loop" );
|
|
common_scripts\utility::flag_init( "force_player_to_end_virus_upload" );
|
|
common_scripts\utility::flag_init( "finish_upload" );
|
|
common_scripts\utility::flag_init( "virus_dynamic_dof_on" );
|
|
common_scripts\utility::flag_init( "swap_rorke_head" );
|
|
common_scripts\utility::flag_init( "rorke_in_alcove" );
|
|
common_scripts\utility::flag_init( "enemy_at_shadow_kill_node" );
|
|
common_scripts\utility::flag_init( "shadowkill_phone_on" );
|
|
common_scripts\utility::flag_init( "shadow_kill_enemy_phone_out" );
|
|
common_scripts\utility::flag_init( "shadowkill_phone_off" );
|
|
common_scripts\utility::flag_init( "shadow_kill_start" );
|
|
common_scripts\utility::flag_init( "shadow_kill_goggles_on" );
|
|
common_scripts\utility::flag_init( "shadow_kill_stab" );
|
|
common_scripts\utility::flag_init( "shadow_kill_done" );
|
|
common_scripts\utility::flag_init( "start_patrol_vo" );
|
|
common_scripts\utility::flag_init( "patrol_out_of_start_hallway" );
|
|
common_scripts\utility::flag_init( "patrol_out_of_shadow_kill_volume" );
|
|
common_scripts\utility::flag_init( "last_patroller_out_of_shadow_kill_volume" );
|
|
common_scripts\utility::flag_init( "patrol_out_of_power_junction_hallway" );
|
|
common_scripts\utility::flag_init( "power_junction_patrol_killed" );
|
|
common_scripts\utility::flag_init( "enemies_aware" );
|
|
common_scripts\utility::flag_init( "all_in" );
|
|
common_scripts\utility::flag_init( "rorke_at_hall_end" );
|
|
common_scripts\utility::flag_init( "rorke_at_building_exit_node" );
|
|
common_scripts\utility::flag_init( "player_has_exited_the_building" );
|
|
common_scripts\utility::flag_init( "exit_building_ready" );
|
|
common_scripts\utility::flag_init( "player_exiting_building" );
|
|
common_scripts\utility::flag_init( "player_ready_to_deploy_virus" );
|
|
common_scripts\utility::flag_init( "player_deployed_virus" );
|
|
common_scripts\utility::flag_init( "spawn_balcony_enemies" );
|
|
common_scripts\utility::flag_init( "balcony_enemies_on_balcony" );
|
|
common_scripts\utility::flag_init( "player_shot" );
|
|
common_scripts\utility::flag_init( "kill_balcony_enemies" );
|
|
common_scripts\utility::flag_init( "player_is_past_balcony_and_enemies_are_alive" );
|
|
common_scripts\utility::flag_init( "balcony_enemies_killed" );
|
|
common_scripts\utility::flag_init( "player_is_past_sleeping_enemy_below" );
|
|
common_scripts\utility::flag_init( "sleeping_enemy_below_dead" );
|
|
common_scripts\utility::flag_init( "inverted_rorke_done" );
|
|
common_scripts\utility::flag_init( "inverted_baker_done" );
|
|
common_scripts\utility::flag_init( "player_can_start_inverted_kill" );
|
|
common_scripts\utility::flag_init( "player_not_in_inverted_kill_volume" );
|
|
common_scripts\utility::flag_init( "inverted_kill_fail" );
|
|
common_scripts\utility::flag_init( "player_initiated_pounce" );
|
|
common_scripts\utility::flag_init( "player_pounce" );
|
|
common_scripts\utility::flag_init( "inverted_kill_enemy_started_turning_around" );
|
|
common_scripts\utility::flag_init( "inverted_kill_enemy_turned_around" );
|
|
common_scripts\utility::flag_init( "player_inverted_kill_enemy_pounce_fail_end" );
|
|
common_scripts\utility::flag_init( "player_knife_throw_enemy_dead" );
|
|
common_scripts\utility::flag_init( "inverted_kill_knife_rorke" );
|
|
common_scripts\utility::flag_init( "rorke_inverted_kill" );
|
|
common_scripts\utility::flag_init( "knife_is_touching_enemy" );
|
|
common_scripts\utility::flag_init( "start_knife_throw" );
|
|
common_scripts\utility::flag_init( "player_aims_knife_at_enemy" );
|
|
common_scripts\utility::flag_init( "player_not_aiming_at_enemy" );
|
|
common_scripts\utility::flag_init( "player_throws_knife" );
|
|
common_scripts\utility::flag_init( "player_throws_knife_fail" );
|
|
common_scripts\utility::flag_init( "player_failed_to_throw_knife" );
|
|
precachemodel( "cnd_laser_cutter" );
|
|
precachemodel( "cnd_window_pane_fx" );
|
|
precachemodel( "cnd_window_pane_cutout_player" );
|
|
precachemodel( "cnd_window_cutout_shattered_player" );
|
|
precachemodel( "cnd_window_pane_cutout_ally" );
|
|
precachemodel( "cnd_window_cutout_shattered_ally" );
|
|
precachemodel( "cnd_window_cut_ribbon" );
|
|
precachemodel( "cnd_rappel_tele_rope" );
|
|
precachemodel( "cnd_rappel_tele_rope_obj" );
|
|
precachemodel( "cnd_hand_held_device_bink" );
|
|
precachemodel( "cnd_server_rack_anim" );
|
|
precachemodel( "cnd_server_rack_anim_obj" );
|
|
precachemodel( "cnd_server_rack_anim_drive_obj" );
|
|
precachemodel( "hjk_laptop_animated_on" );
|
|
precachemodel( "cnd_cellphone_01_on_anim" );
|
|
precachemodel( "cnd_cellphone_01_off_anim" );
|
|
precachemodel( "weapon_bolo_knife" );
|
|
precachemodel( "weapon_parabolic_knife" );
|
|
precachemodel( "viewmodel_lg_push_knife" );
|
|
precachemodel( "projectile_lg_push_knife" );
|
|
precacheitem( "computer_idf" );
|
|
precacheitem( "push_knife" );
|
|
precacheitem( "throwing_push_knife" );
|
|
precacheitem( "imbel_hide_acog_silenced_cornered" );
|
|
precacheitem( "kriss_hide_eotech_silenced_cornered" );
|
|
precachestring( &"CORNERED_ENTER_BUILDING" );
|
|
precachestring( &"CORNERED_ENTER_BUILDING_CONSOLE" );
|
|
precachestring( &"CORNERED_START_UPLOAD_VIRUS" );
|
|
precachestring( &"CORNERED_START_UPLOAD_VIRUS_CONSOLE" );
|
|
precachestring( &"CORNERED_UPLOAD_VIRUS" );
|
|
precachestring( &"CORNERED_EXIT_BUILDING" );
|
|
precachestring( &"CORNERED_EXIT_BUILDING_CONSOLE" );
|
|
precachestring( &"CORNERED_INVERTED_KILL" );
|
|
precachestring( &"CORNERED_KNIFE_THROW" );
|
|
maps\_utility::add_hint_string( "virus_upload", &"CORNERED_UPLOAD_VIRUS", ::should_break_virus_upload_hint );
|
|
maps\_utility::add_hint_string( "virus_deploy", &"CORNERED_DEPLOY_VIRUS" );
|
|
maps\_utility::add_hint_string( "inverted_kill", &"CORNERED_INVERTED_KILL", ::should_break_inverted_kill_hint );
|
|
maps\_utility::add_hint_string( "knife_throw", &"CORNERED_KNIFE_THROW" );
|
|
level.clean_window_player = getent( "clean_window_player", "targetname" );
|
|
level.clean_window_rorke = getent( "clean_window_rorke", "targetname" );
|
|
level.start_inverted_rappel_trigger = getent( "start_inverted_rappel_trigger", "targetname" );
|
|
level.start_inverted_rappel_trigger common_scripts\utility::trigger_off();
|
|
level.balcony_enemies_clip = getent( "balcony_enemies_clip", "targetname" );
|
|
level.balcony_enemies_clip notsolid();
|
|
level.balcony_enemies_clip connectpaths();
|
|
level.inverted_kill_balcony_door_clip = getent( "inverted_kill_balcony_door_clip", "targetname" );
|
|
level.inverted_kill_balcony_door_clip notsolid();
|
|
level.inverted_kill_balcony_door_clip connectpaths();
|
|
level.move_rorke_to_window_trigger = getent( "move_rorke_to_window_trigger", "targetname" );
|
|
level.move_rorke_to_window_trigger common_scripts\utility::trigger_off();
|
|
common_scripts\utility::flag_init( "building_entry_finished" );
|
|
common_scripts\utility::flag_init( "shadow_kill_finished" );
|
|
common_scripts\utility::flag_init( "inverted_rappel_finished" );
|
|
}
|
|
|
|
setup_building_entry()
|
|
{
|
|
level.building_entry_startpoint = 1;
|
|
maps\cornered_code::setup_player();
|
|
maps\cornered_code::spawn_allies();
|
|
thread maps\cornered_code::handle_intro_fx();
|
|
thread maps\cornered_lighting::fireworks_stealth_rappel();
|
|
thread maps\cornered_audio::aud_check( "building_entry" );
|
|
thread building_entry_tv();
|
|
thread maps\cornered_code::delete_window_reflectors();
|
|
level.player thread maps\cornered_code::player_flap_sleeves();
|
|
maps\cornered_lighting::do_specular_sun_lerp( 1 );
|
|
}
|
|
|
|
setup_shadow_kill()
|
|
{
|
|
level.shadow_kill_startpoint = 1;
|
|
maps\cornered_code::setup_player();
|
|
maps\cornered_code::spawn_allies();
|
|
thread maps\cornered_code::handle_intro_fx();
|
|
thread maps\cornered_lighting::fireworks_stealth_rappel();
|
|
thread building_entry_tv();
|
|
thread maps\cornered::obj_upload_virus();
|
|
thread maps\cornered_audio::aud_check( "shadow_kill" );
|
|
var_0 = getent( "building_entry_tv_script_brushmodel", "targetname" );
|
|
thread maps\cornered_code::watch_tv_for_damage( var_0, "player_has_exited_the_building", undefined, level.hide_bink_brush );
|
|
thread maps\cornered_code::delete_window_reflectors();
|
|
}
|
|
|
|
setup_inverted_rappel()
|
|
{
|
|
level.inverted_rappel_startpoint = 1;
|
|
thread maps\cornered_audio::aud_check( "inverted" );
|
|
thread maps\cornered_code::handle_intro_fx();
|
|
thread maps\cornered_lighting::fireworks_stealth_rappel();
|
|
maps\cornered_code::setup_player();
|
|
maps\cornered_code::spawn_allies();
|
|
var_0 = getent( "building_entry_tv_script_brushmodel", "targetname" );
|
|
thread maps\cornered_code::watch_tv_for_damage( var_0, "player_has_exited_the_building", undefined, level.hide_bink_brush );
|
|
thread maps\cornered_code::delete_building_glow();
|
|
thread maps\cornered_code::delete_window_reflectors();
|
|
thread maps\cornered_code::cleanup_outside_ents_on_entry();
|
|
}
|
|
|
|
begin_building_entry()
|
|
{
|
|
maps\_utility::battlechatter_off( "allies" );
|
|
maps\_utility::battlechatter_off( "axis" );
|
|
maps\cornered_code::take_away_offhands();
|
|
thread building_entry();
|
|
common_scripts\utility::flag_wait( "building_entry_finished" );
|
|
|
|
if ( maps\cornered_code::is_e3() )
|
|
thread maps\_utility::autosave_by_name_silent( "building_entry" );
|
|
else
|
|
thread maps\_utility::autosave_tactical();
|
|
}
|
|
|
|
begin_shadow_kill()
|
|
{
|
|
maps\_utility::battlechatter_off( "allies" );
|
|
maps\_utility::battlechatter_off( "axis" );
|
|
maps\cornered_code::take_away_offhands();
|
|
thread shadow_kill();
|
|
common_scripts\utility::flag_wait( "shadow_kill_finished" );
|
|
|
|
if ( maps\cornered_code::is_e3() )
|
|
thread maps\_utility::autosave_by_name_silent( "shadow_kill" );
|
|
else
|
|
thread maps\_utility::autosave_tactical();
|
|
}
|
|
|
|
begin_inverted_rappel()
|
|
{
|
|
maps\_utility::battlechatter_off( "allies" );
|
|
maps\_utility::battlechatter_off( "axis" );
|
|
maps\cornered_code::take_away_offhands();
|
|
thread inverted_rappel();
|
|
common_scripts\utility::flag_wait( "inverted_rappel_finished" );
|
|
thread directory_cinematic_after_save();
|
|
}
|
|
|
|
directory_cinematic_after_save()
|
|
{
|
|
maps\_utility::autosave_tactical();
|
|
wait 5;
|
|
thread maps\cornered_interior::courtyard_directory();
|
|
}
|
|
|
|
building_entry()
|
|
{
|
|
if ( isdefined( level.building_entry_startpoint ) )
|
|
{
|
|
level.player thread maps\cornered_code::unlimited_ammo();
|
|
var_0 = spawnstruct();
|
|
var_0.right_arc = 120;
|
|
var_0.left_arc = 120;
|
|
var_0.top_arc = 60;
|
|
var_0.bottom_arc = 50;
|
|
var_0.allow_walk_up = 1;
|
|
var_0.allow_glass_break_slide = 1;
|
|
var_0.allow_sprint = 1;
|
|
var_0.jump_type = "jump_normal";
|
|
var_0.show_legs = 1;
|
|
var_0.lateral_plane = 1;
|
|
var_0.rappel_type = "stealth";
|
|
level.rappel_params = var_0;
|
|
maps\cornered_code_rappel::cornered_start_rappel( "rope_ref_stealth", "player_rappel_ground_ref_stealth", var_0 );
|
|
|
|
foreach ( var_2 in level.allies )
|
|
var_2 maps\cornered_code_rappel_allies::ally_rappel_start_rope( var_0.rappel_type );
|
|
|
|
level.player thread maps\cornered_code::player_flap_sleeves();
|
|
}
|
|
|
|
var_4 = getent( "building_entry_tv_script_brushmodel", "targetname" );
|
|
thread maps\cornered_code::watch_tv_for_damage( var_4, "player_has_exited_the_building", undefined, level.hide_bink_brush );
|
|
thread handle_building_entry();
|
|
thread building_entry_combat();
|
|
thread allies_building_entry_vo();
|
|
common_scripts\utility::waitframe();
|
|
level.allies[level.const_rorke] thread allies_building_entry_movement();
|
|
level.allies[level.const_baker] thread allies_building_entry_movement();
|
|
}
|
|
|
|
shadow_kill()
|
|
{
|
|
thread handle_shadow_kill();
|
|
thread shadow_kill_combat();
|
|
thread allies_shadow_kill_vo();
|
|
common_scripts\utility::waitframe();
|
|
level.allies[level.const_rorke] thread allies_shadow_kill_movement();
|
|
level.allies[level.const_baker] thread allies_shadow_kill_movement();
|
|
}
|
|
|
|
inverted_rappel()
|
|
{
|
|
thread handle_rappel_inverted();
|
|
thread inverted_rappel_combat();
|
|
thread allies_inverted_rappel_vo();
|
|
common_scripts\utility::waitframe();
|
|
level.allies[level.const_rorke] thread allies_inverted_rappel_movement();
|
|
level.allies[level.const_baker] thread allies_inverted_rappel_movement();
|
|
|
|
if ( isdefined( level.inverted_rappel_startpoint ) )
|
|
{
|
|
thread setup_window_cutout( level.clean_window_player, "cnd_window_pane_cutout_player" );
|
|
thread setup_window_cutout( level.clean_window_rorke, "cnd_window_pane_cutout_ally" );
|
|
}
|
|
}
|
|
|
|
setup_window_cutout( var_0, var_1 )
|
|
{
|
|
var_2 = spawn( "script_model", var_0.origin );
|
|
var_0 delete();
|
|
var_2 setmodel( var_1 );
|
|
var_2 show();
|
|
var_2 thread maps\cornered_code::entity_cleanup( "player_pounce" );
|
|
}
|
|
|
|
should_break_enter_building_hint()
|
|
{
|
|
return common_scripts\utility::flag( "player_pressed_use_button" );
|
|
}
|
|
|
|
trigger_disable_on_jump()
|
|
{
|
|
level endon( "player_entering_building" );
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "player_jumping" );
|
|
self.force_off = 1;
|
|
common_scripts\utility::flag_waitopen( "player_jumping" );
|
|
self.force_off = undefined;
|
|
}
|
|
}
|
|
|
|
handle_building_entry()
|
|
{
|
|
level.shadowkill_struct = common_scripts\utility::getstruct( "shadow_kill_anim_struct", "targetname" );
|
|
level.rappel_entry_anim_struct = common_scripts\utility::getstruct( "rappel_entry_anim_struct_stealth", "targetname" );
|
|
level.building_entry_exit_anim_struct = common_scripts\utility::getstruct( "rappel_stealth_building_entry_exit_anim_struct", "targetname" );
|
|
maps\cornered_code_rappel::cornered_stop_random_wind();
|
|
thread maps\cornered_audio::aud_stop_wind();
|
|
common_scripts\utility::flag_wait( "enter_building_ready" );
|
|
level.rappel_window_frame_obj show();
|
|
level.rappel_window_frame_obj maps\_utility::glow();
|
|
var_0 = common_scripts\utility::getstruct( "entry_look_at", "targetname" );
|
|
var_1 = getent( "player_enter_building_trigger", "targetname" );
|
|
|
|
if ( !maps\cornered_code::is_e3() )
|
|
{
|
|
if ( level.player common_scripts\utility::is_player_gamepad_enabled() )
|
|
var_1 sethintstring( &"CORNERED_ENTER_BUILDING_CONSOLE" );
|
|
else
|
|
var_1 sethintstring( &"CORNERED_ENTER_BUILDING" );
|
|
}
|
|
|
|
var_1 thread trigger_disable_on_jump();
|
|
maps\player_scripted_anim_util::waittill_trigger_activate_looking_at( var_1, var_0, cos( 50 ), 0, 1, level.plyr_rpl_groundref );
|
|
common_scripts\utility::flag_set( "player_entering_building" );
|
|
maps\cornered_code_rappel::rappel_clear_vertical_limits();
|
|
thread maps\cornered_audio::aud_rappel( "enter" );
|
|
level.rappel_window_frame_obj maps\_utility::stopglow();
|
|
level.rappel_window_frame_obj delete();
|
|
player_enter_building();
|
|
maps\cornered_code::delete_building_glow();
|
|
common_scripts\utility::flag_set( "player_in_building" );
|
|
common_scripts\utility::flag_clear( "player_jumping" );
|
|
level.player allowjump( 1 );
|
|
}
|
|
|
|
delay_show_legs_entry()
|
|
{
|
|
wait 1.5;
|
|
level.cornered_player_legs show();
|
|
}
|
|
|
|
player_enter_building()
|
|
{
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_first_frame( level.arms_and_legs, "rappel_stealth_cut" );
|
|
var_0 = maps\_utility::spawn_anim_model( "cnd_rappel_player_rope" );
|
|
var_0 hide();
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_first_frame_solo( var_0, "cornered_rappel_stealth_enterbldg_cut_playerline" );
|
|
|
|
if ( level.player getstance() != "stand" )
|
|
level.player setstance( "stand" );
|
|
|
|
maps\cornered_code_rappel::cornered_stop_rappel();
|
|
wait 0.1;
|
|
level.player freezecontrols( 1 );
|
|
level.player allowcrouch( 0 );
|
|
level.player allowprone( 0 );
|
|
level.player common_scripts\utility::_disableweapon();
|
|
level.player maps\cornered_code::player_stop_flap_sleeves();
|
|
level.player unlink();
|
|
var_1 = common_scripts\utility::spawn_tag_origin();
|
|
var_1.origin = level.rappel_player_legs.origin;
|
|
var_1.angles = level.rappel_player_legs.angles;
|
|
level.rappel_player_legs linkto( var_1, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
level.cnd_rappel_player_rope unlink();
|
|
wait 0.1;
|
|
var_2 = 0.5;
|
|
var_3 = 0.2;
|
|
level.player playerlinktoblend( level.cornered_player_arms, "tag_player", var_2 );
|
|
var_1 moveto( var_1.origin + ( 0, 0, -100 ), var_2, 0, 0 );
|
|
level.cnd_rappel_player_rope moveto( var_0.origin, var_3, 0, 0 );
|
|
level.cnd_rappel_player_rope rotateto( var_0.angles, var_3, 0, 0 );
|
|
wait 0.5;
|
|
level.rappel_player_legs delete();
|
|
var_1 delete();
|
|
var_0 delete();
|
|
maps\cornered_code::show_player_arms();
|
|
thread delay_show_legs_entry();
|
|
level.cornered_player_arms maps\cornered_code::player_flap_sleeves();
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_single( level.arms_and_legs, "rappel_stealth_cut" );
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_single_solo( level.cnd_rappel_player_rope, "cornered_rappel_stealth_enterbldg_cut_playerline" );
|
|
level.cornered_player_arms thread glass_cutting_fx_notetrack_handler();
|
|
level.cornered_player_arms waittillmatch( "single anim", "end" );
|
|
common_scripts\utility::flag_set( "player_finished_cutting" );
|
|
level.player playerlinktodelta( level.cornered_player_arms, "tag_player", 1, 60, 60, 60, 15 );
|
|
thread maps\cornered_audio::aud_rappel( "enter2" );
|
|
common_scripts\utility::flag_set( "player_jumped_into_building" );
|
|
thread maps\cornered_fx::turn_off_rain_fx();
|
|
maps\cornered_lighting::do_specular_sun_lerp( 0 );
|
|
level.building_entry_exit_anim_struct notify( "stop_player_loop" );
|
|
waittillframeend;
|
|
level.player playerlinktoabsolute( level.cornered_player_arms, "tag_player" );
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_single( level.arms_and_legs, "rappel_stealth_jump" );
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_single_solo( level.cnd_rappel_player_rope, "cornered_rappel_stealth_enterbldg_jump_playerline" );
|
|
wait 0.03;
|
|
level.player playersetgroundreferenceent( undefined );
|
|
level.cornered_player_arms waittillmatch( "single anim", "end" );
|
|
level.player unlink();
|
|
level.player freezecontrols( 0 );
|
|
level.player allowcrouch( 1 );
|
|
level.player allowprone( 1 );
|
|
maps\cornered_code::hide_player_arms();
|
|
level.cornered_player_legs hide();
|
|
level.cornered_player_arms maps\cornered_code::player_stop_flap_sleeves();
|
|
level.player_exit_to_inverted_rope = maps\_utility::spawn_anim_model( "cnd_rappel_tele_rope" );
|
|
level.building_entry_exit_anim_struct maps\_anim::anim_first_frame_solo( level.player_exit_to_inverted_rope, "rappel_stealth_exit" );
|
|
|
|
if ( isdefined( level.cnd_rappel_player_rope ) )
|
|
level.cnd_rappel_player_rope delete();
|
|
}
|
|
|
|
glass_cutting_fx_notetrack_handler( var_0 )
|
|
{
|
|
var_1 = [];
|
|
var_2 = [];
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "single anim", var_3 );
|
|
|
|
switch ( var_3 )
|
|
{
|
|
case "start_fx_trail_15":
|
|
case "start_fx_trail_14":
|
|
case "start_fx_trail_12":
|
|
case "start_fx_trail_11":
|
|
case "start_fx_trail_10":
|
|
case "start_fx_trail_9":
|
|
case "start_fx_trail_8":
|
|
case "start_fx_trail_7":
|
|
case "start_fx_trail_6":
|
|
case "start_fx_trail_5":
|
|
case "start_fx_trail_4":
|
|
case "start_fx_trail_3":
|
|
if ( self.animname == "rorke" )
|
|
{
|
|
playfxontag( level._effect["torch_cutting_glass_spark_ondeath"], self, "tag_shield_back" );
|
|
playfxontag( level._effect["torch_cutting_glass_spark_crack"], self, "tag_shield_back" );
|
|
}
|
|
else
|
|
{
|
|
playfxontag( level._effect["torch_cutting_glass_spark_ondeath2"], self, "tag_knife_attach" );
|
|
playfxontag( level._effect["torch_cutting_glass_spark_crack"], self, "tag_knife_attach" );
|
|
playfxontag( level._effect["torch_cutting_glass_spark_crack_rev"], self, "tag_knife_attach" );
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
spawn_glass_cutter( var_0 )
|
|
{
|
|
if ( var_0.animname == "rorke" )
|
|
{
|
|
level.rorke_glass_cutter = spawn( "script_model", var_0 gettagorigin( "tag_weapon_chest" ) );
|
|
level.rorke_glass_cutter setmodel( "cnd_laser_cutter" );
|
|
level.rorke_glass_cutter linkto( var_0, "tag_weapon_chest", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
level.window_fx_model = spawn( "script_model", level.clean_window_rorke.origin );
|
|
level.window_fx_model setmodel( "cnd_window_pane_fx" );
|
|
level.window_fx_model thread maps\cornered_code::entity_cleanup( "player_pounce" );
|
|
}
|
|
else
|
|
{
|
|
level.player_glass_cutter = spawn( "script_model", var_0 gettagorigin( "tag_weapon_right" ) );
|
|
level.player_glass_cutter setmodel( "cnd_laser_cutter" );
|
|
level.player_glass_cutter linkto( var_0, "tag_weapon_right", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
}
|
|
}
|
|
|
|
glass_cutter_on( var_0 )
|
|
{
|
|
if ( var_0.animname == "rorke" )
|
|
{
|
|
playfxontag( level._effect["torch_cutting_glass_beam"], level.rorke_glass_cutter, "tag_fx" );
|
|
playfxontag( level._effect["torch_cutting_glass_spark"], var_0, "tag_inhand" );
|
|
playfxontag( level._effect["torch_cutting_glass_heatribbon"], var_0, "tag_inhand" );
|
|
level.window_ribbon_rorke = spawn( "script_model", ( 0, 0, 0 ) );
|
|
level.window_ribbon_rorke setmodel( "cnd_window_cut_ribbon" );
|
|
level.window_ribbon_rorke.animname = "window_ribbon";
|
|
level.window_ribbon_rorke maps\_anim::setanimtree();
|
|
level.window_ribbon_rorke hide();
|
|
level.building_entry_exit_anim_struct maps\_anim::anim_first_frame_solo( level.window_ribbon_rorke, "cnd_rappel_stealth_enter_bldg_ribbon1" );
|
|
level.window_ribbon_rorke show();
|
|
level.building_entry_exit_anim_struct maps\_anim::anim_single_solo( level.window_ribbon_rorke, "cnd_rappel_stealth_enter_bldg_ribbon1" );
|
|
}
|
|
else
|
|
{
|
|
playfxontag( level._effect["torch_cutting_glass_beam_player"], level.player_glass_cutter, "tag_fx" );
|
|
playfxontag( level._effect["torch_cutting_glass_spark"], var_0, "tag_weapon_left" );
|
|
playfxontag( level._effect["torch_cutting_glass_heatribbon_player"], var_0, "tag_weapon_left" );
|
|
level.window_ribbon_player = spawn( "script_model", ( 0, 0, 0 ) );
|
|
level.window_ribbon_player setmodel( "cnd_window_cut_ribbon" );
|
|
level.window_ribbon_player.animname = "window_ribbon";
|
|
level.window_ribbon_player maps\_anim::setanimtree();
|
|
level.window_ribbon_player hide();
|
|
level.building_entry_exit_anim_struct maps\_anim::anim_first_frame_solo( level.window_ribbon_player, "cnd_rappel_stealth_enter_bldg_ribbon2" );
|
|
level.window_ribbon_player show();
|
|
level.building_entry_exit_anim_struct maps\_anim::anim_single_solo( level.window_ribbon_player, "cnd_rappel_stealth_enter_bldg_ribbon2" );
|
|
}
|
|
}
|
|
|
|
glass_cutter_off( var_0 )
|
|
{
|
|
if ( var_0.animname == "rorke" )
|
|
{
|
|
stopfxontag( level._effect["torch_cutting_glass_beam"], level.rorke_glass_cutter, "tag_fx" );
|
|
stopfxontag( level._effect["torch_cutting_glass_spark"], var_0, "tag_inhand" );
|
|
stopfxontag( level._effect["torch_cutting_glass_heatribbon"], var_0, "tag_inhand" );
|
|
}
|
|
else
|
|
{
|
|
stopfxontag( level._effect["torch_cutting_glass_beam_player"], level.player_glass_cutter, "tag_fx" );
|
|
stopfxontag( level._effect["torch_cutting_glass_spark"], var_0, "tag_weapon_left" );
|
|
stopfxontag( level._effect["torch_cutting_glass_heatribbon_player"], var_0, "tag_weapon_left" );
|
|
}
|
|
}
|
|
|
|
delete_glass_cutter( var_0 )
|
|
{
|
|
if ( var_0.animname == "rorke" )
|
|
level.rorke_glass_cutter delete();
|
|
else
|
|
level.player_glass_cutter delete();
|
|
}
|
|
|
|
punch_glass( var_0 )
|
|
{
|
|
if ( var_0.animname == "rorke" )
|
|
{
|
|
level.window_ribbon_rorke delete();
|
|
level.cut_window_rorke = spawn( "script_model", level.clean_window_rorke.origin );
|
|
level.cut_window_rorke setmodel( "cnd_window_pane_cutout_ally" );
|
|
level.window_cutout_shattered_rorke = spawn( "script_model", level.clean_window_rorke.origin );
|
|
level.window_cutout_shattered_rorke setmodel( "cnd_window_cutout_shattered_ally" );
|
|
level.clean_window_rorke delete();
|
|
level.cut_window_rorke show();
|
|
level.window_cutout_shattered_rorke show();
|
|
common_scripts\utility::exploder( 87421 );
|
|
level.window_cutout_shattered_rorke.animname = "window_cutout_shattered_rorke";
|
|
level.window_cutout_shattered_rorke maps\_anim::setanimtree();
|
|
level.window_cutout_shattered_rorke maps\_anim::anim_single_solo( level.window_cutout_shattered_rorke, "cnd_rappel_stealth_enter_bldg_window1" );
|
|
level.window_cutout_shattered_rorke thread maps\cornered_code::entity_cleanup( "player_pounce" );
|
|
level.cut_window_rorke thread maps\cornered_code::entity_cleanup( "player_pounce" );
|
|
}
|
|
else
|
|
{
|
|
level.window_ribbon_player delete();
|
|
level.cut_window_player = spawn( "script_model", level.clean_window_player.origin );
|
|
level.cut_window_player setmodel( "cnd_window_pane_cutout_player" );
|
|
level.window_cutout_shattered_player = spawn( "script_model", level.clean_window_player.origin );
|
|
level.window_cutout_shattered_player setmodel( "cnd_window_cutout_shattered_player" );
|
|
level.clean_window_player delete();
|
|
level.cut_window_player show();
|
|
level.window_cutout_shattered_player show();
|
|
common_scripts\utility::exploder( 87422 );
|
|
level.window_cutout_shattered_player.animname = "window_cutout_shattered_player";
|
|
level.window_cutout_shattered_player maps\_anim::setanimtree();
|
|
level.window_cutout_shattered_player maps\_anim::anim_single_solo( level.window_cutout_shattered_player, "cnd_rappel_stealth_enter_bldg_window2" );
|
|
level.window_cutout_shattered_player thread maps\cornered_code::entity_cleanup( "player_pounce" );
|
|
level.cut_window_player thread maps\cornered_code::entity_cleanup( "player_pounce" );
|
|
}
|
|
|
|
maps\_utility::stop_exploder( 10 );
|
|
}
|
|
|
|
building_entry_gun_up( var_0 )
|
|
{
|
|
common_scripts\utility::flag_set( "move_rorke_to_power_junction_entrance" );
|
|
level.player common_scripts\utility::_enableweapon();
|
|
}
|
|
|
|
building_entry_tv()
|
|
{
|
|
if ( level.start_point != "shadow_kill" )
|
|
{
|
|
setsaveddvar( "cg_cinematicFullScreen", "0" );
|
|
cinematicingameloop( "cornered_concert" );
|
|
common_scripts\utility::flag_wait( "player_in_power_junction_hallway" );
|
|
stopcinematicingame();
|
|
|
|
if ( isdefined( level.hide_bink_brush ) )
|
|
level.hide_bink_brush show();
|
|
|
|
var_0 = getent( "building_entry_tv_light", "targetname" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0 setlightintensity( 0.01 );
|
|
}
|
|
else
|
|
{
|
|
level.hide_bink_brush show();
|
|
var_0 = getent( "building_entry_tv_light", "targetname" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0 setlightintensity( 0.01 );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "virus_upload_bar_complete" );
|
|
wait 1;
|
|
cinematicingameloop( "cornered_concert" );
|
|
|
|
if ( isdefined( level.hide_bink_brush ) )
|
|
level.hide_bink_brush delete();
|
|
|
|
common_scripts\utility::flag_wait( "player_exiting_building" );
|
|
stopcinematicingame();
|
|
}
|
|
|
|
upload_virus_setup()
|
|
{
|
|
level.laptop = maps\_utility::spawn_anim_model( "laptop" );
|
|
level.laptop setmodel( "hjk_laptop_animated_on" );
|
|
level.laptop.animname = "laptop";
|
|
level.shadowkill_struct maps\_anim::anim_first_frame_solo( level.laptop, "virus_upload_laptop_enter" );
|
|
level.device = maps\_utility::spawn_anim_model( "handheld_device" );
|
|
level.device setmodel( "cnd_hand_held_device_bink" );
|
|
level.device.animname = "handheld_device";
|
|
level.device hide();
|
|
level.rack = maps\_utility::spawn_anim_model( "rack" );
|
|
level.rack setmodel( "cnd_server_rack_anim" );
|
|
level.rack.animname = "rack";
|
|
var_0 = getent( "server_rack_clip", "targetname" );
|
|
var_0 linkto( level.rack, "j_rack", ( 0, 0, 0 ), ( 0, 90, 0 ) );
|
|
level.virus_upload_anim_array = [];
|
|
level.virus_upload_anim_array[0] = level.cornered_player_arms;
|
|
level.virus_upload_anim_array[1] = level.device;
|
|
level.virus_upload_anim_array[2] = level.rack;
|
|
level.shadowkill_struct maps\_anim::anim_first_frame( level.virus_upload_anim_array, "virus_upload_enter" );
|
|
common_scripts\utility::flag_wait( "player_can_upload_virus" );
|
|
thread virus_upload_bink_start();
|
|
level.rack setmodel( "cnd_server_rack_anim_obj" );
|
|
level.virus_upload_trigger = getent( "player_upload_virus_trigger", "targetname" );
|
|
level.virus_upload_trigger common_scripts\utility::trigger_off();
|
|
level.virus_upload_lookat = common_scripts\utility::getstruct( "player_upload_virus_lookat", "targetname" );
|
|
level.rack_pull_out_trigger = getent( "player_pulling_out_rack_trigger_old", "targetname" );
|
|
level.rack_pull_out_lookat = common_scripts\utility::getstruct( "pulling_out_rack_lookat", "targetname" );
|
|
var_1 = getent( "player_pulling_out_rack_trigger", "targetname" );
|
|
var_1 delete();
|
|
|
|
if ( !maps\cornered_code::is_e3() )
|
|
{
|
|
if ( level.player common_scripts\utility::is_player_gamepad_enabled() )
|
|
level.rack_pull_out_trigger sethintstring( &"CORNERED_START_UPLOAD_VIRUS_CONSOLE" );
|
|
else
|
|
level.rack_pull_out_trigger sethintstring( &"CORNERED_START_UPLOAD_VIRUS" );
|
|
}
|
|
|
|
maps\player_scripted_anim_util::waittill_trigger_activate_looking_at( level.rack_pull_out_trigger, level.rack_pull_out_lookat, cos( 40 ) );
|
|
common_scripts\utility::flag_set( "player_started_virus_upload" );
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
thread maps\cornered_code::cleanup_outside_ents_on_entry();
|
|
thread maps\cornered_audio::aud_virus( "plant" );
|
|
level.rack setmodel( "cnd_server_rack_anim" );
|
|
|
|
if ( level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_disableweapon();
|
|
|
|
level.player allowcrouch( 0 );
|
|
level.player allowprone( 0 );
|
|
|
|
if ( level.player getstance() != "stand" )
|
|
level.player setstance( "stand" );
|
|
|
|
level.player freezecontrols( 1 );
|
|
wait 0.4;
|
|
level.player playerlinktoblend( level.cornered_player_arms, "tag_player", 0.6 );
|
|
level.player maps\cornered_code::player_hideviewmodelsleeveflaps();
|
|
thread delay_show_animated_hands( 0.6, level.device );
|
|
level.bink_is_paused = undefined;
|
|
thread force_player_to_end_upload();
|
|
thread watch_player_button_press();
|
|
level.player.is_in_upload = 1;
|
|
common_scripts\utility::flag_set( "virus_dynamic_dof_on" );
|
|
level.player thread maps\cornered_lighting::virus_dynamic_dof( "virus_upload_bar_complete" );
|
|
level.shadowkill_struct maps\_anim::anim_single( level.virus_upload_anim_array, "virus_upload_enter" );
|
|
level.player playerlinktodelta( level.cornered_player_arms, "tag_player", 0, 15, 15, 15, 10 );
|
|
thread player_upload_virus_hint();
|
|
thread upload_virus_loop();
|
|
level.upload_progress = 1;
|
|
level.max_upload = 100;
|
|
thread inverted_rappel_setup();
|
|
common_scripts\utility::flag_wait( "spawn_power_junction_patrol" );
|
|
thread gun_down_trigger();
|
|
thread shut_server_rack();
|
|
common_scripts\utility::flag_wait( "player_exiting_building" );
|
|
level.rack delete();
|
|
level.laptop delete();
|
|
setsaveddvar( "aim_aimAssistRangeScale", "1" );
|
|
}
|
|
|
|
player_upload_virus_hint()
|
|
{
|
|
level endon( "virus_upload_bar_complete" );
|
|
var_0 = 3;
|
|
thread upload_hint_cleanup( var_0 );
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_clear( "player_started_uploading" );
|
|
thread maps\cornered_code::time_to_pass_before_hint( var_0, "virus_upload", "player_started_uploading", 0, 2 );
|
|
var_1 = common_scripts\utility::flag_wait_any_return( "player_start_upload", "player_leave_upload" );
|
|
common_scripts\utility::flag_set( "player_started_uploading" );
|
|
|
|
if ( var_1 == "player_start_upload" )
|
|
common_scripts\utility::flag_wait( "player_stop_upload" );
|
|
|
|
if ( var_1 == "player_leave_upload" )
|
|
common_scripts\utility::flag_waitopen( "player_leave_upload" );
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
upload_hint_cleanup( var_0 )
|
|
{
|
|
common_scripts\utility::flag_wait( "virus_upload_bar_complete" );
|
|
common_scripts\utility::flag_set( "player_started_uploading" );
|
|
}
|
|
|
|
should_break_virus_upload_hint()
|
|
{
|
|
return common_scripts\utility::flag( "player_started_uploading" );
|
|
}
|
|
|
|
upload_virus_enter()
|
|
{
|
|
level endon( "force_player_upload_end" );
|
|
level endon( "enemies_aware" );
|
|
|
|
if ( isdefined( level.rack_shut ) )
|
|
{
|
|
level.rack setmodel( "cnd_server_rack_anim_obj" );
|
|
level.rack_pull_out_trigger common_scripts\utility::trigger_on();
|
|
|
|
if ( !maps\cornered_code::is_e3() )
|
|
{
|
|
if ( level.player common_scripts\utility::is_player_gamepad_enabled() )
|
|
level.rack_pull_out_trigger sethintstring( &"CORNERED_START_UPLOAD_VIRUS_CONSOLE" );
|
|
else
|
|
level.rack_pull_out_trigger sethintstring( &"CORNERED_START_UPLOAD_VIRUS" );
|
|
}
|
|
|
|
maps\player_scripted_anim_util::waittill_trigger_activate_looking_at( level.rack_pull_out_trigger, level.rack_pull_out_lookat, cos( 40 ) );
|
|
level.rack setmodel( "cnd_server_rack_anim" );
|
|
level.shadowkill_struct maps\_anim::anim_first_frame( level.virus_upload_anim_array, "virus_upload_enter" );
|
|
}
|
|
else
|
|
{
|
|
level.rack setmodel( "cnd_server_rack_anim_drive_obj" );
|
|
level.virus_upload_trigger common_scripts\utility::trigger_on();
|
|
|
|
if ( !maps\cornered_code::is_e3() )
|
|
{
|
|
if ( level.player common_scripts\utility::is_player_gamepad_enabled() )
|
|
level.virus_upload_trigger sethintstring( &"CORNERED_START_UPLOAD_VIRUS_CONSOLE" );
|
|
else
|
|
level.virus_upload_trigger sethintstring( &"CORNERED_START_UPLOAD_VIRUS" );
|
|
}
|
|
|
|
maps\player_scripted_anim_util::waittill_trigger_activate_looking_at( level.virus_upload_trigger, level.virus_upload_lookat, cos( 40 ) );
|
|
thread maps\cornered_audio::aud_virus( "restart" );
|
|
level.rack setmodel( "cnd_server_rack_anim" );
|
|
}
|
|
|
|
thread upload_virus_anims();
|
|
}
|
|
|
|
delay_show_animated_hands( var_0, var_1 )
|
|
{
|
|
wait( var_0 );
|
|
level.cornered_player_arms show();
|
|
|
|
if ( isdefined( var_1 ) )
|
|
var_1 show();
|
|
|
|
level.player freezecontrols( 0 );
|
|
}
|
|
|
|
upload_virus_anims()
|
|
{
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
|
|
if ( level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_disableweapon();
|
|
|
|
level.player allowcrouch( 0 );
|
|
level.player allowprone( 0 );
|
|
|
|
if ( level.player getstance() != "stand" )
|
|
level.player setstance( "stand" );
|
|
|
|
level.player freezecontrols( 1 );
|
|
level.player.is_in_upload = 1;
|
|
common_scripts\utility::flag_set( "virus_dynamic_dof_on" );
|
|
wait 0.4;
|
|
level.player playerlinktoblend( level.cornered_player_arms, "tag_player", 0.6 );
|
|
level.player maps\cornered_code::player_hideviewmodelsleeveflaps();
|
|
thread delay_show_animated_hands( 0.6, level.device );
|
|
thread watch_player_button_press();
|
|
|
|
if ( isdefined( level.rack_shut ) )
|
|
{
|
|
thread maps\cornered_audio::aud_virus( "replant" );
|
|
level.shadowkill_struct maps\_anim::anim_single( level.virus_upload_anim_array, "virus_upload_enter" );
|
|
level.rack_shut = undefined;
|
|
}
|
|
else
|
|
{
|
|
level.shadowkill_struct thread maps\_anim::anim_single_solo( level.virus_upload_anim_array[0], "virus_upload_enter_fast" );
|
|
level.shadowkill_struct maps\_anim::anim_single_solo( level.virus_upload_anim_array[1], "virus_upload_enter_fast" );
|
|
}
|
|
|
|
level.player playerlinktodelta( level.cornered_player_arms, "tag_player", 0, 15, 15, 15, 10 );
|
|
|
|
if ( common_scripts\utility::flag( "force_player_to_end_virus_upload" ) )
|
|
upload_virus_exit();
|
|
else
|
|
upload_virus_loop();
|
|
}
|
|
|
|
upload_virus_loop()
|
|
{
|
|
common_scripts\utility::flag_set( "virus_upload_loop" );
|
|
thread watch_player_left_stick();
|
|
thread virus_upload_bink();
|
|
thread upload_virus_loop_anims();
|
|
common_scripts\utility::flag_wait_any( "virus_upload_bar_complete", "player_leave_upload", "force_player_to_end_virus_upload" );
|
|
common_scripts\utility::flag_clear( "virus_upload_loop" );
|
|
level.shadowkill_struct notify( "stop_player_virus_upload_loop" );
|
|
upload_virus_exit();
|
|
}
|
|
|
|
upload_virus_loop_anims()
|
|
{
|
|
level endon( "virus_upload_bar_complete" );
|
|
level endon( "player_leave_upload" );
|
|
level endon( "force_player_to_end_virus_upload" );
|
|
|
|
if ( common_scripts\utility::flag( "player_start_upload" ) )
|
|
{
|
|
var_0 = "player_stop_upload";
|
|
var_1 = "player_start_upload";
|
|
level.shadowkill_struct thread maps\_anim::anim_loop( level.virus_upload_anim_array, "virus_upload_active_loop", "stop_player_virus_upload_loop" );
|
|
}
|
|
else
|
|
{
|
|
var_0 = "player_start_upload";
|
|
var_1 = "player_stop_upload";
|
|
level.shadowkill_struct thread maps\_anim::anim_loop( level.virus_upload_anim_array, "virus_upload_loop", "stop_player_virus_upload_loop" );
|
|
}
|
|
|
|
while ( common_scripts\utility::flag( "virus_upload_loop" ) )
|
|
{
|
|
common_scripts\utility::flag_wait( var_0 );
|
|
level.shadowkill_struct notify( "stop_player_virus_upload_loop" );
|
|
level.shadowkill_struct thread maps\_anim::anim_loop( level.virus_upload_anim_array, "virus_upload_active_loop", "stop_player_virus_upload_loop" );
|
|
common_scripts\utility::flag_wait( var_1 );
|
|
level.shadowkill_struct notify( "stop_player_virus_upload_loop" );
|
|
level.shadowkill_struct thread maps\_anim::anim_loop( level.virus_upload_anim_array, "virus_upload_loop", "stop_player_virus_upload_loop" );
|
|
}
|
|
}
|
|
|
|
watch_player_button_press()
|
|
{
|
|
level endon( "force_player_to_end_virus_upload" );
|
|
level endon( "virus_upload_bar_complete" );
|
|
level endon( "force_virus_upload_bar_complete" );
|
|
common_scripts\utility::flag_wait( "virus_upload_loop" );
|
|
|
|
while ( common_scripts\utility::flag( "virus_upload_loop" ) )
|
|
{
|
|
wait 0.05;
|
|
|
|
if ( common_scripts\utility::flag( "player_leave_upload" ) )
|
|
return;
|
|
|
|
if ( level.player attackbuttonpressed() )
|
|
{
|
|
var_0 = 0;
|
|
|
|
while ( level.player attackbuttonpressed() )
|
|
{
|
|
common_scripts\utility::flag_set( "player_start_upload" );
|
|
common_scripts\utility::flag_clear( "player_stop_upload" );
|
|
wait 0.05;
|
|
}
|
|
|
|
if ( common_scripts\utility::flag( "player_start_upload" ) )
|
|
{
|
|
common_scripts\utility::flag_set( "player_stop_upload" );
|
|
common_scripts\utility::flag_clear( "player_start_upload" );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
watch_player_left_stick()
|
|
{
|
|
level endon( "force_player_to_end_virus_upload" );
|
|
level endon( "virus_upload_bar_complete" );
|
|
level endon( "force_virus_upload_bar_complete" );
|
|
common_scripts\utility::flag_clear( "player_leave_upload" );
|
|
|
|
while ( common_scripts\utility::flag( "virus_upload_loop" ) )
|
|
{
|
|
var_0 = level.player getnormalizedmovement();
|
|
|
|
if ( var_0[0] < 0 )
|
|
{
|
|
if ( common_scripts\utility::flag( "player_stop_upload" ) || !common_scripts\utility::flag( "player_start_upload" ) )
|
|
common_scripts\utility::flag_set( "player_leave_upload" );
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
upload_virus_exit()
|
|
{
|
|
if ( common_scripts\utility::flag( "virus_upload_bar_complete" ) )
|
|
{
|
|
level.shadowkill_struct notify( "stop_player_virus_upload_loop" );
|
|
level.player lerpviewangleclamp( 0.5, 0, 0, 0, 0, 0, 0 );
|
|
level.shadowkill_struct maps\_anim::anim_single( level.virus_upload_anim_array, "virus_upload_end" );
|
|
level.player unlink();
|
|
|
|
if ( !level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_enableweapon();
|
|
|
|
level.player maps\cornered_code::player_showviewmodelsleeveflaps();
|
|
|
|
if ( !level.player common_scripts\utility::isweaponswitchenabled() )
|
|
level.player common_scripts\utility::_enableweaponswitch();
|
|
|
|
level.player allowfire( 1 );
|
|
level.allow_fire = 1;
|
|
level.player enableweaponpickup();
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
level.player allowcrouch( 1 );
|
|
level.player allowprone( 1 );
|
|
maps\cornered_code::hide_player_arms();
|
|
level.device hide();
|
|
wait 0.5;
|
|
level.player.is_in_upload = undefined;
|
|
common_scripts\utility::flag_clear( "virus_dynamic_dof_on" );
|
|
}
|
|
else
|
|
{
|
|
level.shadowkill_struct notify( "stop_player_virus_upload_loop" );
|
|
thread maps\cornered_audio::aud_virus( "stop" );
|
|
level.player lerpviewangleclamp( 0.5, 0, 0, 0, 0, 0, 0 );
|
|
level.shadowkill_struct thread maps\_anim::anim_single_solo( level.virus_upload_anim_array[0], "virus_upload_end_fast" );
|
|
level.shadowkill_struct maps\_anim::anim_single_solo( level.virus_upload_anim_array[1], "virus_upload_end_fast" );
|
|
level.player unlink();
|
|
level.player allowcrouch( 1 );
|
|
level.player allowprone( 1 );
|
|
maps\cornered_code::hide_player_arms();
|
|
level.device hide();
|
|
wait 0.5;
|
|
level.player.is_in_upload = undefined;
|
|
common_scripts\utility::flag_clear( "virus_dynamic_dof_on" );
|
|
|
|
if ( common_scripts\utility::flag( "force_player_to_end_virus_upload" ) )
|
|
{
|
|
if ( level.player getcurrentweapon() == "computer_idf" )
|
|
{
|
|
level.player switchtoweapon( level.player.currentweapon );
|
|
|
|
if ( !level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_enableweapon();
|
|
|
|
level.player maps\cornered_code::player_showviewmodelsleeveflaps();
|
|
wait 0.5;
|
|
level.player takeweapon( "computer_idf" );
|
|
|
|
if ( !level.player common_scripts\utility::isweaponswitchenabled() )
|
|
level.player common_scripts\utility::_enableweaponswitch();
|
|
|
|
level.player allowfire( 1 );
|
|
level.allow_fire = 1;
|
|
level.player enableweaponpickup();
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
}
|
|
else
|
|
{
|
|
if ( !level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_enableweapon();
|
|
|
|
level.player maps\cornered_code::player_showviewmodelsleeveflaps();
|
|
|
|
if ( !level.player common_scripts\utility::isweaponswitchenabled() )
|
|
level.player common_scripts\utility::_enableweaponswitch();
|
|
|
|
level.player allowfire( 1 );
|
|
level.allow_fire = 1;
|
|
level.player enableweaponpickup();
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
level.player.currentweapon = level.player getcurrentweapon();
|
|
level.player giveweapon( "computer_idf" );
|
|
level.player switchtoweaponimmediate( "computer_idf" );
|
|
|
|
if ( level.player common_scripts\utility::isweaponswitchenabled() )
|
|
level.player common_scripts\utility::_disableweaponswitch();
|
|
|
|
wait 0.2;
|
|
|
|
if ( !level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_enableweapon();
|
|
|
|
level.player maps\cornered_code::player_showviewmodelsleeveflaps();
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
thread player_in_upload_volume();
|
|
upload_virus_enter();
|
|
}
|
|
}
|
|
}
|
|
|
|
player_in_upload_volume()
|
|
{
|
|
level endon( "force_player_upload_end" );
|
|
var_0 = getent( "player_virus_upload_volume", "targetname" );
|
|
level.player allowfire( 0 );
|
|
level.allow_fire = undefined;
|
|
level.player disableweaponpickup();
|
|
|
|
while ( level.player istouching( var_0 ) && !isdefined( level.player.is_in_upload ) )
|
|
wait 0.05;
|
|
|
|
if ( isdefined( level.player.is_in_upload ) )
|
|
{
|
|
level.player switchtoweapon( level.player.currentweapon );
|
|
level.player takeweapon( "computer_idf" );
|
|
return;
|
|
}
|
|
|
|
level.player switchtoweapon( level.player.currentweapon );
|
|
|
|
if ( level.player.currentweapon == "imbel+acog_sp+silencer_sp" )
|
|
wait 1.0;
|
|
else
|
|
wait 0.5;
|
|
|
|
level.player takeweapon( "computer_idf" );
|
|
|
|
if ( !level.player common_scripts\utility::isweaponswitchenabled() )
|
|
level.player common_scripts\utility::_enableweaponswitch();
|
|
|
|
level.player allowfire( 1 );
|
|
level.allow_fire = 1;
|
|
level.player enableweaponpickup();
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
}
|
|
|
|
virus_upload_bink_start()
|
|
{
|
|
if ( isdefined( level.start_point ) && level.start_point == "shadow_kill" )
|
|
wait 2;
|
|
|
|
if ( isdefined( level.start_point ) && level.start_point != "shadow_kill" )
|
|
{
|
|
common_scripts\utility::flag_wait( "player_in_power_junction_hallway" );
|
|
wait 0.75;
|
|
}
|
|
|
|
setsaveddvar( "cg_cinematicFullScreen", "0" );
|
|
cinematicingame( "cornered_pda_upload" );
|
|
|
|
while ( cinematicgetframe() <= 20 )
|
|
common_scripts\utility::waitframe();
|
|
|
|
pausecinematicingame( 1 );
|
|
}
|
|
|
|
virus_upload_bink()
|
|
{
|
|
virus_upload_bink_internal();
|
|
|
|
if ( !common_scripts\utility::flag( "force_virus_upload_bar_complete" ) )
|
|
{
|
|
if ( !isdefined( level.bink_is_paused ) )
|
|
{
|
|
pausecinematicingame( 1 );
|
|
level.bink_is_paused = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
virus_upload_bink_internal()
|
|
{
|
|
level endon( "virus_upload_bar_complete" );
|
|
level endon( "player_leave_upload" );
|
|
level endon( "force_player_to_end_virus_upload" );
|
|
level endon( "force_virus_upload_bar_complete" );
|
|
|
|
while ( common_scripts\utility::flag( "virus_upload_loop" ) )
|
|
{
|
|
common_scripts\utility::flag_wait( "player_start_upload" );
|
|
|
|
if ( common_scripts\utility::flag( "virus_upload_loop" ) )
|
|
{
|
|
pausecinematicingame( 0 );
|
|
level.bink_start_time = gettime();
|
|
level.bink_is_paused = undefined;
|
|
thread virus_upload_bink_progress();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait_any( "virus_upload_bar_complete", "player_stop_upload", "force_player_to_end_virus_upload" );
|
|
|
|
if ( common_scripts\utility::flag( "virus_upload_loop" ) )
|
|
{
|
|
pausecinematicingame( 1 );
|
|
level.bink_is_paused = 1;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
}
|
|
|
|
virus_upload_bink_progress()
|
|
{
|
|
while ( !isdefined( level.bink_is_paused ) )
|
|
{
|
|
level.bink_current_time = cinematicgettimeinmsec();
|
|
level.bink_percentage = level.bink_current_time / 22000;
|
|
|
|
if ( level.bink_percentage == 0 )
|
|
level.bink_percentage = 1.0;
|
|
|
|
thread maps\cornered_audio::audio_check_to_play_a_beep_or_not();
|
|
|
|
if ( level.bink_percentage >= 0.2 )
|
|
{
|
|
if ( !common_scripts\utility::flag( "spawn_power_junction_patrol" ) )
|
|
common_scripts\utility::flag_set( "spawn_power_junction_patrol" );
|
|
}
|
|
|
|
if ( level.bink_percentage >= 0.92 )
|
|
{
|
|
if ( !common_scripts\utility::flag( "virus_upload_bar_almost_complete" ) )
|
|
common_scripts\utility::flag_set( "virus_upload_bar_almost_complete" );
|
|
}
|
|
|
|
if ( level.bink_percentage >= 0.93 )
|
|
{
|
|
if ( !common_scripts\utility::flag( "force_virus_upload_bar_complete" ) )
|
|
common_scripts\utility::flag_set( "force_virus_upload_bar_complete" );
|
|
}
|
|
|
|
if ( level.bink_percentage >= 1.0 )
|
|
{
|
|
if ( !common_scripts\utility::flag( "virus_upload_bar_complete" ) )
|
|
common_scripts\utility::flag_set( "virus_upload_bar_complete" );
|
|
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
force_player_to_end_upload()
|
|
{
|
|
level endon( "virus_upload_bar_complete" );
|
|
common_scripts\utility::flag_wait_either( "force_player_upload_end", "enemies_aware" );
|
|
|
|
if ( isdefined( level.player.is_in_upload ) )
|
|
{
|
|
if ( !common_scripts\utility::flag( "force_virus_upload_bar_complete" ) )
|
|
{
|
|
level.player waittill( "damage" );
|
|
common_scripts\utility::flag_set( "force_player_to_end_virus_upload" );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( isdefined( level.rack_shut ) )
|
|
level.rack_pull_out_trigger common_scripts\utility::trigger_off();
|
|
else
|
|
level.virus_upload_trigger common_scripts\utility::trigger_off();
|
|
|
|
level.rack setmodel( "cnd_server_rack_anim" );
|
|
|
|
if ( level.player getcurrentweapon() == "computer_idf" )
|
|
{
|
|
level.player switchtoweapon( level.player.currentweapon );
|
|
wait 0.4;
|
|
|
|
if ( level.player.currentweapon == "imbel+acog_sp+silencer_sp" )
|
|
wait 1.0;
|
|
else
|
|
wait 0.5;
|
|
|
|
level.player takeweapon( "computer_idf" );
|
|
|
|
if ( !level.player common_scripts\utility::isweaponswitchenabled() )
|
|
level.player common_scripts\utility::_enableweaponswitch();
|
|
|
|
level.player allowfire( 1 );
|
|
level.allow_fire = 1;
|
|
level.player enableweaponpickup();
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
}
|
|
}
|
|
|
|
if ( !common_scripts\utility::flag( "force_virus_upload_bar_complete" ) )
|
|
{
|
|
common_scripts\utility::flag_wait_any( "finish_upload", "enemies_aware" );
|
|
|
|
if ( !common_scripts\utility::flag( "power_junction_patrol_killed" ) )
|
|
thread watch_player_after_shadow_kill();
|
|
|
|
maps\_utility::delaythread( 2, common_scripts\utility::flag_clear, "force_player_to_end_virus_upload" );
|
|
|
|
if ( !common_scripts\utility::flag( "enemies_aware" ) )
|
|
upload_virus_enter();
|
|
}
|
|
}
|
|
|
|
watch_player_after_shadow_kill()
|
|
{
|
|
level endon( "virus_upload_bar_complete" );
|
|
common_scripts\utility::flag_wait( "enemies_aware" );
|
|
|
|
if ( isdefined( level.rack_shut ) )
|
|
level.rack_pull_out_trigger common_scripts\utility::trigger_off();
|
|
else
|
|
level.virus_upload_trigger common_scripts\utility::trigger_off();
|
|
|
|
level.rack setmodel( "cnd_server_rack_anim" );
|
|
common_scripts\utility::flag_wait( "power_junction_patrol_killed" );
|
|
upload_virus_enter();
|
|
}
|
|
|
|
inverted_rappel_setup()
|
|
{
|
|
common_scripts\utility::flag_wait( "virus_upload_bar_complete" );
|
|
|
|
if ( !isdefined( level.player_exit_to_inverted_rope ) )
|
|
{
|
|
level.player_exit_to_inverted_rope = maps\_utility::spawn_anim_model( "cnd_rappel_tele_rope" );
|
|
level.building_entry_exit_anim_struct maps\_anim::anim_first_frame_solo( level.player_exit_to_inverted_rope, "rappel_stealth_exit" );
|
|
level.rorke_exit_to_inverted_rope = maps\_utility::spawn_anim_model( "cnd_rappel_tele_rope" );
|
|
level.rorke_exit_to_inverted_rope.animname = "building_entry_rope_rorke";
|
|
level.building_entry_exit_anim_struct maps\_anim::anim_last_frame_solo( level.rorke_exit_to_inverted_rope, "building_entry_rorke" );
|
|
}
|
|
|
|
common_scripts\utility::exploder( 5001 );
|
|
common_scripts\utility::exploder( 5002 );
|
|
common_scripts\utility::exploder( 5003 );
|
|
common_scripts\utility::exploder( 5004 );
|
|
common_scripts\utility::exploder( 3456 );
|
|
}
|
|
|
|
gun_down_trigger()
|
|
{
|
|
common_scripts\utility::flag_wait( "spawn_power_junction_patrol" );
|
|
setsaveddvar( "aim_aimAssistRangeScale", "0" );
|
|
level.player.computer_idf = undefined;
|
|
gun_down_trigger_internal();
|
|
|
|
if ( isdefined( level.has_hidden_weapon_equipped ) )
|
|
{
|
|
level.player allowsprint( 1 );
|
|
level.player allowfire( 1 );
|
|
level.allow_fire = 1;
|
|
|
|
if ( level.player maps\_utility::isads() )
|
|
{
|
|
level.player allowfire( 1 );
|
|
level.allow_fire = 1;
|
|
|
|
while ( level.player maps\_utility::isads() )
|
|
{
|
|
if ( level.player isfiring() )
|
|
{
|
|
while ( level.player maps\_utility::isads() )
|
|
wait 0.05;
|
|
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
var_0 = level.player getweaponslistprimaries();
|
|
level.player.equipped_hide_weapon = level.player getcurrentweapon();
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( var_2 != level.player.equipped_hide_weapon )
|
|
level.player.unequipped_hide_weapon = var_2;
|
|
}
|
|
|
|
determine_weapon();
|
|
var_4 = level.player getweaponammostock( level.player.equipped_hide_weapon );
|
|
var_5 = level.player getweaponammoclip( level.player.equipped_hide_weapon );
|
|
var_6 = level.player getweaponammostock( level.player.unequipped_hide_weapon );
|
|
var_7 = level.player getweaponammoclip( level.player.unequipped_hide_weapon );
|
|
|
|
if ( level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_disableweapon();
|
|
|
|
wait 0.5;
|
|
level.player takeallweapons();
|
|
level.player giveweapon( level.player.equipped_weapon, 0, 0, 0, 1 );
|
|
level.player giveweapon( level.player.unequipped_weapon, 0, 0, 0, 1 );
|
|
level.player switchtoweapon( level.player.equipped_weapon );
|
|
wait 0.3;
|
|
level.player setweaponammostock( level.player.equipped_weapon, var_4 );
|
|
level.player setweaponammoclip( level.player.equipped_weapon, var_5 );
|
|
level.player setweaponammostock( level.player.unequipped_weapon, var_6 );
|
|
level.player setweaponammoclip( level.player.unequipped_weapon, var_7 );
|
|
|
|
if ( !level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_enableweapon();
|
|
}
|
|
}
|
|
|
|
gun_down_trigger_internal()
|
|
{
|
|
level endon( "shadow_kill_stab" );
|
|
level endon( "enemies_aware" );
|
|
level.has_hidden_weapon_equipped = undefined;
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "gun_down_trigger" );
|
|
level.player allowsprint( 0 );
|
|
var_0 = level.player getweaponslistprimaries();
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( var_2 == "computer_idf" )
|
|
{
|
|
if ( level.player getcurrentweapon() == "computer_idf" )
|
|
level.player.computer_idf = 1;
|
|
|
|
level.player.equipped_weapon = level.player.currentweapon;
|
|
level.player takeweapon( "computer_idf" );
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
}
|
|
}
|
|
|
|
var_0 = level.player getweaponslistprimaries();
|
|
|
|
if ( !isdefined( level.player.computer_idf ) )
|
|
level.player.equipped_weapon = level.player getcurrentweapon();
|
|
else
|
|
level.player.computer_idf = undefined;
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( var_2 != level.player.equipped_weapon )
|
|
level.player.unequipped_weapon = var_2;
|
|
}
|
|
|
|
determine_weapon( 1 );
|
|
var_6 = level.player getweaponammostock( level.player.equipped_weapon );
|
|
var_7 = level.player getweaponammoclip( level.player.equipped_weapon );
|
|
var_8 = level.player getweaponammostock( level.player.unequipped_weapon );
|
|
var_9 = level.player getweaponammoclip( level.player.unequipped_weapon );
|
|
|
|
if ( level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_disableweapon();
|
|
|
|
if ( level.player.equipped_weapon == "imbel+acog_sp+silencer_sp" )
|
|
wait 1.0;
|
|
else
|
|
wait 0.5;
|
|
|
|
level.player takeallweapons();
|
|
level.player giveweapon( level.player.equipped_hide_weapon, 0, 0, 0, 1 );
|
|
level.player giveweapon( level.player.unequipped_hide_weapon, 0, 0, 0, 1 );
|
|
level.player switchtoweapon( level.player.equipped_hide_weapon );
|
|
wait 0.3;
|
|
level.player setweaponammostock( level.player.equipped_hide_weapon, var_6 );
|
|
level.player setweaponammoclip( level.player.equipped_hide_weapon, var_7 );
|
|
level.player setweaponammostock( level.player.unequipped_hide_weapon, var_8 );
|
|
level.player setweaponammoclip( level.player.unequipped_hide_weapon, var_9 );
|
|
|
|
if ( !level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_enableweapon();
|
|
|
|
if ( level.player.equipped_hide_weapon == "imbel_hide_acog_silenced_cornered+acog_sp+silencer_sp" )
|
|
wait 0.5;
|
|
else
|
|
wait 0.5;
|
|
|
|
level.has_hidden_weapon_equipped = 1;
|
|
thread hold_fire_unless_ads();
|
|
common_scripts\utility::flag_waitopen( "gun_down_trigger" );
|
|
level.player allowsprint( 1 );
|
|
var_0 = level.player getweaponslistprimaries();
|
|
level.player.equipped_hide_weapon = level.player getcurrentweapon();
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( var_2 != level.player.equipped_hide_weapon )
|
|
level.player.unequipped_hide_weapon = var_2;
|
|
}
|
|
|
|
determine_weapon();
|
|
var_12 = level.player getweaponammostock( level.player.equipped_hide_weapon );
|
|
var_13 = level.player getweaponammoclip( level.player.equipped_hide_weapon );
|
|
var_14 = level.player getweaponammostock( level.player.unequipped_hide_weapon );
|
|
var_15 = level.player getweaponammoclip( level.player.unequipped_hide_weapon );
|
|
|
|
if ( level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_disableweapon();
|
|
|
|
if ( level.player.equipped_hide_weapon == "imbel_hide_acog_silenced_cornered+acog_sp+silencer_sp" )
|
|
wait 0.5;
|
|
else
|
|
wait 0.5;
|
|
|
|
level.player takeallweapons();
|
|
level.player giveweapon( level.player.equipped_weapon, 0, 0, 0, 1 );
|
|
level.player giveweapon( level.player.unequipped_weapon, 0, 0, 0, 1 );
|
|
level.player switchtoweapon( level.player.equipped_weapon );
|
|
wait 0.3;
|
|
level.player setweaponammostock( level.player.equipped_weapon, var_12 );
|
|
level.player setweaponammoclip( level.player.equipped_weapon, var_13 );
|
|
level.player setweaponammostock( level.player.unequipped_weapon, var_14 );
|
|
level.player setweaponammoclip( level.player.unequipped_weapon, var_15 );
|
|
|
|
if ( !level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_enableweapon();
|
|
|
|
if ( level.player.equipped_weapon == "imbel+acog_sp+silencer_sp" )
|
|
wait 0.5;
|
|
else
|
|
wait 0.5;
|
|
|
|
level.has_hidden_weapon_equipped = undefined;
|
|
}
|
|
}
|
|
|
|
determine_weapon( var_0 )
|
|
{
|
|
level endon( "shadow_kill_stab" );
|
|
level endon( "enemies_aware" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
if ( level.player.equipped_weapon == "imbel+acog_sp+silencer_sp" )
|
|
{
|
|
level.player.equipped_hide_weapon = "imbel_hide_acog_silenced_cornered+acog_sp+silencer_sp";
|
|
level.player.unequipped_hide_weapon = "kriss_hide_eotech_silenced_cornered+eotechsmg_sp+silencer_sp";
|
|
}
|
|
else
|
|
{
|
|
level.player.equipped_hide_weapon = "kriss_hide_eotech_silenced_cornered+eotechsmg_sp+silencer_sp";
|
|
level.player.unequipped_hide_weapon = "imbel_hide_acog_silenced_cornered+acog_sp+silencer_sp";
|
|
}
|
|
}
|
|
else if ( level.player.equipped_hide_weapon == "imbel_hide_acog_silenced_cornered+acog_sp+silencer_sp" )
|
|
{
|
|
level.player.equipped_weapon = "imbel+acog_sp+silencer_sp";
|
|
level.player.unequipped_weapon = "kriss+eotechsmg_sp+silencer_sp";
|
|
}
|
|
else
|
|
{
|
|
level.player.equipped_weapon = "kriss+eotechsmg_sp+silencer_sp";
|
|
level.player.unequipped_weapon = "imbel+acog_sp+silencer_sp";
|
|
}
|
|
}
|
|
|
|
hold_fire_unless_ads()
|
|
{
|
|
level endon( "shadow_kill_stab" );
|
|
level endon( "enemies_aware" );
|
|
|
|
while ( common_scripts\utility::flag( "gun_down_trigger" ) )
|
|
{
|
|
level.player allowfire( 0 );
|
|
level.allow_fire = undefined;
|
|
|
|
if ( level.player playerads() == 1 )
|
|
{
|
|
wait 0.1;
|
|
level.player allowfire( 1 );
|
|
level.allow_fire = 1;
|
|
|
|
while ( level.player playerads() == 1 )
|
|
{
|
|
if ( level.player isfiring() )
|
|
{
|
|
while ( level.player playerads() == 1 )
|
|
wait 0.05;
|
|
|
|
level.player allowfire( 0 );
|
|
level.allow_fire = undefined;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
level.player allowfire( 1 );
|
|
level.allow_fire = 1;
|
|
}
|
|
|
|
shut_server_rack()
|
|
{
|
|
level endon( "virus_upload_bar_complete" );
|
|
level endon( "enemies_aware" );
|
|
common_scripts\utility::flag_wait( "force_player_upload_end" );
|
|
|
|
if ( isdefined( level.player.is_in_upload ) )
|
|
{
|
|
while ( isdefined( level.player.is_in_upload ) )
|
|
wait 0.05;
|
|
}
|
|
|
|
level.shadowkill_struct maps\_anim::anim_single_solo( level.virus_upload_anim_array[2], "virus_upload_end" );
|
|
level.rack_shut = 1;
|
|
}
|
|
|
|
festival_spotlights()
|
|
{
|
|
var_0 = common_scripts\utility::getstructarray( "festival_spotlight", "targetname" );
|
|
var_1 = [];
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
var_4 = maps\_utility::spawn_anim_model( "festival_spotlight", var_3.origin );
|
|
var_4 linkto( level.vista_pivot );
|
|
var_1 = common_scripts\utility::add_to_array( var_1, var_4 );
|
|
}
|
|
|
|
foreach ( var_4 in var_1 )
|
|
{
|
|
playfxontag( level._effect["vfx_festival_spot_cnd"], var_4, "J_prop_1" );
|
|
playfxontag( level._effect["vfx_festival_spot_cnd"], var_4, "J_prop_2" );
|
|
wait( randomfloatrange( 0.1, 0.8 ) );
|
|
var_4 thread maps\_anim::anim_loop_solo( var_4, "cornered_festival_spotlight_1", "stop_loop" );
|
|
}
|
|
|
|
if ( level.start_point == "intro" || level.start_point == "zipline" || level.start_point == "rappel_stealth" || level.start_point == "building_entry" || level.start_point == "shadow_kill" || level.start_point == "inverted_rappel" || level.start_point == "courtyard" )
|
|
common_scripts\utility::flag_wait( "baker_security_vo" );
|
|
|
|
foreach ( var_4 in var_1 )
|
|
{
|
|
stopfxontag( level._effect["vfx_festival_spot_cnd"], var_4, "J_prop_1" );
|
|
stopfxontag( level._effect["vfx_festival_spot_cnd"], var_4, "J_prop_2" );
|
|
var_4 notify( "stop_loop" );
|
|
var_4 stopanimscripted();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "fall_down_shake" );
|
|
|
|
foreach ( var_4 in var_1 )
|
|
{
|
|
playfxontag( level._effect["vfx_festival_spot_cnd"], var_4, "J_prop_1" );
|
|
playfxontag( level._effect["vfx_festival_spot_cnd"], var_4, "J_prop_2" );
|
|
wait( randomfloatrange( 0.1, 0.8 ) );
|
|
var_4 thread maps\_anim::anim_loop_solo( var_4, "cornered_festival_spotlight_1", "stop_loop" );
|
|
}
|
|
}
|
|
|
|
festival_balloons()
|
|
{
|
|
var_0 = getentarray( "balloon_cluster_1", "script_noteworthy" );
|
|
var_1 = maps\_utility::spawn_anim_model( "festival_balloon" );
|
|
thread festival_balloons_internal( var_0, var_1 );
|
|
var_2 = getentarray( "balloon_cluster_2", "script_noteworthy" );
|
|
var_3 = maps\_utility::spawn_anim_model( "festival_balloon" );
|
|
thread festival_balloons_internal( var_2, var_3 );
|
|
var_4 = getentarray( "balloon_cluster_3", "script_noteworthy" );
|
|
var_5 = maps\_utility::spawn_anim_model( "festival_balloon" );
|
|
thread festival_balloons_internal( var_4, var_5 );
|
|
var_6 = getentarray( "balloon_cluster_4", "script_noteworthy" );
|
|
var_7 = maps\_utility::spawn_anim_model( "festival_balloon" );
|
|
thread festival_balloons_internal( var_6, var_7 );
|
|
var_8 = getentarray( "balloon_cluster_5", "script_noteworthy" );
|
|
var_9 = maps\_utility::spawn_anim_model( "festival_balloon" );
|
|
thread festival_balloons_internal( var_8, var_9 );
|
|
var_10 = getentarray( "balloon_cluster_6", "script_noteworthy" );
|
|
var_11 = maps\_utility::spawn_anim_model( "festival_balloon" );
|
|
thread festival_balloons_internal( var_10, var_11 );
|
|
var_12 = getentarray( "balloon_cluster_7", "script_noteworthy" );
|
|
var_13 = maps\_utility::spawn_anim_model( "festival_balloon" );
|
|
thread festival_balloons_internal( var_12, var_13 );
|
|
}
|
|
|
|
festival_balloons_internal( var_0, var_1 )
|
|
{
|
|
var_1 linkto( level.vista_pivot );
|
|
|
|
foreach ( var_3 in var_0 )
|
|
var_3 linkto( var_1, "J_prop_1" );
|
|
|
|
wait( randomfloatrange( 0.3, 2.5 ) );
|
|
var_1 thread maps\_anim::anim_loop_solo( var_1, "cornered_balloon_wiggle", "stop_loop" );
|
|
|
|
if ( level.start_point == "intro" || level.start_point == "zipline" || level.start_point == "rappel_stealth" || level.start_point == "building_entry" || level.start_point == "shadow_kill" || level.start_point == "inverted_rappel" || level.start_point == "courtyard" )
|
|
common_scripts\utility::flag_wait( "baker_security_vo" );
|
|
|
|
var_1 notify( "stop_loop" );
|
|
var_1 stopanimscripted();
|
|
common_scripts\utility::flag_wait( "fall_down_shake" );
|
|
wait( randomfloatrange( 0.3, 2.5 ) );
|
|
var_1 thread maps\_anim::anim_loop_solo( var_1, "cornered_balloon_wiggle", "stop_loop" );
|
|
}
|
|
|
|
ambient_building_lights()
|
|
{
|
|
var_0 = getent( "window_light_1a", "targetname" );
|
|
var_1 = getent( "window_light_1b", "targetname" );
|
|
var_2 = getent( "window_light_1c", "targetname" );
|
|
var_3 = getent( "window_light_1d", "targetname" );
|
|
var_4 = getent( "window_light_4a", "targetname" );
|
|
var_5 = getent( "window_light_4b", "targetname" );
|
|
var_0 thread ambient_building_lights_internal( 5, 15 );
|
|
var_1 thread ambient_building_lights_internal( 0, 10 );
|
|
var_2 thread ambient_building_lights_internal( 5, 15 );
|
|
var_3 thread ambient_building_lights_internal( 0, 10 );
|
|
var_4 thread ambient_building_lights_internal( 5, 15 );
|
|
var_5 thread ambient_building_lights_internal( 0, 10 );
|
|
var_6 = getent( "vista_elevator_a", "targetname" );
|
|
var_7 = getent( "vista_elevator_b", "targetname" );
|
|
var_8 = getent( "vista_elevator_c", "targetname" );
|
|
var_9 = getent( "vista_elevator_d", "targetname" );
|
|
var_6 thread ambient_building_elevators( 19184, 29680 );
|
|
var_7 thread ambient_building_elevators( 19184, 29680 );
|
|
var_8 thread ambient_building_elevators( 7138, 23298 );
|
|
var_9 thread ambient_building_elevators( 7138, 23298 );
|
|
}
|
|
|
|
ambient_building_lights_internal( var_0, var_1 )
|
|
{
|
|
if ( common_scripts\utility::cointoss() )
|
|
{
|
|
self hide();
|
|
self.is_hidden = 1;
|
|
}
|
|
else
|
|
self.is_hidden = undefined;
|
|
|
|
while ( !common_scripts\utility::flag( "baker_security_vo" ) )
|
|
{
|
|
wait( randomfloatrange( var_0, var_1 ) );
|
|
|
|
if ( isdefined( self.is_hidden ) )
|
|
{
|
|
self show();
|
|
self.is_hidden = undefined;
|
|
continue;
|
|
}
|
|
|
|
self hide();
|
|
self.is_hidden = 1;
|
|
}
|
|
|
|
if ( isdefined( self ) )
|
|
self delete();
|
|
}
|
|
|
|
ambient_building_elevators( var_0, var_1 )
|
|
{
|
|
while ( !common_scripts\utility::flag( "baker_security_vo" ) )
|
|
{
|
|
if ( common_scripts\utility::cointoss() )
|
|
self.going_up = 1;
|
|
else
|
|
self.going_up = undefined;
|
|
|
|
var_2 = 180 * randomintrange( 5, 40 );
|
|
var_3 = var_2 * 0.005;
|
|
|
|
if ( self.origin[2] + var_2 > var_1 && isdefined( self.going_up ) )
|
|
continue;
|
|
|
|
if ( self.origin[2] - var_2 < var_0 && !isdefined( self.going_up ) )
|
|
continue;
|
|
|
|
if ( isdefined( self.going_up ) )
|
|
{
|
|
self moveto( self.origin + ( 0, 0, var_2 ), var_3, 0.5, 0.5 );
|
|
self.going_up = undefined;
|
|
wait( var_3 );
|
|
}
|
|
else
|
|
{
|
|
self moveto( self.origin + ( 0, 0, var_2 * -1 ), var_3, 0.5, 0.5 );
|
|
self.going_up = 1;
|
|
wait( var_3 );
|
|
}
|
|
|
|
wait( randomfloatrange( 5, 10 ) );
|
|
}
|
|
|
|
if ( isdefined( self ) )
|
|
self delete();
|
|
}
|
|
|
|
building_entry_combat()
|
|
{
|
|
var_0 = getent( "player_out_rorke_building_entry_volume", "targetname" );
|
|
thread maps\cornered_code::watch_player_in_volume( var_0, "player_out_of_rorkes_way" );
|
|
common_scripts\utility::flag_wait( "player_out_of_rorkes_way" );
|
|
level.rappel_max_lateral_dist_right = 200;
|
|
level.rappel_max_lateral_dist_left = 370;
|
|
maps\cornered_code::waittill_player_looking_at_rorke( 10 );
|
|
common_scripts\utility::flag_set( "player_looking_towards_rorke" );
|
|
}
|
|
|
|
allies_building_entry_vo()
|
|
{
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_rke_targetfloor" );
|
|
|
|
if ( !isdefined( level.building_entry_startpoint ) )
|
|
thread player_in_rorkes_way();
|
|
|
|
common_scripts\utility::flag_wait( "rorke_started_cutting_glass" );
|
|
wait 1;
|
|
common_scripts\utility::flag_set( "enter_building_ready" );
|
|
common_scripts\utility::flag_wait( "player_finished_cutting" );
|
|
common_scripts\utility::flag_wait( "player_in_building" );
|
|
maps\_utility::music_play( "mus_cornered_entry" );
|
|
level.allies[level.const_rorke] thread maps\_utility::smart_radio_dialogue( "cornered_mrk_powersystemisin" );
|
|
wait 1;
|
|
common_scripts\utility::flag_set( "building_entry_finished" );
|
|
wait 2.5;
|
|
thread maps\cornered::obj_upload_virus();
|
|
}
|
|
|
|
player_in_rorkes_way()
|
|
{
|
|
level endon( "player_out_of_rorkes_way" );
|
|
wait 3;
|
|
|
|
if ( !common_scripts\utility::flag( "player_out_of_rorkes_way" ) )
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_youreinmyway" );
|
|
|
|
var_0 = maps\_utility::make_array( "cornered_mrk_move", "cornered_mrk_youreinmyway" );
|
|
thread maps\cornered_code::nag_until_flag( var_0, "player_out_of_rorkes_way", 10, 15, 5 );
|
|
}
|
|
|
|
nag_player_to_jump()
|
|
{
|
|
wait 1;
|
|
|
|
if ( !common_scripts\utility::flag( "player_jumped_into_building" ) )
|
|
maps\cornered_code::temp_dialogue( "Rorke", "Rook, kick that glass in and get in here!" );
|
|
}
|
|
|
|
allies_building_entry_movement()
|
|
{
|
|
if ( isdefined( level.building_entry_startpoint ) )
|
|
{
|
|
level.building_entry_exit_anim_struct = common_scripts\utility::getstruct( "rappel_stealth_building_entry_exit_anim_struct", "targetname" );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
if ( self.animname == "rorke" )
|
|
{
|
|
if ( !isdefined( level.building_entry_startpoint ) )
|
|
{
|
|
maps\cornered_code_rappel_allies::ally_rappel_stop_aiming();
|
|
maps\cornered_code_rappel_allies::ally_rappel_stop_shooting();
|
|
rorke_move_to_building_entry();
|
|
}
|
|
|
|
rorke_building_entry_movement();
|
|
}
|
|
else if ( isdefined( level.building_entry_startpoint ) )
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_loop_solo( self, "cnd_rappel_inverted_idle_" + self.animname, "stop_loop" );
|
|
else
|
|
{
|
|
maps\cornered_code_rappel_allies::ally_rappel_stop_aiming();
|
|
maps\cornered_code_rappel_allies::ally_rappel_stop_shooting();
|
|
baker_building_entry_movement();
|
|
}
|
|
}
|
|
|
|
baker_building_entry_movement()
|
|
{
|
|
self notify( "stop_loop" );
|
|
self stopanimscripted();
|
|
maps\cornered_code_rappel_allies::ally_rappel_stop_aiming();
|
|
maps\cornered_code_rappel_allies::ally_start_calm_idle( "stealth" );
|
|
}
|
|
|
|
rorke_move_to_building_entry()
|
|
{
|
|
self notify( "stop_loop" );
|
|
|
|
if ( !common_scripts\utility::flag( "player_out_of_rorkes_way" ) )
|
|
{
|
|
maps\cornered_code_rappel_allies::ally_start_calm_idle( "stealth" );
|
|
common_scripts\utility::flag_wait( "player_out_of_rorkes_way" );
|
|
maps\cornered_code_rappel_allies::ally_stop_calm_idle();
|
|
}
|
|
|
|
var_0 = self.origin[0];
|
|
var_1 = level.rorke_glass_start_org[0];
|
|
var_2 = abs( var_0 - var_1 );
|
|
var_3 = 9;
|
|
var_4 = maps\cornered_code::ally_get_horizontal_start_distance( "left" );
|
|
var_5 = maps\cornered_code::ally_get_horizontal_stop_distance( "left" );
|
|
var_6 = var_4 + var_5;
|
|
|
|
if ( var_2 < var_6 - var_3 )
|
|
return;
|
|
|
|
var_7 = "move_back_start";
|
|
var_8 = "move_back";
|
|
var_9 = "move_back_stop";
|
|
var_10 = var_1 + var_5;
|
|
self notify( "stop_loop" );
|
|
maps\_anim::anim_single_solo( self, var_7 );
|
|
var_0 = self.origin[0];
|
|
var_11 = 9;
|
|
var_0 = var_0 - var_11;
|
|
|
|
if ( var_0 > var_10 )
|
|
{
|
|
thread maps\_anim::anim_loop_solo( self, var_8, "stop_loop" );
|
|
|
|
while ( var_0 > var_10 )
|
|
{
|
|
common_scripts\utility::waitframe();
|
|
var_0 = self.origin[0] - var_11;
|
|
}
|
|
}
|
|
|
|
var_12 = ( var_10, self.origin[1], level.rorke_glass_start_org[2] );
|
|
self forceteleport( var_12, self.angles, 20 );
|
|
maps\_anim::anim_single_solo( self, var_9 );
|
|
}
|
|
|
|
rorke_building_entry_movement()
|
|
{
|
|
self.cnd_rappel_tele_rope.animname = "building_entry_rope_rorke";
|
|
var_0 = [];
|
|
var_0[0] = self;
|
|
var_0[1] = self.cnd_rappel_tele_rope;
|
|
level.building_entry_exit_anim_struct maps\_anim::anim_first_frame( var_0, "building_entry_rorke" );
|
|
maps\cornered_code_rappel_allies::ally_rappel_start_aiming( "stealth" );
|
|
common_scripts\utility::flag_wait( "player_looking_towards_rorke" );
|
|
maps\cornered_code_rappel_allies::ally_rappel_stop_aiming();
|
|
thread maps\cornered_audio::aud_rappel( "r_glass" );
|
|
maps\cornered_code_rappel_allies::ally_rappel_stop_rope();
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_single( var_0, "building_entry_rorke" );
|
|
thread glass_cutting_fx_notetrack_handler();
|
|
wait 2.25;
|
|
common_scripts\utility::flag_set( "rorke_started_cutting_glass" );
|
|
self waittillmatch( "single anim", "end" );
|
|
maps\cornered_code_rappel_allies::ally_rappel_rope_cleanup();
|
|
self.ignoreall = 1;
|
|
self.moveplaybackrate = 0.92;
|
|
var_1 = getnode( "rorke_entry_node", "targetname" );
|
|
thread maps\cornered_code::send_to_node_and_set_flag_if_specified_when_reached( var_1 );
|
|
common_scripts\utility::flag_wait( "move_to_power_junction_room_entrance" );
|
|
var_1 = getnode( "rorke_power_junction_entrance_node", "targetname" );
|
|
thread maps\cornered_code::send_to_node_and_set_flag_if_specified_when_reached( var_1 );
|
|
common_scripts\utility::flag_wait( "move_into_power_junction_room" );
|
|
common_scripts\utility::flag_set( "player_can_upload_virus" );
|
|
self.moveplaybackrate = 1;
|
|
}
|
|
|
|
handle_shadow_kill()
|
|
{
|
|
if ( isdefined( level.shadow_kill_startpoint ) )
|
|
{
|
|
thread setup_window_cutout( level.clean_window_player, "cnd_window_pane_cutout_player" );
|
|
thread setup_window_cutout( level.clean_window_rorke, "cnd_window_pane_cutout_ally" );
|
|
common_scripts\utility::flag_set( "player_can_upload_virus" );
|
|
var_0 = getent( "move_into_power_junction_room_trigger", "targetname" );
|
|
var_0 delete();
|
|
var_0 = getent( "move_to_power_junction_room_entrance_trigger", "targetname" );
|
|
var_0 delete();
|
|
level.shadowkill_struct = common_scripts\utility::getstruct( "shadow_kill_anim_struct", "targetname" );
|
|
level.rappel_entry_anim_struct = common_scripts\utility::getstruct( "rappel_entry_anim_struct_stealth", "targetname" );
|
|
level.building_entry_exit_anim_struct = common_scripts\utility::getstruct( "rappel_stealth_building_entry_exit_anim_struct", "targetname" );
|
|
}
|
|
|
|
level.force_rorke_pathing_clip = getent( "force_rorke_pathing_clip", "targetname" );
|
|
level.force_rorke_pathing_clip notsolid();
|
|
level.force_rorke_pathing_clip connectpaths();
|
|
thread upload_virus_setup();
|
|
}
|
|
|
|
shadow_kill_combat()
|
|
{
|
|
level.patrol_react_anim_count = 1;
|
|
maps\_utility::array_spawn_function_targetname( "power_junction_patrollers", ::power_junction_patrollers );
|
|
common_scripts\utility::flag_clear( "enemies_aware" );
|
|
level.first_two_patrollers_at_goal = 0;
|
|
level.second_two_patrollers_at_goal = 0;
|
|
common_scripts\utility::flag_wait( "spawn_power_junction_patrol" );
|
|
thread door_sounds( "door_sound_struct", "crnd_door_open1_virus_room", "crnd_door_close1_virus_room" );
|
|
var_0 = maps\_utility::array_spawn_targetname( "power_junction_patrollers" );
|
|
thread manage_power_junction_patrol();
|
|
thread shadow_kill_patrol_vo();
|
|
level.patroller_deleted = 0;
|
|
thread check_patrol_in_volume( var_0 );
|
|
thread watch_for_player_to_break_stealth( var_0 );
|
|
common_scripts\utility::flag_wait_either( "all_in", "enemies_aware" );
|
|
var_0 = maps\_utility::array_removedead_or_dying( var_0 );
|
|
maps\_utility::waittill_dead( var_0 );
|
|
common_scripts\utility::flag_set( "power_junction_patrol_killed" );
|
|
}
|
|
|
|
door_sounds( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = common_scripts\utility::getstruct( var_0, "targetname" );
|
|
thread common_scripts\utility::play_sound_in_space( var_1, var_3.origin );
|
|
wait 0.5;
|
|
thread common_scripts\utility::play_sound_in_space( var_2, var_3.origin );
|
|
}
|
|
|
|
manage_power_junction_patrol()
|
|
{
|
|
level endon( "enemies_aware" );
|
|
wait 2.0;
|
|
common_scripts\utility::flag_set( "start_power_junction_patrol_chatter" );
|
|
wait 2.0;
|
|
common_scripts\utility::flag_set( "start_power_junction_patrol_wave_1" );
|
|
wait 2.0;
|
|
common_scripts\utility::flag_set( "start_power_junction_patrol_wave_2" );
|
|
}
|
|
|
|
power_junction_patrollers()
|
|
{
|
|
self endon( "death" );
|
|
self.ignoreall = 1;
|
|
self.animname = "generic";
|
|
self.allowdeath = 1;
|
|
self.patrol_walk_anim = "cornered_shadowkill_patrol_walk";
|
|
|
|
if ( self.script_noteworthy == "shadow_kill_enemy" )
|
|
thread shadow_kill_enemy_setup();
|
|
else
|
|
{
|
|
thread maps\cornered_code::wait_till_shot( undefined, "enemies_aware" );
|
|
thread stealth_is_broken();
|
|
thread alert_all_on_death();
|
|
}
|
|
|
|
self.volume = getent( "power_junction_patrollers_start_hallway_volume", "targetname" );
|
|
thread maps\cornered_code::watch_for_death_and_alert_all_in_volume( "enemies_aware", "enemies_aware" );
|
|
|
|
if ( self.script_noteworthy == "enemy_1" )
|
|
{
|
|
level.first_patroller = self;
|
|
common_scripts\utility::flag_wait( "start_power_junction_patrol_wave_1" );
|
|
thread waittill_goal_and_animate();
|
|
}
|
|
|
|
if ( self.script_noteworthy == "enemy_2" )
|
|
{
|
|
level.second_patroller = self;
|
|
common_scripts\utility::flag_wait( "start_power_junction_patrol_wave_1" );
|
|
thread waittill_goal_and_animate();
|
|
}
|
|
|
|
if ( self.script_noteworthy == "enemy_3" )
|
|
{
|
|
common_scripts\utility::flag_wait( "start_power_junction_patrol_wave_2" );
|
|
thread waittill_goal_and_animate();
|
|
}
|
|
|
|
if ( self.script_noteworthy == "enemy_4" )
|
|
{
|
|
common_scripts\utility::flag_wait( "start_power_junction_patrol_wave_2" );
|
|
thread waittill_goal_and_animate();
|
|
var_0 = getent( "power_junction_post_shadow_kill_volume", "targetname" );
|
|
thread handle_volume_touching( var_0, "last_patroller_out_of_shadow_kill_volume", "last_patroller_out_of_shadow_kill_volume" );
|
|
}
|
|
}
|
|
|
|
waittill_goal_and_animate()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "enemies_aware" );
|
|
self waittill( "reached_path_end" );
|
|
|
|
if ( self.script_noteworthy == "enemy_1" || self.script_noteworthy == "enemy_2" )
|
|
{
|
|
level.first_two_patrollers_at_goal++;
|
|
|
|
while ( level.first_two_patrollers_at_goal < 2 )
|
|
wait 0.05;
|
|
}
|
|
|
|
if ( self.script_noteworthy == "enemy_3" || self.script_noteworthy == "enemy_4" )
|
|
{
|
|
level.second_two_patrollers_at_goal++;
|
|
|
|
while ( level.second_two_patrollers_at_goal < 2 )
|
|
wait 0.05;
|
|
}
|
|
|
|
level.shadowkill_struct thread maps\_anim::anim_single_solo( self, "cornered_shadowkill_" + self.script_noteworthy );
|
|
self waittillmatch( "single anim", "end" );
|
|
var_0 = common_scripts\utility::getstruct( "resume_patrol_" + self.script_noteworthy, "targetname" );
|
|
self.target = var_0.targetname;
|
|
self notify( "end_patrol" );
|
|
thread maps\_patrol::patrol( self.target );
|
|
}
|
|
|
|
shadow_kill_enemy_setup()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "enemies_aware" );
|
|
level.shadow_kill_enemy = self;
|
|
thread maps\cornered_code::wait_till_shot( "shadow_kill_stab", "enemies_aware" );
|
|
thread stealth_is_broken( "shadow_kill_stab" );
|
|
thread alert_all_on_death();
|
|
common_scripts\utility::flag_wait( "start_power_junction_patrol_wave_2" );
|
|
wait 0.5;
|
|
self waittill( "goal" );
|
|
level.shadowkill_struct maps\_anim::anim_reach_solo( self, "shadowkill_end_enemy" );
|
|
level.shadowkill_struct thread maps\_anim::anim_single_solo( self, "shadowkill_end_enemy" );
|
|
thread shadowkill_phone_off();
|
|
thread shadow_kill_enemy();
|
|
}
|
|
|
|
alert_all_on_death()
|
|
{
|
|
level endon( "shadow_kill_stab" );
|
|
self waittill( "death" );
|
|
|
|
if ( !common_scripts\utility::flag( "enemies_aware" ) )
|
|
common_scripts\utility::flag_set( "enemies_aware" );
|
|
}
|
|
|
|
shadow_kill_enemy()
|
|
{
|
|
common_scripts\utility::flag_wait( "shadow_kill_stab" );
|
|
self.allowdeath = 0;
|
|
self.team = "neutral";
|
|
self setcandamage( 0 );
|
|
self.ignoreme = 1;
|
|
self waittillmatch( "single anim", "end" );
|
|
self.a.nodeath = 1;
|
|
self.diequietly = 1;
|
|
self.allowdeath = 1;
|
|
self.noragdoll = 1;
|
|
self.a.disablelongdeath = 1;
|
|
self kill();
|
|
}
|
|
|
|
stop_patrol_vo()
|
|
{
|
|
self endon( "death" );
|
|
level waittill( "enemies_aware" );
|
|
self stopsounds();
|
|
}
|
|
|
|
shadow_kill_patrol_vo()
|
|
{
|
|
level.first_patroller endon( "death" );
|
|
level.second_patroller endon( "death" );
|
|
level endon( "enemies_aware" );
|
|
level.first_patroller thread stop_patrol_vo();
|
|
level.second_patroller thread stop_patrol_vo();
|
|
common_scripts\utility::flag_wait( "start_power_junction_patrol_chatter" );
|
|
level.first_patroller maps\_utility::smart_dialogue( "cornered_saf1_imalmostdonewith" );
|
|
level.second_patroller maps\_utility::smart_dialogue( "cornered_saf2_iheartheresa" );
|
|
level.first_patroller maps\_utility::smart_dialogue( "cornered_saf1_maybeilldothat" );
|
|
level.second_patroller maps\_utility::smart_dialogue( "cornered_saf2_youdontwantto" );
|
|
level.first_patroller maps\_utility::smart_dialogue( "cornered_saf1_laughter" );
|
|
level.second_patroller maps\_utility::smart_dialogue( "cornered_saf2_laughter" );
|
|
common_scripts\utility::flag_wait( "force_player_upload_end" );
|
|
level.first_patroller maps\_utility::smart_dialogue( "cornered_saf1_maybeillgoto" );
|
|
level.second_patroller maps\_utility::smart_dialogue( "cornered_saf2_iwishicould" );
|
|
level.first_patroller maps\_utility::smart_dialogue( "cornered_saf1_leaveearlywhosgonna" );
|
|
level.second_patroller maps\_utility::smart_dialogue( "cornered_saf2_whatifweget" );
|
|
level.first_patroller maps\_utility::smart_dialogue( "cornered_saf1_wewontgetcaught" );
|
|
level.second_patroller maps\_utility::smart_dialogue( "cornered_saf2_allrightletsgo" );
|
|
wait 2.5;
|
|
level.first_patroller maps\_utility::smart_dialogue( "cornered_saf1_heyweshouldsee" );
|
|
level.second_patroller maps\_utility::smart_dialogue( "cornered_saf2_areyoucrazyhes" );
|
|
level.first_patroller maps\_utility::smart_dialogue( "cornered_saf1_imsurehecan" );
|
|
level.second_patroller maps\_utility::smart_dialogue( "cornered_saf2_youmyfriendare" );
|
|
level.first_patroller maps\_utility::smart_dialogue( "cornered_saf1_imnottroublei" );
|
|
maps\cornered_audio::aud_filter_off();
|
|
level.player seteqlerp( 1, 1 );
|
|
}
|
|
|
|
stealth_is_broken( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
level endon( var_0 );
|
|
|
|
common_scripts\utility::flag_wait( "enemies_aware" );
|
|
maps\_utility::anim_stopanimscripted();
|
|
self notify( "end_patrol" );
|
|
maps\_utility::set_moveplaybackrate( 1.0 );
|
|
self.ignoreall = 0;
|
|
self.favoriteenemy = level.player;
|
|
maps\_utility::set_baseaccuracy( 15 );
|
|
player_seek_cnd();
|
|
}
|
|
|
|
player_seek_cnd()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "stop_player_seek" );
|
|
self.goalradius = 100;
|
|
wait( randomfloatrange( 0, 2 ) );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 = getnodesinradiussorted( level.player.origin, 500, 0, 128 );
|
|
|
|
if ( isdefined( var_0 ) && var_0.size > 0 )
|
|
{
|
|
self setgoalnode( var_0[0] );
|
|
wait( randomfloatrange( 2, 5 ) );
|
|
continue;
|
|
}
|
|
|
|
self setgoalpos( level.player.origin );
|
|
wait( randomfloatrange( 1, 2 ) );
|
|
}
|
|
}
|
|
|
|
check_patrol_in_volume( var_0 )
|
|
{
|
|
level endon( "enemies_aware" );
|
|
var_1 = getent( "delete_power_junction_patrol_volume", "targetname" );
|
|
var_2 = [];
|
|
|
|
foreach ( var_4 in var_0 )
|
|
{
|
|
if ( isalive( var_4 ) && var_4.script_noteworthy != "shadow_kill_enemy" )
|
|
var_2 = common_scripts\utility::add_to_array( var_2, var_4 );
|
|
}
|
|
|
|
for (;;)
|
|
{
|
|
var_6 = 1;
|
|
|
|
foreach ( var_8 in var_2 )
|
|
{
|
|
if ( isalive( var_8 ) && !var_8 istouching( var_1 ) )
|
|
var_6 = 0;
|
|
}
|
|
|
|
if ( var_6 )
|
|
{
|
|
foreach ( var_8 in var_2 )
|
|
{
|
|
if ( isalive( var_8 ) )
|
|
var_8 thread wait_till_offscreen_then_delete();
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
while ( level.patroller_deleted < var_2.size )
|
|
wait 0.05;
|
|
|
|
common_scripts\utility::flag_set( "all_in" );
|
|
thread door_sounds( "door_sound_struct_2", "crnd_door_open2_virus_room", "crnd_door_close2_virus_room" );
|
|
}
|
|
|
|
wait_till_offscreen_then_delete()
|
|
{
|
|
level endon( "enemies_aware" );
|
|
var_0 = 0;
|
|
|
|
while ( !var_0 )
|
|
{
|
|
if ( !maps\_utility::player_can_see_ai( self ) )
|
|
{
|
|
var_0 = 1;
|
|
continue;
|
|
}
|
|
|
|
wait 0.1;
|
|
}
|
|
|
|
self delete();
|
|
level.patroller_deleted++;
|
|
}
|
|
|
|
watch_for_player_to_break_stealth( var_0 )
|
|
{
|
|
level endon( "all_in" );
|
|
var_1 = getent( "watch_for_player_shoot_volume", "targetname" );
|
|
common_scripts\utility::array_thread( var_0, ::watch_for_player_to_shoot_while_enemy_in_volume, var_1, "enemies_aware", "all_in" );
|
|
var_1 = getent( "power_junction_patrollers_start_hallway_volume", "targetname" );
|
|
level.player thread handle_volume_touching( var_1, "enemies_aware", "patrol_out_of_start_hallway" );
|
|
var_1 = getent( "power_junction_shadow_kill_volume", "targetname" );
|
|
common_scripts\utility::array_thread( var_0, ::handle_volume_touching, var_1, "patrol_out_of_start_hallway", "patrol_out_of_start_hallway" );
|
|
common_scripts\utility::flag_wait( "patrol_out_of_start_hallway" );
|
|
var_1 = getent( "power_junction_shadow_kill_volume", "targetname" );
|
|
level.player thread handle_volume_touching( var_1, "enemies_aware", "shadow_kill_stab" );
|
|
var_2 = [];
|
|
|
|
foreach ( var_4 in var_0 )
|
|
{
|
|
if ( var_4.script_noteworthy != "shadow_kill_enemy" )
|
|
var_2 = common_scripts\utility::add_to_array( var_2, var_4 );
|
|
}
|
|
|
|
var_1 = getent( "power_junction_post_shadow_kill_volume", "targetname" );
|
|
common_scripts\utility::array_thread( var_2, ::handle_volume_touching, var_1, "patrol_out_of_shadow_kill_volume", "patrol_out_of_shadow_kill_volume" );
|
|
common_scripts\utility::flag_wait( "patrol_out_of_shadow_kill_volume" );
|
|
var_1 = getent( "power_junction_post_shadow_kill_volume", "targetname" );
|
|
common_scripts\utility::array_thread( var_2, ::handle_volume_touching, var_1, "enemies_aware", "enemies_aware", 1 );
|
|
var_1 = getent( "power_junction_weapons_free_volume", "targetname" );
|
|
common_scripts\utility::array_thread( var_0, ::handle_volume_touching, var_1, "patrol_out_of_power_junction_hallway", "enemies_aware" );
|
|
common_scripts\utility::flag_wait( "patrol_out_of_power_junction_hallway" );
|
|
var_1 = getent( "outside_power_junction_hallway_volume", "targetname" );
|
|
level.player thread handle_volume_touching( var_1, "enemies_aware", "enemies_aware" );
|
|
}
|
|
|
|
watch_for_player_to_shoot_while_enemy_in_volume( var_0, var_1, var_2 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
while ( !common_scripts\utility::flag( var_2 ) )
|
|
{
|
|
if ( self istouching( var_0 ) && level.player istouching( var_0 ) )
|
|
{
|
|
if ( level.player attackbuttonpressed() && !isdefined( level.player.is_in_upload ) && level.player getcurrentweapon() != "computer_idf" )
|
|
{
|
|
if ( isdefined( level.allow_fire ) )
|
|
{
|
|
if ( !common_scripts\utility::flag( var_1 ) )
|
|
common_scripts\utility::flag_set( var_1 );
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
wait 0.01;
|
|
}
|
|
}
|
|
|
|
handle_volume_touching( var_0, var_1, var_2, var_3 )
|
|
{
|
|
self endon( "death" );
|
|
level endon( "enemies_aware" );
|
|
|
|
if ( isdefined( var_2 ) )
|
|
level endon( var_2 );
|
|
|
|
for (;;)
|
|
{
|
|
if ( self istouching( var_0 ) )
|
|
{
|
|
if ( isdefined( var_3 ) )
|
|
{
|
|
if ( level.player istouching( var_0 ) )
|
|
{
|
|
var_4 = distance( level.player.origin, self.origin );
|
|
|
|
if ( var_4 < 200 )
|
|
{
|
|
common_scripts\utility::flag_set( var_1 );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_set( var_1 );
|
|
break;
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
allies_shadow_kill_vo()
|
|
{
|
|
thread rorke_shadow_kill_vo();
|
|
thread stealth_break_rorke_vo();
|
|
common_scripts\utility::flag_wait_any( "all_in", "enemies_aware" );
|
|
|
|
if ( common_scripts\utility::flag( "enemies_aware" ) && !common_scripts\utility::flag( "all_in" ) )
|
|
common_scripts\utility::flag_wait( "power_junction_patrol_killed" );
|
|
|
|
if ( !common_scripts\utility::flag( "virus_upload_bar_complete" ) )
|
|
common_scripts\utility::flag_wait( "virus_upload_bar_complete" );
|
|
|
|
wait 1;
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_letsgettothe" );
|
|
common_scripts\utility::flag_set( "obj_upload_virus_complete" );
|
|
level.start_inverted_rappel_trigger common_scripts\utility::trigger_on();
|
|
common_scripts\utility::flag_wait( "start_inverted_rappel" );
|
|
common_scripts\utility::flag_set( "shadow_kill_finished" );
|
|
}
|
|
|
|
rorke_shadow_kill_vo()
|
|
{
|
|
level endon( "enemies_aware" );
|
|
common_scripts\utility::flag_wait( "player_in_power_junction_hallway" );
|
|
|
|
if ( !common_scripts\utility::flag( "rorke_at_virus_upload" ) )
|
|
{
|
|
common_scripts\utility::flag_wait( "rorke_at_virus_upload" );
|
|
|
|
if ( !common_scripts\utility::flag( "player_started_virus_upload" ) )
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_uploadthevirus" );
|
|
}
|
|
|
|
var_0 = maps\_utility::make_array( "cornered_mrk_planttheviruswe", "cornered_mrk_moveyourasscmon" );
|
|
thread maps\cornered_code::nag_until_flag( var_0, "player_started_virus_upload", 10, 15, 5 );
|
|
thread weapon_down_vo();
|
|
common_scripts\utility::flag_wait( "let_them_pass" );
|
|
wait 0.5;
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_letthempass" );
|
|
maps\_utility::music_play( "mus_cornered_takedown" );
|
|
common_scripts\utility::flag_wait( "shadow_kill_done" );
|
|
|
|
if ( !common_scripts\utility::flag( "virus_upload_bar_complete" ) )
|
|
{
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_ivegotyourback" );
|
|
common_scripts\utility::flag_set( "finish_upload" );
|
|
thread virus_upload_vo_nags();
|
|
common_scripts\utility::flag_wait( "virus_upload_bar_complete" );
|
|
wait 1.5;
|
|
}
|
|
else
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_waitforemto" );
|
|
}
|
|
|
|
virus_upload_vo_nags()
|
|
{
|
|
var_0 = maps\_utility::make_array( "cornered_mrk_planttheviruswe", "cornered_mrk_moveyourasscmon" );
|
|
thread maps\cornered_code::nag_until_flag( var_0, "player_start_upload", 10, 15, 5 );
|
|
}
|
|
|
|
weapon_down_vo()
|
|
{
|
|
level endon( "enemies_aware" );
|
|
level endon( "let_them_pass" );
|
|
common_scripts\utility::flag_wait( "rorke_in_alcove" );
|
|
var_0 = getent( "player_shadow_kill_volume", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.player istouching( var_0 ) )
|
|
{
|
|
level.allies[level.const_rorke] thread maps\_utility::smart_radio_dialogue( "cornered_mrk_weapondown" );
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
stealth_break_rorke_vo()
|
|
{
|
|
level endon( "all_in" );
|
|
common_scripts\utility::flag_wait( "enemies_aware" );
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_shitwhatareyou" );
|
|
common_scripts\utility::flag_wait( "power_junction_patrol_killed" );
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_targetsdown" );
|
|
|
|
if ( !common_scripts\utility::flag( "virus_upload_bar_complete" ) )
|
|
{
|
|
wait 1;
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_finishtheupload" );
|
|
common_scripts\utility::flag_set( "finish_upload" );
|
|
thread virus_upload_vo_nags();
|
|
}
|
|
}
|
|
|
|
allies_shadow_kill_movement()
|
|
{
|
|
if ( !isdefined( level.building_entry_exit_anim_struct ) )
|
|
{
|
|
level.building_entry_exit_anim_struct = common_scripts\utility::getstruct( "rappel_stealth_building_entry_exit_anim_struct", "targetname" );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
if ( self.animname == "rorke" )
|
|
{
|
|
thread shadow_kill_leadup();
|
|
thread rorke_react_to_stealth_break( "shadow_kill_stab" );
|
|
common_scripts\utility::flag_wait( "power_junction_patrol_killed" );
|
|
|
|
if ( common_scripts\utility::flag( "shadow_kill_stab" ) || common_scripts\utility::flag( "enemies_aware" ) )
|
|
{
|
|
maps\_utility::enable_surprise();
|
|
self.ignoresuppression = 0;
|
|
self.disablebulletwhizbyreaction = 0;
|
|
self.disablefriendlyfirereaction = 0;
|
|
self.disablereactionanims = 0;
|
|
maps\_utility::set_baseaccuracy( 1 );
|
|
}
|
|
|
|
if ( !common_scripts\utility::flag( "virus_upload_bar_complete" ) )
|
|
{
|
|
if ( common_scripts\utility::flag( "enemies_aware" ) )
|
|
{
|
|
var_0 = getnode( "rorke_wait_for_virus_upload_node", "targetname" );
|
|
thread maps\cornered_code::send_to_node_and_set_flag_if_specified_when_reached( var_0 );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "virus_upload_bar_complete" );
|
|
wait 2;
|
|
}
|
|
|
|
thread allies_building_exit_hookup();
|
|
}
|
|
else if ( isdefined( level.shadow_kill_startpoint ) )
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_loop_solo( self, "cnd_rappel_inverted_idle_" + self.animname, "stop_loop" );
|
|
else
|
|
{
|
|
common_scripts\utility::flag_wait( "player_started_virus_upload" );
|
|
maps\cornered_code_rappel_allies::ally_rappel_stop_aiming();
|
|
level.allies[0] maps\cornered_code_rappel_allies::ally_rappel_stop_rope();
|
|
level.allies[0].cnd_rappel_tele_rope delete();
|
|
level.building_entry_exit_anim_struct notify( "stop_loop" );
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_loop_solo( self, "cnd_rappel_inverted_idle_" + self.animname, "stop_loop" );
|
|
}
|
|
}
|
|
|
|
shadow_kill_leadup()
|
|
{
|
|
level endon( "enemies_aware" );
|
|
self.ignoreall = 1;
|
|
|
|
if ( !isdefined( level.shadow_kill_startpoint ) )
|
|
common_scripts\utility::flag_wait( "move_into_power_junction_room" );
|
|
|
|
thread maps\cornered_audio::aud_virus( "r_approach" );
|
|
level.shadowkill_struct maps\_anim::anim_reach_solo( self, "virus_upload_enter_rorke" );
|
|
level.shadowkill_struct maps\_anim::anim_single_solo( self, "virus_upload_enter_rorke" );
|
|
common_scripts\utility::flag_set( "rorke_at_virus_upload" );
|
|
thread maps\cornered_audio::aud_virus( "r_loop" );
|
|
level.shadowkill_struct thread maps\_anim::anim_loop_solo( self, "virus_upload_loop_rorke", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "start_power_junction_patrol_chatter" );
|
|
level.shadowkill_struct notify( "stop_loop" );
|
|
thread maps\cornered_audio::aud_virus( "r_end" );
|
|
level.shadowkill_struct maps\_anim::anim_single_solo( self, "virus_upload_end_rorke" );
|
|
common_scripts\utility::flag_set( "rorke_in_guard_loop" );
|
|
level.shadowkill_struct thread maps\_anim::anim_loop_solo( self, "virus_upload_guard_loop_rorke", "stop_loop" );
|
|
common_scripts\utility::flag_wait_any( "virus_upload_bar_almost_complete", "force_player_upload_end" );
|
|
level.shadowkill_struct notify( "stop_loop" );
|
|
level.shadowkill_struct maps\_anim::anim_single_solo( self, "virus_upload_guard_hide_rorke" );
|
|
common_scripts\utility::flag_set( "rorke_in_alcove" );
|
|
level.shadowkill_struct thread maps\_anim::anim_loop_solo( self, "shadowkill_front_idle", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "let_them_pass" );
|
|
wait 1;
|
|
level.shadowkill_struct notify( "stop_loop" );
|
|
waittillframeend;
|
|
self stopanimscripted();
|
|
level.shadowkill_struct maps\_anim::anim_single_solo( self, "shadowkill_front_to_back" );
|
|
level.shadowkill_struct thread maps\_anim::anim_loop_solo( self, "shadowkill_back_idle", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "shadow_kill_start" );
|
|
level.shadowkill_struct notify( "stop_loop" );
|
|
level.allies[level.const_rorke] stopanimscripted();
|
|
level.rorke_knife = spawn( "script_model", ( 0, 0, 0 ) );
|
|
level.rorke_knife setmodel( "weapon_bolo_knife" );
|
|
level.rorke_knife hide();
|
|
level.rorke_knife linkto( level.allies[level.const_rorke], "tag_stowed_back", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
thread maps\cornered_audio::aud_virus( "kill" );
|
|
level.shadowkill_struct thread maps\_anim::anim_single_solo( level.allies[level.const_rorke], "shadowkill_end" );
|
|
thread rorke_shadow_kill();
|
|
common_scripts\utility::flag_wait( "shadow_kill_done" );
|
|
var_0 = getnode( "rorke_post_shadow_kill_node", "targetname" );
|
|
level.allies[level.const_rorke] thread maps\cornered_code::send_to_node_and_set_flag_if_specified_when_reached( var_0 );
|
|
}
|
|
|
|
rorke_shadow_kill()
|
|
{
|
|
level endon( "power_junction_patrol_killed" );
|
|
level.shadowkill_struct waittill( "shadowkill_end" );
|
|
common_scripts\utility::flag_set( "shadow_kill_done" );
|
|
thread rorke_react_to_stealth_break( "power_junction_patrol_killed" );
|
|
}
|
|
|
|
laptop_open( var_0 )
|
|
{
|
|
level.shadowkill_struct maps\_anim::anim_single_solo( level.laptop, "virus_upload_laptop_enter" );
|
|
}
|
|
|
|
laptop_on( var_0 )
|
|
{
|
|
common_scripts\utility::exploder( "cell_screen_glow" );
|
|
}
|
|
|
|
laptop_close( var_0 )
|
|
{
|
|
level.shadowkill_struct maps\_anim::anim_single_solo( level.laptop, "virus_upload_laptop_end" );
|
|
}
|
|
|
|
laptop_off( var_0 )
|
|
{
|
|
maps\_utility::stop_exploder( "cell_screen_glow" );
|
|
}
|
|
|
|
shadowkill_goggles_off( var_0 )
|
|
{
|
|
|
|
}
|
|
|
|
shadowkill_knife_show( var_0 )
|
|
{
|
|
level.rorke_knife show();
|
|
}
|
|
|
|
shadowkill_knife_delete( var_0 )
|
|
{
|
|
if ( isdefined( level.rorke_knife ) )
|
|
level.rorke_knife delete();
|
|
}
|
|
|
|
shadowkill_knife_stab( var_0 )
|
|
{
|
|
if ( !common_scripts\utility::flag( "enemies_aware" ) )
|
|
{
|
|
common_scripts\utility::flag_set( "shadow_kill_stab" );
|
|
var_0 maps\_utility::disable_surprise();
|
|
var_0.ignoresuppression = 1;
|
|
var_0.disablebulletwhizbyreaction = 1;
|
|
var_0.disablefriendlyfirereaction = 1;
|
|
var_0.disablereactionanims = 1;
|
|
var_0 maps\_utility::set_baseaccuracy( 5 );
|
|
}
|
|
}
|
|
|
|
shadowkill_goggles_on( var_0 )
|
|
{
|
|
common_scripts\utility::flag_set( "shadow_kill_goggles_on" );
|
|
}
|
|
|
|
rorke_start_shadowkill( var_0 )
|
|
{
|
|
common_scripts\utility::flag_set( "shadow_kill_start" );
|
|
}
|
|
|
|
shadowkill_phone_show( var_0 )
|
|
{
|
|
common_scripts\utility::flag_set( "shadow_kill_enemy_phone_out" );
|
|
level.shadowkill_enemy_phone_array = [];
|
|
level.shadowkill_enemy_phone_array[0] = spawn( "script_model", ( 0, 0, 0 ) );
|
|
level.shadowkill_enemy_phone_array[0] setmodel( "cnd_cellphone_01_off_anim" );
|
|
level.shadowkill_enemy_phone_array[0].animname = "shadowkill_enemy_phone_off";
|
|
level.shadowkill_enemy_phone_array[0] maps\_anim::setanimtree();
|
|
level.shadowkill_enemy_phone_array[0] hide();
|
|
level.shadowkill_enemy_phone_array[1] = spawn( "script_model", ( 0, 0, 0 ) );
|
|
level.shadowkill_enemy_phone_array[1] setmodel( "cnd_cellphone_01_on_anim" );
|
|
level.shadowkill_enemy_phone_array[1].animname = "shadowkill_enemy_phone_on";
|
|
level.shadowkill_enemy_phone_array[1] maps\_anim::setanimtree();
|
|
level.shadowkill_enemy_phone_array[1] hide();
|
|
thread shadowkill_phone();
|
|
thread handle_phone_if_stealth_is_broken();
|
|
}
|
|
|
|
shadowkill_phone()
|
|
{
|
|
level endon( "enemies_aware" );
|
|
level.shadowkill_struct maps\_anim::anim_first_frame( level.shadowkill_enemy_phone_array, "shadowkill_enter_enemy" );
|
|
level.shadowkill_enemy_phone_array[0] show();
|
|
level.shadowkill_struct maps\_anim::anim_single( level.shadowkill_enemy_phone_array, "shadowkill_enter_enemy" );
|
|
|
|
foreach ( var_1 in level.shadowkill_enemy_phone_array )
|
|
var_1 thread maps\cornered_code::entity_cleanup( "player_exiting_building" );
|
|
}
|
|
|
|
handle_phone_if_stealth_is_broken()
|
|
{
|
|
level endon( "shadow_kill_stab" );
|
|
common_scripts\utility::flag_wait( "enemies_aware" );
|
|
|
|
if ( common_scripts\utility::flag( "shadowkill_phone_on" ) )
|
|
{
|
|
level.shadowkill_enemy_phone_array[0] show();
|
|
level.shadowkill_enemy_phone_array[1] hide();
|
|
stopfxontag( level._effect["cell_screen_glow"], level.shadowkill_enemy_phone_array[1], "tag_fx" );
|
|
common_scripts\utility::flag_set( "shadowkill_phone_off" );
|
|
}
|
|
|
|
foreach ( var_1 in level.shadowkill_enemy_phone_array )
|
|
var_1 thread maps\cornered_code::entity_cleanup();
|
|
}
|
|
|
|
shadowkill_phone_on( var_0 )
|
|
{
|
|
level.shadowkill_enemy_phone_array[1] show();
|
|
level.shadowkill_enemy_phone_array[0] hide();
|
|
wait 0.5;
|
|
|
|
if ( isdefined( level.shadowkill_enemy_phone_array[1] ) )
|
|
playfxontag( level._effect["cell_screen_glow"], level.shadowkill_enemy_phone_array[1], "tag_fx" );
|
|
|
|
common_scripts\utility::flag_set( "shadowkill_phone_on" );
|
|
}
|
|
|
|
shadowkill_phone_off( var_0 )
|
|
{
|
|
level endon( "shadowkill_phone_off" );
|
|
var_1 = getnotetracktimes( maps\_utility::getanim( "shadowkill_end_enemy" ), "phone_off" );
|
|
var_2 = getanimlength( maps\_utility::getanim( "shadowkill_end_enemy" ) );
|
|
var_3 = var_2 * var_1[0];
|
|
var_3 = var_3 - 0.4;
|
|
wait( var_3 );
|
|
|
|
if ( common_scripts\utility::flag( "shadowkill_phone_on" ) )
|
|
{
|
|
level.shadowkill_enemy_phone_array[0] show();
|
|
level.shadowkill_enemy_phone_array[1] hide();
|
|
stopfxontag( level._effect["cell_screen_glow"], level.shadowkill_enemy_phone_array[1], "tag_fx" );
|
|
}
|
|
}
|
|
|
|
allies_building_exit_hookup()
|
|
{
|
|
level endon( "player_exiting_building" );
|
|
|
|
if ( !isdefined( level.inverted_rappel_startpoint ) )
|
|
{
|
|
maps\_utility::enable_cqbwalk();
|
|
level.move_rorke_to_window_trigger common_scripts\utility::trigger_on();
|
|
level.force_rorke_pathing_clip solid();
|
|
level.force_rorke_pathing_clip disconnectpaths();
|
|
var_0 = getnode( "rorke_wait_at_end_of_hall_node", "targetname" );
|
|
thread maps\cornered_code::send_to_node_and_set_flag_if_specified_when_reached( var_0, "rorke_at_hall_end" );
|
|
thread hall_clear_vo();
|
|
common_scripts\utility::flag_wait( "move_rorke_to_window" );
|
|
maps\_utility::disable_exits();
|
|
var_0 = getnode( "rorke_building_exit_wait_node", "targetname" );
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_reach_solo( self, "cnd_rappel_stealth_exit_bldg_hookup_" + self.animname );
|
|
wait 2;
|
|
maps\_utility::enable_exits();
|
|
maps\_utility::disable_cqbwalk();
|
|
level.force_rorke_pathing_clip notsolid();
|
|
level.force_rorke_pathing_clip connectpaths();
|
|
level.force_rorke_pathing_clip delete();
|
|
self waittill( "goal" );
|
|
common_scripts\utility::flag_set( "rorke_at_building_exit_node" );
|
|
}
|
|
|
|
if ( !isdefined( level.building_entry_exit_anim_struct ) )
|
|
level.building_entry_exit_anim_struct = common_scripts\utility::getstruct( "rappel_stealth_building_entry_exit_anim_struct", "targetname" );
|
|
|
|
level.building_entry_exit_anim_struct maps\_anim::anim_single_solo( self, "cnd_rappel_stealth_exit_bldg_hookup_" + self.animname );
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_loop_solo( self, "cnd_rappel_stealth_exit_bldg_wait_loop_" + self.animname, "stop_loop" );
|
|
}
|
|
|
|
hall_clear_vo()
|
|
{
|
|
self endon( "rorke_at_building_exit_node" );
|
|
common_scripts\utility::flag_wait( "rorke_at_hall_end" );
|
|
|
|
if ( !common_scripts\utility::flag( "move_rorke_to_window" ) )
|
|
{
|
|
wait 1.75;
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_clear_2" );
|
|
}
|
|
}
|
|
|
|
rorke_react_to_stealth_break( var_0 )
|
|
{
|
|
level endon( var_0 );
|
|
common_scripts\utility::flag_wait( "enemies_aware" );
|
|
level.shadowkill_struct notify( "stop_loop" );
|
|
waittillframeend;
|
|
self stopanimscripted();
|
|
self.ignoreall = 0;
|
|
maps\_utility::set_baseaccuracy( 0.2 );
|
|
maps\_utility::disable_surprise();
|
|
self.ignoresuppression = 1;
|
|
self.disablebulletwhizbyreaction = 1;
|
|
self.disablefriendlyfirereaction = 1;
|
|
self.disablereactionanims = 1;
|
|
self.dontmelee = 1;
|
|
|
|
if ( common_scripts\utility::flag( "shadow_kill_start" ) )
|
|
{
|
|
var_1 = getnode( "rorke_post_shadow_kill_node", "targetname" );
|
|
thread maps\cornered_code::send_to_node_and_set_flag_if_specified_when_reached( var_1 );
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
handle_rappel_inverted()
|
|
{
|
|
if ( isdefined( level.inverted_rappel_startpoint ) )
|
|
{
|
|
if ( !isdefined( level.player_exit_to_inverted_rope ) )
|
|
level.player_exit_to_inverted_rope = maps\_utility::spawn_anim_model( "cnd_rappel_tele_rope" );
|
|
|
|
level.rappel_entry_anim_struct = common_scripts\utility::getstruct( "rappel_entry_anim_struct_stealth", "targetname" );
|
|
level.building_entry_exit_anim_struct = common_scripts\utility::getstruct( "rappel_stealth_building_entry_exit_anim_struct", "targetname" );
|
|
level.rorke_exit_to_inverted_rope = maps\_utility::spawn_anim_model( "cnd_rappel_tele_rope" );
|
|
level.rorke_exit_to_inverted_rope.animname = "building_entry_rope_rorke";
|
|
level.building_entry_exit_anim_struct maps\_anim::anim_last_frame_solo( level.rorke_exit_to_inverted_rope, "building_entry_rorke" );
|
|
level.building_entry_exit_anim_struct maps\_anim::anim_first_frame_solo( level.player_exit_to_inverted_rope, "rappel_stealth_exit" );
|
|
common_scripts\utility::exploder( 5001 );
|
|
common_scripts\utility::exploder( 5002 );
|
|
common_scripts\utility::exploder( 5003 );
|
|
common_scripts\utility::exploder( 5004 );
|
|
}
|
|
|
|
if ( common_scripts\utility::flag( "rappel_down_ready" ) )
|
|
common_scripts\utility::flag_clear( "rappel_down_ready" );
|
|
|
|
if ( common_scripts\utility::flag( "player_allow_rappel_down" ) )
|
|
common_scripts\utility::flag_clear( "player_allow_rappel_down" );
|
|
|
|
level.player_exit_to_inverted_rope setmodel( "cnd_rappel_tele_rope_obj" );
|
|
common_scripts\utility::flag_wait( "exit_building_ready" );
|
|
var_0 = getent( "player_exit_building_trigger", "targetname" );
|
|
|
|
if ( !maps\cornered_code::is_e3() )
|
|
{
|
|
if ( level.player common_scripts\utility::is_player_gamepad_enabled() )
|
|
var_0 sethintstring( &"CORNERED_EXIT_BUILDING_CONSOLE" );
|
|
else
|
|
var_0 sethintstring( &"CORNERED_EXIT_BUILDING" );
|
|
}
|
|
|
|
var_1 = common_scripts\utility::getstruct( "inverted_look_at", "targetname" );
|
|
maps\player_scripted_anim_util::waittill_trigger_activate_looking_at( var_0, var_1, cos( 40 ), 0, 1 );
|
|
common_scripts\utility::flag_set( "player_exiting_building" );
|
|
thread virus_deploy_bink();
|
|
level.player_exit_to_inverted_rope setmodel( "cnd_rappel_tele_rope" );
|
|
thread maps\cornered_audio::aud_invert( "start" );
|
|
player_exit_building();
|
|
thread constrict_player_view_at_top();
|
|
thread virus_deploy();
|
|
thread detonate_lights_off();
|
|
common_scripts\utility::flag_wait( "rappel_down_ready" );
|
|
|
|
if ( !maps\cornered_code::is_e3() )
|
|
thread maps\cornered_code::player_move_on_rappel_hint();
|
|
|
|
common_scripts\utility::flag_set( "player_allow_rappel_down" );
|
|
maps\cornered_code_rappel::rappel_limit_vertical_move( -10000, 0 );
|
|
common_scripts\utility::flag_wait( "spawn_inverted_kill_enemies" );
|
|
level.player allowmelee( 0 );
|
|
level.player allowads( 0 );
|
|
wait 0.5;
|
|
level.player.currentweapon = level.player getcurrentweapon();
|
|
|
|
if ( level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_disableweapon();
|
|
|
|
level.player allowfire( 0 );
|
|
level.player giveweapon( "push_knife" );
|
|
level.player switchtoweapon( "push_knife" );
|
|
level.player common_scripts\utility::_disableweaponswitch();
|
|
|
|
if ( !level.player common_scripts\utility::isweaponenabled() )
|
|
level.player common_scripts\utility::_enableweapon();
|
|
|
|
maps\cornered_code_rappel::cornered_stop_random_wind();
|
|
thread maps\cornered_audio::aud_stop_wind();
|
|
thread maps\cornered_audio::aud_invert( "knife" );
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
level.rappel_max_downward_speed = 4.0;
|
|
level.rappel_max_lateral_speed = 3.0;
|
|
thread funnel_player();
|
|
common_scripts\utility::exploder( 12 );
|
|
common_scripts\utility::flag_wait( "start_inverted_kill_prompting" );
|
|
level.rappel_max_downward_speed = 2.0;
|
|
level.rappel_max_lateral_speed = 2.0;
|
|
player_inverted_kill();
|
|
thread maps\cornered_interior::courtyard_intro_elevator();
|
|
thread maps\cornered_interior::courtyard_intro_elevator_guys();
|
|
maps\cornered_code_rappel::cornered_stop_rappel();
|
|
common_scripts\utility::flag_clear( "disable_rappel_jump" );
|
|
level.player allowjump( 1 );
|
|
level.player thread player_handle_outside_effects();
|
|
common_scripts\utility::flag_wait( "start_courtyard" );
|
|
common_scripts\utility::flag_wait( "inverted_rorke_done" );
|
|
|
|
if ( !maps\cornered_code::is_e3() )
|
|
common_scripts\utility::flag_set( "inverted_rappel_finished" );
|
|
|
|
maps\_utility::stop_exploder( 23 );
|
|
maps\_utility::stop_exploder( 3456 );
|
|
}
|
|
|
|
player_handle_outside_effects()
|
|
{
|
|
level endon( "junction_entrance_close" );
|
|
var_0 = getent( "inverted_kill_balcony", "targetname" );
|
|
var_1 = 1;
|
|
|
|
for (;;)
|
|
{
|
|
if ( !var_1 )
|
|
var_0 waittill( "trigger" );
|
|
|
|
if ( level.player istouching( var_0 ) )
|
|
{
|
|
if ( !var_1 )
|
|
{
|
|
var_1 = 1;
|
|
maps\cornered_code::player_flap_sleeves();
|
|
maps\cornered_lighting::do_specular_sun_lerp( 1 );
|
|
}
|
|
}
|
|
else if ( var_1 )
|
|
{
|
|
var_1 = 0;
|
|
level.player maps\cornered_code::player_stop_flap_sleeves();
|
|
maps\cornered_lighting::do_specular_sun_lerp( 0 );
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
player_exit_building()
|
|
{
|
|
level.reflection_window_inverted show();
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_first_frame( level.arms_and_legs, "rappel_stealth_exit" );
|
|
|
|
if ( level.player getstance() != "stand" )
|
|
level.player setstance( "stand" );
|
|
|
|
level.player freezecontrols( 1 );
|
|
level.player allowfire( 0 );
|
|
level.player common_scripts\utility::_disableweapon();
|
|
wait 0.3;
|
|
level.player playerlinktoblend( level.cornered_player_arms, "tag_player", 0.5 );
|
|
wait 0.5;
|
|
maps\cornered_code::show_player_arms();
|
|
level.cornered_player_legs show();
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_single( level.arms_and_legs, "rappel_stealth_exit" );
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_single_solo( level.player_exit_to_inverted_rope, "rappel_stealth_exit" );
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
level.player.currentweapon = level.player getcurrentweapon();
|
|
level.player giveweapon( "computer_idf" );
|
|
level.player switchtoweapon( "computer_idf" );
|
|
level.player common_scripts\utility::_disableweaponswitch();
|
|
level.cornered_player_arms waittillmatch( "single anim", "end" );
|
|
maps\cornered_code::hide_player_arms();
|
|
level.cornered_player_legs hide();
|
|
common_scripts\utility::flag_set( "player_has_exited_the_building" );
|
|
maps\cornered_lighting::do_specular_sun_lerp( 1 );
|
|
level.player freezecontrols( 0 );
|
|
level.player common_scripts\utility::_enableweapon();
|
|
level.player thread maps\cornered_code::player_flap_sleeves();
|
|
level.rappel_max_lateral_dist_right = 20;
|
|
level.rappel_max_lateral_dist_left = 250;
|
|
level.rappel_max_downward_speed = 7.0;
|
|
level.rappel_max_lateral_speed = 7.0;
|
|
level.rappel_max_upward_speed = 3.0;
|
|
var_0 = spawnstruct();
|
|
var_0.right_arc = 80;
|
|
var_0.left_arc = 80;
|
|
var_0.top_arc = 60;
|
|
var_0.bottom_arc = 60;
|
|
var_0.allow_sprint = 0;
|
|
var_0.jump_type = "jump_small";
|
|
var_0.allow_walk_up = 1;
|
|
var_0.show_legs = 0;
|
|
var_0.lateral_plane = 1;
|
|
var_0.rappel_type = "inverted";
|
|
level.rappel_params = var_0;
|
|
maps\cornered_code_rappel::cornered_start_rappel( "rope_ref_stealth", "player_rappel_ground_ref_upside_down_stealth", var_0 );
|
|
maps\cornered_code_rappel::cornered_start_random_wind();
|
|
|
|
foreach ( var_2 in level.allies )
|
|
var_2 maps\cornered_code_rappel_allies::ally_rappel_start_rope( var_0.rappel_type );
|
|
|
|
level.player_exit_to_inverted_rope delete();
|
|
|
|
if ( isdefined( level.rorke_exit_to_inverted_rope ) )
|
|
level.rorke_exit_to_inverted_rope delete();
|
|
|
|
common_scripts\utility::flag_wait( "player_ready_to_deploy_virus" );
|
|
wait 0.25;
|
|
level.player allowfire( 1 );
|
|
level.player enableweaponpickup();
|
|
}
|
|
|
|
constrict_player_view_at_top()
|
|
{
|
|
level endon( "player_initiated_pounce" );
|
|
var_0 = getent( "inverted_rappel_restrict_player_view_volume", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "constrict_player_view" );
|
|
level.player lerpviewangleclamp( 0.5, 0, 0, 50, 50, 60, 40 );
|
|
common_scripts\utility::flag_waitopen( "constrict_player_view" );
|
|
level.player lerpviewangleclamp( 0.5, 0, 0, 80, 80, 60, 60 );
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
virus_deploy_bink()
|
|
{
|
|
wait 0.25;
|
|
setsaveddvar( "cg_cinematicFullScreen", "0" );
|
|
cinematicingame( "cornered_pda_activate" );
|
|
|
|
while ( cinematicgetframe() <= 1 )
|
|
common_scripts\utility::waitframe();
|
|
|
|
pausecinematicingame( 1 );
|
|
}
|
|
|
|
virus_deploy()
|
|
{
|
|
if ( !level.player attackbuttonpressed() )
|
|
{
|
|
level.player notifyonplayercommand( "deploy", "+attack" );
|
|
level.player notifyonplayercommand( "deploy", "+attack_akimbo_accessible" );
|
|
|
|
if ( !maps\cornered_code::is_e3() )
|
|
level.player thread maps\cornered_code::time_to_pass_before_hint( 3, "virus_deploy", "player_deployed_virus" );
|
|
|
|
level.player waittill( "deploy" );
|
|
}
|
|
|
|
pausecinematicingame( 0 );
|
|
thread maps\cornered_audio::aud_virus( "activate" );
|
|
common_scripts\utility::flag_set( "player_deployed_virus" );
|
|
level.player common_scripts\utility::_disableweapon();
|
|
wait 3.0;
|
|
level.player takeweapon( "computer_idf" );
|
|
level.player switchtoweapon( level.player.currentweapon );
|
|
level.player common_scripts\utility::_enableweaponswitch();
|
|
level.player common_scripts\utility::_enableweapon();
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
}
|
|
|
|
detonate_lights_off()
|
|
{
|
|
common_scripts\utility::flag_wait( "player_deployed_virus" );
|
|
wait 2;
|
|
var_0 = getentarray( "emissive_windows_9", "targetname" );
|
|
turn_lights_off( var_0, "brushes" );
|
|
level.large_outside_lights_on = getentarray( "large_outside_lights_on", "targetname" );
|
|
|
|
foreach ( var_2 in level.large_outside_lights_on )
|
|
var_2 hide();
|
|
|
|
level.large_outside_lights_off = getentarray( "large_outside_lights_off", "targetname" );
|
|
|
|
foreach ( var_5 in level.large_outside_lights_off )
|
|
var_5 show();
|
|
|
|
for ( var_7 = 10; var_7 <= 35; var_7++ )
|
|
{
|
|
wait 0.2;
|
|
var_8 = getentarray( "lights_floor_" + var_7, "targetname" );
|
|
turn_lights_off( var_8, "lights" );
|
|
var_0 = getentarray( "emissive_window_brush_" + var_7, "targetname" );
|
|
turn_lights_off( var_0, "brushes" );
|
|
|
|
if ( var_7 == 13 )
|
|
maps\_utility::stop_exploder( 5001 );
|
|
|
|
if ( var_7 == 21 )
|
|
maps\_utility::stop_exploder( 5002 );
|
|
|
|
if ( var_7 == 25 )
|
|
maps\_utility::stop_exploder( 5003 );
|
|
|
|
if ( var_7 == 28 )
|
|
maps\_utility::stop_exploder( 5004 );
|
|
|
|
if ( var_7 == 28 )
|
|
maps\_utility::stop_exploder( 56 );
|
|
}
|
|
}
|
|
|
|
turn_lights_off( var_0, var_1 )
|
|
{
|
|
if ( var_1 == "lights" )
|
|
{
|
|
foreach ( var_3 in var_0 )
|
|
var_3 setlightintensity( 0.01 );
|
|
}
|
|
else
|
|
{
|
|
foreach ( var_6 in var_0 )
|
|
var_6 delete();
|
|
}
|
|
}
|
|
|
|
funnel_player()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "inverted_rappel_z_max", "targetname" );
|
|
level.z_min = level.player.origin[2];
|
|
level.z_max = var_0.origin[2];
|
|
var_1 = level.rappel_max_lateral_dist_right;
|
|
var_2 = -120;
|
|
var_3 = level.rappel_max_lateral_dist_left;
|
|
var_4 = 210;
|
|
thread funnel_player_internal( var_1, var_2, "right" );
|
|
thread funnel_player_internal( var_3, var_4, "left" );
|
|
}
|
|
|
|
funnel_player_internal( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = var_0;
|
|
var_4 = var_3 - var_1;
|
|
var_5 = level.z_max - level.z_min;
|
|
|
|
for (;;)
|
|
{
|
|
if ( var_0 <= var_1 )
|
|
break;
|
|
else
|
|
{
|
|
var_6 = level.rpl_plyr_anim_origin gettagorigin( "j_prop_1" )[2];
|
|
var_7 = var_6 - level.z_min;
|
|
var_8 = var_7 / var_5;
|
|
var_0 = var_3 - var_8 * var_4;
|
|
|
|
if ( var_2 == "right" )
|
|
level.rappel_max_lateral_dist_right = var_0;
|
|
else
|
|
level.rappel_max_lateral_dist_left = var_0;
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
player_inverted_kill()
|
|
{
|
|
thread player_inverted_kill_fail();
|
|
level.player_push_knife = spawn( "script_model", ( 0, 0, 0 ) );
|
|
level.player_push_knife setmodel( "viewmodel_lg_push_knife" );
|
|
level.player_push_knife hide();
|
|
level.player_push_knife linkto( level.cornered_player_arms, "tag_weapon_right", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_first_frame( level.arms_and_legs, "pounce_player" );
|
|
common_scripts\utility::flag_wait( "player_can_start_inverted_kill" );
|
|
player_initiates_inverted_kill();
|
|
|
|
if ( common_scripts\utility::flag( "inverted_kill_fail_kill_player" ) || common_scripts\utility::flag( "inverted_kill_enemy_turned_around" ) )
|
|
{
|
|
common_scripts\utility::flag_set( "player_not_in_inverted_kill_volume" );
|
|
level.player waittill( "death" );
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_set( "player_initiated_pounce" );
|
|
thread maps\cornered_audio::aud_invert( "ready" );
|
|
level.player common_scripts\utility::_disableweapon();
|
|
|
|
if ( common_scripts\utility::flag( "inverted_kill_fail_trigger" ) )
|
|
{
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_first_frame( level.arms_and_legs, "pounce_player_fail" );
|
|
common_scripts\utility::flag_set( "inverted_kill_fail" );
|
|
}
|
|
|
|
player_lerp_to_anim_start();
|
|
common_scripts\utility::flag_set( "player_pounce" );
|
|
thread maps\cornered_audio::aud_invert( "pounce" );
|
|
level.player unlink();
|
|
thread clear_groundref();
|
|
level.player playerlinktoabsolute( level.cornered_player_arms, "tag_player" );
|
|
thread player_pounce_anim();
|
|
common_scripts\utility::flag_wait( "start_knife_throw" );
|
|
var_0 = get_knife_reticle();
|
|
thread flag_if_player_aims_knife_at_enemy( var_0, 0 );
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_first_frame_solo( level.cornered_player_arms, "knife_throw" );
|
|
level.player playerlinktodelta( level.cornered_player_arms, "tag_player", 1, 15, 15, 5, 10 );
|
|
level.player enableslowaim();
|
|
wait 0.5;
|
|
thread flag_if_player_aims_knife_at_enemy( var_0, 1 );
|
|
player_throws_knife();
|
|
|
|
if ( common_scripts\utility::flag( "player_failed_to_throw_knife" ) )
|
|
{
|
|
var_0 destroy();
|
|
setslowmotion( 0.1, 1.0, 0.05 );
|
|
level.player disableslowaim();
|
|
}
|
|
else
|
|
{
|
|
if ( common_scripts\utility::flag( "player_throws_knife" ) )
|
|
{
|
|
thread maps\cornered_audio::aud_invert( "slow_end" );
|
|
level.player common_scripts\utility::_disableweapon();
|
|
level.player takeweapon( "throwing_push_knife" );
|
|
level.player_push_knife unlink();
|
|
level.player_push_knife delete();
|
|
level.player_push_knife_projectile = spawn( "script_model", ( 0, 0, 0 ) );
|
|
level.player_push_knife_projectile setmodel( "projectile_lg_push_knife" );
|
|
level.player_push_knife_projectile hide();
|
|
level.player_push_knife_projectile linkto( level.cornered_player_arms, "tag_weapon_right", ( 5, 0, 0 ), ( 0, 0, 0 ) );
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_first_frame_solo( level.cornered_player_arms, "knife_throw" );
|
|
level.player_push_knife_projectile show();
|
|
level.cornered_player_arms show();
|
|
thread watch_push_knife_throw();
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single_solo( level.cornered_player_arms, "knife_throw" );
|
|
thread do_knife_throw_blood();
|
|
var_0 destroy();
|
|
wait 0.25;
|
|
setslowmotion( 0.25, 1.0, 0.5 );
|
|
level.player disableslowaim();
|
|
level.cornered_player_arms waittillmatch( "single anim", "end" );
|
|
level.rappel_entry_anim_struct maps\_anim::anim_single_solo( level.cornered_player_arms, "pounce_stand" );
|
|
level.player unlink();
|
|
maps\cornered_code::hide_player_arms();
|
|
level.cornered_player_legs hide();
|
|
level.cornered_player_arms maps\cornered_code::player_stop_flap_sleeves();
|
|
level.player maps\cornered_code::player_stop_flap_sleeves();
|
|
wait 3;
|
|
level.player maps\cornered_code::player_showviewmodelsleeveflaps();
|
|
level.player switchtoweapon( level.player.currentweapon );
|
|
level.player allowfire( 1 );
|
|
level.player allowmelee( 1 );
|
|
level.player allowads( 1 );
|
|
level.player common_scripts\utility::_enableweapon();
|
|
level.player common_scripts\utility::_enableweaponswitch();
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
return;
|
|
}
|
|
|
|
if ( common_scripts\utility::flag( "player_throws_knife_fail" ) )
|
|
{
|
|
var_0 destroy();
|
|
setslowmotion( 0.25, 1.0, 0.5 );
|
|
level.player disableslowaim();
|
|
wait 0.8;
|
|
level.player maps\cornered_code::player_hideviewmodel();
|
|
level.player common_scripts\utility::_disableweapon();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
do_knife_throw_blood()
|
|
{
|
|
wait 0.53;
|
|
var_0 = spawn( "script_model", ( 0, 0, 0 ) );
|
|
var_0 setmodel( "tag_origin" );
|
|
var_0.angles = vectortoangles( ( 1, 0, 1 ) );
|
|
var_0 linkto( level.player_knife_throw_enemy, "tag_weapon_chest", ( 0, -6, 0 ), ( 0, -90, 0 ) );
|
|
playfxontag( common_scripts\utility::getfx( "neck_stab_blood" ), var_0, "tag_origin" );
|
|
wait 5;
|
|
var_0 delete();
|
|
}
|
|
|
|
weapon_anim_start( var_0 )
|
|
{
|
|
maps\cornered_code::hide_player_arms();
|
|
level.player_push_knife hide();
|
|
wait 0.25;
|
|
level.player takeweapon( "push_knife" );
|
|
level.player giveweapon( "throwing_push_knife" );
|
|
level.player switchtoweapon( "throwing_push_knife" );
|
|
level.player common_scripts\utility::_enableweapon();
|
|
common_scripts\utility::flag_set( "start_knife_throw" );
|
|
}
|
|
|
|
player_inverted_kill_fail()
|
|
{
|
|
level endon( "player_initiated_pounce" );
|
|
common_scripts\utility::flag_wait( "inverted_kill_fail_trigger" );
|
|
common_scripts\utility::flag_wait( "inverted_kill_fail_stop_player" );
|
|
maps\cornered_code_rappel::rappel_limit_vertical_move( 0, 0 );
|
|
}
|
|
|
|
player_pounce_anim()
|
|
{
|
|
if ( common_scripts\utility::flag( "inverted_kill_fail" ) )
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single( level.arms_and_legs, "pounce_player_fail" );
|
|
else
|
|
{
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single( level.arms_and_legs, "pounce_player" );
|
|
level thread do_inverted_kill_blood();
|
|
}
|
|
|
|
wait 0.1;
|
|
level.cornered_player_arms show();
|
|
level.cornered_player_arms maps\cornered_code::player_stop_flap_sleeves();
|
|
maps\cornered_code::hide_player_arms_sleeve_flaps();
|
|
level.player maps\cornered_code::player_hideviewmodelsleeveflaps();
|
|
level.cornered_player_legs show();
|
|
level.player_push_knife show();
|
|
level.cornered_player_arms waittillmatch( "single anim", "player_land_balcony" );
|
|
level.reflection_window_inverted delete();
|
|
level.player allowfire( 1 );
|
|
wait 2.5;
|
|
thread maps\cornered_audio::aud_invert( "slow" );
|
|
setslowmotion( 1.0, 0.25, 0.05 );
|
|
level.cornered_player_arms waittillmatch( "single anim", "end" );
|
|
level.player allowstand( 1 );
|
|
level.player setstance( "stand" );
|
|
}
|
|
|
|
do_inverted_kill_blood()
|
|
{
|
|
level.player_inverted_kill_enemy waittillmatch( "single anim", "stab_contact" );
|
|
var_0 = level.player_inverted_kill_enemy gettagorigin( "tag_weapon_chest" );
|
|
playfx( common_scripts\utility::getfx( "neck_stab_blood" ), var_0, ( 0, 0, 1 ), ( 1, 0, 0 ) );
|
|
}
|
|
|
|
watch_push_knife_throw()
|
|
{
|
|
for (;;)
|
|
{
|
|
if ( isdefined( level.player_knife_throw_enemy ) && level.player_push_knife_projectile istouching( level.player_knife_throw_enemy ) )
|
|
break;
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
level.player_push_knife_projectile unlink();
|
|
|
|
if ( isdefined( level.player_knife_throw_enemy ) )
|
|
level.player_push_knife_projectile linkto( level.player_knife_throw_enemy, "tag_weapon_chest", ( 0, -6, 0 ), ( 0, -90, 0 ) );
|
|
|
|
common_scripts\utility::flag_wait( "courtyard_intro_goto_elevator" );
|
|
level.player_push_knife_projectile delete();
|
|
}
|
|
|
|
player_initiates_inverted_kill()
|
|
{
|
|
level endon( "inverted_kill_fail_kill_player" );
|
|
level endon( "inverted_kill_enemy_turned_around" );
|
|
var_0 = getent( "inverted_kill_start_volume", "targetname" );
|
|
common_scripts\utility::flag_set( "player_not_in_inverted_kill_volume" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.player istouching( var_0 ) )
|
|
{
|
|
if ( common_scripts\utility::flag( "player_not_in_inverted_kill_volume" ) )
|
|
{
|
|
common_scripts\utility::flag_clear( "player_not_in_inverted_kill_volume" );
|
|
|
|
if ( !maps\cornered_code::is_e3() )
|
|
level.player maps\_utility::display_hint_timeout( "inverted_kill", 5 );
|
|
}
|
|
|
|
if ( level.player meleebuttonpressed() || level.player attackbuttonpressed() )
|
|
{
|
|
if ( !common_scripts\utility::flag( "player_jumping" ) )
|
|
{
|
|
if ( !common_scripts\utility::flag( "inverted_kill_fail_kill_player" ) )
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if ( !common_scripts\utility::flag( "player_not_in_inverted_kill_volume" ) )
|
|
common_scripts\utility::flag_set( "player_not_in_inverted_kill_volume" );
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
common_scripts\utility::flag_set( "player_not_in_inverted_kill_volume" );
|
|
}
|
|
|
|
should_break_inverted_kill_hint()
|
|
{
|
|
return common_scripts\utility::flag( "player_not_in_inverted_kill_volume" );
|
|
}
|
|
|
|
clear_groundref()
|
|
{
|
|
wait 0.5;
|
|
level.player playersetgroundreferenceent( undefined );
|
|
}
|
|
|
|
player_lerp_to_anim_start()
|
|
{
|
|
var_0 = level.cornered_player_arms gettagorigin( "tag_camera" ) - ( 0, 0, 60 );
|
|
var_1 = level.cornered_player_arms gettagangles( "tag_camera" );
|
|
var_2 = distance( level.player.origin, var_0 );
|
|
var_3 = 432;
|
|
var_4 = var_2 / var_3;
|
|
level.player playerlinktoblend( level.cornered_player_arms, "tag_origin", var_4 );
|
|
wait( var_4 );
|
|
}
|
|
|
|
flag_if_player_aims_knife_at_enemy( var_0, var_1 )
|
|
{
|
|
level notify( "flag_if_player_aims_knife_at_enemy" );
|
|
level endon( "flag_if_player_aims_knife_at_enemy" );
|
|
level.player_knife_throw_enemy endon( "death" );
|
|
level endon( "player_throws_knife" );
|
|
level endon( "player_throws_knife_fail" );
|
|
level endon( "player_failed_to_throw_knife" );
|
|
|
|
for (;;)
|
|
{
|
|
var_2 = level.player getplayerangles();
|
|
var_3 = anglestoforward( level.player getplayerangles() );
|
|
var_4 = bullettrace( level.player geteye() + var_3 * 20, level.player geteye() + var_3 * 50000, 1, level.player_inverted_kill_enemy );
|
|
|
|
if ( isdefined( var_4["entity"] ) && var_4["entity"] == level.player_knife_throw_enemy )
|
|
{
|
|
common_scripts\utility::flag_set( "player_aims_knife_at_enemy" );
|
|
var_0.color = ( 1, 0.65, 0 );
|
|
level.player allowfire( 0 );
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_clear( "player_aims_knife_at_enemy" );
|
|
var_0.color = ( 1, 1, 1 );
|
|
|
|
if ( var_1 )
|
|
level.player allowfire( 1 );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
get_knife_reticle()
|
|
{
|
|
if ( !isdefined( level.knife_reticle ) )
|
|
{
|
|
var_0 = newclienthudelem( level.player );
|
|
var_0.x = 0;
|
|
var_0.y = 0;
|
|
var_0.alignx = "center";
|
|
var_0.aligny = "middle";
|
|
var_0.horzalign = "center";
|
|
var_0.vertalign = "middle";
|
|
var_0 setshader( "reticle_center_cross", 32, 32 );
|
|
var_0.hidewhendead = 1;
|
|
var_0.hidewheninmenu = 1;
|
|
var_0.sort = 205;
|
|
var_0.foreground = 1;
|
|
var_0.color = ( 1, 1, 1 );
|
|
var_0.alpha = 1;
|
|
level.knife_reticle = var_0;
|
|
}
|
|
|
|
return level.knife_reticle;
|
|
}
|
|
|
|
player_throws_knife()
|
|
{
|
|
level endon( "player_failed_to_throw_knife" );
|
|
level.player notifyonplayercommand( "throw", "+attack" );
|
|
level.player notifyonplayercommand( "throw", "+melee" );
|
|
level.player notifyonplayercommand( "throw", "+melee_breath" );
|
|
level.player notifyonplayercommand( "throw", "+melee_zoom" );
|
|
level.player notifyonplayercommand( "throw", "+frag" );
|
|
|
|
for (;;)
|
|
{
|
|
level.player waittill( "throw" );
|
|
|
|
if ( common_scripts\utility::flag( "player_aims_knife_at_enemy" ) )
|
|
{
|
|
common_scripts\utility::flag_set( "player_throws_knife" );
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_set( "player_throws_knife_fail" );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
inverted_rappel_combat()
|
|
{
|
|
common_scripts\utility::flag_wait( "player_exiting_building" );
|
|
common_scripts\utility::flag_clear( "enemies_aware" );
|
|
common_scripts\utility::flag_clear( "player_shot" );
|
|
maps\_utility::array_spawn_function_targetname( "sleeping_enemy_below", ::sleeping_enemy_below_setup );
|
|
var_0 = maps\_utility::array_spawn_targetname( "sleeping_enemy_below" );
|
|
maps\_utility::array_spawn_function_targetname( "rappel_balcony_enemies", ::rappel_balcony_setup );
|
|
common_scripts\utility::flag_wait( "spawn_balcony_enemies" );
|
|
level.rappel_balcony_enemies = maps\_utility::array_spawn_targetname( "rappel_balcony_enemies" );
|
|
var_1 = getdvar( "ragdoll_max_life" );
|
|
setsaveddvar( "ragdoll_max_life", 20000 );
|
|
thread allies_help_when_player_shoots_balcony_enemies();
|
|
level.rappel_balcony_enemies = maps\_utility::array_removedead_or_dying( level.rappel_balcony_enemies );
|
|
maps\_utility::waittill_dead( level.rappel_balcony_enemies );
|
|
common_scripts\utility::flag_set( "balcony_enemies_killed" );
|
|
common_scripts\utility::flag_clear( "enemies_aware" );
|
|
common_scripts\utility::flag_wait( "spawn_inverted_kill_enemies" );
|
|
maps\_utility::array_spawn_function_targetname( "inverted_kill_enemies", ::inverted_kill_enemies_setup );
|
|
var_2 = maps\_utility::array_spawn_targetname( "inverted_kill_enemies" );
|
|
wait 10;
|
|
setsaveddvar( "ragdoll_max_life", var_1 );
|
|
}
|
|
|
|
allies_help_when_player_shoots_balcony_enemies()
|
|
{
|
|
level endon( "balcony_enemies_killed" );
|
|
common_scripts\utility::flag_wait( "balcony_enemies_on_balcony" );
|
|
thread player_shoots();
|
|
common_scripts\utility::flag_wait_or_timeout( "player_shot", 8 );
|
|
level.player common_scripts\utility::waittill_notify_or_timeout( "damage", 1 );
|
|
thread maps\cornered_code::ally_to_magicbullet( level.allies[level.const_rorke], level.rappel_balcony_enemies );
|
|
wait 2;
|
|
thread maps\cornered_code::ally_to_magicbullet( level.allies[level.const_rorke], level.rappel_balcony_enemies );
|
|
}
|
|
|
|
player_shoots( var_0 )
|
|
{
|
|
if ( isdefined( var_0 ) )
|
|
common_scripts\utility::flag_wait( var_0 );
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.player attackbuttonpressed() )
|
|
{
|
|
common_scripts\utility::flag_set( "player_shot" );
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
rappel_balcony_setup()
|
|
{
|
|
self endon( "death" );
|
|
self.animname = "generic";
|
|
self.ignoreall = 1;
|
|
self.health = 50;
|
|
thread if_player_passes_balcony_before_killing();
|
|
thread maps\cornered_code::wait_till_shot( undefined, "enemies_aware" );
|
|
thread balcony_anims();
|
|
|
|
if ( self.script_noteworthy == "cornered_inv_balcony_walkin_enemy2" )
|
|
{
|
|
var_0 = getent( "inverted_rappel_balcony_volume", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( self istouching( var_0 ) )
|
|
{
|
|
common_scripts\utility::flag_set( "balcony_enemies_on_balcony" );
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "balcony_enemies_on_balcony" );
|
|
self.allowdeath = 1;
|
|
level.balcony_enemies_clip solid();
|
|
level.balcony_enemies_clip disconnectpaths();
|
|
common_scripts\utility::flag_wait( "enemies_aware" );
|
|
|
|
if ( self.script_noteworthy == "cornered_inv_balcony_walkin_enemy2" )
|
|
{
|
|
self.ignoreall = 0;
|
|
level.rappel_entry_anim_struct notify( "stop_loop" );
|
|
waittillframeend;
|
|
maps\_utility::anim_stopanimscripted();
|
|
self.favoriteenemy = level.player;
|
|
}
|
|
}
|
|
|
|
#using_animtree("generic_human");
|
|
|
|
balcony_anims()
|
|
{
|
|
self endon( "death" );
|
|
level endon( "enemies_aware" );
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single_solo( self, self.script_noteworthy );
|
|
|
|
if ( self.script_noteworthy == "cornered_inv_balcony_walkin_enemy1" )
|
|
{
|
|
wait 4;
|
|
self.deathanim = %cornered_inv_balcony_death_enemy1;
|
|
}
|
|
|
|
self waittillmatch( "single anim", "end" );
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_loop_solo( self, self.script_noteworthy + "_loop", "stop_loop" );
|
|
}
|
|
|
|
if_player_passes_balcony_before_killing()
|
|
{
|
|
self endon( "death" );
|
|
common_scripts\utility::flag_wait( "player_is_past_balcony" );
|
|
|
|
if ( !common_scripts\utility::flag( "player_is_past_balcony_and_enemies_are_alive" ) )
|
|
common_scripts\utility::flag_set( "player_is_past_balcony_and_enemies_are_alive" );
|
|
|
|
wait( randomfloatrange( 0.25, 0.75 ) );
|
|
var_0 = level.allies[level.const_rorke] gettagorigin( "j_head" );
|
|
var_1 = self gettagorigin( "j_head" );
|
|
var_2 = vectornormalize( var_1 - var_0 );
|
|
var_3 = var_0 + var_2 * ( distance( var_1, var_0 ) - 10 );
|
|
self.health = 1;
|
|
magicbullet( level.allies[level.const_rorke].weapon, var_3, var_1 );
|
|
wait 1;
|
|
self kill();
|
|
}
|
|
|
|
sleeping_enemy_below_setup()
|
|
{
|
|
self.ignoreall = 1;
|
|
self.animname = "generic";
|
|
self.diequietly = 1;
|
|
self.noragdoll = 1;
|
|
self.health = 10;
|
|
self.deathanim = %cnd_rappel_stealth_3rd_floor_sleeping_enemy_death;
|
|
var_0 = getent( "sleeping_enemy_below_chair", "targetname" );
|
|
var_0.animname = "chair";
|
|
var_0 maps\_anim::setanimtree();
|
|
var_1[0] = self;
|
|
var_1[1] = var_0;
|
|
self.struct = common_scripts\utility::getstruct( "sleeping_enemy_below_struct", "targetname" );
|
|
self.struct thread maps\_anim::anim_loop( var_1, "sleep_idle", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "player_is_past_balcony" );
|
|
common_scripts\utility::waitframe();
|
|
self.allowdeath = 1;
|
|
thread sleeping_enemy_below_alerted_or_killed( var_1, var_0 );
|
|
thread watch_for_death_achievement();
|
|
level thread cleanup_sleeping_enemy( self, var_0 );
|
|
thread maps\cornered_code::wait_till_shot( "enemies_aware", undefined, "enemy_aware" );
|
|
thread maps\cornered_code::alert_all();
|
|
}
|
|
|
|
sleeping_enemy_below_alerted_or_killed( var_0, var_1 )
|
|
{
|
|
level endon( "start_inverted_kill_prompting" );
|
|
common_scripts\utility::waittill_any( "enemy_aware", "death" );
|
|
|
|
if ( isalive( self ) )
|
|
{
|
|
level notify( "sleeping_guy_awake" );
|
|
self.struct notify( "stop_loop" );
|
|
waittillframeend;
|
|
self.deathanim = %exposed_death_headshot;
|
|
self.struct maps\_anim::anim_single( var_0, "sleep_react" );
|
|
self.ignoreall = 0;
|
|
self.noragdoll = 0;
|
|
self.favoriteenemy = level.player;
|
|
}
|
|
else if ( !isalive( self ) )
|
|
var_1 thread maps\_anim::anim_single_solo( var_1, "sleep_death" );
|
|
}
|
|
|
|
watch_for_death_achievement()
|
|
{
|
|
level endon( "sleeping_guy_awake" );
|
|
self waittill( "damage", var_0, var_1, var_2, var_3, var_4 );
|
|
|
|
if ( isdefined( var_1 ) && isplayer( var_1 ) )
|
|
{
|
|
self kill();
|
|
level.player maps\_utility::player_giveachievement_wrapper( "LEVEL_7A" );
|
|
}
|
|
}
|
|
|
|
cleanup_sleeping_enemy( var_0, var_1 )
|
|
{
|
|
common_scripts\utility::flag_wait( "start_courtyard" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0 delete();
|
|
|
|
if ( isdefined( var_1 ) )
|
|
var_1 delete();
|
|
}
|
|
|
|
inverted_kill_enemies_setup()
|
|
{
|
|
self.ignoreall = 1;
|
|
self.animname = "generic";
|
|
self.a.nodeath = 1;
|
|
self.diequietly = 1;
|
|
self.allowdeath = 1;
|
|
self.noragdoll = 1;
|
|
self.a.disablelongdeath = 1;
|
|
|
|
if ( self.script_noteworthy == "guy1" )
|
|
{
|
|
level.player_inverted_kill_enemy = self;
|
|
thread maps\cornered_code::head_swap( "head_fed_basic_a" );
|
|
player_inverted_kill_enemy_anims();
|
|
|
|
if ( isdefined( self.walkin_anim ) )
|
|
self stopanimscripted();
|
|
else
|
|
{
|
|
level.rappel_entry_anim_struct notify( "stop_player_inverted_kill_enemy_idle" );
|
|
waittillframeend;
|
|
}
|
|
|
|
if ( common_scripts\utility::flag( "inverted_kill_fail_trigger" ) )
|
|
{
|
|
if ( !common_scripts\utility::flag( "player_pounce" ) )
|
|
{
|
|
player_inverted_kill_enemy_fail_anim();
|
|
|
|
if ( common_scripts\utility::flag( "player_pounce" ) )
|
|
{
|
|
if ( common_scripts\utility::flag( "inverted_kill_enemy_started_turning_around" ) )
|
|
{
|
|
if ( !common_scripts\utility::flag( "inverted_kill_enemy_turned_around" ) )
|
|
{
|
|
self stopanimscripted();
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single_solo( self, "player_inverted_kill_enemy_pounce_fail2" );
|
|
wait 1;
|
|
maps\_utility::gun_remove();
|
|
self waittillmatch( "single anim", "end" );
|
|
self kill();
|
|
}
|
|
else
|
|
{
|
|
self.ignoreall = 0;
|
|
self.favoriteenemy = level.player;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self stopanimscripted();
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single_solo( self, "player_inverted_kill_enemy_pounce_fail" );
|
|
wait 1;
|
|
maps\_utility::gun_remove();
|
|
self waittillmatch( "single anim", "end" );
|
|
self kill();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self.ignoreall = 0;
|
|
self.favoriteenemy = level.player;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single_solo( self, "player_inverted_kill_enemy_pounce" );
|
|
wait 1;
|
|
maps\_utility::gun_remove();
|
|
self waittillmatch( "single anim", "end" );
|
|
self kill();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single_solo( self, "player_inverted_kill_enemy_pounce" );
|
|
wait 1;
|
|
maps\_utility::gun_remove();
|
|
self waittillmatch( "single anim", "end" );
|
|
self kill();
|
|
}
|
|
}
|
|
|
|
if ( self.script_noteworthy == "guy2" )
|
|
{
|
|
level.player_knife_throw_enemy = self;
|
|
level.rappel_entry_anim_struct maps\_anim::anim_first_frame_solo( self, "player_knife_throw_enemy_pounce" );
|
|
self hide();
|
|
common_scripts\utility::flag_wait( "player_pounce" );
|
|
self show();
|
|
thread player_knife_throw_enemy();
|
|
common_scripts\utility::flag_wait_any( "player_throws_knife", "player_failed_to_throw_knife", "player_throws_knife_fail" );
|
|
|
|
if ( common_scripts\utility::flag( "player_throws_knife" ) )
|
|
{
|
|
thread maps\cornered_audio::aud_invert( "throw" );
|
|
self stopanimscripted();
|
|
var_0 = getnode( "knife_throw_enemy_node", "targetname" );
|
|
maps\_utility::set_goal_radius( 8 );
|
|
self setgoalnode( var_0 );
|
|
self.deathanim = %cornered_inv_tkdn_death_guy2;
|
|
thread maps\cornered_audio::aud_invert( "hit" );
|
|
wait 0.5;
|
|
self kill();
|
|
common_scripts\utility::flag_set( "player_knife_throw_enemy_dead" );
|
|
}
|
|
else
|
|
{
|
|
wait 1;
|
|
self shoot();
|
|
wait 0.2;
|
|
self shoot();
|
|
wait 0.1;
|
|
self shoot();
|
|
wait 0.1;
|
|
thread move_player_up_at_death();
|
|
level.player unlink();
|
|
level.player kill();
|
|
}
|
|
}
|
|
|
|
if ( self.script_noteworthy == "guy3" )
|
|
{
|
|
self hide();
|
|
level.rappel_entry_anim_struct maps\_anim::anim_first_frame_solo( self, "rorke_inverted_kill_enemy_pounce" );
|
|
common_scripts\utility::flag_wait( "player_pounce" );
|
|
self show();
|
|
thread rorke_inverted_kill_enemy();
|
|
common_scripts\utility::flag_wait( "rorke_inverted_kill" );
|
|
self stopanimscripted();
|
|
common_scripts\utility::waitframe();
|
|
self.deathanim = %cornered_inv_tkdn_death_guy3;
|
|
self kill();
|
|
}
|
|
}
|
|
|
|
move_player_up_at_death()
|
|
{
|
|
level.player waittill( "death" );
|
|
level.player setorigin( level.player.origin + ( 0, 0, 16 ) );
|
|
}
|
|
|
|
allow_inverted_kill( var_0 )
|
|
{
|
|
common_scripts\utility::flag_set( "player_can_start_inverted_kill" );
|
|
}
|
|
|
|
player_inverted_kill_enemy_anims()
|
|
{
|
|
level endon( "player_pounce" );
|
|
level endon( "inverted_kill_fail_trigger" );
|
|
self.walkin_anim = 1;
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single_solo( self, "player_inverted_kill_enemy_walkin" );
|
|
wait 0.1;
|
|
maps\_anim::anim_self_set_time( "player_inverted_kill_enemy_walkin", 0.12 );
|
|
maps\_anim::anim_set_rate_single( self, "player_inverted_kill_enemy_walkin", 1.65 );
|
|
self waittillmatch( "single anim", "end" );
|
|
self.walkin_anim = undefined;
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_loop_solo( self, "player_inverted_kill_enemy_idle", "stop_player_inverted_kill_enemy_idle" );
|
|
common_scripts\utility::flag_wait( "player_pounce" );
|
|
}
|
|
|
|
player_inverted_kill_enemy_fail_anim()
|
|
{
|
|
level endon( "player_pounce" );
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single_solo( self, "player_inverted_kill_enemy_pounce_alert" );
|
|
wait 0.01;
|
|
thread player_pushes_too_far();
|
|
var_0 = maps\_utility::getanim( "player_inverted_kill_enemy_pounce_alert" );
|
|
|
|
while ( self getanimtime( var_0 ) < 0.35 )
|
|
wait 0.05;
|
|
|
|
common_scripts\utility::flag_set( "inverted_kill_enemy_started_turning_around" );
|
|
|
|
while ( self getanimtime( var_0 ) < 0.45 )
|
|
wait 0.05;
|
|
|
|
common_scripts\utility::flag_set( "inverted_kill_enemy_turned_around" );
|
|
thread inverted_kill_enemy_kills_player();
|
|
self waittillmatch( "single anim", "end" );
|
|
common_scripts\utility::flag_set( "player_inverted_kill_enemy_pounce_fail_end" );
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_last_frame_solo( self, "player_inverted_kill_enemy_pounce_alert" );
|
|
}
|
|
|
|
player_pushes_too_far()
|
|
{
|
|
level endon( "player_pounce" );
|
|
level endon( "player_inverted_kill_enemy_pounce_fail_end" );
|
|
common_scripts\utility::flag_wait( "inverted_kill_fail_kill_player" );
|
|
maps\_anim::anim_set_rate_internal( "player_inverted_kill_enemy_pounce_alert", 1.5 );
|
|
}
|
|
|
|
inverted_kill_enemy_kills_player()
|
|
{
|
|
magicbullet( self.weapon, self gettagorigin( "tag_flash" ), level.player.origin + ( 0, 0, 64 ) );
|
|
wait 0.2;
|
|
magicbullet( self.weapon, self gettagorigin( "tag_flash" ), level.player.origin + ( 0, 0, 64 ) );
|
|
wait 0.2;
|
|
magicbullet( self.weapon, self gettagorigin( "tag_flash" ), level.player.origin + ( 0, 0, 64 ) );
|
|
wait 0.2;
|
|
magicbullet( self.weapon, self gettagorigin( "tag_flash" ), level.player.origin + ( 0, 0, 64 ) );
|
|
level.player kill();
|
|
}
|
|
|
|
player_knife_throw_enemy()
|
|
{
|
|
level endon( "player_throws_knife" );
|
|
wait 1;
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single_solo( self, "player_knife_throw_enemy_pounce" );
|
|
wait 4;
|
|
common_scripts\utility::flag_set( "player_failed_to_throw_knife" );
|
|
self waittillmatch( "single anim", "end" );
|
|
var_0 = getnode( "knife_throw_enemy_node", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
}
|
|
|
|
rorke_inverted_kill_enemy()
|
|
{
|
|
level endon( "rorke_inverted_kill" );
|
|
wait 1;
|
|
level.rappel_entry_anim_struct maps\_anim::anim_single_solo( self, "rorke_inverted_kill_enemy_pounce" );
|
|
var_0 = getnode( "rorke_inverted_kill_enemy_node", "targetname" );
|
|
self setgoalnode( var_0 );
|
|
}
|
|
|
|
autosave_past_balcony()
|
|
{
|
|
common_scripts\utility::flag_wait( "balcony_enemies_killed" );
|
|
thread maps\_utility::autosave_now_silent();
|
|
}
|
|
|
|
allies_inverted_rappel_vo()
|
|
{
|
|
level.allies[level.const_rorke] maps\_utility::smart_dialogue( "cornered_mrk_hookuptothe" );
|
|
var_0 = maps\_utility::make_array( "cornered_mrk_moveitkid", "cornered_mrk_comeonhookup" );
|
|
thread maps\cornered_code::nag_until_flag( var_0, "player_exiting_building", 10, 15, 5 );
|
|
common_scripts\utility::flag_set( "exit_building_ready" );
|
|
common_scripts\utility::flag_wait( "player_has_exited_the_building" );
|
|
common_scripts\utility::flag_wait( "player_ready_to_deploy_virus" );
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_killthelights" );
|
|
var_0 = maps\_utility::make_array( "cornered_mrk_activatethevirus", "cornered_mrk_killthelights" );
|
|
thread maps\cornered_code::nag_until_flag( var_0, "player_deployed_virus", 10, 15, 5 );
|
|
common_scripts\utility::flag_wait( "player_deployed_virus" );
|
|
wait 3;
|
|
common_scripts\utility::flag_set( "spawn_balcony_enemies" );
|
|
common_scripts\utility::flag_set( "rappel_down_ready" );
|
|
level.allies[level.const_baker] maps\_utility::smart_radio_dialogue( "cornered_bkr_beautiful" );
|
|
common_scripts\utility::flag_wait( "balcony_enemies_on_balcony" );
|
|
level.allies[level.const_baker] maps\_utility::smart_radio_dialogue( "cornered_hsh_twoontheleft" );
|
|
level.allies[level.const_baker] maps\_utility::smart_radio_dialogue( "cornered_mrk_movedownandtake" );
|
|
common_scripts\utility::flag_wait_either( "balcony_enemies_killed", "player_is_past_balcony" );
|
|
wait 0.25;
|
|
|
|
if ( common_scripts\utility::flag( "player_is_past_balcony" ) )
|
|
{
|
|
if ( common_scripts\utility::flag( "player_is_past_balcony_and_enemies_are_alive" ) )
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_ivegotem" );
|
|
}
|
|
else if ( common_scripts\utility::flag( "balcony_enemies_killed" ) )
|
|
level.allies[level.const_baker] maps\_utility::smart_radio_dialogue( "cornered_hsh_targetsdown" );
|
|
|
|
thread sleeping_enemy_below_vo();
|
|
thread autosave_past_balcony();
|
|
common_scripts\utility::flag_wait( "spawn_inverted_kill_enemies" );
|
|
wait 0.25;
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_onerightbelowyou" );
|
|
wait 0.5;
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_movedownabovehim" );
|
|
common_scripts\utility::flag_wait( "start_inverted_kill_prompting" );
|
|
thread inverted_kill_too_close_vo();
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_alrighttakehimout" );
|
|
common_scripts\utility::flag_wait( "player_knife_throw_enemy_dead" );
|
|
wait 5;
|
|
}
|
|
|
|
sleeping_enemy_below_vo()
|
|
{
|
|
|
|
}
|
|
|
|
inverted_kill_too_close_vo()
|
|
{
|
|
level endon( "player_initiated_pounce" );
|
|
common_scripts\utility::flag_wait( "inverted_kill_too_close_vo" );
|
|
level.allies[level.const_rorke] maps\_utility::smart_radio_dialogue( "cornered_mrk_nottooclose" );
|
|
}
|
|
|
|
allies_inverted_rappel_movement()
|
|
{
|
|
if ( !isdefined( level.rappel_anim_struct ) )
|
|
level.rappel_anim_struct = getent( "allies_rappel_struct_stealth", "targetname" );
|
|
|
|
if ( !isdefined( level.building_entry_exit_anim_struct ) )
|
|
level.building_entry_exit_anim_struct = common_scripts\utility::getstruct( "rappel_stealth_building_entry_exit_anim_struct", "targetname" );
|
|
|
|
if ( isdefined( level.inverted_rappel_startpoint ) )
|
|
{
|
|
if ( self.animname == "baker" )
|
|
level.building_entry_exit_anim_struct thread maps\_anim::anim_loop_solo( self, "cnd_rappel_inverted_idle_" + self.animname, "stop_loop" );
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "player_has_exited_the_building" );
|
|
level.building_entry_exit_anim_struct notify( "stop_loop" );
|
|
|
|
if ( self.animname == "rorke" )
|
|
inverted_rappel_movement_rorke();
|
|
else
|
|
inverted_rappel_movement_baker();
|
|
}
|
|
|
|
inverted_rappel_movement_rorke()
|
|
{
|
|
var_0 = common_scripts\utility::getstruct( "inverted_rappel_start_rorke", "targetname" );
|
|
var_0 thread maps\_anim::anim_single_solo( self, "cornered_inv_run_stop" );
|
|
wait 0.25;
|
|
common_scripts\utility::flag_set( "player_ready_to_deploy_virus" );
|
|
self waittillmatch( "single anim", "end" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_idle", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "player_deployed_virus" );
|
|
wait 3;
|
|
self notify( "stop_loop" );
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_run_start" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_run", "stop_loop" );
|
|
wait 0.5;
|
|
self notify( "stop_loop" );
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_run_stop_aim_left" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_idle_rorke", "stop_loop" );
|
|
common_scripts\utility::flag_wait_either( "balcony_enemies_killed", "player_is_past_balcony" );
|
|
|
|
if ( common_scripts\utility::flag( "player_is_past_balcony" ) )
|
|
{
|
|
self notify( "stop_loop" );
|
|
waittillframeend;
|
|
var_1 = common_scripts\utility::getstruct( "inverted_rappel_balcony_teleport_rorke", "targetname" );
|
|
var_1 maps\_anim::anim_first_frame_solo( self, "cornered_inv_run_start" );
|
|
}
|
|
else if ( common_scripts\utility::flag( "balcony_enemies_killed" ) )
|
|
{
|
|
wait 1;
|
|
self notify( "stop_loop" );
|
|
waittillframeend;
|
|
}
|
|
|
|
inverted_rappel_ally_movement();
|
|
|
|
if ( common_scripts\utility::flag( "player_initiated_pounce" ) )
|
|
{
|
|
self notify( "stop_loop" );
|
|
waittillframeend;
|
|
self stopanimscripted();
|
|
level.rappel_entry_anim_struct maps\_anim::anim_first_frame_solo( self, "cornered_inv_tkdn_pounce_rorke" );
|
|
}
|
|
else
|
|
{
|
|
knife_out_rorke_anims();
|
|
|
|
if ( common_scripts\utility::flag( "player_initiated_pounce" ) )
|
|
{
|
|
self notify( "stop_loop" );
|
|
waittillframeend;
|
|
self stopanimscripted();
|
|
level.rappel_entry_anim_struct maps\_anim::anim_first_frame_solo( self, "cornered_inv_tkdn_pounce_rorke" );
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "player_knife_throw_enemy_dead" );
|
|
self notify( "stop_loop" );
|
|
waittillframeend;
|
|
self stopanimscripted();
|
|
|
|
if ( !common_scripts\utility::flag( "inverted_kill_knife_rorke" ) )
|
|
{
|
|
level.rorke_inverted_kill_knife = spawn( "script_model", ( 0, 0, 0 ) );
|
|
level.rorke_inverted_kill_knife setmodel( "weapon_parabolic_knife" );
|
|
level.rorke_inverted_kill_knife linkto( level.allies[level.const_rorke], "TAG_INHAND", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
}
|
|
|
|
maps\cornered_code_rappel_allies::ally_rappel_stop_rope();
|
|
self.ignoreall = 1;
|
|
self.ignoreme = 1;
|
|
level.rappel_entry_anim_struct maps\_anim::anim_single_solo( self, "cornered_inv_tkdn_pounce_rorke" );
|
|
maps\cornered_code_rappel_allies::ally_rappel_rope_cleanup();
|
|
common_scripts\utility::flag_set( "inverted_rorke_done" );
|
|
}
|
|
|
|
knife_out_rorke_anims()
|
|
{
|
|
level endon( "player_initiated_pounce" );
|
|
self notify( "stop_loop" );
|
|
waittillframeend;
|
|
level.rappel_entry_anim_struct maps\_anim::anim_single_solo( self, "cornered_inv_run_drift_right_rorke" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_idle", "stop_loop" );
|
|
|
|
if ( common_scripts\utility::flag( "spawn_inverted_kill_enemies" ) )
|
|
{
|
|
self notify( "stop_loop" );
|
|
waittillframeend;
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_knife_out_rorke" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_knife_idle_rorke", "stop_loop" );
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_wait( "spawn_inverted_kill_enemies" );
|
|
wait 1;
|
|
self notify( "stop_loop" );
|
|
waittillframeend;
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_knife_out_rorke" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_knife_idle_rorke", "stop_loop" );
|
|
}
|
|
}
|
|
|
|
spawn_rorke_inverted_kill_knife( var_0 )
|
|
{
|
|
level.rorke_inverted_kill_knife = spawn( "script_model", ( 0, 0, 0 ) );
|
|
level.rorke_inverted_kill_knife setmodel( "weapon_parabolic_knife" );
|
|
level.rorke_inverted_kill_knife linkto( level.allies[level.const_rorke], "TAG_INHAND", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
common_scripts\utility::flag_set( "inverted_kill_knife_rorke" );
|
|
}
|
|
|
|
inverted_rappel_movement_baker()
|
|
{
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_run_start" );
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_run_stop_aim_left" );
|
|
inverted_rappel_ally_idles( "balcony_enemies_on_balcony", "cornered_inv_idle", "cornered_inv_idle_fidgit_1" );
|
|
self notify( "stop_loop" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_idle_baker", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "balcony_enemies_killed" );
|
|
self notify( "stop_loop" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_idle", "stop_loop" );
|
|
common_scripts\utility::flag_wait_either( "balcony_enemies_killed", "player_is_past_balcony" );
|
|
|
|
if ( common_scripts\utility::flag( "player_is_past_balcony" ) )
|
|
{
|
|
self notify( "stop_loop" );
|
|
waittillframeend;
|
|
var_0 = common_scripts\utility::getstruct( "inverted_rappel_balcony_teleport_baker", "targetname" );
|
|
var_0 maps\_anim::anim_first_frame_solo( self, "cornered_inv_run_start" );
|
|
}
|
|
else if ( common_scripts\utility::flag( "balcony_enemies_killed" ) )
|
|
{
|
|
wait 2;
|
|
self notify( "stop_loop" );
|
|
waittillframeend;
|
|
}
|
|
|
|
inverted_rappel_ally_movement();
|
|
var_1 = undefined;
|
|
common_scripts\utility::flag_wait( "player_knife_throw_enemy_dead" );
|
|
self notify( "stop_loop" );
|
|
self stopanimscripted();
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
{
|
|
maps\cornered_code_rappel_allies::ally_rappel_stop_rope();
|
|
var_1 = [];
|
|
var_1[0] = self;
|
|
var_1[1] = self.cnd_rappel_tele_rope;
|
|
level.rappel_entry_anim_struct maps\_anim::anim_first_frame( var_1, "cornered_inv_tkdn_pounce_baker" );
|
|
}
|
|
|
|
self.ignoreall = 1;
|
|
self.ignoreme = 1;
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_single( var_1, "cornered_inv_tkdn_pounce_baker" );
|
|
self waittillmatch( "single anim", "cornered_hsh_iknowtheplan" );
|
|
level.allies[level.const_baker] thread maps\cornered_code::char_dialog_add_and_go( "cornered_hsh_iknowtheplan" );
|
|
self waittillmatch( "single anim", "end" );
|
|
level.rappel_entry_anim_struct thread maps\_anim::anim_loop_solo( self.cnd_rappel_tele_rope, "cornered_inv_tkdn_baker_rope_loop", "stop_baker_rope_loop" );
|
|
common_scripts\utility::flag_wait( "baker_security_vo" );
|
|
level.rappel_entry_anim_struct notify( "stop_baker_rope_loop" );
|
|
self.cnd_rappel_tele_rope delete();
|
|
maps\cornered_code_rappel_allies::ally_rappel_rope_cleanup();
|
|
thread maps\cornered_interior::courtyard_intro_baker_exit();
|
|
}
|
|
|
|
inverted_rappel_ally_idles( var_0, var_1, var_2 )
|
|
{
|
|
level endon( var_0 );
|
|
|
|
for (;;)
|
|
{
|
|
thread maps\_anim::anim_loop_solo( self, var_1, "stop_loop" );
|
|
wait( randomfloatrange( 0.5, 2.0 ) );
|
|
self notify( "stop_loop" );
|
|
waittillframeend;
|
|
maps\_anim::anim_single_solo( self, var_2 );
|
|
}
|
|
}
|
|
|
|
inverted_rappel_ally_movement()
|
|
{
|
|
level endon( "player_knife_throw_enemy_dead" );
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_run_start" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_run", "stop_loop" );
|
|
var_0 = getent( "inverted_rappel_stop_volume_1", "targetname" );
|
|
move_to_volume( var_0 );
|
|
|
|
if ( !common_scripts\utility::flag( "inverted_rappel_start_ally_move_1" ) )
|
|
{
|
|
self notify( "stop_loop" );
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_run_stop" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_idle", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "inverted_rappel_start_ally_move_1" );
|
|
wait( randomfloatrange( 0.0, 0.25 ) );
|
|
self notify( "stop_loop" );
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_run_start" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_run", "stop_loop" );
|
|
}
|
|
|
|
if ( self.animname == "rorke" )
|
|
{
|
|
var_0 = getent( "inverted_rappel_rorke_stop_volume", "targetname" );
|
|
move_to_volume( var_0 );
|
|
}
|
|
else
|
|
{
|
|
var_0 = getent( "inverted_rappel_stop_volume_2", "targetname" );
|
|
move_to_volume( var_0 );
|
|
|
|
if ( !common_scripts\utility::flag( "inverted_rappel_start_ally_move_2" ) )
|
|
{
|
|
self notify( "stop_loop" );
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_run_stop" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_idle", "stop_loop" );
|
|
common_scripts\utility::flag_wait( "inverted_rappel_start_ally_move_2" );
|
|
wait( randomfloatrange( 0.0, 0.25 ) );
|
|
self notify( "stop_loop" );
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_run_start" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_run", "stop_loop" );
|
|
}
|
|
|
|
var_0 = getent( "inverted_rappel_stop_volume", "targetname" );
|
|
move_to_volume( var_0 );
|
|
self notify( "stop_loop" );
|
|
maps\_anim::anim_single_solo( self, "cornered_inv_run_stop" );
|
|
thread maps\_anim::anim_loop_solo( self, "cornered_inv_idle", "stop_loop" );
|
|
}
|
|
}
|
|
|
|
move_to_volume( var_0 )
|
|
{
|
|
if ( !self istouching( var_0 ) )
|
|
{
|
|
for (;;)
|
|
{
|
|
if ( self istouching( var_0 ) )
|
|
break;
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
}
|
|
|
|
rorke_inverted_kill( var_0 )
|
|
{
|
|
common_scripts\utility::flag_set( "rorke_inverted_kill" );
|
|
thread maps\cornered_audio::aud_invert( "r_pounce" );
|
|
|
|
if ( maps\cornered_code::is_e3() )
|
|
{
|
|
wait 2;
|
|
thread maps\cornered_code::interest_of_time_transition();
|
|
}
|
|
}
|
|
|
|
rorke_inverted_kill_knife_putaway( var_0 )
|
|
{
|
|
level.rorke_inverted_kill_knife thread maps\cornered_code::entity_cleanup();
|
|
maps\cornered_lighting::fireworks_stop();
|
|
common_scripts\utility::waitframe();
|
|
thread maps\cornered_lighting::fireworks_courtyard();
|
|
}
|
|
|
|
inverted_baker_door( var_0 )
|
|
{
|
|
var_1 = maps\_utility::spawn_anim_model( "courtyard_entry" );
|
|
var_2 = getent( "cy_entry_door1", "targetname" );
|
|
var_3 = getent( "cy_entry_door1_handle", "targetname" );
|
|
var_4 = getent( "cy_entry_door2", "targetname" );
|
|
var_3 linkto( var_2 );
|
|
level.rappel_entry_anim_struct maps\_anim::anim_first_frame_solo( var_1, "cornered_inv_tkdn_doors" );
|
|
var_2 linkto( var_1, "j_prop_1" );
|
|
var_4 linkto( var_1, "j_prop_2" );
|
|
level.rappel_entry_anim_struct maps\_anim::anim_single_solo( var_1, "cornered_inv_tkdn_doors" );
|
|
}
|