// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool section_main() { level.ending_vo_heli_time = undefined; } section_precache() { precacheshader( "hud_icon_p226" ); precacherumble( "heavygun_fire" ); precacherumble( "damage_heavy" ); precacherumble( "damage_light" ); precacherumble( "steady_rumble" ); precacherumble( "subtle_tank_rumble" ); precacheshellshock( "flood_helicopter" ); precachemodel( "vehicle_nh90_flood_front" ); precachemodel( "vehicle_nh90_flood_mid" ); precachemodel( "flood_outro_wire" ); precachemodel( "flood_outro_gate" ); precachemodel( "head_venezuela_army_head_db" ); precacheitem( "p226_flood_ending" ); level._effect["fx_usp_muzzle_flash"] = loadfx( "fx/muzzleflashes/beretta_flash_wv" ); } section_flag_inits() { common_scripts\utility::flag_init( "ending_ally_0_breach_ready" ); common_scripts\utility::flag_init( "ending_ally_1_breach_ready" ); common_scripts\utility::flag_init( "ending_done" ); common_scripts\utility::flag_init( "smash_rate_bad" ); common_scripts\utility::flag_init( "qte_prompt_solid" ); common_scripts\utility::flag_init( "already_failing" ); common_scripts\utility::flag_init( "hvt_dead" ); common_scripts\utility::flag_init( "ending_qte_catch_active" ); common_scripts\utility::flag_init( "ending_qte_reach_active" ); common_scripts\utility::flag_init( "ending_gate_open" ); common_scripts\utility::flag_init( "player_entering_final_area" ); common_scripts\utility::flag_init( "vignette_ending_qte_grabbed" ); common_scripts\utility::flag_init( "ending_anims_ready" ); common_scripts\utility::flag_init( "ending_vo_breach" ); common_scripts\utility::flag_init( "ending_vo_2" ); common_scripts\utility::flag_init( "ending_vo_3" ); common_scripts\utility::flag_init( "ending_vo_pt2_start" ); common_scripts\utility::flag_init( "ending_vo_done" ); } ending_start() { maps\flood_util::player_move_to_checkpoint_start( "ending_start" ); maps\flood_util::spawn_allies(); level.allies[0] maps\_utility::set_force_color( "r" ); level.allies[1] maps\_utility::set_force_color( "y" ); level.allies[2] maps\_utility::set_force_color( "g" ); common_scripts\utility::flag_set( "garage_ally_0_door_ready" ); common_scripts\utility::flag_set( "garage_ally_1_door_ready" ); common_scripts\utility::flag_set( "garage_ally_2_door_ready" ); maps\_utility::activate_trigger_with_targetname( "garage_ally_move480" ); level thread maps\flood_garage::door_open(); level.player takeweapon( "r5rgp" ); level.player takeweapon( "p226" ); level.player giveweapon( "pp19+eotechsmg_sp" ); maps\flood_anim::debris_bridge_final_loop(); maps\flood_rooftops::rooftops_cleanup_post_debrisbridge(); level thread ending_vo_main(); } ending() { common_scripts\utility::flag_wait( "garage_done" ); setdvar( "ui_deadquote", "" ); thread maps\flood_swept::swept_water_toggle( "swim", "hide" ); thread maps\flood_swept::swept_water_toggle( "debri_bridge", "hide" ); thread maps\flood_swept::swept_water_toggle( "ending_water", "show" ); level thread maps\_utility::autosave_by_name_silent( "ending_start" ); level thread maps\flood_anim::ending_animatic_setup(); level thread move_to_breach(); thread door_close_behind(); common_scripts\utility::flag_wait( "ending_done" ); maps\_utility::nextmission(); level waittill( "forever" ); } move_to_breach() { var_0 = getent( "garage_ally_move480", "targetname" ); if ( isdefined( var_0 ) ) var_0 delete(); maps\_utility::activate_trigger_with_targetname( "ending_color_order_start" ); } ending_set_stacked_flag( var_0 ) { var_1 = getnode( "ending_ally_" + var_0 + "_node", "targetname" ); while ( distance( self.origin, var_1.origin ) > 32 ) wait 0.05; common_scripts\utility::flag_set( "ending_ally_" + var_0 + "_breach_ready" ); } door_open( var_0, var_1 ) { var_2 = getentarray( var_0, "targetname" ); var_3 = getentarray( var_1, "targetname" ); var_4 = 0.3; foreach ( var_6 in var_2 ) { var_6 rotateyaw( 130, var_4, 0, 0.2 ); if ( var_6.classname == "script_brushmodel" ) var_6 connectpaths(); } foreach ( var_6 in var_3 ) { var_6 rotateyaw( -130, var_4, 0, 0.2 ); if ( var_6.classname == "script_brushmodel" ) var_6 connectpaths(); } wait( var_4 ); } door_close_behind() { common_scripts\utility::flag_wait( "ending_transient_trigger" ); var_0 = level.allies; var_1 = getent( "ally_door_check", "targetname" ); var_2 = var_1 maps\_utility::get_ai_touching_volume( "allies" ); var_0 = common_scripts\utility::array_remove_array( var_0, var_2 ); var_3 = ""; foreach ( var_5 in var_0 ) { if ( var_5 == level.allies[0] ) var_3 = "ending_door_teleport_0"; if ( var_5 == level.allies[1] ) var_3 = "ending_door_teleport_1"; if ( var_5 == level.allies[2] ) var_3 = "ending_door_teleport_2"; var_6 = common_scripts\utility::getstruct( var_3, "targetname" ); var_5 forceteleport( var_6.origin, var_6.angles ); } if ( isdefined( level.ending_gate_l ) ) { level.ending_gate_node_left maps\_anim::anim_first_frame_solo( level.ending_gate_l, "outro_pt1_breach" ); level.ending_gate_node_right maps\_anim::anim_first_frame_solo( level.ending_gate_r, "outro_pt1_breach" ); } else { var_8 = getentarray( "garage_door_l", "targetname" ); var_9 = getentarray( "garage_door_r", "targetname" ); var_10 = 0.3; foreach ( var_12 in var_8 ) { var_12 rotateyaw( -130, var_10, 0, 0.2 ); if ( var_12.classname == "script_brushmodel" ) var_12 disconnectpaths(); } foreach ( var_12 in var_9 ) { var_12 rotateyaw( 130, var_10, 0, 0.2 ); if ( var_12.classname == "script_brushmodel" ) var_12 disconnectpaths(); } } } heli_jump_fire_fail() { level endon( "vignette_ending_player_jumped_flag" ); common_scripts\utility::waittill_any( "weapon_fired", "grenade_fire" ); var_0 = [ level.ending_opfor_0, level.ending_opfor_1, level.ending_opfor_2, level.allies[0], level.allies[1] ]; level thread maps\_anim::anim_set_rate_single( level.ending_heli, "outro_pt1_heli", 1.4 ); level thread maps\_anim::anim_set_rate( var_0, "outro_pt1_breach", 1.4 ); } final_sequence_fail_condition() { level endon( "missionfailed" ); level endon( "vignette_ending_player_jumped_flag" ); wait 6.0; setdvar( "ui_deadquote", &"FLOOD_ENDING_JUMP_FAIL" ); level thread maps\_utility::missionfailedwrapper(); } ending_breach_ally() { var_0 = getnode( "ending_ally_0_node", "targetname" ); level.allies[0] forceteleport( var_0.origin, var_0.angles, 1024 ); var_0 = getnode( "ending_ally_1_node", "targetname" ); level.allies[1] forceteleport( var_0.origin, var_0.angles, 1024 ); level.allies[0] maps\_vignette_util::vignette_actor_ignore_everything(); level.allies[0].disableplayeradsloscheck = 1; level.allies[0] pushplayer( 1 ); level.allies[0] maps\_utility::disable_cqbwalk(); level.allies[0] maps\_utility::enable_heat_behavior(); level.allies[1] maps\_vignette_util::vignette_actor_ignore_everything(); level.allies[1].disableplayeradsloscheck = 1; level.allies[1] pushplayer( 1 ); level.allies[1] maps\_utility::disable_cqbwalk(); level.allies[1] maps\_utility::enable_heat_behavior(); wait 0.2; } ending_player_reach_final_sequence() { self endon( "weapon_fired" ); self endon( "grenade_fire" ); while ( 72 < distance( level.player.origin, level.ending_heli gettagorigin( "doorHinge_BB_mid" ) ) ) wait 0.05; common_scripts\utility::flag_set( "vignette_ending_player_jumped_flag" ); level.ending_opfor_0 thread maps\_utility::magic_bullet_shield(); level.ending_opfor_1 thread maps\_utility::magic_bullet_shield(); level.ending_opfor_2 thread maps\_utility::magic_bullet_shield(); } ending_player_land_on_heli_effects( var_0 ) { level.player playrumblelooponentity( "subtle_tank_rumble" ); wait 0.6; stopallrumbles(); level.player thread maps\flood_util::earthquake_w_fade( 0.16, 64 ); } ending_price_gets_capped( var_0 ) { level endon( "vignette_ending_qte_success" ); wait 8.5; playfxontag( level._effect["fx_usp_muzzle_flash"], level.enemy_gun, "tag_flash" ); magicbullet( "p226", level.enemy_gun gettagorigin( "tag_flash" ), ( 0, 0, 0 ) ); common_scripts\utility::flag_set( "vignette_ending_qte_failure" ); } ending_opfor_kill_pilot() { wait 1.0; level.ending_opfor_2 shoot( 1.0, level.ending_opfor_3.origin ); wait 0.2; level.ending_opfor_2 shoot( 1.0, level.ending_opfor_3.origin ); wait 0.2; level.ending_opfor_2 shoot( 1.0, level.ending_opfor_3.origin ); } ending_shake_effects() { level.player playrumblelooponentity( "subtle_tank_rumble" ); level.player thread maps\flood_util::earthquake_w_fade( 0.3, 64, 2.5 ); } ending_player_punch_enemy_rumble( var_0 ) { level.player playrumblelooponentity( "subtle_tank_rumble" ); wait 0.6; stopallrumbles(); } ending_player_fade( var_0 ) { } ending_player_slowmo_start( var_0 ) { level.player setclienttriggeraudiozone( "flood_exfil_02", 0.1 ); setslowmotion( 1.0, 0.25, 0.5 ); } ending_player_slowmo_end( var_0 ) { thread maps\flood_audio::sfx_exfil_slomo00(); setslowmotion( 0.25, 1.0, 0.05 ); thread maps\flood_audio::sfx_exfil_slomo01(); } ending_player_slowmo_boss_shot() { thread maps\flood_audio::sfx_boss_shot_begin(); wait 0.2; setslowmotion( 1.0, 0.15, 0.05 ); wait 0.25; thread maps\flood_audio::sfx_boss_shot_end(); setslowmotion( 0.15, 1.0, 0.5 ); } ending_player_broken_nose( var_0 ) { level.player dodamage( 70, level.player.origin, level.ending_hvt ); thread maps\flood_fx::ending_white_fade( 0.02, 0.1, 0.05 ); level.player shellshock( "flood_helicopter", 3.0 ); common_scripts\utility::waitframe(); playfxontag( common_scripts\utility::getfx( "flood_moving_cabin_dust" ), level.ending_heli, "tag_fx_015" ); common_scripts\utility::noself_delaycall( 0.2, ::setblur, 0.0, 3.0 ); level.player playrumblelooponentity( "subtle_tank_rumble" ); wait 0.6; stopallrumbles(); } ending_player_enemy_broken_nose( var_0 ) { level.ending_opfor_0 detach( level.ending_opfor_0.headmodel ); level.ending_opfor_0 attach( "head_venezuela_army_head_db" ); level.ending_opfor_0.headmodel = "head_venezuela_army_head_db"; ending_player_take_damage( var_0 ); } ending_player_take_damage( var_0 ) { level.player playrumbleonentity( "damage_heavy" ); } ending_player_failed_qte_0( var_0 ) { playfxontag( level._effect["fx_usp_muzzle_flash"], level.ending_gun, "tag_flash" ); magicbullet( "p226", level.ending_gun gettagorigin( "tag_flash" ), level.player geteye() ); level.player playrumbleonentity( "damage_heavy" ); setdvar( "ui_deadquote", "" ); level thread maps\_utility::missionfailedwrapper(); } ending_player_qte_0_logic() { self endon( "death" ); self endon( "qte_0_fail" ); self waittill( "qte_0_start" ); level thread ending_qte_0_prompt_logic(); while ( level.player attackbuttonpressed() ) wait 0.05; while ( !level.player attackbuttonpressed() ) wait 0.05; self playrumbleonentity( "heavygun_fire" ); playfxontag( level._effect["vfx_muz_pis_w"], level.ending_gun, "tag_flash" ); self playsound( "weap_p226_fire_plr" ); common_scripts\utility::flag_set( "vignette_ending_qte_success" ); } ending_qte_0_prompt_logic() { ending_create_qte_prompt( &"FLOOD_ENDING_QTE_0_PROMPT" ); wait 0.4; ending_fade_qte_prompt( 0.1, 1.0 ); common_scripts\utility::flag_wait_or_timeout( "vignette_ending_qte_success", 0.933 ); ending_fade_qte_prompt( 0.1, 0.0 ); ending_destroy_qte_prompt(); } ending_player_pickup_logic() { wait 1.55; ending_create_qte_prompt( &"FLOOD_ENDING_QTE_1_PROMPT", "hud_icon_p226" ); ending_fade_qte_prompt( 0.05, 1.0 ); level.can_still_save_price = 1; var_0 = 1; while ( level.can_still_save_price && var_0 ) { var_1 = 0; while ( self usebuttonpressed() ) { var_1 = var_1 + 0.05; wait 0.05; if ( 0.25 <= var_1 ) { var_0 = 0; break; } } wait 0.05; } ending_fade_qte_prompt( 0.05, 0.0 ); ending_destroy_qte_prompt(); if ( level.can_still_save_price ) common_scripts\utility::flag_set( "vignette_ending_qte_pickup_gun" ); } ending_player_qte_shoot_logic() { level.ending_hvt thread ending_player_qte_success_logic(); level.allies[0] thread ending_player_qte_failure_logic(); } ending_player_qte_success_logic() { level thread ending_player_flashout_heli_crash(); level endon( "hvt_dead" ); thread ending_hvt_handle_damage(); self waittill( "damage" ); common_scripts\utility::flag_set( "vignette_ending_qte_success" ); } ending_hvt_handle_damage() { self endon( "vignette_ending_crash_flag" ); thread ending_hvt_shot_blood_fx( "vignette_ending_crash_flag" ); self waittill( "damage", var_0, var_1, var_2, var_3 ); thread ending_player_slowmo_boss_shot(); } ending_hvt_shot_blood_fx( var_0 ) { level endon( var_0 ); for (;;) { self waittill( "damage", var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8 ); var_9 = common_scripts\utility::spawn_tag_origin(); var_9.origin = var_4; var_9.angles = var_3; var_9 linkto( self, var_8, ( 0, 0, 0 ), ( 0, 0, 0 ) ); playfxontag( level._effect["vfx_blood_impact_almagro"], var_9, "tag_origin" ); wait 0.05; } } ending_player_flashout_heli_crash() { common_scripts\utility::flag_wait( "vignette_ending_qte_success" ); wait 4.5; var_0 = maps\_hud_util::create_client_overlay( "black", 1, level.player ); var_0.foreground = 0; wait 0.1; var_0.alpha = 0; wait 0.13; var_0.alpha = 1; wait 0.05; var_0.alpha = 0; wait 0.08; var_0.alpha = 1; wait 0.03; var_0.alpha = 0; wait 0.35; var_0.alpha = 1; common_scripts\utility::flag_wait( "vignette_ending_scene_start" ); wait 5.75; level thread maps\flood_anim::ending_blur_logic(); var_0 fadeovertime( 5.0 ); var_0.alpha = 0; } ending_player_qte_failure_logic() { level endon( "vignette_ending_qte_success" ); self waittill( "damage", var_0, var_1 ); if ( var_1 == level.player && !common_scripts\utility::flag( "already_failing" ) ) { common_scripts\utility::flag_set( "already_failing" ); setdvar( "ui_deadquote", &"SCRIPT_MISSIONFAIL_KILLTEAM_AMERICAN" ); level thread maps\_utility::missionfailedwrapper(); } } ending_player_qte_reach_logic( var_0 ) { ending_create_qte_prompt( &"FLOOD_ENDING_QTE_2_PROMPT" ); level.player thread ending_player_qte_button_smash_logic(); level.player thread ending_player_qte_show_and_blink_logic(); wait 1.5; for ( var_1 = 1; !common_scripts\utility::flag( "vignette_ending_qte_grabbed" ); level.player.button_smash_count = 0 ) { wait 0.25; if ( var_1 > level.player.button_smash_count ) { common_scripts\utility::flag_set( "smash_rate_bad" ); continue; } common_scripts\utility::flag_clear( "smash_rate_bad" ); } } ending_player_fov_change() { var_0 = getdvarint( "cg_fov" ); var_1 = var_0; while ( !common_scripts\utility::flag( "vignette_ending_qte_grabbed" ) ) { wait 1.0; var_1 = var_1 - 2; if ( !common_scripts\utility::flag( "smash_rate_bad" ) ) self lerpfov( var_1, 1.0 ); } self lerpfov( var_0, 2.5 ); } ending_player_qte_button_smash_logic() { self.button_smash_count = 0; while ( !common_scripts\utility::flag( "vignette_ending_qte_grabbed" ) ) { while ( !level.player usebuttonpressed() ) wait 0.05; self.button_smash_count++; while ( level.player usebuttonpressed() ) wait 0.05; } } ending_player_qte_show_and_blink_logic() { common_scripts\utility::flag_wait( "smash_rate_bad" ); level thread ending_fade_qte_prompt( 0.2, 1.0 ); common_scripts\utility::flag_wait( "qte_prompt_solid" ); level thread ending_blink_qte_prompt(); common_scripts\utility::flag_wait( "vignette_ending_qte_grabbed" ); common_scripts\utility::flag_wait( "qte_prompt_solid" ); level notify( "stop_blink" ); level thread ending_fade_qte_prompt( 0.2, 0.0 ); } ending_player_let_go_interaction( var_0 ) { level endon( "ending_player_failed" ); if ( isdefined( level.console ) && level.console ) ending_create_qte_prompt( &"FLOOD_ENDING_QTE_4B_PROMPT_TEXT" ); else ending_create_qte_prompt( &"FLOOD_ENDING_QTE_4_PROMPT_TEXT" ); level thread ending_fade_qte_prompt( 0.2, 1.0 ); common_scripts\utility::flag_wait( "qte_prompt_solid" ); if ( isdefined( level.console ) && level.console ) { while ( !level.player buttonpressed( "BUTTON_B" ) ) common_scripts\utility::waitframe(); } else { while ( !level.player meleebuttonpressed() ) common_scripts\utility::waitframe(); } level thread ending_fade_qte_prompt( 0.2, 0.0 ); common_scripts\utility::flag_set( "ending_let_go" ); thread maps\flood_audio::sfx_let_go(); } ending_let_go_scene_player_experience() { wait 5.0; level.player playrumblelooponentity( "subtle_tank_rumble" ); wait 4.0; stopallrumbles(); level.player thread maps\flood_util::earthquake_w_fade( 0.2, 2, 1, 1 ); level.player playrumbleonentity( "damage_light" ); level.player playrumblelooponentity( "subtle_tank_rumble" ); wait 2.0; stopallrumbles(); level.player thread maps\flood_util::earthquake_w_fade( 0.25, 3, 1, 1 ); level.player playrumbleonentity( "damage_heavy" ); level.player playrumblelooponentity( "steady_rumble" ); wait 2.0; stopallrumbles(); level.player thread maps\flood_util::earthquake_w_fade( 0.3, 64, 1 ); level.player playrumbleonentity( "heavy_2s" ); level.player playrumblelooponentity( "steady_rumble" ); } ending_create_qte_prompt( var_0, var_1 ) { if ( !isdefined( var_0 ) ) var_0 = &"FLOOD_ENDING_QTE_0_PROMPT"; var_2 = 90; var_3 = 35; var_4 = 2; var_5 = -5; var_6 = 90; var_7 = []; if ( var_0 == &"FLOOD_ENDING_QTE_1_PROMPT" ) { var_3 = -3; var_2 = 70; var_4 = 1.5; var_5 = 3; var_6 = 95; } else if ( var_0 == &"FLOOD_ENDING_QTE_3_PROMPT" || var_0 == &"FLOOD_ENDING_QTE_3_PROMPT_PC" || var_0 == &"FLOOD_ENDING_QTE_3_PROMPT_TOGGLE" || var_0 == &"FLOOD_ENDING_QTE_3_PROMPT_TOGGLEADS_THROW" ) var_2 = getdvarfloat( "foo" ); var_8 = level.player maps\_hud_util::createclientfontstring( "default", var_4 ); var_8.x = var_3 * -1; var_8.y = var_2; var_8.horzalign = "right"; var_8.alignx = "right"; var_8.alignx = "center"; var_8.aligny = "middle"; var_8.horzalign = "center"; var_8.vertalign = "middle"; var_8.hidewhendead = 1; var_8.hidewheninmenu = 1; var_8.sort = 205; var_8.foreground = 1; var_8.alpha = 0; var_8 settext( var_0 ); var_7["text"] = var_8; if ( isdefined( var_1 ) ) { var_9 = maps\_hud_util::createicon( var_1, 64, 32 ); var_9.x = var_5; var_9.y = var_6; var_9.alignx = "center"; var_9.aligny = "middle"; var_9.horzalign = "center"; var_9.vertalign = "middle"; var_9.hidewhendead = 1; var_9.hidewheninmenu = 1; var_9.sort = 205; var_9.foreground = 1; var_9.alpha = 0; var_7["icon"] = var_9; } if ( var_0 == &"FLOOD_ENDING_QTE_2_PROMPT" ) { var_8 = level.player maps\_hud_util::createclientfontstring( "default", var_4 ); var_8.x = var_3 * -1 + 24; var_8.y = var_2 - 2; var_8.horzalign = "right"; var_8.alignx = "left"; var_8.aligny = "middle"; var_8.horzalign = "center"; var_8.vertalign = "middle"; var_8.hidewhendead = 1; var_8.hidewheninmenu = 1; var_8.sort = 205; var_8.foreground = 1; var_8.alpha = 0; var_8 settext( &"FLOOD_ENDING_QTE_2_PROMPT_TEXT" ); var_7["text_2"] = var_8; } level.ending_qte_prompt = var_7; } ending_destroy_qte_prompt() { if ( !isdefined( level.ending_qte_prompt ) ) { } level notify( "stop_blink" ); foreach ( var_1 in level.ending_qte_prompt ) var_1 destroy(); level.ending_qte_prompt = undefined; } ending_fade_qte_prompt( var_0, var_1 ) { if ( !isdefined( level.ending_qte_prompt ) ) return; if ( !isdefined( var_0 ) ) var_0 = 1.5; foreach ( var_3 in level.ending_qte_prompt ) { var_3 fadeovertime( var_0 ); var_3.alpha = var_1; } if ( var_1 > 0.75 ) { wait( var_0 ); common_scripts\utility::flag_set( "qte_prompt_solid" ); } else { wait( var_0 ); common_scripts\utility::flag_clear( "qte_prompt_solid" ); } } ending_blink_qte_prompt() { level endon( "stop_blink" ); if ( !isdefined( level.ending_qte_prompt ) ) return; var_0 = level.ending_qte_prompt["text"]; for (;;) { var_0 fadeovertime( 0.01 ); var_0.alpha = 1.0; var_0 changefontscaleovertime( 0.01 ); var_0.fontscale = 2; wait 0.1; common_scripts\utility::flag_set( "qte_prompt_solid" ); var_0 fadeovertime( 0.1 ); var_0.alpha = 0.0; var_0 changefontscaleovertime( 0.1 ); var_0.fontscale = 0.25; wait 0.2; common_scripts\utility::flag_clear( "qte_prompt_solid" ); } } ending_player_camera_logic() { var_0 = 20; self enableslowaim( 0.25, 0.325 ); self playerlinktoblend( level.ending_arms, "tag_player", 0.3, 0.1, 0.1 ); wait 0.3; self playerlinktodelta( level.ending_arms, "tag_player", 1.0, 0, 0, 0, 0, 1 ); self lerpviewangleclamp( 0.5, 0.1, 0.1, var_0, var_0, var_0, var_0 ); common_scripts\utility::flag_wait( "vignette_ending_qte_success" ); self lerpviewangleclamp( 0.25, 0.4, 0.5, 0, 0, 0, 0 ); level.ending_heli waittill( "outro_pt1_garcia_punch" ); self playerlinktodelta( level.ending_arms, "tag_player", 0.92, 0, 0, 0, 0, 1 ); self lerpviewangleclamp( 0.5, 0.1, 0.1, var_0, var_0, var_0, var_0 ); common_scripts\utility::flag_wait( "vignette_ending_qte_pickup_gun" ); self playerlinktodelta( level.ending_arms, "tag_player", 1, 0, 0, 0, 0, 1 ); self lerpviewangleclamp( 0.5, 0.1, 0.1, var_0, var_0, var_0, var_0 ); common_scripts\utility::flag_wait( "ending_vo_pt2_start" ); self playerlinktodelta( level.ending_arms, "tag_player", 0.92, 0, 0, 0, 0, 1 ); self springcamenabled( 1.0, 3.2, 1.6 ); self lerpviewangleclamp( 0.5, 0.1, 0.1, var_0, var_0, var_0, var_0 ); } ending_player_weapon_logic() { var_0 = self getweaponslistall(); foreach ( var_2 in var_0 ) self takeweapon( var_2 ); self giveweapon( "p226_flood_ending" ); self switchtoweapon( "p226_flood_ending" ); common_scripts\utility::flag_wait( "vignette_ending_qte_success" ); common_scripts\utility::flag_waitopen( "vignette_ending_qte_success" ); thread ending_player_pickup_logic(); common_scripts\utility::flag_wait( "vignette_ending_qte_pickup_gun" ); var_4 = "outro_pt1_garcia_kill_pt2"; level.ending_heli thread maps\_anim::anim_single( maps\_utility::make_array( level.ending_arms ), var_4, "tag_origin" ); level.ending_heli waittill( var_4 ); level.ending_gun hide(); self showviewmodel(); self enableweapons(); thread ending_player_qte_shoot_logic(); } ending_qte_catch( var_0 ) { self endon( "death" ); thread ending_qte_catch_prompt( var_0 ); level.outro_node endon( var_0 ); common_scripts\utility::flag_wait( "ending_qte_catch_active" ); wait 0.05; while ( !self adsbuttonpressed() || !self attackbuttonpressed() ) wait 0.05; common_scripts\utility::flag_set( "vignette_ending_qte_success" ); } ending_qte_catch_prompt( var_0 ) { var_1 = &"FLOOD_ENDING_QTE_3_PROMPT"; if ( maps\flood_util::game_is_pc() ) { maps\flood_util::registeractionbinding( "ADS", "+speed_throw", &"FLOOD_ENDING_QTE_3_PROMPT_PC" ); maps\flood_util::registeractionbinding( "ADS", "+toggleads", &"FLOOD_ENDING_QTE_3_PROMPT_TOGGLE" ); maps\flood_util::registeractionbinding( "ADS", "+toggleads_throw", &"FLOOD_ENDING_QTE_3_PROMPT_TOGGLEADS_THROW" ); var_2 = maps\flood_util::getactionbind( "ADS" ); var_1 = var_2.hint; } common_scripts\utility::flag_wait( "ending_qte_catch_active" ); ending_create_qte_prompt( var_1 ); level thread ending_fade_qte_prompt( 0.1, 1.0 ); level.ending_qte_prompt["text"] thread ending_qte_catch_pulse(); ending_qte_catch_wait( var_0 ); ending_fade_qte_prompt( 0.1, 0.0 ); ending_destroy_qte_prompt(); } ending_qte_catch_pulse() { self endon( "death" ); var_0 = 0.15; var_1 = 0.3; wait 0.1; for (;;) { self fadeovertime( var_0 ); self.alpha = 0.4; wait( var_0 ); self fadeovertime( var_0 ); self.alpha = 1.0; wait( var_0 ); wait( var_1 ); } } ending_qte_catch_wait( var_0 ) { level endon( "vignette_ending_qte_success" ); level.outro_node waittill( var_0 ); } ending_qte_reach() { self endon( "death" ); level.outro_node endon( "outro_pt2_save_vargas" ); level.outro_node endon( "outro_pt2_save_vargas_win_01" ); common_scripts\utility::flag_wait( "ending_qte_reach_active" ); ending_create_qte_prompt( &"FLOOD_ENDING_QTE_2_PROMPT" ); wait 0.4; ending_fade_qte_prompt( 0.1, 1.0 ); for (;;) { if ( self usebuttonpressed() ) break; wait 0.05; } common_scripts\utility::flag_set( "vignette_ending_qte_success" ); ending_fade_qte_prompt( 0.1, 0.0 ); ending_destroy_qte_prompt(); thread ending_qte_reach(); } ending_lower_raise_weapon_logic() { level endon( "vignette_ending_player_jumped_flag" ); var_0 = getent( "ending_lower_weapon", "targetname" ); var_0 waittill( "trigger" ); self disableweapons(); var_0 = getent( "ending_raise_weapon", "targetname" ); var_0 waittill( "trigger" ); self enableweapons(); } ending_transition() { level endon( "player_entering_final_area" ); level.player endon( "death" ); common_scripts\utility::flag_set( "rooftops_done" ); thread ending_heli_callout_vo(); thread ending_open_doors(); thread ending_vo_main(); var_0 = 0; for (;;) { var_1 = getaiarray( "axis" ); if ( 0 >= var_1.size ) break; if ( 3 > var_1.size && !var_0 ) { foreach ( var_3 in var_1 ) var_3.attackeraccuracy = 25; maps\_utility::activate_trigger_with_targetname( "ending_heli_path" ); var_0 = 1; } wait 0.05; } ending_wait_for_vo_window(); level.allies[1] maps\_utility::smart_dialogue( "flood_vrg_wegottagetthrough" ); common_scripts\utility::flag_set( "garage_done" ); maps\_utility::battlechatter_off( "allies" ); maps\_utility::battlechatter_off( "axis" ); level.allies[0] maps\_utility::disable_cqbwalk(); level.allies[1] maps\_utility::disable_cqbwalk(); level.allies[2] maps\_utility::disable_cqbwalk(); common_scripts\utility::flag_wait( "ending_vo_push_forward" ); if ( !common_scripts\utility::flag( "ending_vo_1" ) ) { common_scripts\utility::flag_wait( "ending_vo_approach" ); level.allies[0] maps\_utility::smart_dialogue( "flood_pri_eliasvargasyourewith" ); level.allies[0] maps\_utility::smart_dialogue( "flood_pri_merrickcheckforsurvivors" ); } } ending_wait_for_vo_window() { for (;;) { if ( isdefined( level.ending_vo_heli_time ) ) { if ( 200 < gettime() - level.ending_vo_heli_time ) break; } wait 0.2; } } ending_vo_main() { common_scripts\utility::flag_clear( "rooftops_vo_push_forward_hassle" ); common_scripts\utility::flag_wait( "ending_vo_1" ); if ( !common_scripts\utility::flag( "garage_done" ) ) level.allies[0] thread maps\_utility::smart_dialogue( "flood_pri_wegottoget" ); if ( !common_scripts\utility::flag( "rooftops_vo_push_forward_hassle" ) ) { level.allies[0] thread maps\flood_util::nag_end_on_notify( maps\_utility::make_array( "flood_pri_eliasgetthedoor", "flood_pri_openthedoorwell", "flood_pri_weregonnalosegarcia" ), "flag_set", 1 ); common_scripts\utility::flag_wait( "rooftops_vo_push_forward_hassle" ); level.allies[0] notify( "flag_set" ); } common_scripts\utility::flag_wait( "ending_vo_2" ); level.allies[0] thread maps\_utility::smart_dialogue( "flood_pri_jump" ); common_scripts\utility::flag_wait( "ending_vo_3" ); wait 0.2; level.allies[0] thread maps\_utility::smart_dialogue( "flood_pri_getgarcia" ); common_scripts\utility::flag_wait( "ending_vo_pt2_start" ); wait 1.4; level.allies[1] maps\_utility::smart_dialogue( "flood_mrk_everyonegood" ); level waittill( "ending_player_success" ); if ( common_scripts\utility::flag( "ending_let_go" ) ) { wait 3.5; thread flood_ending_fadeout(); wait 2.0; maps\_utility::smart_radio_dialogue( "flood_hsh_sowhatdidyou" ); wait 1.75; maps\_utility::smart_radio_dialogue( "flood_els_imadethehardest" ); wait 2.0; common_scripts\utility::flag_set( "ending_done" ); } } ending_rush_vo() { wait 0.15; level.allies[0] thread maps\_utility::smart_dialogue( "flood_rke_ruuuuun" ); } flood_ending_fadeout() { var_0 = maps\_hud_util::create_client_overlay( "black", 0, level.player ); var_0.foreground = 0; var_0 fadeovertime( 3.0 ); var_0.alpha = 1; wait 2.0; } ending_heli_callout_vo() { maps\_utility::wait_for_targetname_trigger( "ending_heli_path" ); var_0 = getent( "ending_heli_path_veh", "targetname" ); level.ending_heli_path = maps\_vehicle::vehicle_spawn( var_0 ); level.ending_heli_path maps\_vehicle::godon(); level.ending_heli_path thread maps\_vehicle::gopath(); level.ending_heli_path vehicle_turnengineoff(); level.ending_heli_path thread maps\flood_audio::sfx_heli_final_passby(); wait 2.0; level.allies[2] maps\_utility::smart_dialogue( "flood_mrk_heloinbound" ); wait 1.0; level.allies[0] maps\_utility::smart_dialogue( "flood_pri_theyrepickingupgarcia" ); level.ending_vo_heli_time = gettime(); common_scripts\utility::flag_wait( "player_entering_final_area" ); if ( isdefined( level.ending_heli_path ) ) level.ending_heli_path delete(); } ending_open_doors() { maps\flood_anim::setup_enemies_open_gate(); maps\flood_util::waittill_enemy_count_or_trigger( 2, "ending_heli_path" ); maps\flood_anim::enemies_open_gate(); } ending_swing_doors_open() { var_0 = getentarray( "garage_door_l", "targetname" ); var_1 = getentarray( "garage_door_r", "targetname" ); var_2 = 0.3; foreach ( var_4 in var_0 ) { if ( var_4.classname == "script_brushmodel" ) var_4 connectpaths(); } foreach ( var_4 in var_1 ) { if ( var_4.classname == "script_brushmodel" ) var_4 connectpaths(); } getnode( "ending_trouble_node", "targetname" ) disconnectnode(); } ending_temp_ignore() { self endon( "death" ); self.ignoreall = 1; common_scripts\utility::flag_wait( "ending_gate_open" ); self setgoalvolumeauto( getent( "ending_golvolume", "targetname" ) ); wait 1.2; self.ignoreall = 0; } ending_remove_gate_keepers() { self endon( "death" ); common_scripts\utility::flag_wait( "vignette_ending_doorbreach_flag" ); self delete(); }