/******************************************************************* * Decompiled By: Bog * Decompiled File: finale_code.gsc * Game: Call of Duty: Advanced Warfare * Platform: PC * Function Count: 139 * Decompile Time: 2088 ms * Timestamp: 4/22/2024 2:29:09 AM *******************************************************************/ //Function Number: 1 finale_intro_screen() { level.intro_offset = -1; soundscripts\_snd::snd_message("start_intro"); var_00 = 8; setsaveddvar("cg_cinematicfullscreen","1"); level.player disableweapons(); level.player freezecontrols(1); level.player takeallweapons(); thread maps\_shg_utility::play_chyron_video("chyron_text_finale",14,2); common_scripts\utility::flag_wait("chyron_video_done"); common_scripts\utility::flag_set("flag_chyron_finale_complete"); common_scripts\utility::flag_wait("flag_dialogue_intro_black_complete"); level.player maps\finale_utility::mech_enable(undefined,1); level.player enableweapons(); common_scripts\utility::flag_set("flag_intro_screen_complete"); common_scripts\utility::flag_set("flag_canal_combat_start"); } //Function Number: 2 spawn_function() { maps\_utility::array_spawn_function_noteworthy("enemy_flyin_01",::ai_canal_combat_01_accuracy_think); maps\_utility::array_spawn_function_noteworthy("enemy_flyin_bridge_01",::ai_canal_combat_02_accuracy_think); maps\_utility::array_spawn_function_noteworthy("enemy_flyin_bridge_02",::ai_canal_combat_03_accuracy_think); maps\_utility::array_spawn_function_noteworthy("enemy_flyin_04",::ai_canal_combat_04_accuracy_think); maps\_utility::array_spawn_function_noteworthy("enemy_flyin_05",::ai_canal_combat_05_accuracy_think); maps\_utility::array_spawn_function_noteworthy("ai_silo_entrance",::ai_silo_think); maps\_utility::array_spawn_function_noteworthy("ai_silo_floor_01",::ai_silo_think); maps\_utility::array_spawn_function_noteworthy("ai_silo_floor_01_balcony",::ai_silo_floor_01_balcony); maps\_utility::array_spawn_function_noteworthy("ai_silo_floor_01_wave_2",::ai_silo_floor_01_wave_2_think); maps\_utility::array_spawn_function_noteworthy("ai_silo_floor_02",::ai_silo_floor_01_wave_3_think); maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_01",::maps\finale_utility::follow_volume_think); maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_01_b",::maps\finale_utility::follow_volume_think); maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_01_flood",::maps\finale_utility::follow_volume_think); maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_02",::maps\finale_utility::follow_volume_think); maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_03",::maps\finale_utility::follow_volume_think); maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_03_flood",::maps\finale_utility::follow_volume_think); maps\_utility::array_spawn_function_noteworthy("enemy_lobby",::ai_lobby_think); maps\_utility::array_spawn_function_noteworthy("rpg_vehicle",::maps\finale_utility::postspawn_rpg_vehicle); maps\_utility::array_spawn_function_noteworthy("mech_silo",::mech_behavior_init); maps\_utility::array_spawn_function_noteworthy("boat_canal",::boat_death_think); maps\_utility::add_global_spawn_function("axis",::tweak_enemy_hp); createthreatbiasgroup("enemy_canal"); createthreatbiasgroup("enemy_silo"); createthreatbiasgroup("player"); } //Function Number: 3 setup_combat() { spawn_function(); level.player thread threat_bias_canal_think(); level.player thread threat_bias_silo_think(); thread canal_chase_boats(); thread combat_canal_01(); thread combat_flyin_bridge(); thread combat_silo(); thread combat_silo_mech(); thread combat_silo_boost(); } //Function Number: 4 setup_se() { thread intro_flyin(); } //Function Number: 5 tweak_enemy_hp() { if(issubstr(self.classname,"elite")) { self.health = 650; } if(issubstr(self.classname,"mech")) { self.health = 7000; } } //Function Number: 6 player_mech_melee_modifier() { if(issubstr(self.classname,"mech")) { return; } maps\_utility::add_damage_function(::player_mech_melee_modifier_damage_function); } //Function Number: 7 player_mech_melee_modifier_damage_function(param_00,param_01,param_02,param_03,param_04,param_05,param_06) { if((param_04 == "MOD_MELEE" || param_04 == "MOD_MELEE_ALT") && isplayer(param_01)) { self dodamage(self.health + 1000,param_01 geteye(),param_01,param_01,"MOD_MELEE_ALT"); } } //Function Number: 8 ai_silo_think() { self endon("death"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_entrance","targetname")); common_scripts\utility::flag_wait("flag_combat_silo_entrance_retreat"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_room_01","targetname")); common_scripts\utility::flag_wait("flag_combat_silo_floor_01_ware_02"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_room_01_wave_2","targetname")); common_scripts\utility::flag_wait("flag_combat_silo"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_room_01","targetname")); maps\finale_utility::spawn_metrics_waittill_count_reaches(2,["ai_silo_floor_01"],1); common_scripts\utility::flag_set("flag_ai_silo_floor_01_end"); common_scripts\utility::flag_set("flag_combat_silo_floor_02"); self cleargoalvolume(); maps\_utility::player_seek(); } //Function Number: 9 ai_silo_floor_01_balcony() { self endon("death"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_room_01_balcony","targetname")); maps\finale_utility::spawn_metrics_waittill_count_reaches(6,["ai_silo_floor_01_wave_2","ai_silo_floor_01","ai_silo_floor_01_balcony"],1); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_room_02","targetname")); common_scripts\utility::flag_wait("flag_combat_silo_floor_02_retreat"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_room_02_retreat","targetname")); } //Function Number: 10 ai_silo_floor_01_wave_2_think() { self endon("death"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_room_01_wave_2","targetname")); maps\finale_utility::spawn_metrics_waittill_count_reaches(2,["ai_silo_floor_01_wave_2","ai_silo_floor_01"],1); common_scripts\utility::flag_set("flag_ai_silo_floor_01_end"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_room_02","targetname")); common_scripts\utility::flag_wait("flag_combat_silo_floor_02_retreat"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_room_02_retreat","targetname")); } //Function Number: 11 ai_silo_floor_01_wave_3_think() { self endon("death"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_room_02","targetname")); common_scripts\utility::flag_wait("flag_combat_silo_floor_02_retreat"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_silo_room_02_retreat","targetname")); } //Function Number: 12 ai_lobby_think() { self endon("death"); maps\_utility::set_baseaccuracy(0.01); common_scripts\utility::flag_wait("flag_lobby_player_can_shoot"); wait(1); self.health = 40; maps\_utility::disable_long_death(); maps\_utility::set_baseaccuracy(0.5); maps\finale_utility::disable_grenades(); common_scripts\utility::flag_wait("flag_lobby_seek_player"); self cleargoalvolume(); maps\_utility::player_seek(); } //Function Number: 13 mech_behavior_init() { self endon("death"); if(!isdefined(self)) { return; } self.paindamagestart = 300; self.paindamagemin = 150; thread badplace_on_entity(195,100,"allies"); maps\_utility::ent_flag_init("mech_should_attack_player"); for(;;) { var_00 = mech_get_closest_node(); if(isdefined(var_00)) { var_00.mech_using_this_node = self; maps\_mech::mech_set_goal_node(var_00); } maps\_utility::ent_flag_wait("mech_should_attack_player"); thread maps\_mech::mech_rocket_launcher_behavior(); maps\_utility::ent_flag_waitopen("mech_should_attack_player"); maps\_mech::mech_stop_rockets(); } } //Function Number: 14 badplace_on_entity(param_00,param_01,param_02) { self endon("death"); var_03 = 0.5; for(;;) { badplace_cylinder("",var_03,self.origin,param_00,param_01,param_02); wait(var_03); } } //Function Number: 15 mech_get_closest_node() { var_00 = getnodearray("node_mech","script_noteworthy"); var_01 = undefined; var_02 = undefined; foreach(var_04 in var_00) { if(isalive(var_04.mech_using_this_node)) { continue; } var_05 = distancesquared(self.origin,var_04.origin); if(!isdefined(var_01) || var_05 < var_02) { var_01 = var_04; var_02 = var_05; } } return var_01; } //Function Number: 16 combat_silo() { common_scripts\utility::flag_wait("flag_combat_silo_entrance"); thread maps\_utility::autosave_now(); level.player thread maps\finale_utility::mech_glass_damage_think("flag_obj_escape"); level.gideon thread maps\finale_utility::mech_glass_damage_think("flag_obj_escape"); level.gideon maps\_mech::mech_start_rockets(512,undefined,undefined,undefined,83.33334,undefined,undefined); soundscripts\_snd::snd_message("start_silo_approach"); var_00 = getentarray("ai_silo_entrance","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_combat_silo"); var_00 = getentarray("ai_silo_floor_01","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_combat_silo_floor_01_ware_02"); var_00 = getentarray("ai_silo_floor_01_balcony","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } var_00 = getentarray("ai_silo_floor_01_wave_2","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_combat_silo_floor_02"); var_00 = getentarray("ai_silo_floor_02","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_combat_silo_floor_02_retreat"); var_00 = getentarray("ai_silo_floor_02_wave_02","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } } //Function Number: 17 combat_silo_mech() { common_scripts\utility::flag_wait_all("flag_silo_watwalks_open","flag_lower_missile_loader"); wait(6); var_00 = getentarray("mech_silo","script_noteworthy"); thread control_mech_attacks(); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } thread maps\finale_utility::combat_silo_seeker_ai(); } //Function Number: 18 control_mech_attacks() { var_00 = 1; level.player.mechs_attacking_me = []; for(;;) { wait(5); var_01 = []; foreach(var_03 in getentarray("mech_silo","script_noteworthy")) { if(!var_03 maps\_utility::ent_flag_exist("mech_should_attack_player")) { continue; } if(!isdefined(var_03.enemy) || var_03.enemy != level.player) { continue; } var_01[var_01.size] = var_03; var_03 maps\_utility::ent_flag_clear("mech_should_attack_player"); } var_01 = sortbydistance(var_01,level.player.origin); for(var_05 = 0;var_05 < var_01.size && var_05 < var_00;var_05++) { var_01[var_05] maps\_utility::ent_flag_set("mech_should_attack_player"); } } } //Function Number: 19 combat_silo_boost() { common_scripts\utility::flag_wait("flag_missile_move_start"); var_00 = getentarray("enemy_boost_silo_01","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_silo_combat_01_b"); var_00 = getentarray("enemy_boost_silo_01_b","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } var_00 = getentarray("enemy_boost_silo_01_flood","script_noteworthy"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } common_scripts\utility::flag_wait_any("flag_silo_combat_02","flag_kill_spawners_silo_01"); maps\finale_utility::delete_spawners("enemy_boost_silo_01_flood"); common_scripts\utility::flag_wait("flag_silo_combat_02"); var_00 = getentarray("enemy_boost_silo_02","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_silo_combat_03"); var_00 = getentarray("enemy_boost_silo_03","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } var_00 = getentarray("enemy_boost_silo_03_flood","script_noteworthy"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } common_scripts\utility::flag_wait("flag_silo_combat_stop"); thread combat_silo_complete(); maps\finale_utility::delete_spawners("enemy_boost_silo_03_flood"); } //Function Number: 20 combat_silo_complete() { var_00 = ["mech_silo","enemy_boost_silo_01","enemy_boost_silo_01_b","enemy_boost_silo_01_flood","enemy_boost_silo_02","enemy_boost_silo_03","enemy_boost_silo_03_flood"]; maps\finale_utility::spawn_metrics_waittill_count_reaches(0,[var_00],1); common_scripts\utility::flag_set("flag_silo_combat_complete"); } //Function Number: 21 combat_lobby() { common_scripts\utility::flag_wait("flag_lobby_combat_start"); var_00 = getentarray("enemy_lobby","script_noteworthy"); if(var_00.size > 0) { foreach(var_02 in var_00) { var_02.script_forcespawn = 1; } maps\_spawner::flood_spawner_scripted(var_00); } maps\finale_utility::spawn_metrics_waittill_deaths_reach(4,["enemy_lobby"],1); common_scripts\utility::flag_set("flag_lobby_seek_player"); maps\finale_utility::spawn_metrics_waittill_deaths_reach(6,["enemy_lobby"],1); maps\finale_utility::delete_spawners("enemy_lobby"); common_scripts\utility::flag_set("flag_lobby_clear"); } //Function Number: 22 intro_flyin() { if(!common_scripts\utility::flag("flag_intro_screen_complete")) { thread finale_intro_screen(); } common_scripts\utility::flag_wait("flag_intro_flyin_start"); common_scripts\utility::flag_wait("flag_intro_screen_complete"); common_scripts\utility::flag_set("flag_se_intro_flyin_start"); thread maps\_utility::autosave_now(); level.littlebird_player = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("littlebird_player"); level.littlebird_player maps\_vehicle::godon(); var_00 = getent("org_player_attach","targetname"); var_00.angles = level.littlebird_player.angles; var_00 linkto(level.littlebird_player); var_01 = maps\_utility::spawn_anim_model("world_body_mech"); var_01.angles = var_00.angles; var_01.origin = var_00.origin; var_01 linkto(level.littlebird_player); var_01 hide(); level.player.player_rig_heli = var_01; thread se_intro_flyin_gideon(); thread intro_player(level.littlebird_player,var_01); thread intro_bobbing_boats(); thread se_intro_ambient_warbirds(); thread se_intro_ambient_jets(); thread se_intro_missiles(); thread flyin_handle_steady_rumble(); } //Function Number: 23 intro_player(param_00,param_01) { level.player playerlinkto(param_01,"tag_player",1,20,20,20,20,0); level.player.drivingvehicle = param_00; var_02 = getanimlength(param_01 maps\_utility::getanim("intro_flyin")); param_01 setanim(param_01 maps\_utility::getanim("intro_flyin"),1,0,1); wait(var_02); level.player playerlinkto(param_01,"tag_player",0.2,90,90,25,40,0); common_scripts\utility::flag_wait("flag_intro_flyin_release"); soundscripts\_snd::snd_message("start_canal"); } //Function Number: 24 threat_bias_canal_think() { self setthreatbiasgroup("player"); setthreatbias("player","enemy_canal",5000); } //Function Number: 25 threat_bias_silo_think() { self setthreatbiasgroup("player"); setthreatbias("player","enemy_silo",7000); } //Function Number: 26 se_intro_flyin_gideon() { common_scripts\utility::flag_wait("flag_se_intro_flyin_start"); var_00 = getent("org_intro_flying","targetname"); level.littlebird_gideon = maps\_vehicle::spawn_vehicle_from_targetname("littlebird_gideon"); level.littlebird_gideon maps\_vehicle::godon(); level.littlebird_gideon.animname = "helo_intro_gideon"; level.gideon setmodel("npc_exo_armor_bigfin"); var_01 = [level.littlebird_gideon,level.gideon]; thread player_helo_release(var_00); thread gideon_helo_release(var_00,var_01); level.gideon thread maps\finale_heli_custom_aim::start_heli_custom_aim("kill_start_heli_custom_aim"); soundscripts\_snd::snd_message("fin_flyin_start"); thread rope_link(level.littlebird_gideon,"ropeAttach_KL",level.gideon,"J2_exoShoulder_L"); thread rope_link(level.littlebird_gideon,"ropeAttach_KR",level.gideon,"J2_exoShoulder_R"); thread rope_link(level.littlebird_gideon,"ropeAttach_KM",level.gideon,"J_plate_TKR"); var_00 maps\_anim::anim_single(var_01,"intro_flyin"); if(!common_scripts\utility::flag("flag_intro_flyin_release")) { var_00 thread maps\_anim::anim_loop(var_01,"intro_flyin_idle","ender"); } } //Function Number: 27 flyin_handle_steady_rumble() { level.flyin_steady_rumble_intensity = 0.08; maps\finale_utility::set_level_player_rumble_ent_intensity(level.flyin_steady_rumble_intensity); level.player waittill("player_released_from_drone"); maps\finale_utility::set_level_player_rumble_ent_intensity(0); } //Function Number: 28 gideon_helo_release(param_00,param_01) { common_scripts\utility::flag_wait("flag_intro_flyin_release"); level.gideon notify("kill_start_heli_custom_aim"); wait(0.75); param_00 notify("ender"); level.littlebird_gideon maps\_utility::anim_stopanimscripted(); level.gideon maps\_utility::anim_stopanimscripted(); level.gideon common_scripts\utility::delaycall(2,::setmodel,"npc_exo_armor_base"); param_00 maps\_anim::anim_single(param_01,"intro_flyin_release"); var_02 = common_scripts\utility::getstruct("path_helo_intro_gideon_end","targetname"); level.littlebird_gideon thread maps\_utility::vehicle_dynamicpath(var_02,0); maps\_utility::activate_trigger_with_targetname("trig_color_canal_land"); } //Function Number: 29 intro_gideon(param_00,param_01) { level.gideon maps\_utility::teleport_to_ent_tag(param_01,"tag_origin"); level.gideon linkto(param_01,"tag_origin"); common_scripts\utility::flag_wait("flag_intro_flyin_release"); level.gideon unlink(); param_01 = getent("org_gideon_canal_floor","targetname"); var_02 = getent("clip_gideon_down_exhaust","targetname"); var_02.origin = level.gideon.origin; level.gideon linkto(var_02); var_02 moveto(param_01.origin,1.75,1.65,0.1); wait(1.75); level.gideon unlink(); } //Function Number: 30 intro_bobbing_boats() { var_00 = getentarray("civilian_yacht_01","targetname"); var_01 = getentarray("civilian_yacht_02","targetname"); var_02 = getentarray("civilian_yacht_03","targetname"); var_03 = getentarray("civilian_barge_01","targetname"); common_scripts\utility::array_thread(var_00,::maps\finale_utility::boat_bobbing_think); common_scripts\utility::array_thread(var_00,::maps\finale_fx::boat_small_static_foam); common_scripts\utility::array_thread(var_01,::maps\finale_utility::boat_bobbing_think); common_scripts\utility::array_thread(var_01,::maps\finale_fx::boat_small_static_foam); common_scripts\utility::array_thread(var_02,::maps\finale_utility::boat_bobbing_think); common_scripts\utility::array_thread(var_02,::maps\finale_fx::boat_small_static_foam); common_scripts\utility::array_thread(var_03,::maps\finale_utility::boat_bobbing_think); common_scripts\utility::array_thread(var_03,::maps\finale_fx::boat_large_static_foam); common_scripts\utility::flag_wait("flag_intro_flyin_release"); level notify("boat_scene_cleanup"); } //Function Number: 31 se_intro_missiles() { maps\_utility::delaythread(15,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_01"); maps\_utility::delaythread(27.6,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_02"); maps\_utility::delaythread(26.5,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_02b"); maps\_utility::delaythread(57.5,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_04"); maps\_utility::delaythread(57.5,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_04b"); maps\_utility::delaythread(57.5,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_04c"); } //Function Number: 32 se_intro_ambient_warbirds() { maps\_utility::delaythread(1,::maps\_vehicle::spawn_vehicles_from_targetname_and_drive,"warbird_flyby01"); maps\_utility::delaythread(9,::maps\_vehicle::spawn_vehicles_from_targetname_and_drive,"warbird_flyby03"); maps\_utility::delaythread(28,::maps\_vehicle::spawn_vehicles_from_targetname_and_drive,"warbird_flyby05"); maps\_utility::delaythread(80,::spawn_looping_ambient_vehicles,"warbird_flyby02"); } //Function Number: 33 se_intro_ambient_jets() { if(level.nextgen) { thread spawn_looping_ambient_vehicles("f15_01"); } maps\_vehicle::spawn_vehicles_from_targetname_and_drive("f15_03"); maps\_utility::delaythread(55,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"f15_06"); maps\_utility::delaythread(55,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"shrike_06"); maps\_utility::delaythread(75,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"f15_05"); maps\_utility::delaythread(75,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"shrike_05"); } //Function Number: 34 spawn_looping_ambient_vehicles(param_00) { common_scripts\utility::array_thread(getentarray(param_00,"targetname"),::spawn_looping_ambient_vehicle_single); } //Function Number: 35 spawn_looping_ambient_vehicle_single() { while(!common_scripts\utility::flag("flag_intro_flyin_release")) { var_00 = maps\_vehicle::spawn_vehicle_and_gopath(); var_00 waittill("death"); wait 0.05; } } //Function Number: 36 se_canal_breach() { thread gideon_goto_canal_breach(); var_00 = getent("org_canal_breach","targetname"); var_01 = maps\_utility::spawn_anim_model("world_body_mech"); var_01 hide(); var_02 = maps\_utility::spawn_anim_model("breach_bomb"); var_02.animname = "breach_bomb"; var_02 hide(); var_03 = [var_01,var_02]; var_00 thread maps\_anim::anim_first_frame(var_03,"canal_breach"); maps\_playermech_code::hide_mech_glass_static_overlay(var_01); var_04 = getent("trig_canal_breach","targetname"); var_05 = var_04 maps\_shg_utility::hint_button_trigger("x"); common_scripts\utility::flag_wait("flag_canal_breach_start"); if(level.currentgen) { common_scripts\utility::flag_set("load_middle_transient"); } var_04 sethintstring(""); var_05 maps\_shg_utility::hint_button_clear(); maps\_utility::activate_trigger_with_targetname("trig_color_canal_breach"); thread wall_canal_breach(); level.player freezecontrols(1); var_03 = [var_01,level.gideon,var_02]; var_06 = getdvarint("g_friendlyNameDist"); setsaveddvar("g_friendlyNameDist",0); var_07 = 0.5; level.player playerlinktoblend(var_01,"tag_player",var_07); wait(var_07); level.player maps\_playermech_code::mech_setup_player_for_scene(); var_01 show(); var_02 show(); var_00 maps\_anim::anim_single_run(var_03,"canal_breach"); common_scripts\utility::flag_set("flag_obj_enter_silo_complete"); common_scripts\utility::flag_set("flag_dialogue_canal_breach_complete"); level.player unlink(); var_01 delete(); var_02 delete(); level.player maps\_playermech_code::mech_setup_player_for_gameplay(); level.player freezecontrols(0); level.player setorigin(level.player.origin + (0,0,-12)); setsaveddvar("g_friendlyNameDist",var_06); } //Function Number: 37 gideon_goto_canal_breach() { common_scripts\utility::flag_wait("flag_gideon_approach_canal_breach"); var_00 = getnode("node_gideon_canal_breach","targetname"); level.gideon maps\_utility::disable_ai_color(); level.gideon maps\finale_utility::goto_node(var_00,1,64); level.gideon maps\_utility::enable_ai_color_dontmove(); common_scripts\utility::flag_set("flag_dialogue_gideon_canal_breach_ready"); } //Function Number: 38 wall_canal_breach() { var_00 = getent("brush_wall_canal_breach","targetname"); wait(9); var_00 connectpaths(); var_00 delete(); } //Function Number: 39 combat_canal_01() { common_scripts\utility::flag_wait("flag_canal_combat_start"); wait(15); var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("vrap_canal_01"); if(level.currentgen) { foreach(var_02 in var_00) { var_02 thread tff_cleanup_vehicle("intro"); } } var_04 = getentarray("enemy_flyin_01","script_noteworthy"); foreach(var_06 in var_04) { var_06 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_chase_boats_path_02"); maps\finale_utility::cleanup_ai_with_script_noteworthy("enemy_flyin_01",256); var_04 = getentarray("enemy_flyin_04","script_noteworthy"); foreach(var_06 in var_04) { var_06 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_canal_comabt_post_highway"); wait(3); var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("vrap_canal_03"); if(level.currentgen) { var_02 thread tff_cleanup_vehicle("intro"); } wait(2); var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("vrap_canal_04"); if(level.currentgen) { var_02 thread tff_cleanup_vehicle("intro"); } var_04 = getentarray("enemy_flyin_05","script_noteworthy"); foreach(var_06 in var_04) { var_06 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_canal_combat_end"); var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("vrap_canal_05"); if(level.currentgen) { foreach(var_02 in var_00) { var_02 thread tff_cleanup_vehicle("intro"); } } var_04 = getentarray("enemy_flyin_06","script_noteworthy"); foreach(var_06 in var_04) { var_06 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_intro_flyin_done"); maps\finale_utility::cleanup_ai_with_script_noteworthy("enemy_flyin_04",256); maps\finale_utility::cleanup_ai_with_script_noteworthy("enemy_flyin_05",256); common_scripts\utility::flag_wait("flag_intro_flyin_release"); wait(3); maps\finale_utility::cleanup_ai_with_script_noteworthy("enemy_flyin_06",256); } //Function Number: 40 combat_flyin_bridge() { common_scripts\utility::flag_wait("flag_combat_flyin_bridge_01"); var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("vrap_canal_02"); var_01 = []; foreach(var_03 in var_00) { var_01 = common_scripts\utility::array_combine(var_01,var_03.riders); } if(level.currentgen) { foreach(var_03 in var_00) { var_03 thread tff_cleanup_vehicle("intro"); } } wait(3); var_07 = getentarray("enemy_flyin_bridge_01","script_noteworthy"); foreach(var_09 in var_07) { var_09 maps\_utility::spawn_ai(1); } var_07 = getentarray("enemy_flyin_bridge_02","script_noteworthy"); foreach(var_09 in var_07) { var_09 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_canal_highway_ai_cleanup"); maps\finale_utility::cleanup_ai_with_script_noteworthy("enemy_flyin_bridge_01",256); foreach(var_0E in var_01) { if(isdefined(var_0E)) { var_0E delete(); } } foreach(var_11 in var_00) { if(isdefined(var_11)) { var_11 delete(); } } } //Function Number: 41 canal_chase_boats() { common_scripts\utility::create_dvar("vehicle_free_path_debug",0); common_scripts\utility::flag_wait("flag_canal_combat_start"); var_00 = [level.player,level.gideon]; level.freedrive_playermatch_catchup_ramp_start_dist = -125; level.freedrive_playermatch_catchup_ramp_end_dist = 500; level.freedrive_playermatch_catchup_multiplier = 2.2; level.freedrive_playermatch_slowdown_ramp_start_dist = 650; level.freedrive_playermatch_slowdown_ramp_end_dist = 600; level.freedrive_vehicle_min_allowed_speed = 0; level.freedrive_dodge_static_early_distance = 1000; level.freedrive_stay_within_percent_of_edge = 0.9; level.freedrive_progress_mod_step = 600; wait(4); maps\_vehicle_free_drive::init_vehicle_free_path("road_path_left_01"); var_01 = getentarray("enemy_boat_01","targetname"); foreach(var_03 in var_01) { var_04 = var_03 maps\_vehicle_free_drive::spawn_vehicle_and_attach_to_free_path(45,0,0,0); var_04 thread vehicle_scripts\_diveboat::setup_and_fire_missles_at_guys_repeated(var_00); } common_scripts\utility::flag_wait("flag_chase_boats_path_02"); maps\_vehicle_free_drive::init_vehicle_free_path("road_path_left_02"); var_01 = getentarray("enemy_boat_03","targetname"); foreach(var_03 in var_01) { var_04 = var_03 maps\_vehicle_free_drive::spawn_vehicle_and_attach_to_free_path(30,0,0,0); var_04 thread vehicle_scripts\_diveboat::setup_and_fire_missles_at_guys_repeated(var_00); } } //Function Number: 42 ai_canal_combat_01_accuracy_think() { self endon("death"); common_scripts\utility::flag_wait("flag_combat_flyin_bridge_01"); maps\_utility::set_baseaccuracy(0.1); } //Function Number: 43 ai_canal_combat_02_accuracy_think() { self endon("death"); common_scripts\utility::flag_wait("flag_chase_boats_path_02"); maps\_utility::set_baseaccuracy(0.1); } //Function Number: 44 ai_canal_combat_03_accuracy_think() { self endon("death"); common_scripts\utility::flag_wait("flag_canal_accuracy_tweak_bridge_02"); maps\_utility::set_baseaccuracy(0.1); } //Function Number: 45 ai_canal_combat_04_accuracy_think() { self endon("death"); common_scripts\utility::flag_wait("flag_canal_accuracy_tweak_combat_04"); maps\_utility::set_baseaccuracy(0.1); } //Function Number: 46 ai_canal_combat_05_accuracy_think() { self endon("death"); common_scripts\utility::flag_wait("flag_canal_combat_end"); maps\_utility::set_baseaccuracy(0.1); } //Function Number: 47 boat_death_think() { if(!isdefined(level.boat_canal)) { level.boat_canal = 0; } level.boat_canal++; self waittill("death",var_00); thread flyin_scene_handle_vehicle_destroyed_rumbles(self); level.boat_canal--; if(level.boat_canal == 0) { common_scripts\utility::flag_set("flag_boat_canal_dead"); return; } if(var_00 == level.player) { common_scripts\utility::flag_set("flag_boat_single_dead"); } } //Function Number: 48 flyin_scene_handle_vehicle_destroyed_rumbles(param_00) { var_01 = distance(level.player.origin,param_00.origin); var_02 = 2500; var_03 = 0.8; var_04 = var_02 - var_01 / var_02 / var_03; if(var_04 > 0.2) { maps\finale_utility::set_level_player_rumble_ent_intensity_for_time(var_04,0.25); } } //Function Number: 49 estimate_player_speed() { var_00 = level.player.origin; while(!level.player isonground()) { level.player.velocity_scripted = level.player.origin - var_00 / 0.05; var_00 = level.player.origin; wait 0.05; } earthquake(0.3,1,level.player.origin,128); } //Function Number: 50 player_helo_release(param_00) { common_scripts\utility::flag_wait("flag_intro_flyin_done"); wait_for_player_release(); thread maps\_water::watchaienterwater(level.gideon); thread player_speed_control_underwater(); var_01 = level.player.player_rig_heli; var_02 = 2; level.player lerpviewangleclamp(var_02,1,0.3,0,0,0,0); thread estimate_player_speed(); soundscripts\_snd::snd_message("fin_flyin_drop"); var_01 maps\_anim::anim_single_solo(var_01,"intro_flyin_release_vm"); level.player unlink(); level.player setvelocity((0,0,level.player.velocity_scripted[2])); common_scripts\utility::flag_set("flag_intro_flyin_release"); common_scripts\utility::flag_set("underwater_flashlight"); common_scripts\utility::flag_clear("flyin_mb"); maps\_utility::delaythread(5,::maps\_utility::autosave_by_name,"canal"); } //Function Number: 51 wait_for_player_release() { thread maps\_utility::hintdisplayhandler("release_hint"); var_00 = 0; while(var_00 < 1) { var_00 = 0; while(level.player usebuttonpressed() && var_00 < 1) { var_00 = var_00 + 0.1; wait 0.05; } wait 0.05; } common_scripts\utility::flag_set("flag_release_hint_off"); level.player notify("player_released_from_drone"); } //Function Number: 52 release_hint_off() { return common_scripts\utility::flag("flag_release_hint_off"); } //Function Number: 53 signed_distance_to_plane(param_00,param_01,param_02) { return vectordot(param_02 - param_00,param_01); } //Function Number: 54 player_speed_control_rocket_blast() { level.origacceleration = getdvarfloat("mechAcceleration"); setsaveddvar("mechAcceleration",5); level.gideon.goalradius = 64; player_speed_control(0.12,0.6,0,124,64,0.8,1.2,1.5,::is_player_in_rocket_blast,"start_node_exhaust","gideon_rocket_idle_node",1); setsaveddvar("mechAcceleration",level.origacceleration); } //Function Number: 55 player_speed_control_underwater() { for(;;) { for(;;) { if(isdefined(level.player.underwater) && level.player.underwater) { break; } wait 0.05; } level.player maps\_playermech_code::disable_mech_rocket(); level.player maps\_playermech_code::disable_mech_chaingun(); level.player maps\_playermech_code::disable_mech_swarm(); level.player hidehud(); player_speed_control(0.25,maps\_swim_player::get_underwater_walk_speed_scale_default() * 1.5,0,300,128,maps\_water::get_underwater_walk_speed_scale_ai(),maps\_water::get_underwater_walk_speed_scale_ai() * 1.4,1.5,::is_player_underwater,"start_node_underwater","end_node_underwater",0); level.player maps\_playermech_code::enable_mech_chaingun(); level.player maps\_playermech_code::enable_mech_rocket(); level.player maps\_playermech_code::enable_mech_swarm(); level.player showhud(); wait 0.05; } } //Function Number: 56 is_player_underwater() { return isdefined(level.player.underwater) && level.player.underwater; } //Function Number: 57 custom_distance_along_path_think(param_00) { var_01 = 0; while([[ param_00 ]]()) { var_02 = get_custom_distance_on_path(var_01); var_01 = var_02[0]; var_03 = var_02[1]; self.distance_on_path = var_03; wait 0.05; } } //Function Number: 58 get_custom_distance_on_path(param_00) { var_01 = (0,0,16); var_02 = 130; var_03 = undefined; var_04 = undefined; if(!isdefined(level.speed_control_pathnodes) || level.speed_control_pathnodes.size == 0) { return [0,0]; } if(isai(self)) { var_03 = self getnearestnode(); } else { var_05 = getnodesinradiussorted(self.origin,1000,0); var_03 = var_05[0]; } if(!isdefined(var_03)) { return [0,0]; } var_04 = getnodesinradius(var_03.origin,var_02,0); if(isdefined(var_03.target)) { var_06 = getnode(var_03.target,"targetname"); } if(isdefined(var_03.targetname)) { var_07 = getnode(var_03.targetname,"target"); } var_08 = undefined; var_09 = undefined; var_0A = 0; var_0B = 0; var_0C = undefined; for(var_0D = param_00;var_0D < level.speed_control_pathnodes.size;var_0D++) { var_0E = level.speed_control_pathnodes[var_0D]; foreach(var_10 in var_04) { if(var_10 == var_0E) { var_11 = -1; var_12 = -1; if(var_0D >= 1) { var_13 = maps\finale_utility::get_closest_point_on_segment(self.origin,level.speed_control_pathnodes[var_0D - 1].origin,var_0E.origin); var_11 = var_13[0]; var_14 = var_13[1]; var_08 = var_13[2]; var_09 = var_13[3]; if(var_11 > 0 && var_11 < 1) { var_0B = 1; param_00 = var_0D - 1; var_0A = var_11; break; } } if(var_0D < level.speed_control_pathnodes.size - 2) { var_15 = maps\finale_utility::get_closest_point_on_segment(self.origin,var_0E.origin,level.speed_control_pathnodes[var_0D + 1].origin); var_12 = var_15[0]; var_14 = var_15[1]; var_08 = var_15[2]; var_09 = var_15[3]; if(var_12 > 0 && var_12 < 1) { var_0B = 1; param_00 = var_0D; var_0A = var_12; break; } } if(var_11 == 1 && var_12 == 0) { var_0B = 1; var_08 = self.origin; var_09 = level.speed_control_pathnodes[var_0D].origin; param_00 = var_0D; var_0A = 0; break; } } } if(var_0B) { break; } } var_17 = 0; var_18 = level.speed_control_pathnodes_dist[param_00]; if(!var_0B && param_00 == 0 && var_17 == 0) { var_19 = level.speed_control_pathnodes[1].origin - level.speed_control_pathnodes[0].origin; var_19 = (var_19[0],var_19[1],0); var_19 = vectornormalize(var_19); var_1A = self.origin - level.speed_control_pathnodes[0].origin; var_1A = (var_1A[0],var_1A[1],0); var_1B = vectordot(var_1A,var_19); var_18 = var_1B; var_0B = 1; } if(var_0B) { var_17 = level.speed_control_pathnodes_dist[param_00 + 1] - level.speed_control_pathnodes_dist[param_00] * var_0A; } return [param_00,var_18 + var_17]; } //Function Number: 59 calculatedistances(param_00) { var_01 = []; var_01[0] = 0; if(!isdefined(param_00)) { return; } for(var_02 = 1;var_02 < param_00.size;var_02++) { var_01[var_02] = var_01[var_02 - 1] + distance2d(param_00[var_02 - 1].origin,param_00[var_02].origin); } return var_01; } //Function Number: 60 player_speed_control(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B) { var_0C = 1; var_0D = 0; var_0E = 0; var_0F = undefined; if(!isdefined(param_0B)) { param_0B = 1; } maps\_utility_code::movespeed_ramp_over_time(level.gideon,level.gideon.moveplaybackrate,param_05,0.05); if(isdefined(param_09)) { var_10 = getnode(param_09,"targetname"); var_11 = getnode(param_0A,"targetname"); level.speed_control_pathnodes = getnodesonpath(var_10.origin,var_11.origin,1,var_10,var_11); level.speed_control_pathnodes_dist = calculatedistances(level.speed_control_pathnodes); } level.gideon thread custom_distance_along_path_think(param_08); level.player thread custom_distance_along_path_think(param_08); while([[ param_08 ]]()) { var_12 = level.gideon.distance_on_path - level.player.distance_on_path; waittillframeend; if(gettime() > var_0E) { var_0C = maps\_shg_utility::linear_map_clamp(var_12,param_02,param_03,param_00,param_01); level.player setmovespeedscale(var_0C); if(var_12 < param_04) { var_0D = gettime() + 3000; var_0E = gettime() + param_07 * 1000; thread maps\_utility_code::movespeed_ramp_over_time(level.gideon,level.gideon.moveplaybackrate,param_06,param_07); } if(gettime() > var_0D && var_0D != 0) { var_0E = gettime() + param_07 * 1000; thread maps\_utility_code::movespeed_ramp_over_time(level.gideon,level.gideon.moveplaybackrate,param_05,param_07); var_0D = 0; } } if(param_0B && var_12 < 20) { level.player setmovespeedscale(0); } wait 0.05; } thread maps\_utility_code::movespeed_ramp_over_time(level.gideon,level.gideon.moveplaybackrate,1,1); thread maps\_utility_code::movespeed_ramp_over_time(level.player,var_0C,1,1); } //Function Number: 61 anim_loop_hatch_anims_solo(param_00,param_01,param_02,param_03) { param_00 endon("ender_gideon"); var_04 = 0; while(!common_scripts\utility::flag("flag_exhaust_hatch_open")) { param_00 maps\_anim::anim_single_solo(level.gideon,param_02); if(isdefined(level.player.debug_skip_button_press)) { return; } param_00 maps\_anim::anim_single_solo(level.gideon,param_03); if(isdefined(level.player.debug_skip_button_press)) { return; } } } //Function Number: 62 se_missile_load() { var_00 = getent("org_missile_load","targetname"); var_01 = getent("missile_bottom","targetname"); var_01.animname = "missile_main"; var_01 maps\_utility::assign_animtree(); for(var_02 = var_01;isdefined(var_02.target);var_02 = var_03) { var_03 = getent(var_02.target,"targetname"); var_03 linkto(var_01,"missile"); } var_04 = maps\_utility::spawn_anim_model("missile_01"); var_05 = maps\_utility::spawn_anim_model("missile_02"); var_06 = maps\_utility::spawn_anim_model("missile_03"); var_07 = maps\_utility::spawn_anim_model("missile_04"); var_08 = maps\_utility::spawn_anim_model("missile_05"); var_09 = maps\_utility::spawn_anim_model("missile_06"); var_0A = [var_01,var_04,var_05,var_06,var_07,var_08,var_09]; var_00 thread maps\_anim::anim_first_frame(var_0A,"missile_load"); thread maps\finale_lighting::missle_lighting(var_0A); thread silo_catwalks(); common_scripts\utility::flag_wait("flag_missile_move_start"); thread silo_autosaves(); thread countdown_missile_launch(); thread close_silo_doors(); var_0B = getnodearray("node_silo","targetname"); foreach(var_0D in var_0B) { var_0D disconnectnode(); } thread speed_up_missile_load(var_0A); var_00 maps\_anim::anim_single(var_0A,"missile_load"); common_scripts\utility::flag_set("flag_missile_seated"); } //Function Number: 63 countdown_missile_launch() { common_scripts\utility::flag_wait("flag_dialogue_launch_coundown_complete"); if(!common_scripts\utility::flag("flag_gideon_down_exhaust")) { common_scripts\utility::flag_set("flag_countdown_complete_mission_fail"); maps\finale_vo::dialogue_primary_ignitionin(); thread handle_failstate_primary_ignition_rumbles(1); thread maps\finale_utility::chase_timer_countdown(2,&"FINALE_FAILED_MISSILE_LAUNCH"); return; } wait(25); if(!common_scripts\utility::flag("flag_exhaust_hatch_open")) { common_scripts\utility::flag_set("flag_countdown_complete_mission_fail"); maps\finale_vo::dialogue_primary_ignitionin(); thread handle_failstate_primary_ignition_rumbles(1); thread maps\finale_utility::chase_timer_countdown(2,&"FINALE_FAILED_MISSILE_LAUNCH"); } } //Function Number: 64 handle_failstate_primary_ignition_rumbles(param_00) { var_01 = 0; for(;;) { var_02 = 0.2 + var_01 / 50; var_03 = 0.01 + var_01 / 80; maps\finale_utility::set_level_player_rumble_ent_intensity(var_02); if(isdefined(param_00) && param_00) { earthquake(var_03,0.1,level.player.origin,1000); } var_01++; if(var_01 > 40) { break; } wait(0.1); } } //Function Number: 65 speed_up_missile_load(param_00) { wait 0.05; thread maps\_anim::anim_set_rate(param_00,"missile_load",1.75); } //Function Number: 66 close_silo_doors() { common_scripts\utility::flag_wait("flag_silo_watwalks_open"); var_00 = getent("door_silo_right","targetname"); var_01 = getent("door_silo_left","targetname"); var_00 rotateby((0,-90,0),2,1,0.5); var_01 rotateby((0,90,0),2,1,0.5); } //Function Number: 67 silo_catwalks() { var_00 = getent("silo_catwalk","targetname"); var_00 common_scripts\utility::hide_notsolid(); var_01 = getnodearray("node_silo_01","targetname"); foreach(var_03 in var_01) { var_03 disconnectnode(); } var_05 = getnodearray("node_silo_02","targetname"); foreach(var_03 in var_05) { var_03 disconnectnode(); } var_08 = getnodearray("node_silo_03","targetname"); foreach(var_03 in var_08) { var_03 disconnectnode(); } common_scripts\utility::flag_wait("flag_missile_move_start"); thread maps\finale_lighting::s_flicker_catwalk_alarm(); var_0B = getent("org_silo_catwalk_narrow","targetname"); var_0C = getent("org_silo_catwalk_wide","targetname"); var_0D = maps\_utility::spawn_anim_model("catwalk_narrow_01"); var_0E = maps\_utility::spawn_anim_model("catwalk_narrow_02"); var_0F = maps\_utility::spawn_anim_model("catwalk_wide_01"); var_10 = maps\_utility::spawn_anim_model("catwalk_wide_02"); var_11 = [var_0D,var_0E]; var_12 = [var_0F,var_10]; var_0B thread maps\_anim::anim_first_frame(var_11,"catwalk"); var_0C thread maps\_anim::anim_first_frame(var_12,"catwalk"); common_scripts\utility::flag_wait("flag_silo_watwalks_open"); common_scripts\utility::flag_wait("flag_lower_missile_loader"); common_scripts\utility::flag_set("flag_dialogue_ast_ahead"); level notify("lighting_kill_catwalk_s_flicker_red"); common_scripts\utility::flag_set("flag_silo_combat_02"); var_13 = getent("org_missile_corridor_lower","targetname"); var_14 = getent("org_missile_corridor_origin","targetname"); var_15 = getent("missle_corridor","targetname"); var_16 = getent("missle_corridor_glass","targetname"); var_16 linkto(var_15); var_15 overridelightingorigin(var_14.origin); var_15 thread maps\finale_fx::vfx_silo_corridor_lowering(); var_15 moveto(var_13.origin,6,2,1); wait(3); var_0B thread maps\_anim::anim_single(var_11,"catwalk"); var_0C thread maps\_anim::anim_single(var_12,"catwalk"); thread maps\finale_fx::vfx_catwalk_lowering(); wait(3); level notify("lighting_kill_catwalk_s_flicker_white"); silo_catwalk_clip(var_00); maps\_utility::activate_trigger_with_targetname("trig_color_missile_in_position"); } //Function Number: 68 se_door_kick() { common_scripts\utility::flag_wait_all("flag_silo_combat_stop","flag_silo_combat_complete"); soundscripts\_snd::snd_music_message("ast_combat_end"); level.gideon maps\_utility::disable_ai_color(); var_00 = getent("org_silo_door_kick","targetname"); var_00 maps\_anim::anim_reach_solo(level.gideon,"kick_door_enter_mech"); var_00 maps\_anim::anim_single_solo(level.gideon,"kick_door_enter_mech"); if(!common_scripts\utility::flag("flag_player_close_to_kick_doors")) { var_00 thread maps\_anim::anim_loop_solo(level.gideon,"kick_door_idle_mech"); } common_scripts\utility::flag_wait("flag_player_close_to_kick_doors"); level.player notify("kill_player_follow_volume_think"); level.gideon maps\_utility::anim_stopanimscripted(); var_00 maps\_utility::anim_stopanimscripted(); var_01 = getent("sliding_door_l","targetname"); var_02 = getent("sliding_door_r","targetname"); var_03 = var_01 common_scripts\utility::get_target_ent(); var_04 = var_02 common_scripts\utility::get_target_ent(); var_03 linkto(var_01); var_04 linkto(var_02); var_05 = [var_03,var_04]; var_06 = maps\_utility::spawn_anim_model("kick_door_r"); var_07 = maps\_utility::spawn_anim_model("kick_door_l"); var_08 = [level.gideon,var_07,var_06]; var_00 maps\_anim::anim_first_frame(var_08,"kick_door"); var_01.origin = var_07 gettagorigin("tag_origin_animated"); var_02.origin = var_06 gettagorigin("tag_origin_animated"); var_01 linkto(var_07,"tag_origin_animated"); var_02 linkto(var_06,"tag_origin_animated"); foreach(var_0A in var_05) { var_0A connectpaths(); } level.gideon maps\_utility::walkdist_force_walk(); soundscripts\_snd::snd_message("silo_door_kick",level.gideon); var_00 maps\_anim::anim_single(var_08,"kick_door"); level.gideon maps\_utility::anim_stopanimscripted(); var_00 maps\_utility::anim_stopanimscripted(); maps\_utility::activate_trigger_with_targetname("trig_color_exit_main_silo"); level.gideon maps\_utility::enable_ai_color(); level.gideon maps\_utility::delaythread(5,::maps\_utility::walkdist_reset); common_scripts\utility::flag_set("flag_se_door_kick_complete"); var_03 delete(); } //Function Number: 69 se_exhaust_hatch() { var_00 = getent("org_exhaust_hatch","targetname"); common_scripts\utility::flag_wait("flag_se_exhaust_hatch_init"); level.gideon maps\_mech::mech_stop_rockets(); var_01 = maps\_utility::spawn_anim_model("hatch"); var_02 = maps\_utility::spawn_anim_model("piston_r"); var_03 = maps\_utility::spawn_anim_model("piston_l"); var_01.animname = "hatch"; var_02.animname = "piston_r"; var_03.animname = "piston_l"; var_04 = [var_01,var_03]; thread se_exhaust_hatch_player(var_00,var_02); var_00 thread maps\_anim::anim_first_frame(var_04,"exhaust_hatch_enter"); common_scripts\utility::flag_wait("flag_gideon_down_exhaust"); var_04 = [level.gideon,var_01,var_03]; var_00 maps\_anim::anim_reach_solo(level.gideon,"exhaust_hatch_enter"); var_00 maps\_anim::anim_single(var_04,"exhaust_hatch_enter"); soundscripts\_snd::snd_music_message("hatch_scene_being"); common_scripts\utility::flag_set("flag_obj_exhaust_hatch_open"); var_00 thread anim_loop_hatch_anims_solo(var_00,level.gideon,"exhaust_hatch_idle_noloop","exhaust_hatch_idle_wave_noloop"); common_scripts\utility::flag_wait("flag_exhaust_hatch_open"); maps\_utility::delaythread(7,::save_exhaust_hatch); if(!isdefined(level.player.debug_skip_button_press)) { var_00 notify("ender_gideon"); level.gideon maps\_utility::anim_stopanimscripted(); var_00 maps\_anim::anim_single(var_04,"exhaust_hatch_open"); } thread maps\finale_lighting::hatch_lighting(); common_scripts\utility::flag_set("flag_exhaust_hatch_complete"); var_05 = getent("clip_exhaust_hatch","targetname"); var_05 delete(); if(!isdefined(level.player.debug_skip_button_press)) { var_00 thread maps\_anim::anim_loop_solo(level.gideon,"exhaust_hatch_end_idle","ender_gideon"); common_scripts\utility::flag_wait("flag_player_exhaust_corridor"); var_00 notify("ender_gideon"); } } //Function Number: 70 save_exhaust_hatch() { if(!common_scripts\utility::flag("flag_countdown_complete_mission_fail")) { maps\_utility::autosave_by_name("exhaust_hatch"); } } //Function Number: 71 se_exhaust_hatch_player(param_00,param_01) { var_02 = 0.25; var_03 = maps\_utility::spawn_anim_model("world_body_mech"); var_03 hide(); level.player.player_rig = var_03; var_04 = [var_03,param_01]; maps\_playermech_code::hide_mech_glass_static_overlay(var_03); param_00 thread maps\_anim::anim_first_frame(var_04,"exhaust_hatch_vm_approach"); common_scripts\utility::flag_wait("flag_exhaust_hatch_grab"); setsaveddvar("g_friendlyNameDist",0); level.player maps\_playermech_code::mech_setup_player_for_scene(undefined,1); level.player allowads(0); var_05 = getanimlength(maps\finale_anim_vm::getanim_vm("s1_playermech_putaway")); var_05 = var_05 / 2; level.player playerlinktoblend(var_03,"tag_player",0.5); thread playerlinktodeltadelayed(2,var_03); thread maps\finale_anim_vm::anim_single_solo_vm(level.player,"s1_playermech_putaway"); wait(0.55); var_03 show(); level.player maps\_playermech_code::mech_setup_player_for_scene(); thread maps\finale_shaft::do_shaft_gameplay_setup(param_00); if(!isdefined(level.player.debug_skip_button_press)) { param_00 maps\_anim::anim_single(var_04,"exhaust_hatch_vm_approach"); maps\finale_shaft::hatch_button_gameplay(param_00,var_04,var_03,param_01); } else { } common_scripts\utility::flag_set("flag_exhaust_hatch_open"); if(!isdefined(level.player.debug_skip_button_press)) { param_00 notify("ender_player"); thread maps\finale_shaft::store_speed(var_03); param_00 maps\_anim::anim_single(var_04,"exhaust_hatch_open"); } soundscripts\_snd::snd_message("start_silo_exhaust_entrance"); soundscripts\_snd::snd_music_message("hatch_jump_begin"); level.player maps\finale_shaft::do_shaft_gameplay(); common_scripts\utility::flag_wait("flag_player_exhaust_corridor"); maps\_utility::delaythread(7,::maps\_utility::autosave_by_name,"exhaust_corridor"); } //Function Number: 72 playerlinktodeltadelayed(param_00,param_01) { wait(param_00); level.player playerlinktodelta(param_01,"tag_player",0.75,5,5,5,5,1); } //Function Number: 73 anim_single_solo_with_special_walk(param_00,param_01) { var_02 = getent("vents","targetname"); var_02.animname = "vents"; var_02 maps\_utility::assign_animtree(); var_03 = [var_02,param_00]; maps\_anim::anim_first_frame(var_03,param_01); var_04 = getanimlength(param_00 maps\_utility::getanim(param_01)); var_05 = 2.7; thread maps\_anim::anim_single(var_03,param_01); wait(var_04 - var_05); level.player lerpviewangleclamp(1,0.1,0.1,0,0,0,0); wait(var_05); thread maps\finale_shaft::think_player_blast_walk_anims("nohands"); wait 0.05; param_00 hide(); level.player unlink(); level.player maps\_playermech_code::mech_setup_player_for_forced_walk_scene(); } //Function Number: 74 se_exhaust_land() { common_scripts\utility::trigger_off("trig_exhaust_corridor","targetname"); common_scripts\utility::flag_wait("flag_player_exhaust_corridor"); if(isdefined(level.player.player_failed_drop) && level.player.player_failed_drop) { return; } var_00 = getent("org_exhaust_hatch","targetname"); soundscripts\_snd::snd_message("exhaust_shaft_land"); var_00 thread anim_single_solo_with_special_walk(level.player.player_rig,"exhaust_land_vm"); common_scripts\utility::flag_set("flag_lighting_fall_blur"); soundscripts\_snd::snd_music_message("hatch_jump_end"); level.player waittill("notetrack_gideon_start"); soundscripts\_snd::snd_message("exhaust_shaft_land_gideon",level.gideon); var_00 thread maps\_anim::anim_single_run_solo(level.gideon,"exhaust_land"); level.gideon set_blast_walk_anims(); maps\_utility::activate_trigger_with_targetname("trig_color_exhaust_corridor_01"); } //Function Number: 75 gideon_play_scripted_anim_when_reaching_goal(param_00) { level.gideon endon("gideon_ender"); var_01 = getnode("gideon_missile_stopped","targetname"); for(;;) { if(distance2d(var_01.origin,level.gideon.origin) < 30) { break; } wait 0.05; } level.gideon maps\_utility::disable_ai_color(); level.gideon maps\finale_utility::goto_node(var_01,1,64); param_00 maps\_anim::anim_reach_solo(level.gideon,"missile_stopped"); for(;;) { if(abs(level.player.origin[0] - level.gideon.origin[0]) < 200) { break; } wait 0.05; } maps\_utility::delaythread(8,::common_scripts\utility::flag_set,"flag_player_shoot_missile"); param_00 maps\_anim::anim_single_solo(level.gideon,"missile_stopped"); param_00 maps\_anim::anim_loop_solo(level.gideon,"missile_stopped_idle","gideon_ender"); } //Function Number: 76 player_exhaust_corridor() { common_scripts\utility::flag_wait("flag_player_exhaust_corridor"); level.player thread player_exhaust_corridor_rumbles(); level.player waittill("notetrack_player_control"); level.player setmovespeedscale(0.5); level.player waittill("notetrack_player_blast_react"); maps\finale_shaft::anim_single_solo_with_lerp(level.player.player_rig,"exhaust_blast_react"); common_scripts\utility::trigger_on("trig_exhaust_corridor","targetname"); thread player_speed_control_rocket_blast(); thread missile_damage_think(); var_00 = getent("org_missile_damaged","targetname"); thread gideon_play_scripted_anim_when_reaching_goal(var_00); level.player waittill("notetrack_rocket_launch_start"); soundscripts\_snd::snd_message("aud_rocket_launch_start"); common_scripts\utility::flag_set("flag_vfx_missile_liftoff_start"); common_scripts\utility::flag_set("flag_missile_launch_stop"); common_scripts\utility::flag_wait("flag_player_shoot_missile"); if(!common_scripts\utility::flag("flag_exhaust_corridor_timer_fail")) { level.player maps\finale_utility::mech_enable_switch_exhaust_version(); level.player maps\_playermech_code::mech_setup_player_for_gameplay(); } common_scripts\utility::flag_wait("flag_missile_damaged"); common_scripts\utility::flag_set("flag_obj_stop_missile_launch_complete"); common_scripts\utility::flag_set("lighting_flag_obj_stop_missile_complete"); common_scripts\utility::flag_set("flag_obj_escape"); level.player.player_rig show(); level.player playerlinktoabsolute(level.player.player_rig,"TAG_PLAYER"); level.player maps\_playermech_code::mech_setup_player_for_scene(); var_01 = maps\_utility::spawn_anim_model("minigun"); var_02 = [var_01,level.player.player_rig,level.gideon]; var_00 maps\_anim::anim_first_frame(var_02,"missile_stopped_vm"); soundscripts\_snd::snd_message("fin_silo_success"); var_00 maps\_anim::anim_single(var_02,"missile_stopped_vm"); var_01 delete(); thread missile_stopped(); wait(2); common_scripts\utility::flag_set("flag_se_mech_exit_start"); level.gideon clear_blast_walk_anims(); } //Function Number: 77 player_exhaust_corridor_rumbles() { level.player waittill("notetrack_vfx_blast"); wait(1.5); maps\finale_utility::set_level_player_rumble_ent_intensity(0.2); common_scripts\utility::flag_wait("flag_player_shoot_missile"); maps\finale_utility::set_level_player_rumble_ent_intensity(0.12); common_scripts\utility::flag_wait_either("flag_missile_failed","flag_missile_damaged"); if(common_scripts\utility::flag("flag_missile_damaged")) { maps\finale_utility::set_level_player_rumble_ent_intensity(0); return; } thread handle_failstate_primary_ignition_rumbles(); } //Function Number: 78 exhaust_corridor_timer() { wait(55); if(!common_scripts\utility::flag("flag_player_shoot_missile")) { common_scripts\utility::flag_set("flag_exhaust_corridor_timer_fail"); thread maps\finale_utility::chase_timer_countdown(2,&"FINALE_FAILED_MISSILE_LAUNCH"); } } //Function Number: 79 missile_stopped() { var_00 = getent("missile","targetname"); var_01 = getent("org_missile_stopped","targetname"); } //Function Number: 80 fail_missile_damage_think(param_00) { var_01 = getent("org_missile_damaged","targetname"); var_02 = getent("org_far_fail","targetname"); common_scripts\utility::flag_wait("flag_player_shoot_missile"); wait(2.2); wait(18); if(common_scripts\utility::flag("flag_missile_damaged")) { return; } common_scripts\utility::flag_set("flag_missile_failed"); common_scripts\utility::flag_set("lighting_missile_fail"); thread maps\finale_missile::restore_thrusters_all(param_00,param_00.damage_accumulation_clip); level.player maps\_playermech_code::mech_setup_player_for_scene(); var_03 = level.player.player_rig; if(!isdefined(var_03)) { var_03 = maps\_utility::spawn_anim_model("world_body_mech"); } var_03 show(); level.player playerlinktoabsolute(var_03,"TAG_PLAYER"); level.player.ignore_fade_notetrack = 1; level.player takeallweapons(); level.gideon notify("gideon_ender"); var_04 = maps\_utility::spawn_anim_model("minigun"); var_05 = [var_03,param_00,var_04,level.gideon]; level.gideon thread freeze_anim_at_end("missile_launch"); if(level.player.origin[0] > var_02.origin[0]) { var_03.origin = (level.player.origin[0],level.player.origin[1],var_02.origin[2]); var_03.angles = var_02.angles; var_04 hide(); var_03 maps\_anim::anim_first_frame_solo(var_03,"missile_launch_far_fail"); var_03 thread maps\finale_shaft::anim_single_solo_in_place(var_03,"missile_launch_far_fail"); var_05 = common_scripts\utility::array_remove(var_05,var_03); } var_01 maps\_anim::anim_first_frame(var_05,"missile_launch"); var_01 maps\_anim::anim_single(var_05,"missile_launch"); level.player showhud(); level.player setclientomnvar("ui_playermech_hud",0); setsaveddvar("cg_drawCrosshair",0); setdvar("ui_deadquote",&"FINALE_FAILED_MISSILE_LAUNCH"); maps\_utility::missionfailedwrapper(); } //Function Number: 81 freeze_anim_at_end(param_00) { var_01 = maps\_utility::getanim(param_00); var_02 = getanimlength(var_01); var_03 = var_02 - 0.1 / var_02; for(;;) { if(self getanimtime(var_01) >= var_03) { break; } wait 0.05; } self setanimrate(var_01,0); } //Function Number: 82 missile_damage_think() { level endon("flag_missile_failed"); common_scripts\utility::flag_wait("flag_missile_launch_stop"); var_00 = getent("damage_accumulation_clip","targetname"); var_01 = getent("missile_main_02","targetname"); maps\finale_missile::setup_complete_missile_prefab(var_01,var_00); var_01.damage_accumulation_clip = var_00; thread fail_missile_damage_think(var_01); var_00 waittill("damage",var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A,var_0B); common_scripts\utility::flag_set("flag_missile_hit"); playfx(common_scripts\utility::getfx("fin_rocket_silo_explosion"),var_00.origin); soundscripts\_snd::snd_message("aud_fin_rocket_damage_vfx"); var_00 waittill("death",var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A,var_0B); common_scripts\utility::flag_set("flag_missile_damaged"); level.gideon notify("gideon_ender"); } //Function Number: 83 is_player_in_rocket_blast() { return !common_scripts\utility::flag("flag_obj_stop_missile_launch_complete"); } //Function Number: 84 se_mech_exit() { thread maps\finale_lighting::play_finale_silo_end_cine(); var_00 = getent("org_mech_exit","targetname"); var_01 = undefined; if(isdefined(level.player.player_rig)) { var_01 = level.player.player_rig; } else { var_01 = maps\_utility::spawn_anim_model("world_body_mech"); } var_02 = maps\_utility::spawn_anim_model("world_body"); var_01 hide(); var_02 hide(); var_01 thread maps\_playermech_code::scripted_screen_flicker_loop(); var_03 = [var_01,var_02]; var_00 thread maps\_anim::anim_first_frame(var_03,"mech_exit"); level.gideon maps\_utility::disable_ai_color(); level.gideon maps\finale_utility::clearstencilstate(); level.gideon delete(); maps\finale::spawn_gideon(); level.gideon maps\_utility::gun_remove(); var_03 = [var_01,var_02,level.gideon]; common_scripts\utility::flag_wait("flag_se_mech_exit_start"); if(level.player hasweapon("playermech_auto_cannon_finale") || level.player hasweapon("playermech_auto_cannon_finale_exhaust")) { level.player maps\_playermech_code::playermech_end(); level.player takeweapon("iw5_unarmedfinale_nullattach"); level.player setviewmodel("viewhands_sentinel_mitchell_prosthetic_smashed"); level.player giveweapon("iw5_titan45finalelobby_sp_xmags"); level.player setweaponammostock("iw5_titan45finalelobby_sp_xmags",0); level.player switchtoweapon("iw5_titan45finalelobby_sp_xmags"); level.player setadditiveviewmodelanim(0); } else { level.player takeweapon("iw5_unarmedfinale_nullattach"); level.player giveweapon("iw5_titan45finalelobby_sp_xmags"); level.player setweaponammostock("iw5_titan45finalelobby_sp_xmags",0); level.player switchtoweapon("iw5_titan45finalelobby_sp_xmags"); level.player disableweapons(); } level.player maps\_shg_utility::setup_player_for_scene(1); thread maps\finale_utility::screen_fade_in(2); level.player maps\_playermech_code::mech_setup_player_for_scene(); var_01 show(); var_02 show(); level.player playerlinktodelta(var_02,"tag_player",0.75,5,5,5,5,1); level.player enableslowaim(0.3,0.15); soundscripts\_snd::snd_message("gid_release_plr_mech_suit"); var_00 maps\_anim::anim_single(var_03,"mech_exit"); thread maps\_utility::lerp_fov_overtime(0.5,var_02.fov_original); soundscripts\_snd::snd_music_message("dazed_and_confused1"); wait(3); level.player maps\_shg_utility::setup_player_for_gameplay(); level.gideon maps\_utility::gun_recall(); level.player maps\_playermech_code::mech_setup_player_for_gameplay(); level.player disableslowaim(); level.player unlink(); var_01 delete(); var_02 delete(); level.gideon maps\_utility::anim_stopanimscripted(); } //Function Number: 85 se_will_reveal() { soundscripts\_snd::snd_message("start_will_room"); common_scripts\utility::flag_wait("flag_dialogue_carry_scene_02_complete"); common_scripts\utility::flag_set("second_half_lighting"); level.player lightsetforplayer("finale_will"); maps\_utility::vision_set_fog_changes("finale_cinematic_nofog",0); maps\_utility::delaythread(10,::maps\finale_utility::screen_fade_in,4); var_00 = getent("org_will_reveal","targetname"); level.player maps\_shg_utility::setup_player_for_scene(1); var_01 = maps\_utility::spawn_anim_model("world_body"); var_01 hide(); var_02 = [var_01,level.gideon]; level.player playerlinktodelta(var_01,"tag_player",0.75,5,15,15,15,1); level.player enableslowaim(0.3,0.15); var_01 show(); level.player lerpfov(50,0); var_00 thread maps\_anim::anim_first_frame(var_02,"will_reveal"); common_scripts\utility::flag_wait("flag_dialogue_se_will_reveal"); var_00 thread maps\_anim::anim_single_run_solo(level.gideon,"will_reveal"); level.gideon maps\_utility::enable_cqbwalk(); var_00 maps\_anim::anim_single_solo(var_01,"will_reveal"); level.player unlink(); var_01 delete(); level.player setorigin(level.player.origin + (0,4,0)); level.player disableslowaim(); level.player maps\_shg_utility::setup_player_for_gameplay(); setsaveddvar("player_sprintSpeedScale",1.4); common_scripts\utility::flag_set("flag_will_reveal_complete"); } //Function Number: 86 se_irons_reveal_head_sway() { for(;;) { screenshake(level.player.origin,2.1,2.25,1.9,2,0.2,0.2,0,0.2,0.34,0.3); wait(1); } } //Function Number: 87 se_irons_reveal_head_jolt() { screenshake(level.player.origin,4,1,1,0.25,0.1,0.1,0,0.1,0.1,0.1); } //Function Number: 88 se_irons_reveal_handle_button_prompts_on_arm(param_00) { self hide(); param_00 maps\_anim::anim_first_frame_solo(self,"irons_reveal_button_press"); common_scripts\utility::delaycall(0.05,::show); common_scripts\utility::flag_clear("flag_buttonmash_success"); var_01 = level.scr_anim["world_body_damaged"]["irons_reveal_button_press"]; self setflaggedanim("prompt_start",var_01); var_02 = level.scr_anim["world_body_damaged"]["fin_irons_reveal_button_press_finger_loop_vm"]; self waittillmatch("start_button_press","prompt_start"); var_03 = common_scripts\utility::spawn_tag_origin(); var_03.origin = self gettagorigin("J_Wrist_RI"); var_03 linkto(self,"J_Wrist_RI",(-2.5,0,1),(0,0,0)); var_04 = var_03 maps\_shg_utility::hint_button_tag("x","tag_origin",64,128,1,1); var_04.fontscale = 2; var_04 thread maps\_shg_utility::hint_button_flash(0.15,0.1); maps\_utility::hintdisplayhandler("break_free_buttonmash_hint"); level.player notifyonplayercommand("x_pressed","+usereload"); level.player notifyonplayercommand("x_pressed","+activate"); childthread se_irons_reveal_monitor_button_on_arm(); childthread se_irons_reveal_head_sway(); thread maps\finale_utility::chase_timer_countdown(15,&"FINALE_FAILED_IRONS_CHASE"); var_05 = self getanimtime(var_01); self.button_presses = 0; var_06 = 1; self setanimrate(var_01,0); var_07 = 0; soundscripts\_snd::snd_message("fin_irons_reveal_mash_start"); while(var_05 < 1) { self.button_presses = 0; wait(0.2); if(self.button_presses >= 1) { var_07 = var_07 + 0.2; if(var_07 >= 1) { soundscripts\_snd::snd_message("fin_irons_reveal_mash","peak"); var_07 = 1; } else { soundscripts\_snd::snd_message("fin_irons_reveal_mash","speedup"); } self setanimrate(var_01,var_07); var_06 = 0; self setanim(var_02); continue; } var_07 = var_07 - 0.33; if(var_07 <= 0) { soundscripts\_snd::snd_message("fin_irons_reveal_mash","stopped"); var_07 = 0; } else { soundscripts\_snd::snd_message("fin_irons_reveal_mash","slowdown"); } self setanimrate(var_01,var_07); if(!var_06) { var_06 = 1; } var_05 = self getanimtime(var_01); } self setanimtime(var_01,1); var_04 maps\_shg_utility::hint_button_clear(); var_03 delete(); common_scripts\utility::flag_set("flag_buttonmash_success"); soundscripts\_snd::snd_message("fin_irons_reveal_mash_finish"); level.player notifyonplayercommandremove("x_pressed","+usereload"); level.player notifyonplayercommandremove("x_pressed","+activate"); common_scripts\utility::flag_set("stair_lights_on"); level notify("chase_timer_countdown_stop"); } //Function Number: 89 se_irons_reveal_monitor_button_on_arm() { level endon("flag_buttonmash_success"); while(!common_scripts\utility::flag("flag_buttonmash_success")) { level.player common_scripts\utility::waittill_any("x_pressed"); self.button_presses = self.button_presses + 1; level.player playrumbleonentity("damage_light"); } } //Function Number: 90 se_irons_reveal() { soundscripts\_snd::snd_message("start_will_room"); common_scripts\utility::flag_wait("flag_dialogue_carry_scene_02_complete"); common_scripts\utility::flag_set("second_half_lighting"); level.player lightsetforplayer("finale_will"); maps\_utility::vision_set_fog_changes("finale_cinematic_nofog",0); var_00 = maps\_utility::spawn_targetname("irons_will_reveal",1); var_00.animname = "irons"; var_00 maps\_utility::gun_remove(); var_00.ignoreall = 1; level.irons = var_00; thread maps\finale_lighting::lighting_will_reveal(); thread maps\finale_lighting::will_room_speech_end(); if(level.nextgen) { thread maps\finale_lighting::setup_eye_highlights(var_00); thread maps\finale_lighting::dof_irons_meet(var_00); } thread will_room_door_exit(); maps\_utility::delaythread(10,::maps\finale_utility::screen_fade_in,4); var_01 = getent("org_irons_reveal","targetname"); level.player maps\_shg_utility::setup_player_for_scene(1); var_02 = maps\_utility::spawn_anim_model("world_body_damaged"); var_02 hide(); var_03 = maps\_utility::spawn_anim_model("pistol"); var_03 hidepart("tag_rail_master_on"); var_03 hide(); var_04 = [var_02,level.gideon,var_03]; level.player playerlinktodelta(var_02,"tag_player",1,0,0,0,0,1); level.player enableslowaim(0.3,0.15); var_02 show(); var_03 show(); var_02 thread se_irons_reveal_handle_material_swap(); level.player lerpfov(50,0); var_01 thread maps\_anim::anim_first_frame(var_04,"irons_reveal"); var_01 thread maps\_anim::anim_first_frame_solo(var_00,"irons_reveal"); var_05 = maps\_utility::spawn_anim_model("irons_phone"); var_05.origin = var_00 gettagorigin("TAG_WEAPON_CHEST"); var_05.angles = var_00 gettagangles("TAG_WEAPON_CHEST"); var_05 linkto(var_00,"TAG_WEAPON_CHEST"); common_scripts\utility::flag_wait("flag_dialogue_se_will_reveal"); maps\_utility::delaythread(123,::common_scripts\utility::flag_set,"flag_will_room_door_exit_open"); level thread maps\finale_fx::vfx_irons_reveal_scene(); level.player common_scripts\utility::delaycall(2.6,::playrumbleonentity,"damage_heavy"); var_06 = getanimlength(maps\_utility::getanim_from_animname("irons_reveal","irons")); var_00 maps\_utility::delaythread(var_06,::maps\_utility::_delete); var_05 maps\_utility::delaythread(var_06,::maps\_utility::_delete); var_03 maps\_utility::delaythread(var_06,::maps\_utility::_delete); var_01 thread maps\_anim::anim_single_solo(var_00,"irons_reveal"); var_01 maps\finale_ending::anim_single_with_gameplay(var_04,"irons_reveal"); thread maps\_utility::autosave_by_name("free_from_exo"); var_01 thread maps\_anim::anim_loop_solo(level.gideon,"irons_reveal_button_idle","ender"); var_02 se_irons_reveal_handle_button_prompts_on_arm(var_01); var_02 setmodel("viewbody_sentinel_mitchell_egress_custom"); level.player notify("exo_released"); var_01 notify("ender"); level.player common_scripts\utility::delaycall(5,::playrumbleonentity,"damage_heavy"); level.gideon thread se_irons_reveal_pt2_gideon(var_01); var_01 thread maps\_anim::anim_single([var_02],"irons_reveal_part2"); var_07 = var_02 maps\_utility::getanim("irons_reveal_part2"); var_08 = getanimlength(var_07); var_09 = getnotetracktimes(var_07,"ease_out")[0] * var_08; var_0A = 0; while(var_0A < var_08) { if(var_0A >= var_09 && level.player getnormalizedmovement()[0] > 0.5) { break; } wait 0.05; var_0A = var_0A + 0.05; } level.player unlink(); var_02 delete(); level notify("release"); level.player disableslowaim(); level.player maps\_shg_utility::setup_player_for_gameplay(); level.player disableoffhandweapons(); setsaveddvar("player_sprintSpeedScale",1.6); common_scripts\utility::flag_set("flag_will_reveal_complete"); common_scripts\utility::flag_set("flag_obj_escape_complete"); common_scripts\utility::flag_set("flag_start_irons_chase"); maps\_utility::battlechatter_off("allies"); maps\_utility::battlechatter_off("axis"); thread maps\finale_lighting::will_room_speech_end(); } //Function Number: 91 se_irons_reveal_pt2_gideon(param_00) { param_00 maps\_anim::anim_single([self],"irons_reveal_part2"); param_00 thread maps\_anim::anim_loop_solo(self,"irons_reveal_idle","ender"); } //Function Number: 92 irons_exo_hack(param_00) { maps\_shg_utility::play_videolog("finale_hud_reboot","screen_add",0,0,0,0,0); } //Function Number: 93 se_irons_reveal_handle_material_swap() { self overridematerial("mtl_arm_band_ui_glass","m/mtl_arm_band_ui_offline"); level.gideon overridematerial("mtl_arm_band_ui_glass","m/mtl_arm_band_ui_offline"); common_scripts\utility::flag_wait("flag_material_swap_detach_exo"); self overridematerialreset(); self overridematerial("mtl_arm_band_ui_glass","m/mtl_arm_band_ui_reboot"); common_scripts\utility::flag_wait("flag_material_swap_confirm_button"); self overridematerialreset(); common_scripts\utility::flag_wait("flag_material_swap_gideon_error"); level.gideon thread maps\finale_fx::exo_release_gideon_error_glow(); level.gideon overridematerialreset(); level.gideon overridematerial("mtl_arm_band_ui_glass","m/mtl_arm_band_ui_failure"); } //Function Number: 94 door_irons_reveal_open(param_00) { var_01 = getent("door_irons_reveal","targetname"); var_01 soundscripts\_snd::snd_message("aud_irons_reveal_star_trek_door"); var_02 = getent("org_door_irons_reveal_open","targetname"); var_01 moveto(var_02.origin,1,0.25,0.25); } //Function Number: 95 se_irons_reveal_exo(param_00) { level.player setviewmodel("viewhands_noexo_mitchell_prosthetic_smashed"); var_01 = getent("org_irons_reveal","targetname"); var_02 = maps\_utility::spawn_anim_model("exo"); var_01 maps\_anim::anim_single_solo(var_02,"irons_reveal_exo"); var_01 thread maps\_anim::anim_loop_solo(var_02,"irons_reveal_exo_idle"); } //Function Number: 96 se_will_reveal_irons() { common_scripts\utility::flag_wait("flag_se_will_reveal_irons"); var_00 = getent("org_will_reveal_irons","targetname"); level.player maps\_shg_utility::setup_player_for_scene(1); var_01 = maps\_utility::spawn_anim_model("world_hands"); var_01 hide(); var_02 = maps\_utility::spawn_targetname("irons_will_reveal",1); var_02.animname = "irons"; var_02 maps\_utility::gun_remove(); var_03 = [var_01,var_02]; level.player playerlinktodelta(var_01,"tag_player",0.1,0,0,0,0,1); var_00 thread maps\_anim::anim_first_frame(var_03,"will_reveal_irons"); var_00 maps\_anim::anim_single(var_03,"will_reveal_irons"); level.player unlink(); var_02 delete(); var_01 delete(); level.player maps\_shg_utility::setup_player_for_gameplay(); maps\_utility::activate_trigger_with_targetname("trig_color_wills_room_exit"); common_scripts\utility::flag_set("flag_will_reveal_irons_complete"); level.player lerpfov(65,0); level.player setorigin((11608,-85516,7600)); level.player setplayerangles((0,-90,0)); } //Function Number: 97 se_irons_chase() { thread se_irons_elevator_doors(); common_scripts\utility::flag_set("second_half_lighting"); common_scripts\utility::flag_wait("flag_start_irons_chase"); level.player allowmelee(0); maps\_utility::delaythread(2,::maps\_utility::autosave_by_name,"chase_begin"); if(!isdefined(level.irons)) { level.irons = maps\_utility::spawn_targetname("irons",1); level.irons.animname = "irons"; level.irons.name = ""; level.irons maps\finale_utility::set_custom_patrol_anim_set("unaware"); level.irons maps\_utility::gun_remove(); level.irons thread maps\_utility::deletable_magic_bullet_shield(); } level.irons.team = "axis"; thread maps\finale_utility::sprint_hint_reminder(); thread maps\finale_utility::chase_timer_countdown(15,&"FINALE_FAILED_IRONS_CHASE"); thread maps\finale_utility::player_chase_speed_control(); setsaveddvar("player_sprintUnlimited",1); var_00 = getent("org_irons_run","targetname"); var_00 maps\_anim::anim_first_frame_solo(level.irons,"irons_run_left_turn_up_stairs"); common_scripts\utility::flag_wait("flag_irons_start_running_01"); thread maps\finale_utility::chase_timer_countdown(8,&"FINALE_FAILED_IRONS_CHASE"); var_00 maps\_anim::anim_single_solo(level.irons,"irons_run_left_turn_up_stairs"); var_01 = getent("org_irons_end","targetname"); var_00 stopanimscripted(); var_01 stopanimscripted(); var_02 = getent("door_irons_chase_se","targetname"); var_02.animname = "keypad_door"; var_02 maps\_utility::assign_animtree(); var_03 = getent("clip_door_irons_chase_se","targetname"); var_00 maps\_anim::anim_first_frame_solo(var_02,"irons_run_to_keypad_door"); var_00 maps\_anim::anim_first_frame_solo(level.irons,"irons_run_to_elevator_full"); common_scripts\utility::flag_wait("flag_irons_start_running_02"); thread maps\finale_utility::chase_timer_countdown(15,&"FINALE_FAILED_IRONS_CHASE"); thread maps\finale_utility::lowering_door_think(23,"door_irons_chase","clip_door_irons_chase","origin_door_irons_chase","flag_start_door_lowering","trig_door_path_check"); soundscripts\_snd::snd_message("irons_keypad_door_open",var_02); var_00 thread maps\_anim::anim_single_solo(var_02,"irons_run_to_keypad_door"); var_00 thread maps\_anim::anim_single_solo(level.irons,"irons_run_to_elevator_full"); wait(9); if(!common_scripts\utility::flag("flag_se_bridge_takedown")) { common_scripts\utility::flag_set("flag_irons_passed_final_run_start"); } } //Function Number: 98 se_irons_elevator_doors() { var_00 = getent("fin_balcony_elevator_door_01","targetname"); var_00.animname = "elevator_doors"; var_00 maps\_utility::assign_animtree(); var_01 = common_scripts\utility::getstruct("se_balcony_finale","script_noteworthy"); var_01 maps\_anim::anim_first_frame_solo(var_00,"balcony_finale_pt1_fail_elevator_close"); } //Function Number: 99 se_bridge_takedown() { common_scripts\utility::flag_wait("flag_irons_rooftop"); var_00 = getent("org_bridge_takedown","targetname"); var_01 = maps\_utility::spawn_targetname("guy_bridge_takedown",1); var_01.animname = "guy_bridge_takedown"; var_01.ignoreme = 1; var_01.ignoreall = 1; self.allowdeath = 1; var_01 maps\_utility::place_weapon_on("iw5_hbra3_sp","right"); var_01 laseroff(); var_02 = maps\_utility::spawn_anim_model("world_body_damaged_no_exo"); var_02 hide(); var_03 = [var_02,var_01]; var_00 thread maps\_anim::anim_first_frame(var_03,"bridge_takedown"); common_scripts\utility::flag_wait("flag_se_bridge_takedown"); soundscripts\_snd::snd_message("fin_skybridge_takedown_start"); var_04 = getent("trig_irons_passed_final_run_start","targetname"); var_04 common_scripts\utility::trigger_off(); maps\finale_utility::chase_timer_cancel(); var_05 = 0.31; level.player maps\_shg_utility::setup_player_for_scene(0); level.player playerlinktoblend(var_02,"tag_player",var_05); level.player common_scripts\utility::delaycall(var_05,::playerlinktodelta,var_02,"tag_player",1,0,0,0,0,1); var_02 common_scripts\utility::delaycall(var_05,::show); var_00 thread maps\_anim::anim_single(var_03,"bridge_takedown"); wait(0.5); thread maps\finale_utility::enable_takedown_hint(var_01,175,1,"flag_se_bridge_takedown_success",2); common_scripts\utility::flag_wait("flag_bridge_takedown_jump_complete"); if(common_scripts\utility::flag("flag_se_bridge_takedown_success")) { common_scripts\utility::flag_set("flag_disable_takedown_hint"); if(isdefined(level.takedown_button)) { level.takedown_button maps\_shg_utility::hint_button_clear(); } level.player_knife = maps\_utility::spawn_anim_model("player_knife"); level.player_knife hide(); var_03 = common_scripts\utility::array_add(var_03,level.player_knife); var_00 thread maps\_anim::anim_single(var_03,"bridge_takedown_success"); var_06 = var_02 maps\_utility::getanim("bridge_takedown_success"); var_07 = getanimlength(var_06); var_08 = getnotetracktimes(var_06,"ease_out")[0] * var_07; var_09 = 0; while(var_09 < var_07) { if(var_09 >= var_08 && level.player getnormalizedmovement()[0] > 0.5) { break; } wait 0.05; var_09 = var_09 + 0.05; } level.player forcesprint(); var_01 delete(); level.player maps\_shg_utility::setup_player_for_gameplay(); level.player disableoffhandweapons(); level.player takeweapon("iw5_unarmedfinale_nullattach"); level.player giveweapon("iw5_unarmedfinaleknife"); level.player switchtoweapon("iw5_unarmedfinaleknife"); level.player unlink(); level.player show(); var_02 delete(); level.player_knife delete(); thread rooftop_glass_explode(); wait(0.5); common_scripts\utility::flag_clear("flag_player_speed_control_on"); thread se_balcony_finale_player_speed(); return; } common_scripts\utility::flag_set("flag_disable_takedown_hint"); if(isdefined(level.takedown_button)) { level.takedown_button maps\_shg_utility::hint_button_clear(); } maps\_utility::delaythread(1,::maps\_utility::slowmo_lerp_out); soundscripts\_snd::snd_message("bridge_takedown_fail"); var_00 maps\_anim::anim_single(var_03,"bridge_takedown_fail"); setdvar("ui_deadquote",""); maps\_utility::missionfailedwrapper(); } //Function Number: 100 rooftop_glass_explode() { var_00 = getentarray("org_rooftop_glass_explode","targetname"); wait(0.25); level notify("vfx_rooftop_glass_explode"); soundscripts\_snd::snd_message("fin_skybridge_glass_explo"); earthquake(0.4,1.5,level.player.origin,1000); foreach(var_02 in var_00) { glassradiusdamage(var_02.origin,256,110,25); } } //Function Number: 101 se_balcony_finale() { thread se_balcony_finale_balcony(); common_scripts\utility::flag_wait("flag_se_bridge_takedown"); thread maps\finale_lighting::mb_surprise(); if(!common_scripts\utility::flag("flag_irons_passed_final_run_start")) { thread se_balcony_finale_player(); thread se_balcony_finale_irons(); } } //Function Number: 102 se_link_player_to_rig(param_00,param_01) { level.player playerlinktodelta(param_00,"tag_player",1,10,10,5,0,0,0); level.player springcamenabled(2.2,0.5); level.ground_ref = spawn("script_origin",(0,0,0)); level.ground_ref.angles = level.player getplayerangles(); level.ground_ref linkto(level.player_rig,"tag_player"); level.player playersetgroundreferenceent(level.ground_ref); level.player enableslowaim(0.5,0.5); } //Function Number: 103 se_balcony_reveal_head_sway() { level endon("dofpart5"); level waittill("dofpart3"); for(;;) { screenshake(level.player.origin,5,7,4,2,0.2,0.2,0,0.3,0.375,0.225); wait(1); } } //Function Number: 104 se_player_rig_move_to_irons(param_00,param_01) { var_02 = self.origin; var_03 = param_00 - self.origin; var_04 = 0.05; while(var_04 < param_01) { self.origin = var_02 + level.irons.origin - param_00 + var_03 * var_04 / param_01; var_05 = level.irons.origin - self.origin; if(length2d(var_05) > 20) { var_06 = angleclamp360(var_05[1],var_05[0]); var_07 = var_06 - self.angles[1]; var_08 = self.angles[1] + var_07 / 4; self.angles = (self.angles[0],var_08,self.angles[2]); } var_04 = var_04 + 0.05; wait 0.05; } } //Function Number: 105 se_balcony_finale_player() { var_00 = 200; common_scripts\utility::flag_wait("flag_bridge_takedown_jump_complete"); var_01 = common_scripts\utility::getstruct("se_balcony_finale","script_noteworthy"); level.player_rig = maps\_utility::spawn_anim_model("world_body_damaged_no_exo"); level.player_rig hide(); soundscripts\_snd::snd_message("fin_skybridge_takedown_plr_attack"); var_01 maps\_anim::anim_first_frame_solo(level.player_rig,"balcony_finale_pt2"); common_scripts\utility::flag_wait("flag_balcony_tackle_fake_okay"); while(distance(level.player.origin,level.irons.origin) > var_00 && !common_scripts\utility::flag("flag_balcony_tackle_too_late")) { wait 0.05; } var_02 = level.irons maps\_shg_utility::hint_button_tag("x","J_SpineUpper",72,1000,1); var_02.fontscale = 2; while(!level.player usebuttonpressed() && !common_scripts\utility::flag("flag_balcony_tackle_too_late")) { wait 0.05; } var_02 maps\_shg_utility::hint_button_clear(); if(common_scripts\utility::flag("flag_balcony_tackle_too_late")) { var_03 = getent("fin_balcony_elevator_door_01","targetname"); var_03.animname = "elevator_doors"; var_03 maps\_utility::assign_animtree(); var_04 = common_scripts\utility::getstruct("se_balcony_finale","script_noteworthy"); var_04 thread maps\_anim::anim_single_solo(var_03,"balcony_finale_pt1_fail_elevator_close"); setdvar("ui_deadquote",&"FINALE_FAILED_IRONS_CHASE"); maps\_utility::missionfailedwrapper(); return; } common_scripts\utility::flag_set("flag_balcony_tackle_started"); soundscripts\_snd::snd_message("fin_irons_takedown_start"); soundscripts\_snd::snd_music_message("irons_tackle"); maps\_utility::delaythread(0.5,::maps\_utility::autosave_now); level.player_rig.origin = level.player.origin; level.player_rig.angles = level.player.angles; thread se_link_player_to_rig(level.player_rig,0.05); level.player_rig common_scripts\utility::delaycall(0.3,::show); level.player maps\_shg_utility::setup_player_for_scene(0); var_05 = level.scr_anim["world_body_damaged_no_exo"]["balcony_finale_pt1"]; level.player_rig setanim(var_05); var_06 = getanimlength(var_05); var_07 = level.irons maps\_utility::getanim("balcony_finale_pt1"); var_08 = getanimlength(var_07); var_09 = var_08 - level.irons getanimtime(var_07) * var_08 / 3; level.player_rig setanimrate(var_05,var_06 / var_09); var_06 = var_09; level.player_rig thread se_player_rig_move_to_irons(level.irons.origin,var_06); thread maps\_anim::start_notetrack_wait(level.player_rig,"single anim","balcony_finale_pt1","world_body_damaged_no_exo",var_05); thread maps\_anim::animscriptdonotetracksthread(level.player_rig,"single anim","balcony_finale_pt1"); wait(var_06 - 0.1); level.player_rig notify("balcony_finale_pt1"); level.player_rig unlink(); common_scripts\utility::flag_set("flag_balcony_tackle_success"); level.player lerpfov(55,2); level.player_rig attach("vm_mitchell_finale_knife","tag_weapon_left"); level notify("dofpart2"); soundscripts\_snd::snd_message("fin_irons_tackle"); var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt2"); soundscripts\_snd::snd_message("finale_qte_show_knife"); level.player_rig detach("vm_mitchell_finale_knife","tag_weapon_left"); level.player_rig attach("vm_mitchell_finale_knife","tag_weapon_right"); var_0A = getanimlength(level.player_rig maps\_utility::getanim("balcony_finale_pt2b_idle")); thread maps\finale_utility::process_stab_finale_scene(level.player_rig,"J_Wrist_RI",var_0A,0,var_03); var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt2b_idle"); common_scripts\utility::flag_set("flag_stop_display_melee_hint"); if(common_scripts\utility::flag("flag_button_melee_success")) { var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt2b_success"); } level notify("dofpart3"); level notify("dofpart4"); maps\_utility::flagwaitthread("flag_xbutton_mash_start",::maps\finale_utility::process_buttonmash_finale_scene,level.player_rig,"J_Wrist_LE",8,var_03); maps\_utility::flagwaitthread("flag_stab_mash_button_start",::maps\finale_utility::process_stab_finale_scene,level.player_rig,"J_Wrist_LE",5,0); level notify("dof_look_down"); var_0A = getanimlength(level.player_rig maps\_utility::getanim("balcony_finale_pt3_combined")); var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt3_combined"); level.player_rig detach("vm_mitchell_finale_knife","tag_weapon_right"); level.player_rig attach("vm_mitchell_finale_knife","tag_weapon_left"); common_scripts\utility::flag_set("flag_stop_display_melee_hint"); if(!common_scripts\utility::flag("flag_button_melee_success") && common_scripts\utility::flag("flag_xbutton_mash_end")) { level.player lightsetforplayer("finale_hang_fail"); level notify("audio_finale_qte_fail"); maps\_utility::vision_set_fog_changes("finale_roof_hang_fail",1.5); var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt4_fail"); setdvar("ui_deadquote",""); maps\_utility::missionfailedwrapper(); return; } level notify("dofpart5"); var_03 thread severed_arm_anim(); var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt5"); common_scripts\utility::flag_set("flag_obj_irons_complete"); level notify("irons_dead"); level.gideon.ignoreall = 1; level.gideon maps\_utility::gun_remove(); level.player_rig detach("vm_mitchell_finale_knife","tag_weapon_left",0); var_0B = [level.player_rig,level.gideon]; var_0A = getanimlength(level.player_rig maps\_utility::getanim("balcony_finale_end")); level.player lerpviewangleclamp(1,0.25,0.5,0,5,5,0); level.player enableslowaim(0.2,0.2); var_03 thread maps\_anim::anim_single(var_0B,"balcony_finale_end"); thread balcony_finale_end_camera_control(var_0A); maps\_utility::flagwaitthread("flag_ending_start_fade",::maps\finale_utility::screen_fade_out,5); wait(var_0A); level.gideon maps\_utility::stop_magic_bullet_shield(); level.gideon delete(); wait(2); common_scripts\utility::flag_set("flag_balcony_finale_success"); } //Function Number: 106 severed_arm_anim() { var_00 = maps\_utility::spawn_anim_model("severed_arm"); var_00 hide(); var_00 setcontents(0); thread maps\_anim::anim_single_solo(var_00,"balcony_finale_pt5"); common_scripts\utility::flag_wait("flag_arm_severed"); var_00 show(); common_scripts\utility::flag_wait("flag_obj_irons_complete"); var_00 delete(); } //Function Number: 107 balcony_finale_end_camera_control(param_00) { wait(15); level.player lerpviewangleclamp(1,0.25,0.5,15,15,15,15); wait(16); level.player lerpviewangleclamp(5,0.25,0.5,5,5,5,5); } //Function Number: 108 se_balcony_finale_player_speed() { while(!common_scripts\utility::flag("flag_balcony_tackle_too_late")) { var_00 = level.irons.origin[0] - level.player.origin[0]; if(level.player issprinting()) { var_01 = maps\_shg_utility::linear_map_clamp(var_00,50,250,0.6,1.1); } else { var_01 = maps\_shg_utility::linear_map_clamp(var_00,50,250,0.6,1.2); } level.player setmovespeedscale(var_01); wait 0.05; } } //Function Number: 109 mash_x() { } //Function Number: 110 se_balcony_part1_up_to_tackle(param_00) { level endon("flag_balcony_tackle_started"); param_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt1"); } //Function Number: 111 set_when_time_flag_balcony_tackle_fake_okay() { var_00 = getanimlength(level.irons maps\_utility::getanim("balcony_finale_pt1")) - 2.1; wait(var_00); common_scripts\utility::flag_set("flag_balcony_tackle_fake_okay"); } //Function Number: 112 set_when_time_flag_balcony_tackle_okay() { var_00 = getanimlength(level.irons maps\_utility::getanim("balcony_finale_pt1")) - 1.3; wait(var_00); common_scripts\utility::flag_set("flag_balcony_tackle_okay"); } //Function Number: 113 set_when_time_flag_balcony_tackle_too_late() { var_00 = getanimlength(level.irons maps\_utility::getanim("balcony_finale_pt1")) - 0.1; wait(var_00); common_scripts\utility::flag_set("flag_balcony_tackle_too_late"); } //Function Number: 114 se_balcony_finale_irons() { level waittill("noteworthy_start_window"); if(!isdefined(level.irons)) { level.irons = maps\_utility::spawn_targetname("irons",1); level.irons.animname = "irons"; level.irons.name = ""; level.irons maps\finale_utility::set_custom_patrol_anim_set("unaware"); level.irons maps\_utility::gun_remove(); level.irons thread maps\_utility::deletable_magic_bullet_shield(); level.irons.ignoreall = 1; } var_00 = common_scripts\utility::getstruct("se_balcony_finale","script_noteworthy"); var_00 maps\_anim::anim_first_frame_solo(level.irons,"balcony_finale_pt1"); thread set_when_time_flag_balcony_tackle_fake_okay(); thread set_when_time_flag_balcony_tackle_okay(); thread set_when_time_flag_balcony_tackle_too_late(); thread maps\finale_lighting::mb_tackle(); se_balcony_part1_up_to_tackle(var_00); if(!common_scripts\utility::flag("flag_balcony_tackle_started")) { var_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt1_fail"); level.irons delete(); return; } else { common_scripts\utility::flag_wait("flag_balcony_tackle_success"); } common_scripts\utility::flag_set("flag_balcony_pt2_start"); var_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt2"); var_00 maps\_anim::anim_first_frame_solo(level.irons,"balcony_finale_pt3_combined"); level waittill("dofpart3"); var_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt3_combined"); if(!common_scripts\utility::flag("flag_button_melee_success")) { thread maps\finale_fx::vfx_irons_fail_fall(); var_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt4_fail"); level.player lightsetforplayer("finale_hang_fail"); return; } var_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt5"); level.irons delete(); } //Function Number: 115 se_balcony_finale_balcony() { var_00 = maps\_utility::spawn_anim_model("balcony"); thread maps\finale_lighting::balcony_lighting(var_00); var_01 = common_scripts\utility::getstruct("se_balcony_finale","script_noteworthy"); var_01 maps\_anim::anim_first_frame_solo(var_00,"balcony_finale_pt2"); common_scripts\utility::flag_wait("flag_balcony_pt2_start"); var_01 maps\_anim::anim_single_solo(var_00,"balcony_finale_pt2"); var_01 maps\_anim::anim_last_frame_solo(var_00,"balcony_finale_pt2"); } //Function Number: 116 se_irons_end_helo(param_00,param_01,param_02) { param_00 maps\_anim::anim_single_solo(self,param_01); param_00 maps\_anim::anim_loop_solo(self,param_02); } //Function Number: 117 silo_catwalk_clip(param_00) { var_01 = getentarray("silo_catwalk_blocker_02","targetname"); foreach(var_03 in var_01) { var_03 connectpaths(); var_03 delete(); } var_01 = getentarray("silo_catwalk_blocker_02","targetname"); foreach(var_03 in var_01) { var_03 connectpaths(); var_03 delete(); } var_07 = getnodearray("node_silo_01","targetname"); foreach(var_09 in var_07) { var_09 connectnode(); } param_00 common_scripts\utility::show_solid(); } //Function Number: 118 set_blast_walk_anims() { self.disableexits = 0; self.alwaysrunforward = undefined; var_00 = ["exposed","exposed_crouch"]; var_01[1] = %fin_mech_blast_no_shield_react; var_01[2] = %fin_mech_blast_no_shield_react; var_01[3] = %fin_mech_blast_no_shield_react; var_01[4] = %fin_mech_blast_no_shield_react; var_01[6] = %fin_mech_blast_no_shield_react; var_01[7] = %fin_mech_blast_no_shield_react; var_01[8] = %fin_mech_blast_no_shield_react; var_01[9] = %fin_mech_blast_no_shield_react; var_02[1] = %fin_mech_blast_no_shield_react_idle_to_walk; var_02[2] = %fin_mech_blast_no_shield_react_idle_to_walk; var_02[3] = %fin_mech_blast_no_shield_react_idle_to_walk; var_02[4] = %fin_mech_blast_no_shield_react_idle_to_walk; var_02[6] = %fin_mech_blast_no_shield_react_idle_to_walk; var_02[7] = %fin_mech_blast_no_shield_react_idle_to_walk; var_02[8] = %fin_mech_blast_no_shield_react_idle_to_walk; var_02[9] = %fin_mech_blast_no_shield_react_idle_to_walk; var_03 = level.archetypes["mech"]["run_turn"]; var_04["stairs_down"] = %mech_run_stairs_down; var_05 = level.archetypes[level.gideon.animarchetype]["start_stop"]; maps\_utility::set_npc_anims("mech_blastwalk",%fin_mech_blast_no_shield_walk,%fin_mech_blast_no_shield_walk,[%fin_mech_blast_no_shield_react_idle],var_01,var_02,var_00,var_03,var_03,var_04); level.archetypes[level.gideon.animarchetype]["start_stop"] = var_05; } //Function Number: 119 clear_blast_walk_anims() { maps\_utility::clear_npc_anims("mech_blastwalk"); self.disableexits = 1; } //Function Number: 120 lobby_protect() { if(level.currentgen) { common_scripts\utility::flag_wait("outro_loaded_successfully"); } common_scripts\utility::flag_clear("first_half_lighting"); common_scripts\utility::flag_set("second_half_lighting"); level.player lightsetforplayer("finale_lobby_2"); maps\_utility::vision_set_fog_changes("finale_lobby",0); maps\finale_utility::teleport_to_scriptstruct("checkpoint_lobby"); thread player_blur_think("flag_lobby_clear"); var_00 = getnode("node_gideon_lobby_01","targetname"); level.gideon thread maps\finale_utility::goto_node(var_00,0); level.gideon maps\_utility::disable_ai_color(); level.gideon maps\_utility::set_baseaccuracy(100); level.gideon maps\_utility::set_ignoresuppression(1); level.player giveweapon("iw5_titan45finalelobby_sp_xmags"); level.player switchtoweapon("iw5_titan45finalelobby_sp_xmags"); level.player givestartammo("iw5_titan45finalelobby_sp_xmags"); level.player setweaponammostock("iw5_titan45finalelobby_sp_xmags",0); level.player disableweaponswitch(); level.player setstance("prone"); var_01 = getent("org_player_carried_lobby_01","targetname"); var_02 = getent("org_player_carried_lobby_02","targetname"); var_03 = getent("org_player_carried_lobby_03","targetname"); thread maps\_utility::autosave_now(); thread combat_lobby(); thread player_accuracy_think(); maps\_utility::delaythread(2,::common_scripts\utility::flag_set,"flag_lobby_combat_start"); maps\_utility::delaythread(1,::common_scripts\utility::flag_set,"flag_dialogue_carry_scene_01"); var_04 = undefined; var_05 = getent("org_run_and_putdown","targetname"); var_06 = undefined; var_07 = 0.5; level.player thread maps\finale_utility::screen_fade(0,1,0.5); var_04 = maps\_utility::spawn_anim_model("world_body_damaged"); maps\finale_drag::drag_player_from_start_to_end(var_01,var_02,level.gideon,var_04,"drag_run01",var_07); level.player thread maps\finale_utility::screen_fade(var_07,2,0.5); maps\finale_drag::drag_player_from_start_to_end(var_02,var_03,level.gideon,var_04,"drag_run02",var_07); level.player thread maps\finale_utility::screen_fade(var_07,1,0.5); wait(var_07); wait 0.05; level.player maps\_shg_utility::setup_player_for_scene(); var_06 = [level.gideon,var_04]; var_05 maps\_anim::anim_single(var_06,"drag_putdown"); level.player playerlinktodelta(var_04,"TAG_PLAYER",1,40,45,30,10,1,0); level.player maps\_shg_utility::setup_player_for_gameplay(); var_05 thread maps\_anim::anim_loop_solo(level.gideon,"drag_cover","gideon_ender"); level.player enableweapons(); level.player allowsprint(0); level.player allowprone(1); level.player allowcrouch(0); level.player allowstand(0); level.player allowmelee(0); level.player disableoffhandweapons(); level.player disableoffhandsecondaryweapons(); level.player disableweaponpickup(); level.player thread maps\_player_exo::setoverdrive(); common_scripts\utility::flag_set("flag_lobby_player_can_shoot"); thread maps\finale_drag::shooting_head_sway(); common_scripts\utility::flag_wait("flag_lobby_clear"); level.player maps\_player_exo::unsetoverdrive(); while(isdefined(level.gideon.pickup_allowed) && !level.gideon.pickup_allowed) { wait 0.05; } var_05 notify("gideon_ender"); soundscripts\_snd::snd_message("fin_lobby_gun_limp"); maps\finale_anim_vm::anim_single_solo_vm(level.player,"gun_limp"); soundscripts\_snd::snd_music_message("dazed_and_confused2"); level.player notify("end_head_sway"); level.player playerlinktoblend(var_04,"TAG_PLAYER",1.2); level.player common_scripts\utility::delaycall(4,::playerlinktodelta,var_04,"TAG_PLAYER",1,10,10,10,10,1,0); level.player maps\_shg_utility::setup_player_for_scene(); level.player giveweapon("iw5_unarmedfinale_nullattach"); level.player takeweapon("iw5_titan45finalelobby_sp_xmags"); var_08 = maps\_utility::spawn_anim_model("drag_pistol"); var_06 = [level.gideon,var_04,var_08]; var_05 maps\_anim::anim_single(var_06,"drag_pickup02"); if(isdefined(var_04)) { var_04 delete(); } } //Function Number: 121 player_accuracy_think() { level endon("flag_lobby_clear"); for(;;) { var_00 = level.player getcurrentweapon(); var_01 = level.player getammocount(var_00); if(var_01 <= 2 && var_00 != "none") { var_02 = getaiarray("axis"); foreach(var_04 in var_02) { if(isdefined(var_04.script_noteworthy) && var_04.script_noteworthy == "enemy_lobby") { var_04 thread maps\finale_utility::murder_player_seek(); } } } wait 0.05; } } //Function Number: 122 player_blur_think(param_00) { if(isdefined(param_00)) { level endon(param_00); thread player_blur_reset(param_00); } var_01 = randomfloatrange(2,4); var_02 = randomfloatrange(0.5,5); for(;;) { if(!level.player maps\_utility::isads()) { thread player_blur_monitor_ads(); player_blur_non_ads(var_01,var_02); continue; } thread player_blur_monitor_non_ads(); player_blur_ads(); } wait(0.05); } //Function Number: 123 player_blur_non_ads(param_00,param_01) { level endon("player_ads"); setblur(param_00,param_01); wait(param_01); setblur(0.5,param_01); wait(param_01); } //Function Number: 124 player_blur_ads() { level endon("player_ads"); setblur(0,0.75); wait(0.75); } //Function Number: 125 player_blur_monitor_non_ads() { level notify("player_ads_end"); level endon("player_ads_end"); while(level.player maps\_utility::isads()) { wait(0.05); } level notify("player_ads"); } //Function Number: 126 player_blur_monitor_ads() { level notify("player_ads_end"); level endon("player_ads_end"); while(!level.player maps\_utility::isads()) { wait(0.05); } level notify("player_ads"); } //Function Number: 127 player_blur_reset(param_00) { common_scripts\utility::flag_wait(param_00); setblur(0,2); } //Function Number: 128 player_carried_skybridge() { level.player lightsetforplayer("finale_lobby"); maps\_utility::vision_set_fog_changes("finale_sky_bridge",0); thread maps\finale_lighting::sky_bridge_dof(); common_scripts\utility::flag_set("second_half_lighting"); level.player disableweapons(); level.player setstance("prone"); level.player allowstand(0); level.player allowcrouch(0); level.player takeweapon("iw5_titan45finalelobby_sp_xmags"); level.player giveweapon("iw5_unarmedfinale_nullattach"); level.player switchtoweapon("iw5_unarmedfinale_nullattach"); maps\_utility::delaythread(2,::common_scripts\utility::flag_set,"flag_dialogue_carry_scene_02"); level.gideon maps\_utility::enable_ai_color(); level notify("sky_bridge_vfx"); maps\finale_utility::teleport_to_scriptstruct("checkpoint_sky_bridge"); var_00 = getent("org_player_carried_01","targetname"); var_01 = getent("org_player_carried_02","targetname"); var_02 = getent("org_player_carried_03","targetname"); var_03 = getent("org_player_carried_04","targetname"); var_04 = getent("org_player_carried_05","targetname"); var_05 = getent("org_player_carried_06","targetname"); thread maps\finale_utility::screen_fade_in(1); var_06 = 0.5; level.player thread maps\finale_utility::screen_fade(1,1,1); var_07 = maps\_utility::spawn_anim_model("world_body_damaged"); maps\finale_drag::drag_player_from_start_to_end(var_00,var_01,level.gideon,var_07,"drag_run01",1); level.player maps\finale_utility::screen_fade(1,1,1); maps\finale_drag::drag_player_from_start_to_end(var_02,var_03,level.gideon,var_07,"drag_run01",2); level.player maps\finale_utility::screen_fade(2,0.5,2); maps\finale_drag::drag_player_from_start_to_end(var_00,var_01,level.gideon,var_07,"drag_run04",0.5); level.player maps\finale_utility::screen_fade(0.5,1,1); maps\finale_drag::drag_player_from_start_to_end(var_02,var_03,level.gideon,var_07,"drag_run02",2); level.player maps\finale_utility::screen_fade(2,1,4); maps\finale_drag::drag_player_from_start_to_end(var_02,var_03,level.gideon,var_07,"drag_run01",2); maps\finale_utility::screen_fade_out(2); var_07 delete(); } //Function Number: 129 will_room_door_exit() { var_00 = getent("org_irons_reveal_exit_door","targetname"); var_01 = maps\_utility::spawn_anim_model("door"); var_00 thread maps\_anim::anim_first_frame_solo(var_01,"irons_reveal_exit_door"); common_scripts\utility::flag_wait("flag_will_room_door_exit_open"); soundscripts\_snd::snd_message("irons_reveal_exit_door_open",var_01); var_00 thread maps\_anim::anim_single_solo(var_01,"irons_reveal_exit_door"); } //Function Number: 130 irons_rooftop() { common_scripts\utility::flag_wait("flag_irons_rooftop"); level.irons = maps\_utility::spawn_targetname("irons",1); level.irons.animname = "irons"; level.irons.name = ""; level.irons maps\finale_utility::set_custom_patrol_anim_set("unaware"); level.irons maps\_utility::gun_remove(); level.irons thread maps\_utility::magic_bullet_shield(); common_scripts\utility::flag_set("flag_se_irons_end"); } //Function Number: 131 razorback_spotlight_init() { maps\_vehicle::godon(); maps\_vehicle::mgoff(); maps\_utility::ent_flag_init("spotlight_on"); self.spotlight = spawnturret("misc_turret",self gettagorigin("tag_flash"),"heli_spotlight_so_castle"); self.spotlight setmode("manual"); self.spotlight setmodel("com_blackhawk_spotlight_on_mg_setup"); self.spotlight maketurretinoperable(); self.spotlight makeunusable(); self.spotlight.angles = self gettagangles("tag_flash"); self.spotlight linkto(self,"tag_flash",(-16,-119,-28),(-45,0,0)); thread spotlight_think(); self setlookatent(level.irons); thread razorback_spotlight(); } //Function Number: 132 razorback_spotlight() { common_scripts\utility::flag_wait("flag_razorback_spotlight_on"); maps\_utility::ent_flag_set("spotlight_on"); } //Function Number: 133 spotlight_think() { self endon("death"); self notify("stop_helo_spotlight"); self endon("stop_helo_spotlight"); thread spotlight_light_motion(); var_00 = 0; for(;;) { if(!maps\_utility::ent_flag("spotlight_on")) { if(var_00) { var_00 = 0; stopfxontag(common_scripts\utility::getfx("docks_heli_spotlight"),self.spotlight,"tag_flash"); stopfxontag(common_scripts\utility::getfx("lab_heli_spot_flare"),self.spotlight,"tag_flash"); } var_01 = level.player; if(isdefined(var_01)) { self.spotlight settargetentity_smoothtracking(var_01); } wait(0.2); continue; } wait(0.5); if(!var_00) { var_00 = 1; playfxontag(common_scripts\utility::getfx("docks_heli_spotlight"),self.spotlight,"tag_flash"); playfxontag(common_scripts\utility::getfx("lab_heli_spot_flare"),self.spotlight,"tag_flash"); } } } //Function Number: 134 spotlight_light_motion() { self endon("stop_helo_spotlight"); self endon("death"); for(;;) { var_00 = undefined; if(isdefined(self.override_target)) { self.spotlight settargetentity_smoothtracking(self.override_target); while(isdefined(self.override_target)) { wait(0.5); } continue; } else { var_01 = [level.player,level.irons]; var_00 = level.irons; if(isdefined(var_00)) { self.spotlight settargetentity_smoothtracking(var_00); } } if(isdefined(var_00) && isai(var_00)) { if(!isdefined(var_00) || !isalive(var_00)) { break; } wait(0.1); continue; } wait(randomfloatrange(3,5)); } } //Function Number: 135 settargetentity_smoothtracking(param_00) { self.real_target = param_00; if(isdefined(param_00)) { if(!isdefined(self.spotlight_target)) { self.spotlight_target = common_scripts\utility::spawn_tag_origin(); } self.spotlight_target.origin = param_00.origin; self.spotlight_target linkto(self); self settargetentity(self.spotlight_target); } } //Function Number: 136 tff_cleanup_vehicle(param_00) { var_01 = ""; switch(param_00) { case "intro": var_01 = "load_middle_transient"; break; case "middle": var_01 = "load_outro_transient"; break; } if(var_01 == "") { return; } common_scripts\utility::flag_wait(var_01); if(!isdefined(self)) { return; } if(isremovedentity(self)) { return; } if(!common_scripts\utility::string_find(self.classname,"corpse")) { maps\_vehicle_code::_freevehicle(); } self delete(); } //Function Number: 137 silo_autosaves() { level endon("flag_exhaust_hatch_open"); level.stopwatch = 240; var_00 = level.stopwatch * 1000; var_01 = gettime(); var_02 = gettime() - var_01 / 1000; var_03 = level.stopwatch - 180; thread silo_autosaves_safety(var_02,var_03); common_scripts\utility::flag_wait("flag_lower_missile_loader"); var_02 = gettime() - var_01 / 1000; var_03 = level.stopwatch - 120; thread silo_autosaves_safety(var_02,var_03); common_scripts\utility::flag_wait("flag_se_door_kick_complete"); var_02 = gettime() - var_01 / 1000; var_03 = level.stopwatch - 30; thread silo_autosaves_safety(var_02,var_03); } //Function Number: 138 silo_autosaves_safety(param_00,param_01,param_02) { if(!isdefined(param_02)) { param_02 = 0; } if(param_00 < param_01) { maps\_utility::autosave_or_timeout("silo_clear",param_01 - param_00); if(param_02) { wait(3); } else { wait(10); } common_scripts\utility::flag_clear("can_save"); wait(2); common_scripts\utility::flag_set("can_save"); } } //Function Number: 139 rope_link(param_00,param_01,param_02,param_03) { var_04 = param_00 gettagorigin(param_01); var_05 = spawn("script_model",var_04); var_05 setmodel("rope1ft_2j"); var_05 useanimtree(#animtree); var_05 setanim(%rope_base,1,0); var_05 setanim(%rope_length,1,0); var_05 linkto(param_00,param_01); var_05 setlookattarget(param_02,"bone",param_03); for(;;) { var_06 = param_00 gettagorigin(param_01); var_07 = param_02 gettagorigin(param_03); var_08 = var_07 - var_06; var_09 = length(var_08); var_0A = var_09 - 12 / 88; if(var_0A < 0) { var_0A = 0; } var_05 setanim(%rope_length_add,var_0A,0); if(level common_scripts\utility::flag("flag_intro_flyin_release")) { var_05 clearlookattarget(); var_05 delete(); return; } wait 0.05; } }