/******************************************************************* * Decompiled By: Bog * Decompiled File: fusion_code.gsc * Game: Call of Duty: Advanced Warfare * Platform: PC * Function Count: 399 * Decompile Time: 5965 ms * Timestamp: 4/22/2024 2:30:02 AM *******************************************************************/ //Function Number: 1 fusion_intro_screen() { level.player freezecontrols(1); thread fusion_intro_background(8.3 + level.intro_hades_video_length,5); thread fusion_intro_title_text(); common_scripts\utility::flag_set("intro_screen_done"); common_scripts\utility::flag_set("introscreen_complete"); wait(11 + level.intro_hades_video_length); level.player freezecontrols(0); } //Function Number: 2 fusion_intro_title_text() { setsaveddvar("cg_cinematicfullscreen","1"); maps\_shg_utility::play_chyron_video("chyron_text_fusion"); var_00 = getdvarint("cg_cinematicCanPause",0); setsaveddvar("cg_cinematicCanPause",1); cinematicingame("fusion_videolog02"); wait 0.05; while(!iscinematicplaying()) { wait 0.05; } fusion_intro_hades_videolog_vo(); setsaveddvar("cg_cinematicCanPause",var_00); common_scripts\utility::flag_set("intro_text_cinematic_over"); } //Function Number: 3 fusion_intro_hades_videolog_vo() { var_00 = spawn("script_origin",level.player.origin); var_00 playscheduledcinematicsound(106,"fus_hade_peopleoftheworldyou"); var_00 playscheduledcinematicsound(269,"fus_hade_technologyisacancerrotting"); var_00 playscheduledcinematicsound(595,"fus_hade_todaywestrikeatthe"); wait(1); while(iscinematicplaying()) { wait 0.05; } var_00 delete(); } //Function Number: 4 fusion_intro_background(param_00,param_01) { var_02 = newclienthudelem(level.player); var_02 setshader("black",1280,720); var_02.horzalign = "fullscreen"; var_02.vertalign = "fullscreen"; var_02.alpha = 1; var_02.foreground = 0; wait(param_00); var_02 fadeovertime(param_01); var_02.alpha = 0; wait(param_01); var_02 destroy(); } //Function Number: 5 gameplay_setup() { maps\_variable_grenade::main(); vehicle_scripts\_pdrone_tactical_picker::main(); maps\_stingerm7::init(); maps\_player_exo::player_exo_add_single("high_jump"); if(level.nextgen) { thread hide_water(); } thread setup_m_turret(); thread setup_spawn_functions(); thread finale_enemy_transports(); thread finale_enemy_gaz(); thread reactor_entrance_rally(); thread interior_gameplay(); thread evacuation_setup(); thread setup_evacuation_scene(); thread extraction_chopper(); thread cooling_tower_collapse(); if(level.currentgen) { thread mobile_cover_drones_cg(); } thread setup_dont_leave_failure(); thread setup_dont_leave_hint(); maps\_utility::add_hint_string("hint_dont_leave_mission",&"FUSION_DONT_LEAVE",::should_break_dont_leave); } //Function Number: 6 setup_spawn_functions() { maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_01",::street_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_02",::street_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_turret_wave_2",::street_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_rear_mi17_01",::street_enemy_think); if(level.nextgen) { maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_03",::street_enemy_building_east_think); } maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_04",::street_enemy_building_west_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_zip_rooftop",::rooftop_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_zip_rooftop_strafe",::rooftop_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_tank_stage_01",::street_enemy_tank_battle_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_tank_stage_02",::street_enemy_tank_battle_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_tank_stage_03",::street_enemy_tank_battle_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_turret_wave_1",::street_enemy_tank_damaged_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_turret_wave_2",::street_enemy_tank_damaged_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_blown_building",::street_enemy_blown_building_think); if(level.currentgen) { maps\_utility::array_spawn_function_noteworthy("enemy_street_zip_rooftop_left",::rooftop_enemy_think_left); maps\_utility::array_spawn_function_noteworthy("enemy_street_zip_rooftop_right",::rooftop_enemy_think_right); } maps\_utility::array_spawn_function_noteworthy("turbine_room_enemy",::turbine_room_enemy_think); common_scripts\utility::array_thread(getentarray("corpse_trigger","targetname"),::corpse_trigger_think); maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_rear",::street_enemy_think); maps\_utility::array_spawn_function_noteworthy("rpg_vehicle",::postspawn_rpg_vehicle); maps\_utility::array_spawn_function_targetname("hangar_enemies_01",::hangar_enemy_think); maps\_utility::add_global_spawn_function("allies",::disable_badplace_for_red_guys); maps\_utility::add_global_spawn_function("allies",::ally_enable_boost_traversals); maps\_utility::array_spawn_function_noteworthy("evacuation_first_drones",::evacuation_first_drones_think); thread enemy_combat_equip_microwave_grenades(); maps\_utility::add_global_spawn_function("axis",::detect_turret_death); maps\_utility::add_global_spawn_function("axis",::maps\_chargeable_weapon::ai_detect_charged_damage); } //Function Number: 7 tff_cleanup_vehicle(param_00) { switch(param_00) { case "intro": level waittill("tff_pre_transition_intro_to_middle"); break; case "middle": level waittill("tff_pre_transition_middle_to_outro"); break; } if(isdefined(self)) { if(maps\_vehicle::isvehicle()) { self freevehicle(); } self delete(); } } //Function Number: 8 setup_dont_leave_failure() { common_scripts\utility::flag_wait("player_left_map"); level notify("mission failed"); setdvar("ui_deadquote",&"FUSION_DONT_LEAVE_FAILURE"); maps\_utility::missionfailedwrapper(); } //Function Number: 9 setup_dont_leave_hint() { level endon("mission failed"); for(;;) { common_scripts\utility::flag_wait("player_leaving_map"); maps\_utility::display_hint("hint_dont_leave_mission"); common_scripts\utility::flag_wait_either("player_leaving_map","player_returning_to_map"); wait 0.05; } } //Function Number: 10 should_break_dont_leave() { if(common_scripts\utility::flag("missionfailed")) { return 1; } if(common_scripts\utility::flag("player_returning_to_map")) { return 1; } return 0; } //Function Number: 11 mobile_cover_drones_cg() { if(level.start_point != "fly_in_animated" && level.start_point != "fly_in_animated_part2" && level.start_point != "courtyard") { return; } var_00 = getentarray("mobile_cover_drones","targetname"); var_01 = []; foreach(var_03 in var_00) { var_01[var_01.size] = var_03 maps\_utility::spawn_vehicle(); } level waittill("tff_pre_transition_intro_to_middle"); common_scripts\utility::array_call(var_01,::delete); } //Function Number: 12 heroes_post_zip() { if(level.nextgen) { var_00 = getent("hero_alpha_leader","script_noteworthy"); var_00 maps\_utility::add_spawn_function(::alpha_leader_think); level.alpha_leader = var_00 maps\_utility::spawn_ai(1); level.alpha_leader.animname = "alpha_leader"; level.alpha_leader maps\_utility::magic_bullet_shield(1); } level.carter unlink(); level.carter maps\_utility::teleport_ent(common_scripts\utility::getstruct("carter_zip_dest","targetname")); level.carter maps\_utility::disable_ai_color(); level.carter maps\_utility::enable_sprint(); level.carter maps\_utility::gun_recall(); level.carter show(); level.joker unlink(); level.joker maps\_utility::teleport_ent(common_scripts\utility::getstruct("joker_zip_dest","targetname")); level.joker maps\_utility::gun_recall(); level.joker show(); } //Function Number: 13 alpha_leader_think() { common_scripts\utility::flag_wait("flag_walker_destroyed"); level.alpha_leader maps\_utility::set_force_color("y"); } //Function Number: 14 ally_enable_boost_traversals() { self.canjumppath = 1; } //Function Number: 15 disable_badplace_for_red_guys() { if(!isdefined(self.script_forcecolor) || self.script_forcecolor != "r") { return; } thread maps\fusion_utility::ignore_badplace(undefined,"flag_mt_wall_rpg_impact"); } //Function Number: 16 objectives() { thread set_obj_markers_current(); obj_shut_down_reactor(); obj_escape(); } //Function Number: 17 obj_shut_down_reactor() { if(!common_scripts\utility::flag("flag_intro_objective_given")) { maps\_utility::flag_set_delayed("flag_intro_objective_given",33 + level.intro_hades_video_length); common_scripts\utility::flag_wait("flag_intro_objective_given"); } objective_add(maps\_utility::obj("shutdown_reactor"),"active",&"FUSION_OBJECTIVE_REACTOR"); objective_current(maps\_utility::obj("shutdown_reactor")); objective_position(maps\_utility::obj("shutdown_reactor"),getent("obj_reactor_01","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_walker"); if(isdefined(level.walker)) { objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),&"FUSION_OBJECTIVE_WALKER"); var_00 = common_scripts\utility::spawn_tag_origin(); var_00 linkto(level.walker,"tag_camera",(0,0,-24),(0,0,0)); objective_onentity(maps\_utility::obj("shutdown_reactor"),var_00,(0,0,0)); common_scripts\utility::flag_wait("flag_walker_destroyed"); objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),""); var_00 delete(); } common_scripts\utility::flag_wait("update_obj_pos_security_entrance_1"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_security_entrance_1","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_security_entrance_2"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_security_entrance_2","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_security_room"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_security_room","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_security_elevator_burke"); if(isdefined(level.burke)) { objective_onentity(maps\_utility::obj("shutdown_reactor"),level.burke); } common_scripts\utility::flag_wait("update_obj_pos_security_elevator"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_security_elevator","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_elevator_descent"); objective_position(maps\_utility::obj("shutdown_reactor"),(0,0,0)); common_scripts\utility::flag_wait("update_obj_pos_lab_follow_joker"); if(isdefined(level.joker)) { objective_onentity(maps\_utility::obj("shutdown_reactor"),level.joker); } common_scripts\utility::flag_wait("update_obj_pos_lab_follow_burke"); if(isdefined(level.burke)) { objective_onentity(maps\_utility::obj("shutdown_reactor"),level.burke); } common_scripts\utility::flag_wait("update_obj_pos_lab_follow_carter"); if(isdefined(level.carter)) { objective_onentity(maps\_utility::obj("shutdown_reactor"),level.carter); } common_scripts\utility::flag_wait("update_obj_pos_reactor_1"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_reactor_1","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_reactor_2"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_reactor_2","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_reactor_exit"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_reactor_exit","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_reactor_storage_1"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_reactor_storage_1","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_reactor_storage_2"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_reactor_storage_2","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_turbine_elevator"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_turbine_elevator","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_turbine_elevator_button"); objective_position(maps\_utility::obj("shutdown_reactor"),getent("elevator_button","targetname").origin); objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),&"FUSION_OBJ_POINTER_USE"); common_scripts\utility::flag_wait("update_obj_pos_turbine_elevator_ascent"); objective_position(maps\_utility::obj("shutdown_reactor"),(0,0,0)); objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),""); common_scripts\utility::flag_wait("update_obj_pos_turbine_room_1"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_turbine_room_1","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_turbine_room_exit"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_turbine_room_exit","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_control_room_door"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_control_room_door","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_control_room_explosion"); objective_position(maps\_utility::obj("shutdown_reactor"),(0,0,0)); common_scripts\utility::flag_wait("update_obj_pos_control_room_console"); objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_control_room_console","targetname").origin); objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),&"FUSION_OBJ_POINTER_USE"); common_scripts\utility::flag_wait("update_obj_pos_control_room_using_console"); objective_position(maps\_utility::obj("shutdown_reactor"),(0,0,0)); objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),""); common_scripts\utility::flag_wait("flag_shut_down_reactor_failed"); wait(2); objective_state(maps\_utility::obj("shutdown_reactor"),"failed"); wait(2); } //Function Number: 18 set_obj_markers_current() { common_scripts\utility::flag_wait_all("flag_obj_markers","flag_burke_rally_street_dialogue_complete"); objective_add(maps\_utility::obj("use_mobile_cover"),"invisible",""); objective_add(maps\_utility::obj("enter_mobile_turret"),"invisible",""); objective_add(maps\_utility::obj("use_smaw"),"invisible",""); thread obj_use_mobile_cover(); thread obj_enter_mobile_turret(); thread obj_use_smaw(); } //Function Number: 19 obj_use_mobile_cover() { common_scripts\utility::flag_wait("flag_mcd_vo_done"); objective_state_nomessage(maps\_utility::obj("use_mobile_cover"),"active"); objective_current_nomessage(maps\_utility::obj("use_mobile_cover"),maps\_utility::obj("shutdown_reactor"),maps\_utility::obj("enter_mobile_turret")); objective_setpointertextoverride(maps\_utility::obj("use_mobile_cover"),&"FUSION_OBJ_POINTER_USE"); objective_position(maps\_utility::obj("use_mobile_cover"),getent("org_obj_use_mobile_cover","targetname").origin); objective_additionalposition(maps\_utility::obj("use_mobile_cover"),1,getent("org_obj_use_mobile_cover2","targetname").origin); level.player waittill("player_linked_to_cover"); objective_state_nomessage(maps\_utility::obj("use_mobile_cover"),"done"); } //Function Number: 20 obj_enter_mobile_turret() { common_scripts\utility::flag_wait("flag_mt_move_up_03"); objective_state_nomessage(maps\_utility::obj("enter_mobile_turret"),"active"); objective_current_nomessage(maps\_utility::obj("enter_mobile_turret"),maps\_utility::obj("shutdown_reactor")); objective_setpointertextoverride(maps\_utility::obj("enter_mobile_turret"),&"FUSION_OBJ_POINTER_ENTER"); objective_position(maps\_utility::obj("enter_mobile_turret"),getent("org_obj_enter_mobile_turret","targetname").origin); level.player waittill("player_starts_entering_mobile_turret"); objective_state_nomessage(maps\_utility::obj("enter_mobile_turret"),"done"); } //Function Number: 21 obj_use_smaw() { common_scripts\utility::flag_wait("flag_enemy_walker"); thread track_smaw(); objective_state_nomessage(maps\_utility::obj("use_smaw"),"active"); objective_current_nomessage(maps\_utility::obj("use_smaw"),maps\_utility::obj("shutdown_reactor")); objective_setpointertextoverride(maps\_utility::obj("use_smaw"),&"FUSION_OBJ_POINTER_USE"); common_scripts\utility::flag_wait("flag_walker_reveal_dialogue_complete"); var_00 = 0; while(!common_scripts\utility::flag("flag_walker_destroyed") || !common_scripts\utility::flag("flag_walker_death_anim_start")) { if(does_player_have_smaw()) { if(var_00) { objective_state_nomessage(maps\_utility::obj("use_smaw"),"done"); var_00 = 0; } continue; } if(!var_00) { objective_state_nomessage(maps\_utility::obj("use_smaw"),"active"); objective_current_nomessage(maps\_utility::obj("use_smaw"),maps\_utility::obj("shutdown_reactor")); objective_setpointertextoverride(maps\_utility::obj("use_smaw"),&"FUSION_OBJ_POINTER_USE"); objective_onentity(maps\_utility::obj("use_smaw"),level.smaw_location); var_00 = 1; } wait 0.05; } if(var_00) { objective_state_nomessage(maps\_utility::obj("use_smaw"),"done"); var_00 = 0; } level notify("stop_track_smaw"); level.smaw_location delete(); level.smaw_location = undefined; } //Function Number: 22 track_smaw() { level endon("stop_track_smaw"); level.smaw_location = common_scripts\utility::spawn_tag_origin(); level.smaw_location.origin = getent("org_obj_use_smaw","targetname").origin; for(;;) { level.player waittill("pickup",var_00,var_01); if(isdefined(var_01) && issubstr(var_01.classname,"iw5_stingerm7_sp")) { level.smaw_location linkto(var_01,"",(-10,8,1),(0,0,0)); } } } //Function Number: 23 does_player_have_smaw() { var_00 = level.player getweaponslistall(); foreach(var_02 in var_00) { if(var_02 == "iw5_stingerm7_sp") { return 1; } } return 0; } //Function Number: 24 obj_escape() { var_00 = maps\_utility::obj("obj_escape_power_plant"); objective_add(var_00,"active",&"FUSION_OBJECTIVE_ESCAPE"); objective_current(var_00); objective_position(var_00,getent("obj_escape_01","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_control_room_exit_1"); objective_position(var_00,common_scripts\utility::getstruct("obj_pos_control_room_exit_1","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_control_room_exit_2"); objective_position(var_00,common_scripts\utility::getstruct("obj_pos_control_room_exit_2","targetname").origin); common_scripts\utility::flag_wait("update_obj_pos_hangar_entrance"); objective_position(var_00,common_scripts\utility::getstruct("obj_pos_hangar_entrance","targetname").origin); common_scripts\utility::flag_wait("flag_obj_02_pos_update_02"); objective_position(var_00,getent("obj_escape_02","targetname").origin); common_scripts\utility::flag_wait("flag_obj_02_pos_update_03"); objective_position(var_00,getent("obj_escape_03","targetname").origin); common_scripts\utility::flag_wait("objective_on_extraction_chopper"); if(isdefined(level.extraction_chopper)) { objective_onentity(var_00,level.extraction_chopper); } common_scripts\utility::flag_wait("tower_knockback"); wait(5); objective_position(var_00,(0,0,0)); common_scripts\utility::flag_wait("play_ending"); objective_state(var_00,"done"); } //Function Number: 25 squad_heli_zip() { common_scripts\utility::flag_wait("intro_squad_helis_start"); wait(0.05); level.heli_squad_01.animname = "npc_zip_warbird"; level.heli_squad_01.goalradius = 1; var_00 = spawn("script_origin",(-80,-2480,752)); var_00.angles = (0,265,0); common_scripts\utility::flag_wait("flag_squad_heli_2_unload"); if(level.nextgen) { level.heli_squad_01 setvehgoalpos(var_00.origin,1); level.heli_squad_01 waittill("goal"); level.heli_squad_01 vehicle_setspeedimmediate(0,0.05,0.05); level.heli_squad_01 sethoverparams(0,0,0); level.heli_squad_01 notify("stop_handle_rotors"); var_00 maps\_anim::anim_first_frame_solo(level.heli_squad_01,"npc_zip"); var_01 = getent("npc_zip_guy_1","targetname"); var_02 = getent("npc_zip_guy_2","targetname"); var_03 = getent("npc_zip_guy_3","targetname"); var_04 = getent("npc_zip_guy_4","targetname"); level.guy_1 = var_01 maps\_utility::spawn_ai(1); level.guy_1.animname = "npc_zip_1"; level.guy_1.ignoreme = 1; level.guy_2 = var_02 maps\_utility::spawn_ai(1); level.guy_2.animname = "npc_zip_2"; level.guy_2.ignoreme = 1; var_05 = var_03 maps\_utility::spawn_ai(1); var_05.animname = "npc_zip_3"; var_05.ignoreme = 1; var_06 = var_04 maps\_utility::spawn_ai(1); var_06.animname = "npc_zip_4"; var_06.ignoreme = 1; var_07 = maps\_utility::spawn_anim_model("zipline_1"); var_08 = maps\_utility::spawn_anim_model("zipline_2"); var_09 = maps\_utility::spawn_anim_model("zipline_3"); var_0A = maps\_utility::spawn_anim_model("zipline_4"); var_0B = [level.guy_1,level.guy_2,var_05,var_06,var_07,var_08,var_09,var_0A]; level.heli_squad_01 maps\_anim::anim_first_frame(var_0B,"npc_zip","TAG_GUY0"); foreach(var_0D in var_0B) { var_0D linkto(level.heli_squad_01,"TAG_GUY0"); } var_00 thread maps\_anim::anim_single_solo(level.heli_squad_01,"npc_zip"); level.heli_squad_01 maps\_anim::anim_single(var_0B,"npc_zip","TAG_GUY0"); foreach(var_0D in var_0B) { var_0D unlink(); } var_07 delete(); var_08 delete(); var_09 delete(); var_0A delete(); level.guy_1 maps\fusion_utility::goto_node("node_squad_zip_guard_01",0); level.guy_2 maps\fusion_utility::goto_node("node_squad_zip_guard_02",0); var_05 delete(); var_06 delete(); wait(2); } if(level.currentgen) { wait(10); } common_scripts\utility::flag_set("flag_rpg_at_heli"); common_scripts\utility::flag_set("flag_squad_heli_01_zip_complete"); level.heli_squad_01 sethoverparams(50,10,10); level.heli_squad_01 setmaxpitchroll(15,40); level.heli_squad_01 thread vehicle_scripts\_xh9_warbird::handle_rotors(); level.heli_squad_01.script_vehicle_selfremove = 1; common_scripts\utility::flag_wait("flag_player_zip_started"); if(level.nextgen) { level.guy_1 delete(); level.guy_2 delete(); var_00 delete(); } } //Function Number: 26 fly_in_scene_part1(param_00,param_01,param_02) { var_03 = getanimlength(%fusion_fly_in_intro_warbird_a); level.player shellshock("fusion_slowview",var_03); level.joker maps\_utility::gun_remove(); level.carter maps\_utility::gun_remove(); var_04 = []; var_04[0] = param_01; param_00 maps\_anim::anim_first_frame(var_04,"fly_in_intro"); var_05 = []; var_05[0] = param_02; var_05[1] = level.burke; var_05[2] = level.joker; var_05[3] = level.carter; var_05[4] = level.copilot_intro; var_05[5] = level.pilot_intro; var_05[6] = level.guy_facing_player_intro; foreach(var_07 in var_05) { var_07 thread maps\fusion_utility::hide_friendname_until_flag_or_notify("warbird_fly_in_arrived"); } param_01 maps\_anim::anim_first_frame(var_05,"fly_in_intro","tag_guy0"); foreach(var_07 in var_05) { var_07 linkto(param_01,"tag_guy0"); } level.player playerlinktodelta(param_02,"tag_player",1,0,0,0,0,1); wait(level.intro_hades_video_length); soundscripts\_snd::snd_message("start_hologram_audio"); soundscripts\_snd::snd_message("start_burke_foley",level.burke); soundscripts\_snd::snd_message("start_intro_npc_foley",level.guy_facing_player_intro); common_scripts\utility::flag_wait("intro_screen_done"); thread intro_heli_movies(); thread fly_in_rumble(); level.player thread widen_player_view(param_02); param_00 thread maps\_anim::anim_single(var_04,"fly_in_intro"); param_01 maps\_anim::anim_single(var_05,"fly_in_intro","tag_guy0"); var_0B = common_scripts\utility::spawn_tag_origin(); var_0B linkto(param_01,"TAG_ORIGIN",(0,0,0),(270,0,0)); playfxontag(common_scripts\utility::getfx("warbird_rotor"),var_0B,"TAG_ORIGIN"); } //Function Number: 27 fly_in_rumble() { common_scripts\utility::flag_wait("intro_text_cinematic_over"); var_00 = maps\_utility::get_rumble_ent("steady_rumble"); var_00.intensity = 0.08; level.burke waittillmatch("start_video_3","single anim"); level.player playrumblelooponentity("tank_rumble"); wait(3.5); level.player stoprumble("tank_rumble"); level waittill("intro_missile_hit"); level.player playrumbleonentity("damage_heavy"); level.player waittill("fastzip_landed"); stopallrumbles(); } //Function Number: 28 intro_missile_hit(param_00) { level notify("intro_missile_hit"); } //Function Number: 29 widen_player_view(param_00) { wait(0.2); self playerlinktodelta(param_00,"tag_player",0.75,35,0,15,25,1); common_scripts\utility::flag_wait("flag_combat_zip_rooftop_start"); self lerpviewangleclamp(4,2,2,50,40,15,45); } //Function Number: 30 lerp_wind(param_00,param_01,param_02,param_03,param_04) { var_05 = param_02 - param_00 / param_04 / 0.05; var_06 = param_03 - param_01 / param_04 / 0.05; while(param_04 > 0) { param_00 = param_00 + var_05; param_01 = param_01 + var_06; setsaveddvar("r_reactiveMotionWindAmplitudeScale",param_00); setsaveddvar("r_reactiveMotionWindFrequencyScale",param_01); param_04 = param_04 - 0.05; wait(0.05); } } //Function Number: 31 wind_over_trees() { wait(20); lerp_wind(0.3,1,15,1.5,1.5); wait(1.75); lerp_wind(15,1.5,10,1,1); wait(3); lerp_wind(10,1,20,2,2); wait(5); setsaveddvar("r_reactiveMotionWindAmplitudeScale","0.3"); setsaveddvar("r_reactiveMotionWindFrequencyScale","0.5"); } //Function Number: 32 fly_in_scene_part2(param_00,param_01,param_02) { thread wind_over_trees(); level.player shellshock("fusion_slowview",50); var_03 = maps\_vehicle::spawn_vehicle_from_targetname("squad_blackhawk"); var_03.animname = "warbird_b"; var_03.no_anim_rotors = 1; var_03 vehicle_turnengineoff(); var_04 = maps\_vehicle::spawn_vehicle_from_targetname("warbird_c"); var_04.animname = "warbird_c"; var_04.no_anim_rotors = 1; var_04 vehicle_turnengineoff(); var_05 = maps\_vehicle::spawn_vehicle_from_targetname("warbird_d"); var_05.animname = "warbird_d"; var_05.no_anim_rotors = 1; var_05 vehicle_turnengineoff(); var_06 = maps\_vehicle::spawn_vehicle_from_targetname("warbird_e"); var_06.animname = "warbird_e"; var_06.no_anim_rotors = 1; var_06 vehicle_turnengineoff(); var_07 = getent("npc_b","targetname"); var_08 = var_07 maps\_utility::spawn_ai(1); var_08.animname = "npc_b"; var_09 = getent("npc_c","targetname"); var_0A = var_09 maps\_utility::spawn_ai(1); var_0A.animname = "npc_c"; var_0B = getent("npc_d","targetname"); var_0C = var_0B maps\_utility::spawn_ai(1); var_0C.animname = "npc_d"; var_0D = getent("npc_e","targetname"); var_0E = var_0D maps\_utility::spawn_ai(1); var_0E.animname = "npc_e"; waittillframeend; waittillframeend; var_03 vehicle_scripts\_xh9_warbird::cloak_warbird(); var_08 hide(); var_0A hide(); var_0C hide(); var_0E hide(); var_03 thread wait_to_decloak_helicopter(4.25,var_08,var_0A,var_0C,var_0E); thread fly_in_squad_uncloak(); var_0F = maps\_utility::spawn_anim_model("tower_debris"); if(level.currentgen) { var_0F overridelightingorigin((890,-11485,2280)); } var_10 = common_scripts\utility::getstruct("tower_debris_part","targetname"); var_11 = []; var_11[0] = param_01; var_11[1] = var_03; var_11[2] = var_04; var_11[3] = var_05; var_11[4] = var_06; var_12 = []; var_12[0] = param_02; var_12[1] = level.burke; var_12[2] = level.joker; var_12[3] = level.carter; var_12[4] = level.copilot_intro; var_12[5] = level.pilot_intro; var_12[6] = level.guy_facing_player_intro; param_00 maps\_anim::anim_first_frame([var_03,var_04,var_05,var_06],"fly_in_part2"); var_13 = []; var_13[0] = var_08; var_13[1] = var_0A; var_13[2] = var_0C; var_13[3] = var_0E; playfxontag(common_scripts\utility::getfx("distortion_warbird"),var_03,"TAG_STATIC_MAIN_ROTOR_R"); var_03 maps\_anim::anim_first_frame(var_13,"fly_in_part2","tag_guy0"); foreach(var_15 in var_13) { var_15 linkto(var_03,"tag_guy0"); } var_04 thread play_warbird_carrying_walker("warbird_pulley_c","warbird_walker_c","fly_in_part2","tag_guy0","TAG_ATTACH"); var_05 thread play_warbird_carrying_walker("warbird_pulley_d","warbird_walker_d","fly_in_part2","tag_guy0","TAG_ATTACH"); var_06 thread play_warbird_carrying_walker("warbird_pulley_e","warbird_walker_e","fly_in_part2","tag_guy0","TAG_ATTACH"); var_04 thread custom_dust_kickup(); var_05 thread custom_dust_kickup(); var_06 thread custom_dust_kickup(); param_01 maps\fusion_anim::clear_vehicle_anim(0); var_03 maps\fusion_anim::clear_vehicle_anim(0); param_02 maps\fusion_anim::clear_player_anim(0); level.burke maps\fusion_anim::clear_npc_anim(0); level.joker maps\fusion_anim::clear_npc_anim(0); level.carter maps\fusion_anim::clear_npc_anim(0); level.copilot_intro maps\fusion_anim::clear_npc_anim(0); level.pilot_intro maps\fusion_anim::clear_npc_anim(0); param_00 thread maps\_anim::anim_single(var_11,"fly_in_part2"); var_10 thread maps\_anim::anim_single_solo(var_0F,"tower_debris_collision"); var_10 thread maps\fusion_fx::play_tower_debris_fx(var_0F); var_03 thread maps\_anim::anim_single(var_13,"fly_in_part2","tag_guy0"); level.guy_facing_player_intro common_scripts\utility::delaycall(3,::delete); param_01 maps\_anim::anim_single(var_12,"fly_in_part2","tag_guy0"); param_00 thread maps\_anim::anim_loop_solo(param_01,"burke_intro_zip_loop","stop_idle"); if(!isremovedentity(var_08)) { var_08 delete(); } if(!isremovedentity(var_0A)) { var_0A delete(); } if(!isremovedentity(var_0C)) { var_0C delete(); } if(!isremovedentity(var_0E)) { var_0E delete(); } var_04 delete(); var_05 delete(); var_06 delete(); level notify("warbird_fly_in_arrived"); thread rooftop_strafe(); thread delete_guys_in_heli_when_vo_complete(); thread delete_tower_debris(var_0F); } //Function Number: 33 delete_tower_debris(param_00) { common_scripts\utility::flag_wait("player_fly_in_done"); param_00 stopanimscripted(); param_00 delete(); } //Function Number: 34 play_warbird_carrying_walker(param_00,param_01,param_02,param_03,param_04) { var_05 = maps\_utility::spawn_anim_model(param_00); maps\_anim::anim_first_frame_solo(var_05,param_02,param_03); var_05 linkto(self,param_03); var_06 = maps\_utility::spawn_anim_model(param_01); var_05 maps\_anim::anim_first_frame_solo(var_06,param_02,param_04); var_06 linkto(var_05,"TAG_ATTACH"); var_07 = common_scripts\utility::spawn_tag_origin(); var_07 linkto(self,"tag_origin",(0,0,0),(-90,0,0)); playfxontag(common_scripts\utility::getfx("warbird_shadow"),var_07,"tag_origin"); thread maps\_anim::anim_single_solo(var_05,param_02,param_03); var_05 thread maps\_anim::anim_single_solo(var_06,param_02,param_04); level waittill("warbird_fly_in_arrived"); stopfxontag(common_scripts\utility::getfx("warbird_shadow"),var_07,"tag_origin"); var_07 delete(); var_05 delete(); var_06 delete(); } //Function Number: 35 delete_guys_in_heli_when_vo_complete() { common_scripts\utility::flag_wait("squad_out_dialogue_complete"); } //Function Number: 36 launch_missile(param_00) { var_01 = maps\_utility::spawn_anim_model(param_00); var_01.animname = param_00; var_01 thread missile_fly(self,param_00); return var_01; } //Function Number: 37 missile_fly(param_00,param_01) { if(param_01 == "missile_0") { var_02 = common_scripts\utility::getfx("smoketrail_groundtoair_large"); } else { var_02 = common_scripts\utility::getfx("smoketrail_groundtoair"); } playfxontag(var_02,self,"TAG_FX"); param_00 maps\_anim::anim_single_solo(self,"fly_in_part2"); if(param_01 == "missile_0") { var_02 = common_scripts\utility::getfx("smoketrail_groundtoair_large"); } else { var_02 = common_scripts\utility::getfx("smoketrail_groundtoair"); } stopfxontag(var_02,self,"TAG_FX"); self delete(); } //Function Number: 38 spawn_intro_pilots() { var_00 = getent("npc_f","targetname"); level.copilot_intro = var_00 maps\_utility::spawn_ai(1); level.copilot_intro.animname = "npc_f"; level.copilot_intro maps\_utility::gun_remove(); var_01 = getent("npc_g","targetname"); level.pilot_intro = var_01 maps\_utility::spawn_ai(1); level.pilot_intro.animname = "npc_g"; level.pilot_intro maps\_utility::gun_remove(); thread clean_up_intro_pilots(); } //Function Number: 39 clean_up_intro_pilots() { level waittill("warbird_fly_in_arrived"); level.copilot_intro delete(); level.pilot_intro delete(); } //Function Number: 40 spawn_intro_heroes() { var_00 = getent("npc_h","targetname"); level.guy_facing_player_intro = var_00 maps\_utility::spawn_ai(1); level.guy_facing_player_intro.animname = "npc_h"; } //Function Number: 41 fly_in_sequence() { common_scripts\utility::flag_set("sun_shad_fly_in"); maps\_utility::battlechatter_off("allies"); thread maps\_utility::flag_set_delayed("intro_squad_helis_start",37 + level.intro_hades_video_length); thread maps\_utility::flag_set_delayed("street_combat_start",77 + level.intro_hades_video_length); thread move_squad_and_walkers(); thread squad_heli_zip(); thread fly_in_ambient_heli_squad(); maps\_utility::delaythread(27 + level.intro_hades_video_length,::fly_in_ambient_jets); thread fly_in_ambient_street_jets(); thread hide_objective_during_fly_in(); level.warbird_a = maps\_vehicle::spawn_vehicle_from_targetname("blackhawk"); level.warbird_a.animname = "warbird_a"; level.warbird_a.no_anim_rotors = 1; level.warbird_a vehicle_turnengineoff(); level.warbird_a soundscripts\_snd::snd_message("player_warbird_spawn"); spawn_intro_heroes(); spawn_intro_pilots(); var_00 = spawn_player_anim_rig(); var_00 hide(); level.player maps\_shg_utility::setup_player_for_scene(); maps\_player_exo::player_exo_deactivate(); var_01 = common_scripts\utility::getstruct("org_flyin","targetname"); fly_in_scene_part1(var_01,level.warbird_a,var_00); finish_fly_in_sequence(var_01,level.warbird_a,var_00); } //Function Number: 42 play_dust(param_00) { level notify("warbird_door_open"); common_scripts\utility::noself_delaycall(1,::playfxontag,common_scripts\utility::getfx("fast_blowing_dust"),level.warbird_a,"TAG_outside_door"); } //Function Number: 43 hide_objective_during_fly_in() { setsaveddvar("objectiveHide",1); common_scripts\utility::flag_wait("player_fly_in_done"); setsaveddvar("objectiveHide",0); } //Function Number: 44 finish_fly_in_sequence(param_00,param_01,param_02) { maps\_utility::delaythread(50,::start_rooftop_combat); param_01.missile_org = param_00; fly_in_scene_part2(param_00,param_01,param_02); level.burke maps\_utility::gun_recall(); thread burke_rooftop_combat(param_00,param_01); common_scripts\utility::noself_delaycall(0,::stopfxontag,common_scripts\utility::getfx("fast_blowing_dust"),level.warbird_a,"TAG_outside_door"); thread burke_fastzip_scene(param_00,level.warbird_a); common_scripts\utility::flag_wait("player_can_zip"); wait(0.5); common_scripts\utility::flag_set("ready_zip"); maps\_utility::activate_trigger_with_targetname("trig_move_squad_from_heli"); param_02 hide(); var_03 = maps\_utility::spawn_anim_model("player_arms",param_02.origin); var_03.angles = param_02.angles; var_03 hide(); thread rooftop_slide(); level.player thread maps\_player_fastzip::fastzip_turret_think(level.warbird_a,"tag_turret_zipline_kl",var_03,2.7); level.player waittill("fastzip_start"); thread zip_debris_anim(); thread street_hanging_pipes_anim(); common_scripts\utility::flag_set("flag_player_zip_started"); level.player waittill("fastzip_arrived"); common_scripts\utility::flag_set("sun_shad_off_zip"); maps\_player_exo::player_exo_activate(); param_02 delete(); var_03 delete(); wait(0.05); common_scripts\utility::flag_set("player_fly_in_done"); maps\_utility::delaythread(3,::maps\_utility::autosave_by_name); thread delete_rooftop_los_blockers(); thread show_hide_plant_vista(); maps\_utility::battlechatter_on("allies"); level.warbird_a vehicle_setspeed(60,15,5); var_04 = common_scripts\utility::getstruct("heli_path_leave","targetname"); level.warbird_a thread maps\_utility::vehicle_dynamicpath(var_04,0); level.warbird_a soundscripts\_snd::snd_message("player_warbird_flyout"); level.warbird_a.script_vehicle_selfremove = 1; } //Function Number: 45 show_hide_plant_vista() { var_00 = getentarray("brushmodel_vista_plant","targetname"); if(isdefined(var_00)) { var_00 thread hide_plant_vista_via_trigger(); var_00 thread show_plant_vista_via_trigger(); } } //Function Number: 46 show_hide_plant_vista_intro() { var_00 = getentarray("brushmodel_vista_plant","targetname"); if(isdefined(var_00)) { var_00 thread hide_plant_vista_intro(); var_00 thread show_plant_vista_intro(); } } //Function Number: 47 hide_plant_vista_intro() { foreach(var_01 in self) { var_01 hide(); } } //Function Number: 48 show_plant_vista_intro() { level.player endon("death"); wait(71); foreach(var_01 in self) { var_01 show(); } } //Function Number: 49 hide_plant_vista_via_trigger() { level endon("street_cleanup"); for(;;) { maps\_utility::trigger_wait_targetname("trig_hide_plant_vista"); foreach(var_01 in self) { var_01 hide(); } } } //Function Number: 50 show_plant_vista_via_trigger() { level endon("street_cleanup"); for(;;) { maps\_utility::trigger_wait_targetname("trig_show_plant_vista"); foreach(var_01 in self) { var_01 show(); } } } //Function Number: 51 zip_debris_anim() { wait(1); var_00 = common_scripts\utility::getstruct("org_zip_debris","targetname"); var_01 = maps\_utility::spawn_anim_model("zip_debris_01"); var_02 = maps\_utility::spawn_anim_model("zip_debris_02"); var_03 = [var_01,var_02]; var_00 maps\_anim::anim_single(var_03,"zip_falling_debris"); maps\_utility::array_delete(var_03); } //Function Number: 52 street_hanging_pipes_anim() { var_00 = common_scripts\utility::getstruct("org_hanging_pipes_01","targetname"); var_01 = maps\_utility::spawn_anim_model("street_pipes_01"); var_00 maps\_anim::anim_loop_solo(var_01,"street_hanging_pipes"); if(level.currentgen) { level waittill("tff_pre_transition_intro_to_middle"); var_00 maps\_utility::anim_stopanimscripted(); var_01 delete(); } } //Function Number: 53 fly_in_ambient_heli_squad() { common_scripts\utility::flag_wait("intro_squad_helis_start"); level.heli_squad_01 = spawn_ambient_warbird("squad_warbird_01",25,45); level.heli_squad_02 = spawn_ambient_warbird("squad_warbird_02",25,45,1); level.heli_squad_03 = spawn_ambient_warbird("squad_warbird_03",20,50,1); level.heli_squad_05 = spawn_ambient_warbird("squad_warbird_05",25,50,1); level.heli_squad_06 = spawn_ambient_warbird("squad_warbird_06",25,50,1); level.heli_squad_07 = spawn_ambient_warbird("squad_warbird_07",25,50,1); level.heli_squad_08 = spawn_ambient_warbird("squad_warbird_08",10,25,1); level.heli_squad_09 = spawn_ambient_warbird("squad_warbird_09",10,25,1); level.heli_squad_11 = spawn_ambient_warbird("squad_warbird_cargo11",10,25,1); level.heli_squad_11 thread add_warbird_cargo("cargo_walker11","cargo_pully11"); level.heli_squad_08 thread add_warbird_cargo("cargo_walker12","cargo_pully12"); level.heli_squad_05 thread add_warbird_cargo("cargo_walker13","cargo_pully13"); level.heli_squad_01 vehicle_turnengineoff(); level.heli_squad_02 vehicle_turnengineoff(); level.heli_squad_03 vehicle_turnengineoff(); level.heli_squad_05 vehicle_turnengineoff(); level.heli_squad_06 vehicle_turnengineoff(); level.heli_squad_07 vehicle_turnengineoff(); level.heli_squad_08 vehicle_turnengineoff(); level.heli_squad_09 vehicle_turnengineoff(); level.heli_squad_11 vehicle_turnengineoff(); if(level.currentgen) { level.heli_squad_01 thread tff_cleanup_vehicle("intro"); } } //Function Number: 54 spawn_ambient_warbird(param_00,param_01,param_02,param_03) { var_04 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(param_00); var_04 vehicle_scripts\_xh9_warbird::cloak_warbird(); var_04 setmaxpitchroll(param_01,param_02); var_04 vehicle_scripts\_xh9_warbird::set_cloak_parameter(0,0); if(isdefined(param_03)) { var_04.script_vehicle_selfremove = param_03; } var_04.shadow_tag = common_scripts\utility::spawn_tag_origin(); var_04.shadow_tag linkto(var_04,"tag_origin",(0,0,0),(-90,0,0)); playfxontag(common_scripts\utility::getfx("warbird_shadow_cloaked"),var_04.shadow_tag,"tag_origin"); return var_04; } //Function Number: 55 add_warbird_cargo(param_00,param_01) { var_02 = getent(param_00,"targetname"); var_02 linkto(self); var_03 = getent(param_01,"targetname"); var_03 linkto(self); self waittill("death"); var_02 unlink(); var_02 delete(); var_03 unlink(); var_03 delete(); } //Function Number: 56 fly_in_squad_uncloak() { wait(3.5); level.heli_squad_01 thread uncloak_ambient_warbird(level.shadow_tag_01,3.3); wait(0.15); level.heli_squad_09 thread uncloak_ambient_warbird(level.shadow_tag_09,3.3); wait(0.15); level.heli_squad_11 thread uncloak_ambient_warbird(level.shadow_tag_11,3.3); wait(0.15); level.heli_squad_06 thread uncloak_ambient_warbird(level.shadow_tag_06,3.3); wait(0.15); level.heli_squad_07 thread uncloak_ambient_warbird(level.shadow_tag_07,3.3); wait(0.15); level.heli_squad_08 thread uncloak_ambient_warbird(level.shadow_tag_08,3.3); wait(0.15); level.heli_squad_05 thread uncloak_ambient_warbird(level.shadow_tag_05,3.3); wait(0.15); wait(0.15); level.heli_squad_03 thread uncloak_ambient_warbird(level.shadow_tag_03,3.3); wait(1.25); level.heli_squad_02 thread uncloak_ambient_warbird(level.shadow_tag_02,3.3); common_scripts\utility::flag_wait("fx_flak_intro"); level.heli_squad_01 clean_up_shadow_tag(); level.heli_squad_02 clean_up_shadow_tag(); level.heli_squad_03 clean_up_shadow_tag(); level.heli_squad_05 clean_up_shadow_tag(); level.heli_squad_06 clean_up_shadow_tag(); level.heli_squad_07 clean_up_shadow_tag(); level.heli_squad_08 clean_up_shadow_tag(); level.heli_squad_09 clean_up_shadow_tag(); level.heli_squad_11 clean_up_shadow_tag(); } //Function Number: 57 uncloak_ambient_warbird(param_00,param_01) { var_02 = 3.3; if(isdefined(param_01)) { param_01 = var_02; } vehicle_scripts\_xh9_warbird::uncloak_warbird(param_01); if(isdefined(self.shadow_tag)) { stopfxontag(common_scripts\utility::getfx("warbird_shadow_cloaked"),self.shadow_tag,"tag_origin"); playfxontag(common_scripts\utility::getfx("warbird_shadow"),self.shadow_tag,"tag_origin"); } } //Function Number: 58 clean_up_shadow_tag() { if(isdefined(self.shadow_tag)) { stopfxontag(common_scripts\utility::getfx("warbird_shadow"),self.shadow_tag,"tag_origin"); self.shadow_tag delete(); } } //Function Number: 59 fly_in_ambient_jets() { level.jets = []; thread spawn_looping_jets("f15_01"); thread spawn_looping_jets("f15_03"); thread spawn_looping_jets("f15_06"); wait(1); thread spawn_looping_jets("f15_05"); } //Function Number: 60 spawn_looping_jets(param_00) { while(!common_scripts\utility::flag("flag_combat_zip_rooftop_complete")) { var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(param_00); level.jets = common_scripts\utility::array_removeundefined(level.jets); level.jets[level.jets.size] = var_01; var_01 waittill("death"); } } //Function Number: 61 fly_in_ambient_street_jets() { common_scripts\utility::flag_wait("player_fly_in_done"); if(!isdefined(level.jets)) { level.jets = []; } while(level.jets.size > 0) { level.jets = common_scripts\utility::array_removeundefined(level.jets); wait 0.05; } thread spawn_looping_street_jets("f15_street01"); wait(0.5); thread spawn_looping_street_jets("f15_street03"); wait(0.5); thread spawn_looping_street_jets("f15_street05"); wait(0.5); thread spawn_looping_street_jets("f15_street07"); } //Function Number: 62 spawn_looping_street_jets(param_00) { while(!common_scripts\utility::flag("flag_player_at_reactor_entrance")) { var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(param_00); level.jets = common_scripts\utility::array_removeundefined(level.jets); level.jets[level.jets.size] = var_01; var_01 soundscripts\_snd::snd_message("snd_start_ambient_jet"); var_01 waittill("death"); } level.jets = common_scripts\utility::array_removeundefined(level.jets); } //Function Number: 63 wait_to_decloak_helicopter(param_00,param_01,param_02,param_03,param_04) { level.player endon("death"); wait(param_00); soundscripts\_snd::snd_message("decloak_intro_helicopter"); thread vehicle_scripts\_xh9_warbird::uncloak_warbird(3); wait(1.5); param_01 show(); param_02 show(); param_03 show(); param_04 show(); param_01 stopusingheroonlylighting(); param_02 stopusingheroonlylighting(); param_03 stopusingheroonlylighting(); param_04 stopusingheroonlylighting(); } //Function Number: 64 burke_rooftop_combat(param_00,param_01) { if(common_scripts\utility::flag("flag_burke_zip")) { return; } param_00 maps\_anim::anim_single_solo(level.burke,"burke_rooftop_shoot_enter"); level.burke.face_direction = anglestoforward(level.burke.angles); level.burke notify("killanimscript"); level.burke.custom_animscript["combat"] = ::burke_rooftop_combat_animscript; level.burke.custom_animscript["stop"] = ::burke_rooftop_combat_animscript; common_scripts\utility::flag_wait("flag_burke_zip"); level.burke.custom_animscript["combat"] = undefined; level.burke.custom_animscript["stop"] = undefined; level.burke notify("killanimscript"); level.burke clearanim(%burke_aiming,0.2); level.burke clearanim(%burke_add_fire,0.2); level.burke.last_pitch_aim = undefined; level.burke.last_yaw_aim = undefined; level.burke.face_direction = undefined; } //Function Number: 65 burke_rooftop_combat_animscript() { self notify("killanimscript"); self endon("killanimscript"); level.burke orientmode("face direction",level.burke.face_direction); setup_burke_aim_anims(); var_00 = undefined; for(;;) { if(!isdefined(var_00) || !isalive(var_00)) { if(isdefined(self.enemy) && self cansee(self.enemy) && isalive(self.enemy)) { var_00 = self.enemy; } } if(isdefined(var_00)) { var_01 = animscripts\shared::getshootfrompos(); var_02 = var_00 getshootatpos(); var_03 = var_02 - var_01; var_04 = vectortoangles(var_03); var_05 = aim_burke_at_angles(var_04,48); if(var_05) { var_06 = randomintrange(2,4); for(var_07 = 0;var_07 < var_06;var_07++) { burke_burst_shoot(var_00); wait(randomfloatrange(0.2,0.4)); } wait(randomfloatrange(3,5)); } } if(common_scripts\utility::cointoss()) { var_00 = undefined; } wait(0.05); } } //Function Number: 66 setup_burke_aim_anims() { self clearanim(%root,0.2); self setanim(%fusion_fly_in_burke_aim_5,1,0.2,1); self setanimlimited(%fusion_fly_in_burke_aim_4,1,0,1); self setanimlimited(%fusion_fly_in_burke_aim_6,1,0,1); self setanimlimited(%fusion_fly_in_burke_aim_2,1,0,1); self setanimlimited(%fusion_fly_in_burke_aim_8,1,0,1); self setanimlimited(%burke_aim_4,0,0,1); self setanimlimited(%burke_aim_6,0,0,1); self setanimlimited(%burke_aim_2,0,0,1); self setanimlimited(%burke_aim_8,0,0,1); self setanim(%fusion_fly_in_burke_aim_idle,1,0,1); } //Function Number: 67 aim_burke_at_angles(param_00,param_01) { var_02 = 1; if(!isdefined(self.last_pitch_aim)) { self.last_pitch_aim = 0; } if(!isdefined(self.last_yaw_aim)) { self.last_yaw_aim = 0; } var_03 = angleclamp180(param_00[0] - self.angles[0]); if(abs(var_03) > param_01) { var_03 = 0; } var_04 = var_03 / param_01; var_05 = var_04 - self.last_pitch_aim; if(abs(var_05) > 0.2) { var_02 = 0; var_05 = clamp(var_05,-0.2,0.2); var_04 = self.last_pitch_aim + var_05; } if(var_04 < 0) { self setanimlimited(%burke_aim_8,abs(var_04),0.2,1); self setanimlimited(%burke_aim_2,0,0.2,1); } else { self setanimlimited(%burke_aim_8,0,0.2,1); self setanimlimited(%burke_aim_2,var_04,0.2,1); } var_06 = angleclamp180(param_00[1] - self.angles[1]); if(abs(var_06) > param_01) { var_06 = 0; } var_07 = var_06 / param_01; var_08 = var_07 - self.last_yaw_aim; if(abs(var_08) > 0.2) { var_02 = 0; var_08 = clamp(var_08,-0.2,0.2); var_07 = self.last_yaw_aim + var_08; } if(var_07 < 0) { self setanimlimited(%burke_aim_6,abs(var_07),0.2,1); self setanimlimited(%burke_aim_4,0,0.2,1); } else { self setanimlimited(%burke_aim_6,0,0.2,1); self setanimlimited(%burke_aim_4,var_07,0.2,1); } self.last_pitch_aim = var_04; self.last_yaw_aim = var_07; return var_02; } //Function Number: 68 burke_burst_shoot(param_00) { var_01 = randomintrange(2,4); for(var_02 = 0;var_02 < var_01;var_02++) { self shoot(); self setanimrestart(%fusion_fly_in_burke_fire,1,0,1); wait(0.1); } } //Function Number: 69 start_rooftop_combat() { common_scripts\utility::flag_set("flag_combat_zip_rooftop_start"); maps\_utility::autosave_by_name(); wait(2); level.player enableweapons(); level.player enablehybridsight("iw5_bal27_sp_variablereddot",1); level.player enableoffhandweapons(); level maps\_utility::_setsaveddvar("ammoCounterHide",0); maps\_player_exo::player_exo_activate(); thread handle_disabling_sonic_blast(); } //Function Number: 70 handle_disabling_sonic_blast() { var_00 = maps\_player_exo::player_exo_get_owned_array(["sonic_blast"]); if(var_00.size > 0) { maps\_player_exo::player_exo_remove_array(var_00); common_scripts\utility::flag_wait("player_fly_in_done"); maps\_player_exo::player_exo_add_single("sonic_blast"); } } //Function Number: 71 rooftop_strafe() { var_00 = common_scripts\utility::getstruct("path_rooftop_strafe","targetname"); level.heli_squad_01 thread maps\_utility::vehicle_dynamicpath(var_00,0); level.heli_squad_01 setmaxpitchroll(10,10); common_scripts\utility::flag_wait_or_timeout("flag_player_cleared_rooftop",15); common_scripts\utility::flag_set("flag_rooftop_strafe"); level.heli_squad_01 soundscripts\_snd::snd_message("rooftop_strafe_start"); level.heli_squad_01 thread warbird_shooting_think(1); wait(1); level.heli_squad_01 notify("warbird_fire"); common_scripts\utility::flag_wait("flag_combat_zip_rooftop_complete"); level.heli_squad_01 notify("warbird_stop_firing"); } //Function Number: 72 delete_rooftop_los_blockers() { var_00 = getentarray("street_rooftop_los_blocker","targetname"); foreach(var_02 in var_00) { var_02 delete(); } } //Function Number: 73 allow_player_zip() { wait(8.9); common_scripts\utility::flag_wait("flag_combat_zip_rooftop_complete"); common_scripts\utility::flag_set("player_can_zip"); } //Function Number: 74 burke_fastzip_scene(param_00,param_01) { common_scripts\utility::flag_wait("flag_burke_zip"); param_01 notify("stop_idle"); param_00 notify("stop_idle"); thread burke_fastzip_aim_turret(param_01,"tag_turret_zipline_fl"); var_02 = param_01.zipline_gun_model["tag_turret_zipline_fl"]; var_02 unlink(); level.burke unlink(); thread burke_rally_init(); thread allow_player_zip(); level.burke maps\_utility::anim_stopanimscripted(); param_00 thread maps\_anim::anim_single_solo_run(level.burke,"burke_intro_zip"); var_03 = [param_01,var_02]; param_00 maps\_anim::anim_single(var_03,"burke_intro_zip"); common_scripts\utility::flag_set("burke_fastzip_done"); var_04 = [param_01,var_02]; param_00 thread maps\_anim::anim_loop(var_04,"burke_intro_zip_loop","stop_loop"); thread heroes_post_zip(); thread allies_rally_init(); common_scripts\utility::flag_wait("player_fly_in_done"); param_00 notify("stop_loop"); var_02 linkto(param_01,"tag_turret_zipline_fl",(0,0,0),(0,0,0)); } //Function Number: 75 burke_fastzip_aim_turret(param_00,param_01) { var_02 = param_00.zipline_gun_model[param_01]; var_03 = param_00 vehicle_scripts\_xh9_warbird::spawn_zipline_turret("zipline_gun_rope",param_01,var_02.rope_model,"_turret_fastzip"); var_03 hide(); var_04 = common_scripts\utility::spawn_tag_origin(); var_04.origin = var_02 gettagorigin("jnt_harpoon"); var_03 settargetentity(var_04); while(!common_scripts\utility::flag("burke_fastzip_done")) { var_04.origin = var_02 gettagorigin("jnt_harpoon"); wait(0.1); } var_04.origin = var_02 gettagorigin("jnt_harpoon"); var_05 = var_02 gettagorigin("tag_flash"); var_06 = distance(var_05,var_04.origin) / 12; var_07 = var_06 / 200; var_08 = %fastzip_launcher_fire_right; var_03 setanimknob(var_08,1,0,0); var_03 setanimtime(var_08,var_07); if(isdefined(var_02.rope_model)) { var_02 detach(var_02.rope_model); } var_03 show(); var_03 maps\_player_fastzip::retract_rope(var_06,"right"); var_04 delete(); var_03 delete(); } //Function Number: 76 burke_rally_init() { level.burke maps\_utility::set_force_color("g"); level.burke maps\_utility::disable_ai_color(); var_00 = getnode("node_cover_burke_after_zip","targetname"); level.burke maps\fusion_utility::goto_node(var_00,0); thread courtyard_burke_rally(); } //Function Number: 77 allies_rally_init() { level.joker maps\_utility::disable_ai_color(); var_00 = getnode("node_cover_joker_after_zip","targetname"); level.joker maps\fusion_utility::goto_node(var_00,0); } //Function Number: 78 move_squad_and_walkers() { level.player endon("death"); common_scripts\utility::flag_wait("ready_zip"); maps\_utility::activate_trigger_with_targetname("trig_move_squad_from_heli"); } //Function Number: 79 setup_m_turret() { maps\_vehicle_shg::set_player_rig_spawn_function(::spawn_player_anim_rig); if(level.currentgen) { if(level.start_point != "fly_in_animated" && level.start_point != "fly_in_animated_part2" && level.start_point != "courtyard" && level.start_point != "security_room") { return; } } level.x4walker_wheels_fusion_turret = 1; var_00 = getentarray("mobile_turret","targetname"); var_01 = []; foreach(var_03 in var_00) { var_04 = var_03 maps\_utility::spawn_vehicle(); var_04 thread monitor_mobile_turret_health(); var_04 thread disable_cover_drone_on_mobile_turret_mount(); var_04 thread close_enemy_check_on_mt_exit(); var_04 thread disable_mobile_turret_if_not_destroyed(); var_04.godmode = 1; var_01[var_01.size] = var_04; } if(level.currentgen) { level waittill("tff_pre_transition_intro_to_middle"); common_scripts\utility::array_call(var_01,::delete); } } //Function Number: 80 disable_cover_drone_on_mobile_turret_mount() { level.player endon("death"); for(;;) { level.player waittill("player_starts_entering_mobile_turret"); thread maps\fusion_lighting::setup_dof_enter_turret(); level.player.disable_cover_drone = 1; level.player waittill("player_exited_mobile_turret"); thread maps\fusion_lighting::setup_dof_exit_turret(); level.player.disable_cover_drone = undefined; } } //Function Number: 81 wait_for_drone_message_or_death(param_00) { param_00 endon("death"); level.player waittill("hiding_cover_drone_hint",var_01); return var_01; } //Function Number: 82 close_enemy_check_on_mt_exit() { for(;;) { level.player waittill("player_exited_mobile_turret"); var_00 = getaiarray("axis"); var_00 = maps\_utility::array_removedead_or_dying(var_00); foreach(var_02 in var_00) { if(isdefined(var_02) && isalive(var_02)) { if(distancesquared(level.player.origin,var_02.origin) < squared(100)) { var_02 maps\fusion_utility::bloody_death(0); continue; } if(distancesquared(level.player.origin,var_02.origin) < squared(250)) { var_02 maps\fusion_utility::bloody_death(randomfloatrange(0.5,1)); } } } } } //Function Number: 83 setup_personal_drone() { var_00 = getent("player_pdrone","targetname"); level.player thread maps\_weapon_pdrone::give_player_pdrone(var_00); } //Function Number: 84 setup_ally_squad() { if(level.currentgen) { return; } common_scripts\utility::flag_wait("street_combat_start"); var_00 = getentarray("allies_street","script_noteworthy"); foreach(var_02 in var_00) { if(isdefined(var_02)) { var_02 maps\_utility::spawn_ai(1); } } var_04 = getaiarray("allies"); foreach(var_06 in var_04) { if(isdefined(var_06)) { if(!isdefined(var_06.magic_bullet_shield)) { var_06 thread maps\_utility::deletable_magic_bullet_shield(); } } } } //Function Number: 85 road_battle_setup() { thread setup_triggers_street_battle(); thread setup_cover_nodes_street(); thread combat_zip_rooftop(); common_scripts\utility::flag_wait("street_combat_start"); thread biasgroup_think(); if(level.nextgen) { thread moblie_turrets_intro(); } thread street_volume_manager(); thread combat_street_wave_01(); thread combat_street_wave_02(); thread combat_street_wave_03(); thread combat_street_mid_checkpoint_1(); thread combat_street_mid_checkpoint_2(); thread combat_street_blown_building(); thread combat_player_in_m_turret(); thread combat_street_wave_04(); thread combat_street_initial(); thread combat_street_wave_rear(); thread combat_enemy_trans_heli_wave_01(); thread combat_enemy_tank(); thread rpg_at_heli(); thread wall_explosion_01(); thread building_explosion_01(); thread courtyard_mobile_cover_guys(); thread courtyard_ally_mcd_safeguard_init(); thread boost_jump_hint(); if(level.nextgen) { thread street_mobile_cover_guys(); } thread mobile_turret_dropoff(); thread smaw_laser_think(); } //Function Number: 86 boost_jump_hint() { level.player endon("player_starts_entering_mobile_turret"); common_scripts\utility::flag_wait("flag_obj_markers"); wait(1); common_scripts\utility::flag_wait("flag_boost_jump_reminder_dialogue_done"); maps\_utility::hintdisplaymintimehandler("hint_use_boost",5); } //Function Number: 87 boost_use_hint() { if(isdefined(level.player.drivingvehicleandturret) || level.player ishighjumping()) { return 1; } return 0; } //Function Number: 88 biasgroup_think() { level.player setthreatbiasgroup("player"); createthreatbiasgroup("drones"); setthreatbias("drones","axis_street",-20000); common_scripts\utility::flag_wait("flag_enemy_bullet_shield_off"); setthreatbias("player","axis_street",8000); common_scripts\utility::flag_wait("flag_enemy_walker"); setthreatbias("player","axis_street",0); while(!common_scripts\utility::flag("elevator_descent_player")) { if(common_scripts\utility::flag("flag_player_at_reactor_door")) { setthreatbias("player","axis_street",-20000); continue; } setthreatbias("player","axis_street",0); wait(1); } setthreatbias("player","axis_street",0); } //Function Number: 89 setup_triggers_street_battle() { var_00 = getent("color_t_street_end","targetname"); var_00 common_scripts\utility::trigger_off(); var_01 = getent("color_t_walker_destroyed","targetname"); var_01 common_scripts\utility::trigger_off(); var_02 = getent("color_t_mt_destroyed","targetname"); var_02 common_scripts\utility::trigger_off(); common_scripts\utility::flag_wait_all("flag_mt_wall_rpg_impact","flag_mt_move_up_02"); wait(1); var_02 common_scripts\utility::trigger_on(); maps\_utility::activate_trigger_with_targetname("color_t_mt_destroyed"); var_03 = getentarray("bcs_titan","targetname"); foreach(var_05 in var_03) { var_05 common_scripts\utility::trigger_off(); } common_scripts\utility::flag_wait("flag_enemy_walker"); if(isdefined(var_02)) { var_02 common_scripts\utility::trigger_off(); } wait(3); foreach(var_05 in var_03) { var_05 common_scripts\utility::trigger_on(); } var_09 = getentarray("bcs_hill","targetname"); foreach(var_05 in var_09) { var_05 common_scripts\utility::trigger_off(); } } //Function Number: 90 setup_cover_nodes_street() { var_00 = getnodearray("cover_node_walker_hill","targetname"); foreach(var_02 in var_00) { var_02 disconnectnode(); } common_scripts\utility::flag_wait("flag_enemy_walker"); foreach(var_02 in var_00) { var_02 connectnode(); } } //Function Number: 91 moblie_turrets_intro() { var_00 = maps\_vehicle::spawn_vehicle_from_targetname("ally_walker_02"); var_00 thread maps\fusion_utility::kill_path_on_death(); var_00 soundscripts\_snd::snd_message("spawn_ally_walker_02"); var_00 maps\_vehicle::godon(); var_01 = getent("clip_mobile_turret_player","targetname"); var_01 linkto(var_00); common_scripts\utility::flag_wait("ready_zip"); var_02 = [var_00]; foreach(var_04 in var_02) { if(isdefined(var_04.riders)) { foreach(var_06 in var_04.riders) { if(isdefined(var_06.deletable_magic_bullet_shield)) { var_06 maps\_utility::stop_magic_bullet_shield(); } } } } var_00 maps\_utility::delaythread(2,::mobile_turret_gopath); common_scripts\utility::flag_wait("flag_mt_move_up_03"); var_00 maps\_vehicle::godoff(); if(level.currentgen) { level waittill("tff_pre_transition_intro_to_middle"); var_00 delete(); } } //Function Number: 92 mobile_turret_gopath() { self endon("death"); maps\_vehicle::gopath(); wait(0.1); for(;;) { level.player waittill_pushed_by(self); self vehicle_setspeed(0,60,60); var_00 = distancesquared(level.player.origin,self.origin); var_01 = var_00 * 2; while(var_00 < var_01) { wait(0.1); var_00 = distancesquared(level.player.origin,self.origin); } self resumespeed(1); } } //Function Number: 93 waittill_pushed_by(param_00) { thread monitor_player_pushed(param_00); thread monitor_player_unresolved(param_00); thread monitor_player_pushed_while_linked(param_00); for(;;) { self waittill("notify_push",var_01); if(param_00 == var_01) { break; } } self notify("kill_push_monitor"); } //Function Number: 94 monitor_player_pushed(param_00) { self endon("kill_push_monitor"); param_00 endon("death"); for(;;) { self waittill("player_pushed",var_01,var_02); self notify("notify_push",var_02); } } //Function Number: 95 monitor_player_unresolved(param_00) { self endon("kill_push_monitor"); param_00 endon("death"); for(;;) { self waittill("unresolved_collision",var_01); self notify("notify_push",var_01); } } //Function Number: 96 monitor_player_pushed_while_linked(param_00) { self endon("kill_push_monitor"); param_00 endon("death"); for(;;) { var_01 = 200; var_02 = 80; var_03 = cos(var_02); while(self islinked()) { var_04 = anglestoforward(param_00.angles); var_05 = vectornormalize(level.player.origin - param_00.origin); if(vectordot(var_04,var_05) >= var_03 && distance(self.origin,param_00.origin) < var_01) { self notify("notify_push",param_00); return; } wait(0.1); } wait(0.05); } } //Function Number: 97 monitor_turret_2_death() { self waittill("death"); common_scripts\utility::flag_set("flag_m_turret_dead"); } //Function Number: 98 rooftop_enemy_think() { thread rooftop_enemy_counter(); self endon("death"); maps\_utility::set_baseaccuracy(0.5); maps\fusion_utility::disable_grenades(); maps\_utility::disable_long_death(); common_scripts\utility::flag_wait("flag_combat_zip_rooftop_complete"); maps\fusion_utility::bloody_death(2); } //Function Number: 99 rooftop_enemy_think_left() { thread rooftop_enemy_counter(); self endon("death"); maps\_utility::set_baseaccuracy(0.5); maps\fusion_utility::disable_grenades(); maps\_utility::disable_long_death(); if(level.currentgen) { wait(3); var_00 = getnode("enemy_street_zip_rooftop_goal_node_left","script_noteworthy"); maps\_utility::set_goal_node(var_00); maps\_utility::set_goal_radius(256); } common_scripts\utility::flag_wait("flag_combat_zip_rooftop_complete"); maps\fusion_utility::bloody_death(2); } //Function Number: 100 rooftop_enemy_think_right() { thread rooftop_enemy_counter(); self endon("death"); maps\_utility::set_baseaccuracy(0.5); maps\fusion_utility::disable_grenades(); maps\_utility::disable_long_death(); if(level.currentgen) { wait(3); var_00 = getnode("enemy_street_zip_rooftop_goal_node_right","script_noteworthy"); maps\_utility::set_goal_node(var_00); maps\_utility::set_goal_radius(256); } common_scripts\utility::flag_wait("flag_combat_zip_rooftop_complete"); maps\fusion_utility::bloody_death(2); } //Function Number: 101 rooftop_enemy_counter() { level endon("flag_combat_zip_rooftop_complete"); level endon("player_participated_in_rooftop_fight"); self waittill("death",var_00); if(var_00 == level.player) { common_scripts\utility::flag_set("player_participated_in_rooftop_fight"); } } //Function Number: 102 street_enemy_think() { self endon("death"); self setthreatbiasgroup("axis_street"); var_00 = getent("vol_street_battle_01_left","targetname"); var_01 = getent("vol_street_battle_01_right","targetname"); var_02 = [var_00,var_01]; street_set_volume_from_pair(var_02); common_scripts\utility::flag_wait("flag_mt_move_up_03"); var_00 = getent("vol_street_battle_02_left","targetname"); var_01 = getent("vol_street_battle_02_right","targetname"); var_02 = [var_00,var_01]; street_set_volume_from_pair(var_02); common_scripts\utility::flag_wait("flag_mt_move_up_05"); var_00 = getent("vol_street_battle_03_left","targetname"); var_01 = getent("vol_street_battle_03_right","targetname"); var_02 = [var_00,var_01]; street_set_volume_from_pair(var_02); common_scripts\utility::flag_wait("flag_obj_01_pos_update_02"); var_00 = getent("vol_street_battle_reactor_entrance_left","targetname"); var_01 = getent("vol_street_battle_reactor_entrance_right","targetname"); var_02 = [var_00,var_01]; street_set_volume_from_pair(var_02); common_scripts\utility::flag_wait("flag_enemy_walker"); self.grenadeammo = 0; thread walker_death_courtyard_kva_cleanup(); common_scripts\utility::flag_wait("flag_walker_destroyed"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname")); } common_scripts\utility::flag_wait("flag_player_at_reactor_entrance"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname")); } } //Function Number: 103 street_enemy_blown_building_think() { self endon("death"); self setthreatbiasgroup("axis_street"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_02_left","targetname")); } common_scripts\utility::flag_wait("flag_spawn_gaz_01"); var_00 = getent("vol_street_battle_03_left","targetname"); var_01 = getent("vol_street_battle_03_right","targetname"); var_02 = [var_00,var_01]; street_set_volume_from_pair(var_02); common_scripts\utility::flag_wait("flag_obj_01_pos_update_02"); var_00 = getent("vol_street_battle_reactor_entrance_left","targetname"); var_01 = getent("vol_street_battle_reactor_entrance_right","targetname"); var_02 = [var_00,var_01]; street_set_volume_from_pair(var_02); thread walker_death_courtyard_kva_cleanup(); common_scripts\utility::flag_wait("flag_walker_destroyed"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname")); } common_scripts\utility::flag_wait("flag_player_at_reactor_entrance"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname")); } } //Function Number: 104 street_volume_manager() { var_00 = getent("vol_street_battle_01_left","targetname"); var_01 = getent("vol_street_battle_01_right","targetname"); var_02 = [var_00,var_01]; street_enemy_movement("flag_mt_move_up_03",2,5,var_02); var_00 = getent("vol_street_battle_02_left","targetname"); var_01 = getent("vol_street_battle_02_right","targetname"); var_02 = [var_00,var_01]; street_enemy_movement("flag_mt_move_up_05",2,5,var_02); var_00 = getent("vol_street_battle_03_left","targetname"); var_01 = getent("vol_street_battle_03_right","targetname"); var_02 = [var_00,var_01]; street_enemy_movement("flag_obj_01_pos_update_02",2,5,var_02); var_00 = getent("vol_street_battle_reactor_entrance_left","targetname"); var_01 = getent("vol_street_battle_reactor_entrance_right","targetname"); var_02 = [var_00,var_01]; street_enemy_movement("flag_walker_destroyed",8,20,var_02); } //Function Number: 105 walker_death_courtyard_kva_cleanup() { self endon("death"); common_scripts\utility::flag_wait("flag_walker_destroyed"); var_00 = getnodearray("walker_retreat_point","targetname"); if(level.nextgen) { maps\fusion_utility::bloody_death(10); return; } thread walker_death_courtyard_kva_cleanup_cg(var_00); } //Function Number: 106 walker_death_courtyard_kva_cleanup_cg(param_00) { self endon("death"); var_01 = 200; var_02 = distance2d(self.origin,level.player.origin); if(var_02 < var_01) { thread maps\_utility::player_seek_enable(); return; } param_00 = common_scripts\utility::array_randomize(param_00); self setgoalnode(param_00[0]); self waittill("goal"); self kill(); } //Function Number: 107 street_set_volume_from_pair(param_00) { if(!isdefined(param_00)) { return; } var_01 = undefined; if(isarray(param_00)) { if(common_scripts\utility::cointoss()) { var_01 = param_00[0]; if(self istouching(var_01)) { var_01 = param_00[1]; } } else { var_01 = param_00[1]; if(self istouching(var_01)) { var_01 = param_00[0]; } } } if(!isdefined(self.playerseeker)) { if(isdefined(var_01)) { self cleargoalvolume(); self setgoalvolumeauto(var_01); } } } //Function Number: 108 street_enemy_movement(param_00,param_01,param_02,param_03) { level.player endon("death"); level endon(param_00); if(!isdefined(param_01)) { param_01 = 5; } if(!isdefined(param_02)) { param_02 = 15; } while(!common_scripts\utility::flag(param_00)) { wait(randomfloatrange(param_01,param_02)); var_04 = []; foreach(var_06 in param_03) { var_07 = var_06 maps\_utility::get_ai_touching_volume("axis"); if(var_07.size > 0) { var_04 = common_scripts\utility::array_combine(var_04,var_07); } } if(var_04.size > 0) { var_09 = var_04[randomint(var_04.size)]; var_09 street_set_volume_from_pair(param_03); } } } //Function Number: 109 mover_debug_text() { self endon("death"); var_00 = 5; while(var_00 > 0) { var_00 = var_00 - 0.05; wait(0.05); } } //Function Number: 110 street_enemy_tank_battle_think() { self endon("death"); if(!isdefined(self.playerseeker)) { self setgoalvolumeauto(getent("vol_street_tank_stage_01","targetname")); } common_scripts\utility::flag_wait("flag_enemy_walker"); self.grenadeammo = 0; thread walker_death_courtyard_kva_cleanup(); common_scripts\utility::flag_wait("flag_walker_destroyed"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname")); } common_scripts\utility::flag_wait("flag_player_at_reactor_entrance"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname")); } } //Function Number: 111 street_enemy_tank_damaged_think() { self endon("death"); self.grenadeammo = 0; common_scripts\utility::flag_wait("walker_damaged"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname")); } thread walker_death_courtyard_kva_cleanup(); common_scripts\utility::flag_wait("flag_player_at_reactor_entrance"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname")); } } //Function Number: 112 street_enemy_building_east_think() { self endon("death"); if(!isdefined(self.playerseeker)) { self setgoalvolumeauto(getent("vol_street_battle_rear_building_east","targetname")); } common_scripts\utility::flag_wait("flag_obj_01_pos_update_02"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname")); } common_scripts\utility::flag_wait("flag_enemy_walker"); self.grenadeammo = 0; thread walker_death_courtyard_kva_cleanup(); common_scripts\utility::flag_wait("flag_player_at_reactor_entrance"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname")); } } //Function Number: 113 street_enemy_building_west_think() { self endon("death"); if(!isdefined(self.playerseeker)) { self setgoalvolumeauto(getent("vol_street_battle_rear_building_west","targetname")); } common_scripts\utility::flag_wait("flag_obj_01_pos_update_02"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname")); } thread walker_death_courtyard_kva_cleanup(); common_scripts\utility::flag_wait("flag_player_at_reactor_entrance"); if(!isdefined(self.playerseeker)) { self cleargoalvolume(); self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname")); } } //Function Number: 114 combat_street_wave_01() { if(level.currentgen) { common_scripts\utility::flag_wait("ready_zip"); if(level.currentgen) { var_00 = ["enemy_street_wave_01","enemy_street_wave_02","enemy_street_wave_mobile_cover_a","enemy_street_wave_mobile_cover_b","enemy_street_blown_building","enemy_street_wave_04","enemy_street_wave_rear","enemy_street_tank_stage_01","enemy_street_tank_stage_02","enemy_street_reactor_entrance","enemy_street_turret_wave_1","enemy_street_turret_wave_2"]; thread maps\_cg_encounter_perf_monitor::cg_spawn_perf_monitor("elevator_descent_player",var_00,15,0); } } var_01 = getentarray("enemy_street_wave_01","script_noteworthy"); if(var_01.size > 0) { maps\_spawner::flood_spawner_scripted(var_01); } foreach(var_03 in getentarray("enemy_street_wave_01","script_noteworthy")) { if(isalive(var_03)) { var_03 maps\_utility::deletable_magic_bullet_shield(); } } common_scripts\utility::flag_wait("flag_enemy_bullet_shield_off"); foreach(var_03 in getentarray("enemy_street_wave_01","script_noteworthy")) { if(isalive(var_03) && isdefined(var_03.magic_bullet_shield)) { var_03 maps\_utility::stop_magic_bullet_shield(); } } common_scripts\utility::flag_wait("flag_mt_move_up_03"); var_01 = ["enemy_street_wave_01"]; maps\fusion_utility::delete_spawners(var_01); } //Function Number: 115 combat_street_wave_02() { common_scripts\utility::flag_wait("flag_mt_move_up_01"); var_00 = getentarray("enemy_street_wave_02","script_noteworthy"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } var_00 = getentarray("enemy_street_wave_mobile_cover_a","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_mt_move_up_02"); var_00 = getentarray("enemy_street_wave_mobile_cover_b","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } common_scripts\utility::flag_wait("flag_delete_spawners_wave_02"); var_00 = ["enemy_street_wave_02"]; maps\fusion_utility::delete_spawners(var_00); } //Function Number: 116 combat_street_wave_03() { common_scripts\utility::flag_wait("flag_delete_spawners_wave_02"); var_00 = getentarray("enemy_street_wave_03","script_noteworthy"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } common_scripts\utility::flag_wait("flag_enemy_reinforcements_big_wave"); var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("enemy_trans_street_01"); var_01 thread heli_turret_death_think(); soundscripts\_snd::snd_message("courtyard_mi17_spawn_01",var_01); var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("enemy_trans_street_02"); var_02 thread heli_turret_death_think(); soundscripts\_snd::snd_message("courtyard_mi17_spawn_02",var_02); common_scripts\utility::flag_wait("flag_mt_move_up_03"); var_00 = ["enemy_street_wave_03"]; maps\fusion_utility::delete_spawners(var_00); } //Function Number: 117 combat_street_mid_checkpoint_1() { level endon("flag_enemy_walker"); common_scripts\utility::flag_wait("flag_road_combat_mid_save_1"); maps\_utility::autosave_by_name(); } //Function Number: 118 combat_street_mid_checkpoint_2() { level endon("flag_walker_destroyed"); common_scripts\utility::flag_wait("flag_road_combat_mid_save_2"); maps\_utility::autosave_by_name(); } //Function Number: 119 combat_street_blown_building() { common_scripts\utility::flag_wait("flag_combat_blown_building"); if(!common_scripts\utility::flag("flag_delete_spawners_wave_02")) { var_00 = getentarray("enemy_street_blown_building","script_noteworthy"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } } common_scripts\utility::flag_wait("flag_slow_explosions_2"); var_00 = ["enemy_street_blown_building"]; maps\fusion_utility::delete_spawners(var_00); } //Function Number: 120 heli_turret_death_think() { level.player endon("death"); level endon("street_cleanup"); self waittill("death",var_00); wait(0.05); self notify("crash_done"); } //Function Number: 121 combat_player_in_m_turret() { level endon("street_cleanup"); level.player waittill("player_enters_mobile_turret"); thread hint_mt_controls(); maps\_utility::delaythread(2,::maps\_utility::autosave_now); var_00 = getentarray("enemy_street_turret_wave_1","script_noteworthy"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } var_01 = getentarray("enemy_street_turret_wave_2","script_noteworthy"); if(var_01.size > 0) { maps\_spawner::flood_spawner_scripted(var_01); } common_scripts\utility::flag_wait("walker_damaged"); var_00 = ["enemy_street_turret_wave_1"]; maps\fusion_utility::delete_spawners(var_00); var_01 = ["enemy_street_turret_wave_2"]; maps\fusion_utility::delete_spawners(var_01); } //Function Number: 122 hint_mt_controls() { level.player endon("player_exited_mobile_turret"); wait(1); maps\_utility::hintdisplayhandler("hint_mt_fire_missiles"); common_scripts\utility::flag_wait("flag_hint_mt_control_fire_missiles_press"); maps\_utility::hintdisplaymintimehandler("hint_mt_fire_missiles_release"); } //Function Number: 123 monitor_mobile_turret_health() { level.player endon("death"); level endon("street_cleanup"); level.player waittill("player_starts_entering_mobile_turret"); common_scripts\utility::flag_set("flag_player_starts_entering_mobile_turret"); level.player waittill("player_enters_mobile_turret"); common_scripts\utility::flag_set("flag_player_enters_mobile_turret"); thread mobile_turret_tutorial_hints(); var_00 = getentarray("mobile_turret_damage","targetname"); foreach(var_02 in var_00) { var_02 linkto(self); } var_04 = getent("trig_mobile_turret_health_1","targetname"); var_04 mobile_turret_health_think(self,::mobile_turret_health_1); var_04 = getent("trig_mobile_turret_health_2","targetname"); var_04 mobile_turret_health_think(self,::mobile_turret_health_2); var_04 = getent("trig_mobile_turret_health_3","targetname"); var_04 mobile_turret_health_think(self,::mobile_turret_health_3); var_04 = getent("trig_mobile_turret_missile","targetname"); var_04 mobile_turret_health_think(self,::mobile_turret_missile); } //Function Number: 124 mobile_turret_tutorial_hints() { } //Function Number: 125 mobile_turret_health_think(param_00,param_01) { level.player endon("death"); param_00 endon("death"); level endon("street_cleanup"); for(;;) { self waittill("trigger",var_02); if(var_02 == level.player && isdefined(param_00.player_driver) && param_00.player_driver == level.player) { param_00 thread [[ param_01 ]](); break; } } } //Function Number: 126 mobile_turret_health_1() { self endon("death"); self endon("stop_mobile_turret_health_1"); } //Function Number: 127 mobile_turret_health_2() { self endon("death"); self endon("stop_mobile_turret_health_2"); var_00 = "mobile_turret_sparks"; var_01 = "TAG_SPARKS_1"; var_02 = "TAG_SPARKS_2"; play_and_store_fx_on_tag(var_00,self,var_01); wait(0.1); play_and_store_fx_on_tag(var_00,self,var_02); } //Function Number: 128 mobile_turret_health_3() { self endon("death"); self endon("stop_mobile_turret_health_3"); } //Function Number: 129 mobile_turret_missile() { self endon("death"); var_00 = common_scripts\utility::getstruct("org_missile_disable_mt","targetname"); var_01 = var_00.origin + anglestoforward(var_00.angles) * 256; var_02 = magicbullet("mobile_turret_missile",var_00.origin,var_01); var_02 missile_settargetpos(self.mgturret[0] gettagorigin("tag_flash") + anglestoforward(self.mgturret[0].angles) * 64); var_02 missile_setflightmodedirect(); var_02 waittill("death"); playfx(common_scripts\utility::getfx("rpg_explode"),self.mgturret[0].origin); var_03 = self.mgturret[0].origin; if(isdefined(self.player_driver)) { soundscripts\_snd::snd_message("player_mobile_turret_warning"); var_03 = self.player_driver.origin; thread maps\_utility::flag_set_delayed("flag_bailout_vo",0.5); } earthquake(2,1,var_03,256); thread mobile_turret_health_4(); } //Function Number: 130 mobile_turret_health_4() { maps\_utility::ent_flag_waitopen("player_in_transition"); if(isdefined(level.player.drivingvehicleandturret)) { var_00 = self.mgturret[0]; level.player drivevehicleandcontrolturretoff(self); thread mobile_turret_burning_limit_controls(var_00); thread mobile_turret_burning(); self.burning = 1; var_01 = "mobile_turret_fire_large"; var_02 = "TAG_FIRE_2"; play_and_store_fx_on_tag(var_01,self,var_02); return; } self.burning = 1; destroy_mobile_turret(); } //Function Number: 131 mobile_turret_burning_limit_controls(param_00) { level.player enableslowaim(0.005,0.005); level.player maps\_utility::set_ignoreme(1); param_00 turretfiredisable(); self notify("end_rocket_think"); self notify("fire_missile_system"); self notify("disable_missile_input"); self notify("force_clear_all_turret_locks"); self.reticle vehicle_scripts\_x4walker_wheels_turret::reticle_hide(); self waittill("dismount_vehicle_and_turret"); level.player maps\_utility::set_ignoreme(0); level.player disableslowaim(); } //Function Number: 132 mobile_turret_burning() { thread destroy_turret_when_player_leaves(); level.player endon("death"); level endon("street_cleanup"); self endon("dismount_vehicle_and_turret"); self notify("play_damage_warning"); var_00 = 20; wait(var_00 - 1); var_01 = self.angles + (-90,90,0); playfx(common_scripts\utility::getfx("fusion_vehicle_mobile_cover_explosion"),level.player geteye() + (0,-50,20)); earthquake(1,1.6,level.player.origin,625); wait(1); level.player disableinvulnerability(); level notify("mission failed"); setdvar("ui_deadquote",&"FUSION_MOBILE_TURRET_DETROYED"); maps\_utility::missionfailedwrapper(); } //Function Number: 133 destroy_turret_when_player_leaves() { level.player endon("death"); level endon("street_cleanup"); self waittill("player_exited_mobile_turret"); destroy_mobile_turret(); } //Function Number: 134 destroy_mobile_turret() { level.player endon("death"); level endon("street_cleanup"); vehicle_scripts\_x4walker_wheels_turret::make_mobile_turret_unusable(); var_00 = 256; var_01 = 20; while(distance(self.origin,level.player.origin) < var_00 && var_01 >= 0) { var_01 = var_01 - 0.05; wait(0.05); } self.mgturret[0] hide(); self setmodel("vehicle_x4walker_wheels_dstrypv"); playfxontag(common_scripts\utility::getfx("mobile_turret_explosion"),self,"tag_death_fx"); earthquake(1,1.6,self.origin,625); soundscripts\_snd::snd_message("player_mobile_turret_explo"); self notify("stop_mobile_turret_health_1"); self notify("stop_mobile_turret_health_2"); self notify("stop_mobile_turret_health_3"); self notify("stop_mobile_turret_health_4"); wait(0.5); playfxontag(common_scripts\utility::getfx("mobile_turret_ground_smoke"),self,"tag_death_fx"); } //Function Number: 135 disable_mobile_turret_if_not_destroyed() { level.player endon("death"); self endon("stop_mobile_turret_health_4"); var_00 = getent("trig_mobile_turret_missile","targetname"); var_00 waittill("trigger"); if(!isdefined(level.player.drivingvehicleandturret)) { vehicle_scripts\_x4walker_wheels_turret::make_mobile_turret_unusable(); } } //Function Number: 136 play_and_store_fx_on_tag(param_00,param_01,param_02) { playfxontag(common_scripts\utility::getfx(param_00),param_01.mgturret[0],param_02); var_03 = spawnstruct(); var_03.name = param_00; var_03.tag = param_02; if(!isdefined(param_01.damage_fx)) { param_01.damage_fx = []; } param_01.damage_fx[self.damage_fx.size] = var_03; } //Function Number: 137 combat_street_wave_04() { common_scripts\utility::flag_wait("flag_delete_spawners_wave_02"); var_00 = getentarray("enemy_street_wave_04","script_noteworthy"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } common_scripts\utility::flag_wait("flag_enemy_walker"); var_00 = ["enemy_street_wave_04"]; maps\fusion_utility::delete_spawners(var_00); } //Function Number: 138 combat_street_wave_rear() { common_scripts\utility::flag_wait("flag_mt_move_up_05"); var_00 = getentarray("enemy_street_wave_rear","script_noteworthy"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } foreach(var_02 in getentarray("enemy_street_wave_rear","script_noteworthy")) { if(isalive(var_02)) { var_02 maps\_utility::deletable_magic_bullet_shield(); } } foreach(var_02 in getentarray("enemy_street_wave_rear","script_noteworthy")) { if(isalive(var_02) && isdefined(var_02.magic_bullet_shield)) { var_02 maps\_utility::stop_magic_bullet_shield(); } } if(level.currentgen) { common_scripts\utility::flag_wait("flag_walker_destroyed"); } else { common_scripts\utility::flag_wait("flag_mt_move_up_05"); } var_00 = ["enemy_street_wave_rear"]; maps\fusion_utility::delete_spawners(var_00); } //Function Number: 139 combat_enemy_tank() { common_scripts\utility::flag_wait("walker_trophy_1"); var_00 = getentarray("enemy_street_tank_stage_01","script_noteworthy"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } common_scripts\utility::flag_wait("walker_trophy_2"); thread rpg_at_squad_01(); var_00 = getentarray("enemy_street_tank_stage_02","script_noteworthy"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } common_scripts\utility::flag_wait("walker_damaged"); var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("enemy_m_turret_03"); var_01 thread gaz_turret_guy_think(); common_scripts\utility::flag_wait("flag_walker_destroyed"); var_00 = ["enemy_street_tank_stage_01","enemy_street_tank_stage_02"]; maps\fusion_utility::delete_spawners(var_00); if(!level.nextgen) { level waittill("tff_pre_transition_intro_to_middle"); var_01 delete(); } } //Function Number: 140 gaz_turret_guy_think() { var_00 = undefined; foreach(var_02 in self.riders) { if(isdefined(var_02.vehicle_position) && var_02.vehicle_position == 3) { var_00 = var_02; var_00 endon("death"); } var_02 thread walker_death_courtyard_kva_cleanup(); } if(!isdefined(var_00)) { return; } common_scripts\utility::flag_wait("flag_walker_destroyed"); var_00.health = 1; var_00.ignoreme = 0; } //Function Number: 141 combat_enemy_trans_heli_wave_01() { common_scripts\utility::flag_wait("flag_mt_move_up_05"); } //Function Number: 142 combat_zip_rooftop() { common_scripts\utility::flag_wait("flag_combat_zip_rooftop_start"); var_00 = missile_createrepulsorent(level.warbird_a,5000,1000); var_01 = getentarray("enemy_street_zip_rooftop","script_noteworthy"); foreach(var_03 in var_01) { var_03 maps\_utility::spawn_ai(1); } if(level.currentgen) { var_01 = getentarray("enemy_street_zip_rooftop_left","script_noteworthy"); var_05 = getentarray("enemy_street_zip_rooftop_right","script_noteworthy"); var_01 = common_scripts\utility::array_combine(var_01,var_05); foreach(var_03 in var_01) { var_03 maps\_utility::spawn_ai(1); } } if(level.nextgen) { maps\fusion_utility::spawn_metrics_waittill_deaths_reach(4,["enemy_street_zip_rooftop"],1); } else { maps\fusion_utility::spawn_metrics_waittill_deaths_reach(4,["enemy_street_zip_rooftop","enemy_street_zip_rooftop_left","enemy_street_zip_rooftop_right"],1); } common_scripts\utility::flag_set("flag_burke_zip"); if(level.nextgen) { maps\fusion_utility::spawn_metrics_waittill_deaths_reach(6,["enemy_street_zip_rooftop"],1); } else { maps\fusion_utility::spawn_metrics_waittill_deaths_reach(6,["enemy_street_zip_rooftop","enemy_street_zip_rooftop_left","enemy_street_zip_rooftop_right"],1); } var_01 = getentarray("enemy_street_zip_rooftop_strafe","script_noteworthy"); foreach(var_03 in var_01) { var_03 maps\_utility::spawn_ai(1); } waittillframeend; if(!common_scripts\utility::flag("flag_rooftop_strafe")) { common_scripts\utility::flag_set("flag_player_cleared_rooftop"); } if(level.nextgen) { maps\fusion_utility::spawn_metrics_waittill_deaths_reach(9,["enemy_street_zip_rooftop","enemy_street_zip_rooftop_strafe"],1); } else { maps\fusion_utility::spawn_metrics_waittill_deaths_reach(9,["enemy_street_zip_rooftop","enemy_street_zip_rooftop_left","enemy_street_zip_rooftop_right","enemy_street_zip_rooftop_strafe"],1); } common_scripts\utility::flag_set("flag_combat_zip_rooftop_complete"); soundscripts\_snd::snd_music_message("mus_combat_zip_rooftop_complete"); } //Function Number: 143 combat_street_initial() { if(level.currentgen) { common_scripts\utility::flag_wait("flag_spawn_gaz_01"); } var_00 = getentarray("enemy_street_reactor_entrance","script_noteworthy"); foreach(var_02 in var_00) { if(isdefined(var_02)) { var_02 maps\_utility::spawn_ai(1); } } if(level.nextgen) { common_scripts\utility::flag_wait("flag_spawn_gaz_01"); } var_04 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("enemy_m_turret_02"); var_05 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("enemy_m_turret_01"); var_04 thread gaz_turret_guy_think(); var_05 thread gaz_turret_guy_think(); var_06 = getent("titan_friendly_badplace","targetname"); badplace_brush("titan_hill_friendly_bad",-1,var_06,"allies"); common_scripts\utility::flag_wait("flag_obj_01_pos_update_02"); var_00 = ["enemy_street_reactor_entrance"]; maps\fusion_utility::delete_spawners(var_00); if(level.currentgen) { level waittill("tff_pre_transition_intro_to_middle"); var_04 delete(); var_05 delete(); } } //Function Number: 144 rpg_at_heli() { common_scripts\utility::flag_wait("flag_rpg_at_heli"); wait(2.5); maps\_vehicle::spawn_vehicle_from_targetname_and_drive("rpg_at_heli"); } //Function Number: 145 rpg_at_squad_01() { maps\_vehicle::spawn_vehicle_from_targetname_and_drive("rpg_at_squad_01"); wait(1); maps\_vehicle::spawn_vehicle_from_targetname_and_drive("rpg_at_squad_02"); } //Function Number: 146 wall_explosion_01() { var_00 = getentarray("street_wall_1_decal","targetname"); foreach(var_02 in var_00) { var_02 hide(); } common_scripts\utility::flag_wait("flag_mt_wall_rpg_fire"); var_04 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("rpg_at_wall_01"); common_scripts\utility::flag_wait("flag_mt_wall_rpg_impact"); var_05 = getent("blocker_wall_1_explode","targetname"); var_05 delete(); foreach(var_02 in var_00) { var_02 show(); } maps\_utility::activate_trigger_with_targetname("street_wall_1_explode"); var_08 = common_scripts\utility::getstruct("vfx_street_wall_1_explode","targetname"); thread maps\fusion_lighting::firelight_volume(); thread maps\fusion_lighting::firelight_volume2(); soundscripts\_snd::snd_message("street_wall_1_explode",var_08.origin); radiusdamage(var_08.origin,200,200,100,undefined,"MOD_EXPLOSIVE"); physicsexplosionsphere(var_08.origin,200,10,1); } //Function Number: 147 building_explosion_01() { common_scripts\utility::flag_wait("flag_mt_move_up_05"); maps\_utility::activate_trigger_with_targetname("street_building_top_1_explode"); var_00 = common_scripts\utility::getstruct("vfx_street_building_1_explode","targetname"); soundscripts\_snd::snd_message("building_explode",var_00.origin); radiusdamage(var_00.origin,200,200,100,undefined,"MOD_EXPLOSIVE"); physicsexplosionsphere(var_00.origin,200,10,1); } //Function Number: 148 spawn_player_anim_rig() { return maps\_utility::spawn_anim_model("player_rig",(0,0,0)); } //Function Number: 149 courtyard_ambient_explosions() { level.player endon("death"); level endon("start_itiot"); level endon("street_cleanup"); level endon("flag_walker_destroyed"); common_scripts\utility::flag_wait("flag_ambient_explosions_start"); childthread courtyard_ambient_bullet_impacts(); } //Function Number: 150 courtyard_ambient_bullet_impacts() { var_00 = common_scripts\utility::getstructarray("ambient_bullet_origins","targetname"); var_01 = 0.05; if(level.currentgen) { var_01 = 0.5; } for(;;) { var_02 = 0.25; var_03 = 0.5; if(common_scripts\utility::flag("flag_slow_explosions_1")) { var_02 = 1.25; var_03 = 1.5; } if(common_scripts\utility::flag("flag_slow_explosions_2")) { var_02 = 2.25; var_03 = 2.5; } if(level.currentgen) { var_02 = var_02 * 2; var_03 = var_03 * 2; } wait(randomfloatrange(var_02,var_03)); var_04 = anglestoforward(level.player.angles); var_05 = anglestoright(level.player.angles); var_06 = spawn("script_origin",(0,0,0)); var_04 = var_04 * randomintrange(256,512); var_05 = var_05 * randomintrange(-256,256); var_07 = randomint(360); var_06.angles = (0,var_07,0); var_08 = var_00[randomint(var_00.size)]; var_09 = 0; var_0A = level.player.origin + var_04 + var_05; var_0B = randomintrange(64,256); if(level.currentgen) { var_0C = randomintrange(2,8); } else { var_0C = randomintrange(4,15); } var_0D = var_0A + anglestoforward(var_06.angles) * var_0B; var_0E = var_0D - var_0A; var_0F = var_0C * var_01; while(var_09 < var_0F) { var_10 = randomfloat(1); if(var_10 < 0.8) { var_06.origin = var_0A + var_0E * var_09 / var_0F; var_11 = randomintrange(-40,40); var_12 = randomintrange(-40,40); var_13 = randomintrange(-5,5); var_06.origin = var_06.origin + (var_11,var_12,var_13); if(!maps\_utility::shot_endangers_any_player(var_08.origin,var_06.origin)) { magicbullet("iw5_ak12_sp",var_08.origin,var_06.origin); soundscripts\_snd::snd_message("courtyard_ambient_bullet_impact","iw5_ak12_sp",var_08.origin,var_06.origin); } } var_09 = var_09 + var_01; wait(var_01); } var_06 delete(); } } //Function Number: 151 rooftop_slide() { common_scripts\utility::flag_wait("flag_player_zip_started"); var_00 = getent("rooftop_slide_guy_1","targetname"); var_00.count++; var_01 = var_00 maps\_utility::spawn_ai(1); level.get_in_mobile_turret_guy = var_01; var_01.animname = "guy1"; var_01 maps\_utility::deletable_magic_bullet_shield(); var_02 = [var_01]; var_03 = undefined; if(level.nextgen) { var_04 = getent("rooftop_slide_guy_2","targetname"); var_04.count++; var_03 = var_04 maps\_utility::spawn_ai(1); var_03.animname = "guy2"; var_03 maps\_utility::deletable_magic_bullet_shield(); var_02 = common_scripts\utility::array_add(var_02,var_03); } var_05 = common_scripts\utility::getstruct("struct_rooftop_slide","script_noteworthy"); var_05 maps\_anim::anim_first_frame(var_02,"fusion_rooftop_slide"); var_05 maps\_anim::anim_single(var_02,"fusion_rooftop_slide"); if(isdefined(var_03)) { var_03 maps\_utility::stop_magic_bullet_shield(); } var_06 = getnode("node_mt_guy_after_zip","targetname"); var_01 thread maps\fusion_utility::goto_node(var_06,0); var_01 maps\fusion_utility::disable_awareness(); var_01 maps\_utility::delaythread(5.5,::guy_approach_mobile_turret); if(isdefined(var_03)) { var_07 = getnode("node_cover_joker_after_zip","targetname"); var_03 maps\fusion_utility::goto_node(var_07,1); } common_scripts\utility::flag_wait("player_fly_in_done"); wait(4.5); if(isdefined(var_03)) { var_03 maps\_utility::set_force_color("p"); } } //Function Number: 152 hide_water() { if(level.start_point == "fly_in_animated" || level.start_point == "courtyard") { common_scripts\utility::flag_wait("player_fly_in_done"); } var_00 = getent("water_on","targetname"); var_00 delete(); } //Function Number: 153 courtyard_burke_rally() { common_scripts\utility::flag_wait("flag_player_zip_started"); common_scripts\utility::flag_set("flag_boots_on_ground_dialogue"); common_scripts\utility::flag_wait("burke_fastzip_done"); common_scripts\utility::flag_wait("player_fly_in_done"); waittillframeend; level.burke.animname = "burke"; level.joker.animname = "joker"; level.carter.animname = "carter"; level.burke maps\_utility::set_ignoreall(1); level.joker maps\_utility::set_ignoreall(1); var_00 = common_scripts\utility::getstruct("struct_courtyard_burke_rally","script_noteworthy"); maps\_utility::delaythread(6,::color_activate_post_burk_rally); var_00 maps\_anim::anim_reach_solo(level.burke,"street_burke_rally"); level.burke maps\_utility::set_ignoreall(0); var_00 thread maps\_anim::anim_single_solo_run(level.burke,"street_burke_rally"); level.burke maps\_utility::enable_ai_color(); common_scripts\utility::flag_set("flag_burke_rally_street_dialogue"); level.carter maps\_utility::delaythread(9,::maps\_utility::enable_ai_color); level.joker maps\_utility::set_ignoreall(0); var_00 maps\_anim::anim_reach_solo(level.joker,"street_burke_rally_in"); var_00 maps\_anim::anim_single_solo(level.joker,"street_burke_rally_in"); var_00 thread maps\_anim::anim_loop_solo(level.joker,"street_burke_rally_idle","ender_string"); wait(2.75); var_00 notify("ender_string"); var_00 maps\_anim::anim_single_solo_run(level.joker,"street_burke_rally_out"); level.joker maps\_utility::enable_ai_color(); } //Function Number: 154 color_activate_post_burk_rally() { var_00 = getent("color_t_fastzip_landing","targetname"); if(isdefined(var_00)) { maps\_utility::activate_trigger_with_targetname("color_t_fastzip_landing"); } level.carter maps\_utility::disable_sprint(); if(isdefined(var_00)) { var_00 common_scripts\utility::trigger_off(); } } //Function Number: 155 courtyard_mobile_cover_guys() { var_00 = getent("mobile_cover_guy_2","targetname"); var_00.count++; var_01 = var_00 maps\_utility::spawn_ai(1); var_01.animname = "guy2"; var_01 maps\_utility::deletable_magic_bullet_shield(); var_02 = [var_01]; var_03 = undefined; if(level.nextgen) { var_04 = getent("mobile_cover_guy_1","targetname"); var_04.count++; var_03 = var_04 maps\_utility::spawn_ai(1); var_03.animname = "guy1"; var_03 maps\_utility::deletable_magic_bullet_shield(); var_02 = common_scripts\utility::array_add(var_02,var_03); } var_05 = common_scripts\utility::spawn_tag_origin(); var_05.origin = (-960.107,-3213.48,-72); var_05.angles = (0,11,0); var_06 = spawn("script_model",var_05.origin); var_06 setmodel("vehicle_mobile_cover"); var_06 maps\_utility::assign_animtree("mobile_cover"); var_07 = getent("mobile_cover_courtyard_clip","targetname"); var_07 connectpaths(); var_05 thread maps\_anim::anim_first_frame(var_02,"fusion_mobile_cover"); var_05 thread maps\_anim::anim_first_frame_solo(var_06,"fusion_mobile_cover"); var_07.origin = var_06.origin; var_07 linkto(var_06); common_scripts\utility::flag_wait("flag_ambient_explosions_start"); var_06 thread mobile_cover_badplace(); var_06 thread mobile_cover_courtyard_start(var_07,var_05); var_05 maps\_anim::anim_single_run(var_02,"fusion_mobile_cover"); var_01 maps\_utility::stop_magic_bullet_shield(); var_01 kill(); var_01 startragdoll(); var_08 = getnode("node_mobile_cover_courtyard","targetname"); if(isdefined(var_03)) { var_03 maps\fusion_utility::goto_node(var_08,1); var_03 maps\_utility::set_force_color("y"); var_03 maps\_utility::stop_magic_bullet_shield(); } if(level.nextgen) { level waittill("street_cleanup"); } else { level waittill("tff_pre_transition_intro_to_middle"); } var_05 delete(); var_06 delete(); } //Function Number: 156 mobile_cover_courtyard_start(param_00,param_01) { soundscripts\_snd::snd_message("cvrdrn_paired_anim_start"); param_01 maps\_anim::anim_single_solo(self,"fusion_mobile_cover"); soundscripts\_snd::snd_message("cvrdrn_paired_anim_explo"); mobile_cover_explosion(param_00); } //Function Number: 157 mobile_cover_badplace() { self endon("stop_mobile_cover_badplace"); for(;;) { badplace_cylinder("mobile_cover_badplace",0.25,self.origin,96,96,"axis","allies"); wait(0.25); } } //Function Number: 158 street_mobile_cover_guys() { level.player endon("death"); common_scripts\utility::flag_wait("flag_mobile_cover_se_2"); var_00 = common_scripts\utility::getstruct("street_mobile_cover_guys_node","script_noteworthy"); while(distance(level.player.origin,var_00.origin) < 195 || maps\_utility::player_looking_at(var_00.origin,cos(60),1)) { wait(0.5); } var_01 = getent("mobile_cover_2_guy_1","targetname"); var_02 = getent("mobile_cover_2_guy_2","targetname"); var_01.count++; var_02.count++; var_03 = var_01 maps\_utility::spawn_ai(1); var_04 = var_02 maps\_utility::spawn_ai(1); var_03.animname = "guy1"; var_04.animname = "guy2"; var_03 maps\_utility::deletable_magic_bullet_shield(); var_04 maps\_utility::deletable_magic_bullet_shield(); var_05 = getent("street_mobile_cover_guys_cover","script_noteworthy"); var_06 = var_05 maps\_utility::spawn_vehicle(); var_06 maps\_utility::assign_animtree("mobile_cover"); var_06 vehicle_scripts\_cover_drone::cover_drone_disable(); var_07 = [var_03,var_04,var_06]; var_00 thread maps\_anim::anim_first_frame(var_07,"fusion_mobile_cover_2"); var_00 maps\_anim::anim_single(var_07,"fusion_mobile_cover_2"); var_06 stopanimscripted(); var_06 vehicle_scripts\_cover_drone::cover_drone_enable(); var_03 maps\fusion_utility::disable_awareness(); var_04 maps\fusion_utility::disable_awareness(); var_04 maps\fusion_utility::goto_node("node_cover_mb_guy_01",0); var_03 maps\fusion_utility::goto_node("node_cover_mb_guy_02",0); var_03 maps\fusion_utility::enable_awareness(); var_04 maps\fusion_utility::enable_awareness(); var_03 maps\_utility::stop_magic_bullet_shield(); var_04 maps\_utility::stop_magic_bullet_shield(); var_07 = [var_03,var_04]; common_scripts\utility::flag_wait("flag_walker_destroyed"); foreach(var_09 in var_07) { if(isalive(var_09)) { var_09 maps\_utility::set_force_color("y"); } } } //Function Number: 159 mobile_cover_explosion(param_00) { self notify("stop_mobile_cover_badplace"); var_01 = spawn("script_origin",(0,0,0)); var_01.origin = self.origin; var_02 = self.angles + (-90,90,0); param_00 delete(); self setmodel("vehicle_mobile_cover_dstrypv"); playfx(common_scripts\utility::getfx("fusion_vehicle_mobile_cover_explosion"),var_01.origin,anglestoforward(var_02),anglestoup(var_02)); earthquake(1,1.6,var_01.origin,625); radiusdamage(var_01.origin,100,200,100,undefined,"MOD_EXPLOSIVE"); physicsexplosionsphere(var_01.origin,200,10,1); common_scripts\utility::play_sound_in_space("mortar_explosion",var_01.origin); var_01 delete(); } //Function Number: 160 mobile_turret_dropoff() { level.player endon("death"); common_scripts\utility::flag_wait("flag_player_zip_started"); wait(3); common_scripts\utility::flag_set("cam_shake_start"); var_00 = common_scripts\utility::getstruct("org_mobile_turret_warbird_deploy","targetname"); var_01 = maps\_vehicle::spawn_vehicle_from_targetname("warbird_mobile_turret_deploy"); var_01 soundscripts\_snd::snd_message("warbird_mobile_turret_dropoff"); var_01.animname = "warbird_deploy"; var_01 maps\_vehicle::godon(); var_01 maps\_vehicle::vehicle_lights_on("running"); var_01 vehicle_turnengineoff(); var_02 = maps\_utility::spawn_anim_model("walker_deploy"); var_02.animname = "walker_deploy"; var_02 soundscripts\_snd::snd_message("walker_mobile_turret_dropoff"); var_03 = maps\_utility::spawn_anim_model("pulley_deploy"); var_03.animname = "pulley_deploy"; var_01 thread custom_dust_kickup(); var_00 maps\_anim::anim_first_frame([var_01,var_03,var_02],"mobile_turret_deploy"); var_00 thread play_warbird_mobile_turret_dropoff(var_01,var_03); var_00 maps\_anim::anim_single_solo(var_02,"mobile_turret_deploy"); var_04 = maps\_vehicle::spawn_vehicle_from_targetname("walker_mobile_turret_deploy"); var_04 soundscripts\_snd::snd_message("spawn_walker_mobile_turret_deploy"); var_04.animname = "mobile_turret"; var_04 maps\_vehicle::godon(); var_04 vehicle_teleport(var_02.origin,var_02.angles); var_02 delete(); common_scripts\utility::flag_set("cam_shake_stop"); var_05 = getent("clip_mobile_turret_warbird_deploy","targetname"); var_05 connectpaths(); var_05 delete(); var_06 = getent("clip_mobile_turret_warbird_deploy_player","targetname"); var_06 linkto(var_04); thread guy_get_in_mobile_turret(var_04); if(level.currentgen) { level waittill("tff_pre_transition_intro_to_middle"); var_04 delete(); } } //Function Number: 161 guy_approach_mobile_turret() { } //Function Number: 162 custom_dust_kickup() { wait(0.05); self notify("stop_kicking_up_dust"); var_00 = common_scripts\utility::spawn_tag_origin(); var_00 linkto(self,"tag_origin",(0,-150,-100),(0,0,0)); thread maps\_vehicle::aircraft_wash(var_00); self waittill("death"); self notify("stop_kicking_up_dust"); var_00 delete(); } //Function Number: 163 courtyard_ally_mcd_safeguard_init() { common_scripts\utility::array_thread(getentarray("courtyard_trig_ally_mcd_safeguard","targetname"),::courtyard_ally_mcd_safeguard); } //Function Number: 164 courtyard_ally_mcd_safeguard() { level endon("flag_walker_destroyed"); var_00 = getent(self.target,"targetname"); var_01 = common_scripts\utility::getstructarray("courtyard_pos_ally_mcd_safeguard","targetname"); for(;;) { self waittill("trigger",var_02); var_03 = [level.carter,level.joker,level.burke]; foreach(var_07, var_05 in var_03) { var_06 = var_01[var_07]; if(var_05 istouching(var_00) && !maps\_utility::player_can_see_ai(var_05) && !maps\_utility::player_looking_at(var_06.origin,undefined,1)) { var_05 forceteleport(var_06.origin,var_06.angles); } } } } //Function Number: 165 play_warbird_mobile_turret_dropoff(param_00,param_01) { maps\_anim::anim_single([param_00,param_01],"mobile_turret_deploy"); param_01 linkto(param_00); param_00 maps\_utility::vehicle_detachfrompath(); param_00 vehicle_setspeed(60,15,5); var_02 = common_scripts\utility::getstruct("warbird_path_after_turret_deploy","targetname"); param_00 thread maps\_utility::vehicle_dynamicpath(var_02,0); common_scripts\utility::flag_wait("warbird_turret_deploy_delete"); param_01 delete(); param_00 delete(); } //Function Number: 166 guy_get_in_mobile_turret(param_00) { level.player endon("death"); if(level.nextgen) { level endon("street_cleanup"); } else { level endon("tff_pre_transition_intro_to_middle"); } var_01 = level.get_in_mobile_turret_guy; var_01 notify("guy_getting_in_mobile_turret"); var_02 = getdvarint("ai_friendlySuppression"); setsaveddvar("ai_friendlySuppression",0); var_01 maps\fusion_utility::disable_awareness(); var_01 pushplayer(1); var_01 maps\_utility::delaythread(2,::maps\_utility::enable_sprint); param_00 maps\_anim::anim_reach_solo(var_01,"guy_enter_mobile_turret","tag_guy"); param_00 thread maps\_anim::anim_single_solo(var_01,"guy_enter_mobile_turret","tag_guy"); param_00 maps\_anim::anim_single_solo(param_00,"guy_enter_mobile_turret"); setsaveddvar("ai_friendlySuppression",var_02); param_00 thread maps\_vehicle_aianim::guy_enter(var_01); level.get_in_mobile_turret_guy = undefined; var_03 = getvehiclenode("deployed_turret_path","targetname"); param_00.target = "deployed_turret_path"; param_00 thread maps\_vehicle_code::getonpath(); param_00 thread mobile_turret_gopath(); param_00 thread monitor_turret_2_death(); param_00 thread maps\fusion_utility::kill_path_on_death(); common_scripts\utility::flag_wait("flag_mt_wall_rpg_fire"); param_00 notify("stop_vehicle_turret_ai"); var_04 = common_scripts\utility::spawn_tag_origin(); var_04 linkto(param_00,"tag_body",(10000,0,0),(0,0,0)); param_00 setturrettargetent(var_04); common_scripts\utility::flag_wait("flag_mt_wall_rpg_impact"); wait(0.25); param_00 maps\_vehicle::godoff(); param_00 dodamage(param_00.health + 200,(0,0,0)); param_00 thread walker_guy_death(var_01); var_04 delete(); } //Function Number: 167 walker_guy_death(param_00) { var_01 = %x4walker_wheels_destructed_death_right_npc; param_00 = maps\_vehicle_aianim::convert_guy_to_drone(param_00,0,0); [[ level.global_kill_func ]]("MOD_RIFLE_BULLET","torso_upper",param_00.origin); param_00 linkto(self,"tag_guy",(0,0,0),(0,0,0)); param_00 notsolid(); param_00 setflaggedanim("death",var_01); param_00 thread maps\fusion_fx::set_guy_on_fire(); var_02 = getanimlength(var_01); var_03 = getnotetracktimes(var_01,"start_ragdoll"); if(isdefined(var_03) && var_03.size > 0) { var_02 = var_02 * var_03[0]; } else { var_02 = var_02 - 0.15; } wait(var_02); param_00 unlink(); } //Function Number: 168 enemy_walker() { common_scripts\utility::flag_wait("flag_enemy_walker"); level.walker = maps\_vehicle::spawn_vehicle_from_targetname("enemy_walker"); level.walker thread enemy_walker_set_launcher_targets(); level.walker soundscripts\_snd::snd_message("titan_init"); common_scripts\utility::flag_set("update_obj_pos_walker"); level.walker.mobile_turret_rocket_target = 0; level.walker thread walker_anims(); level.walker thread manage_walker_health(); level.walker thread walker_trophy_system(); level.walker thread walker_badplace(); level.walker thread enemy_walker_kill_player_if_too_close(); thread launcher_out_of_ammo_think(); thread enemy_walker_target_player_if_targeted(); if(isalive(level.walker)) { level.walker waittill("death"); } level.walker setcontents(0); common_scripts\utility::flag_set("flag_walker_destroyed"); common_scripts\utility::flag_set("update_obj_pos_security_entrance_1"); if(level.nextgen) { thread spawn_more_allies(); } maps\_utility::delaythread(2,::maps\_utility::autosave_now); var_00 = getent("color_t_street_end","targetname"); var_00 common_scripts\utility::trigger_on(); wait(1); if(isdefined(var_00)) { maps\_utility::activate_trigger_with_targetname("color_t_street_end"); } } //Function Number: 169 launcher_out_of_ammo_think() { level endon("flag_walker_destroyed"); level.active_objective = []; level.inactive_objective = []; var_00 = getent("org_obj_get_launcher_ammo","targetname"); objective_add(maps\_utility::obj("obj_launcher_ammo"),"invisible","",var_00.origin); maps\_utility::set_objective_inactive("obj_launcher_ammo"); for(;;) { wait(0.5); if(isalive(level.walker)) { var_01 = level.player getweaponslist("primary"); if(!common_scripts\utility::array_contains(var_01,"iw5_stingerm7_sp")) { launcher_out_of_ammo_obj_clear(var_00); continue; } foreach(var_03 in var_01) { if(issubstr(var_03,"iw5_stingerm7_sp")) { if(level.player getammocount("iw5_stingerm7_sp") > 0) { launcher_out_of_ammo_obj_clear(var_00); common_scripts\utility::flag_clear("flag_launcher_out_of_ammo"); common_scripts\utility::flag_set("flag_launcher_ammo_gathered"); } if(level.player getammocount("iw5_stingerm7_sp") == 0) { launcher_out_of_ammo_obj(var_00,var_01); common_scripts\utility::flag_set("flag_launcher_out_of_ammo"); common_scripts\utility::flag_clear("flag_launcher_ammo_gathered"); } } } } } } //Function Number: 170 launcher_out_of_ammo_obj(param_00,param_01) { wait(0.5); foreach(var_03 in param_01) { if(issubstr(var_03,"iw5_stingerm7_sp")) { if(level.player getammocount("iw5_stingerm7_sp") == 0) { if(maps\_utility::objective_is_inactive("obj_launcher_ammo")) { objective_state_nomessage(maps\_utility::obj("obj_launcher_ammo"),"active"); objective_current_nomessage(maps\_utility::obj("obj_launcher_ammo"),maps\_utility::obj("shutdown_reactor")); objective_setpointertextoverride(maps\_utility::obj("obj_launcher_ammo"),&"FUSION_OBJ_AMMO_CRATE"); maps\_utility::set_objective_active("obj_launcher_ammo"); } } } } } //Function Number: 171 launcher_out_of_ammo_obj_clear(param_00) { if(maps\_utility::objective_is_active("obj_launcher_ammo")) { objective_delete(maps\_utility::obj("obj_launcher_ammo")); } } //Function Number: 172 enemy_walker_set_launcher_targets() { while(!thread does_player_have_smaw()) { wait 0.05; } level.scripttargets = []; var_00 = ["kneeb_fr","kneeb_fl","kneeb_kr","kneeb_kl","shoulder_fl","shoulder_fr","launcher_left","launcher_right","tag_sparks2","tag_sparks3"]; foreach(var_04, var_02 in var_00) { var_03[var_04] = common_scripts\utility::spawn_tag_origin(); var_03[var_04].origin = self gettagorigin(var_02); var_03[var_04].stinger_override_tags = ["tag_origin"]; var_03[var_04].script_team = "axis"; var_03[var_04] linkto(level.walker,var_02); var_03[var_04].health = 100; var_03[var_04].walkernode = 1; level.scripttargets[level.scripttargets.size] = var_03[var_04]; } } //Function Number: 173 enemy_walker_kill_player_if_too_close() { self endon("death"); common_scripts\utility::flag_wait("player_too_close_to_walker"); maps\_vehicle::godon(); level.player endon("death"); level.player enablehealthshield(0); foreach(var_01 in self.mgturret) { var_01 notify("stop_vehicle_turret_ai"); var_01 thread walker_tank_turret_fire_at_player(level.player); } for(;;) { level.player dodamage(15 / level.player.damagemultiplier,self.origin,self); var_03 = randomfloatrange(0.1,0.3); wait(var_03); } } //Function Number: 174 enemy_walker_target_player_if_targeted() { self endon("flag_walker_destroyed"); var_00 = 0; var_01 = 0; if(isdefined(level.player.stingerm7_info) && isdefined(level.player.stingerm7_info.locked_targets)) { var_01 = level.player.stingerm7_info.locked_targets.size; } var_00 = var_01; for(;;) { if(isdefined(level.player.stingerm7_info) && isdefined(level.player.stingerm7_info.locked_targets)) { var_01 = level.player.stingerm7_info.locked_targets.size; } if(var_00 != var_01) { if(var_01 == 0) { walker_tank_turret_fire_at_player_clear(); } if(isdefined(level.player.stingerm7_info) && isdefined(level.player.stingerm7_info.locked_targets)) { var_02 = level.player.stingerm7_info.locked_targets; foreach(var_04 in var_02) { if(isdefined(var_04.ent.walkernode) && var_04.ent.walkernode == 1) { thread walker_tank_turret_fire_at_player_think(); } } } } var_00 = var_01; wait 0.05; } } //Function Number: 175 walker_tank_turret_fire_at_player_think() { self notify("walker_hit"); self endon("walker_hit"); level endon("flag_walker_death_anim_start"); level.walker vehicle_scripts\_vehicle_turret_ai::vehicle_set_forced_target(level.player); } //Function Number: 176 walker_tank_turret_fire_at_player_clear() { level.walker.ai_target_force_scripted = undefined; } //Function Number: 177 walker_tank_turret_fire_at_player(param_00) { self endon("death"); self endon("stop_vehicle_turret_ai"); self setturretteam("axis"); self setmode("manual"); self settargetentity(param_00); self turretfireenable(); self startfiring(); } //Function Number: 178 spawn_more_allies() { var_00 = getentarray("allies_street_end","script_noteworthy"); foreach(var_02 in var_00) { if(isdefined(var_02)) { var_02 maps\_utility::spawn_ai(1); } } } //Function Number: 179 combat_street_seeker_ai() { var_00 = 1; var_01 = []; while(!common_scripts\utility::flag("flag_enemy_walker")) { var_02 = getaiarray("axis"); wait 0.05; var_01 = []; for(var_03 = 0;var_03 < var_00;var_03++) { if(var_02.size > var_03) { var_04 = var_02[var_03]; if(isalive(var_04)) { if(isdefined(var_04.magic_bullet_shield)) { var_04 maps\_utility::stop_magic_bullet_shield(); } var_04.playerseeker = 1; var_04 cleargoalvolume(); var_04 thread maps\_utility::player_seek(); var_04.favoriteenemy = level.player; var_01[var_01.size] = var_04; } } } if(var_01.size > 0) { maps\_utility::array_wait(var_01,"death"); } if(common_scripts\utility::flag("player_in_x4walker")) { common_scripts\utility::flag_waitopen("player_in_x4walker"); } wait(5); } foreach(var_06 in var_01) { if(isalive(var_06)) { var_06 notify("goal"); } } } //Function Number: 180 walker_badplace() { while(!common_scripts\utility::flag("flag_walker_tank_on_mount")) { badplace_cylinder("walker_tank_badplace",0.5,self.origin,280,300,"axis","team3","allies"); wait(0.55); } } //Function Number: 181 walker_missile_barrage() { wait(0.25); var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_01"); playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_00,"tag_origin"); var_00 soundscripts\_snd::snd_message("titan_missile"); wait(0.15); var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_02"); playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_01,"tag_origin"); var_01 soundscripts\_snd::snd_message("titan_missile"); wait(0.15); var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_03"); playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_02,"tag_origin"); var_02 soundscripts\_snd::snd_message("titan_missile"); wait(1.15); var_03 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_04"); playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_03,"tag_origin"); var_03 soundscripts\_snd::snd_message("titan_missile"); wait(0.15); var_04 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_05"); playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_04,"tag_origin"); var_04 soundscripts\_snd::snd_message("titan_missile"); wait(0.15); var_05 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_06"); playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_05,"tag_origin"); var_05 soundscripts\_snd::snd_message("titan_missile"); wait(0.15); var_06 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_07"); playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_06,"tag_origin"); var_06 soundscripts\_snd::snd_message("titan_missile"); } //Function Number: 182 walker_anims() { self endon("stop_walker_tank_anims"); level.player endon("death"); self.animname = "walker_tank"; var_00 = common_scripts\utility::getstruct("org_enemy_walker","targetname"); soundscripts\_snd::snd_message("titan_enter"); var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_enter"); self.state = "forward"; self.death_state = "forward"; self.prev_state = "forward"; common_scripts\utility::flag_set("flag_walker_tank_on_mount"); var_00 thread maps\_anim::anim_loop_solo(self,"fusion_walker_tank_fwd_idle","walker_stop_idle"); self disconnectpaths(); for(;;) { wait(randomfloatrange(5,10)); var_01 = []; switch(self.state) { case "forward": var_01 = ["left","right"]; break; case "left": var_01 = ["forward","right"]; break; case "right": var_01 = ["forward","left"]; break; } self.prev_state = self.state; if(common_scripts\utility::cointoss()) { self.state = var_01[0]; } else { self.state = var_01[1]; } var_00 notify("walker_stop_idle"); if(self.state == "left") { if(self.prev_state == "right") { self.death_state = "right"; var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_right_2_fwd"); self.death_state = "forward"; } var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_fwd_2_left"); self.death_state = "left"; var_00 thread maps\_anim::anim_loop_solo(self,"fusion_walker_tank_left_idle","walker_stop_idle"); } if(self.state == "right") { if(self.prev_state == "left") { self.death_state = "left"; var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_left_2_fwd"); self.death_state = "forward"; } var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_fwd_2_right"); self.death_state = "right"; var_00 thread maps\_anim::anim_loop_solo(self,"fusion_walker_tank_right_idle","walker_stop_idle"); } if(self.state == "forward") { if(self.prev_state == "left") { self.death_state = "left"; var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_left_2_fwd"); } if(self.prev_state == "right") { self.death_state = "right"; var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_right_2_fwd"); } self.death_state = "forward"; var_00 thread maps\_anim::anim_loop_solo(self,"fusion_walker_tank_fwd_idle","walker_stop_idle"); } } } //Function Number: 183 walker_trophy_system() { self endon("death"); level.player endon("death"); self.trophy_count = 5; self.current_projectile = 1; while(self.trophy_count >= 0) { level waittill("stinger_fired",var_00,var_01); foreach(var_03 in var_01) { thread player_projectile_think(var_03,self); } } } //Function Number: 184 player_projectile_think(param_00,param_01) { level.player endon("projectile_impact"); param_00 endon("death"); param_01 endon("death"); level.player endon("death"); var_02 = 512; if(param_01.trophy_count <= 0) { return; } while(isdefined(param_00)) { var_03 = distance(param_00.origin,param_01.origin); if(var_03 <= var_02) { playfx(common_scripts\utility::getfx("trophy_ignition_smoke"),param_01.origin + (0,0,96)); playfx(common_scripts\utility::getfx("trophy_explosion"),param_00.origin); soundscripts\_snd::snd_message("trophy_system_explosion",param_00.origin); param_01.trophy_count--; if(param_01.current_projectile <= 2) { common_scripts\utility::flag_set("walker_trophy_" + param_01.current_projectile); } param_01.current_projectile++; param_00 delete(); } wait(0.05); } } //Function Number: 185 manage_walker_health() { self endon("death"); level.player endon("death"); maps\_vehicle::godon(); thread walker_damage_fx(); wait_for_walker_to_be_hit_by_smaw(); common_scripts\utility::flag_set("walker_damaged"); wait(1); wait_for_walker_to_be_hit_by_smaw(); objective_state_nomessage(maps\_utility::obj("use_smaw"),"done"); objective_state_nomessage(maps\_utility::obj("obj_launcher_ammo"),"done"); self notify("stop_vehicle_turret_ai"); self notify("stop_walker_tank_anims"); foreach(var_01 in level.scripttargets) { if(isdefined(var_01) && var_01.health > 0) { var_01 kill(); } } level.stinger_targets = common_scripts\utility::array_remove_array(level.stinger_targets,level.scripttargets); maps\_utility::array_delete(level.scripttargets); level.scripttargets = undefined; walker_play_death_anim(); } //Function Number: 186 wait_for_walker_to_be_hit_by_smaw() { level.player endon("death"); for(;;) { self waittill("damage",var_00,var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09); if(isplayer(var_01) && var_04 == "MOD_PROJECTILE" && var_09 == "iw5_stingerm7_sp") { soundscripts\_snd::snd_message("titan_take_damage_from_smaw"); break; } } } //Function Number: 187 walker_damage_fx() { common_scripts\utility::flag_wait("walker_damaged"); playfxontag(common_scripts\utility::getfx("vehicle_damaged_sparks_l"),self,"TAG_SPARKS1"); thread maps\_utility::play_sound_on_tag("titan_take_smaw_dmg_sparks","TAG_SPARKS1",1); wait 0.05; playfxontag(common_scripts\utility::getfx("vehicle_damaged_sparks_l"),self,"TAG_SPARKS2"); thread maps\_utility::play_sound_on_tag("titan_take_smaw_dmg_sparks","TAG_SPARKS1",1); wait 0.05; playfxontag(common_scripts\utility::getfx("vehicle_damaged_sparks_l"),self,"TAG_SPARKS3"); thread maps\_utility::play_sound_on_tag("titan_take_smaw_dmg_sparks","TAG_SPARKS1",1); wait 0.05; playfxontag(common_scripts\utility::getfx("vehicle_damaged_sparks_l"),self,"TAG_SPARKS4"); thread maps\_utility::play_sound_on_tag("titan_take_smaw_dmg_sparks","TAG_SPARKS1",1); wait 0.05; } //Function Number: 188 walker_play_death_anim() { common_scripts\utility::flag_set("flag_walker_death_anim_start"); var_00 = ""; switch(self.death_state) { case "forward": var_00 = "fusion_walker_tank_fwd_idle_death"; break; case "left": var_00 = "fusion_walker_tank_left_idle_death"; break; case "right": var_00 = "fusion_walker_tank_right_idle_death"; break; } var_01 = common_scripts\utility::getstruct("org_enemy_walker","targetname"); thread maps\fusion_fx::walker_dying_fx(); soundscripts\_snd::snd_message("titan_death"); var_01 maps\_anim::anim_single_solo(self,var_00); } //Function Number: 189 destroy_walker_tank(param_00) { param_00 vehicle_teleport(param_00.origin,param_00.angles - (0,28.225,0)); param_00 setmodel("vehicle_walker_tank_dstrypv"); playfxontag(common_scripts\utility::getfx("walker_explosion"),param_00,"TAG_DEATH_FX"); var_01 = param_00.origin; var_02 = param_00 gettagorigin("TAG_FIRE"); var_03 = param_00 gettagangles("TAG_FIRE"); var_04 = param_00 gettagorigin("TAG_FIRE2"); var_05 = param_00 gettagangles("TAG_FIRE2"); var_06 = param_00 gettagorigin("TAG_SPARKS"); var_07 = param_00 gettagorigin("TAG_SPARKS"); param_00 kill(param_00.origin,level.player); wait(0.1); earthquake(1,1.6,var_01,1350); radiusdamage(var_01,400,200,100,undefined,"MOD_EXPLOSIVE"); physicsexplosionsphere(var_01,400,10,1); wait(1); playfx(common_scripts\utility::getfx("vehicle_destroyed_fire_m"),var_02,anglestoforward(var_03),anglestoup(var_03)); playfx(common_scripts\utility::getfx("vehicle_destroyed_fire_m"),var_04,anglestoforward(var_05),anglestoup(var_05)); playfx(common_scripts\utility::getfx("electrical_sparks_runner"),var_06,anglestoforward(var_07),anglestoup(var_07)); } //Function Number: 190 add_to_javelin_targeting() { target_set(self,(0,0,56)); target_setjavelinonly(self,1); if(isalive(level.walker)) { self waittill("death"); } target_remove(self); } //Function Number: 191 btr_turret_think() { self endon("death"); self endon("kill_btr_turret_think"); thread maps\_vehicle::vehicle_turret_scan_on(); for(;;) { wait(randomfloatrange(0.3,0.8)); var_00 = btr_get_target(); if(isdefined(var_00)) { btr_fire_at_target(var_00); wait(0.3); } } } //Function Number: 192 btr_fire_at_target(param_00) { param_00 endon("death"); level endon("walker_death_anim_started"); self setturrettargetent(param_00,(0,0,32)); if(common_scripts\utility::cointoss()) { if(isdefined(self.mgturret)) { foreach(var_02 in self.mgturret) { if(isdefined(var_02)) { var_02 setturretteam("axis"); var_02 setmode("manual"); var_02 settargetentity(param_00); var_02 startfiring(); } } } wait(randomfloatrange(3,5)); if(isdefined(self.mgturret)) { foreach(var_02 in self.mgturret) { if(isdefined(var_02)) { var_02 cleartargetentity(); var_02 stopfiring(); } } return; } return; } for(var_06 = 0;var_06 < randomintrange(1,3);var_06++) { burst_fire_weapon(); wait(0.5); } } //Function Number: 193 burst_fire_weapon() { for(var_00 = 0;var_00 < randomintrange(2,4);var_00++) { self fireweapon(); wait(0.2); } } //Function Number: 194 btr_get_target() { var_00 = 4; var_01 = getaiarray("allies"); for(var_02 = 0;var_02 < var_00;var_02++) { var_01[var_01.size] = level.player; } return common_scripts\utility::random(var_01); } //Function Number: 195 reactor_entrance_rally() { var_00 = getentarray("security_door_right","targetname"); var_01 = getentarray("security_door_left","targetname"); foreach(var_03 in var_00) { if(var_03.classname == "script_brushmodel") { var_03 disconnectpaths(); } } foreach(var_03 in var_01) { if(var_03.classname == "script_brushmodel") { var_03 disconnectpaths(); } } common_scripts\utility::flag_wait("flag_walker_destroyed"); var_07 = common_scripts\utility::getstruct("security_doors_animnode","targetname"); var_08 = spawn("script_origin",var_07.origin); var_08.angles = var_07.angles; var_09 = "fusion_security_doors_approach"; var_0A = "fusion_security_doors_idle"; var_0B = "fusion_security_doors_open"; var_0C = "security_door_ender"; var_0D = []; var_0D[var_0D.size] = level.burke; var_0D[var_0D.size] = level.carter; var_0E = maps\_utility::spawn_anim_model("security_door_right"); var_0F = maps\_utility::spawn_anim_model("security_door_left"); var_10 = []; var_10[var_10.size] = var_0E; var_10[var_10.size] = var_0F; var_08 maps\_anim::anim_first_frame(var_10,var_0B); foreach(var_03 in var_00) { var_03 linkto(var_0E,"tag_origin_animated"); } foreach(var_03 in var_01) { var_03 linkto(var_0F,"tag_origin_animated"); } level.burke thread security_doors_approach(var_08,var_09,var_0A,var_0C); level.carter thread security_doors_approach(var_08,var_09,var_0A,var_0C); level waittill("security_door_npc_ready"); level waittill("security_door_npc_ready"); common_scripts\utility::flag_wait("flag_player_at_reactor_door"); var_08 notify(var_0C); var_08 thread maps\_anim::anim_single_solo_run(level.burke,var_0B); var_08 thread maps\_anim::anim_single_solo(var_0E,var_0B); wait(0.5); var_08 thread maps\_anim::anim_single_solo_run(level.carter,var_0B); var_08 thread maps\_anim::anim_single_solo(var_0F,var_0B); foreach(var_03 in var_00) { if(var_03.classname == "script_brushmodel") { var_03 connectpaths(); } } foreach(var_03 in var_01) { if(var_03.classname == "script_brushmodel") { var_03 connectpaths(); } } maps\_utility::activate_trigger_with_targetname("security_room_doors_open"); } //Function Number: 196 security_doors_approach(param_00,param_01,param_02,param_03) { maps\_utility::disable_ai_color(); self notify("stop_goto_node"); self notify("goal"); param_00 maps\_anim::anim_reach_solo(self,param_01); param_00 maps\_anim::anim_single_solo(self,param_01); maps\_utility::enable_cqbwalk(); level notify("security_door_npc_ready"); maps\_utility::enable_ai_color(); param_00 maps\_anim::anim_loop_solo(self,param_02,param_03); } //Function Number: 197 reactor_entrance_rally_anim(param_00) { self endon("death"); var_01 = self.animname + "_ender"; maps\_utility::disable_ai_color(); param_00 maps\_anim::anim_reach_solo(self,"reactor_entrance_st"); maps\_utility::ent_flag_set("flag_reactor_entrance_ready"); param_00 maps\_anim::anim_single_solo(self,"reactor_entrance_st"); param_00 thread maps\_anim::anim_loop_solo(self,"reactor_entrance_idle",var_01); common_scripts\utility::flag_wait("interior_allies"); param_00 notify(var_01); } //Function Number: 198 postspawn_rpg_vehicle() { self setmodel("projectile_rpg7"); var_00 = common_scripts\utility::getfx("rpg_trail"); playfxontag(var_00,self,"tag_origin"); var_00 = common_scripts\utility::getfx("rpg_muzzle"); playfxontag(var_00,self,"tag_origin"); self playsound("weap_rpg_fire_npc"); if(isdefined(self.script_sound)) { if(isdefined(self.script_wait)) { common_scripts\utility::delaycall(self.script_wait,::playsound,self.script_sound); } else { self playsound(self.script_sound); } } else { self playloopsound("weap_rpg_loop"); } self waittill("reached_end_node"); self notify("explode",self.origin); var_01 = 0; if(isdefined(self.script_exploder)) { common_scripts\_exploder::exploder(self.script_exploder); var_01 = 1; } else if(isdefined(self.currentnode)) { var_02 = undefined; var_03 = self.currentnode; while(isdefined(var_03)) { var_02 = var_03; if(!isdefined(var_03.target)) { break; } var_03 = getvehiclenode(var_03.target,"targetname"); } if(isdefined(var_02.target)) { var_04 = common_scripts\utility::getstruct(var_02.target,"targetname"); if(isdefined(var_04)) { level thread rpg_explosion(var_04.origin,var_04.angles); var_01 = 1; } } } if(!var_01) { var_04 = spawnstruct(); var_04.origin = self.origin; var_04.angles = (-90,0,0); level thread rpg_explosion(var_04.origin,var_04.angles); } self delete(); } //Function Number: 199 rpg_explosion(param_00,param_01) { var_02 = common_scripts\utility::getfx("rpg_explode"); playfx(var_02,param_00,anglestoforward(param_01),anglestoup(param_01)); radiusdamage(param_00,200,150,50); thread common_scripts\utility::play_sound_in_space("null",param_00); } //Function Number: 200 interior_gameplay() { thread interior_allies(); thread security_room(); thread laboratory(); thread reactor_room(); thread turbine_room(); thread control_room(); level.pipesdamage = 0; } //Function Number: 201 interior_allies() { waittillframeend; common_scripts\utility::flag_wait_any("interior_allies","flag_walker_destroyed"); level.burke maps\_utility::set_force_color("r"); level.joker maps\_utility::set_force_color("g"); level.carter maps\_utility::set_force_color("o"); } //Function Number: 202 security_room() { if(level.start_point != "fly_in_animated" && level.start_point != "fly_in_animated_part2" && level.start_point != "courtyard" && level.start_point != "security_room") { return; } common_scripts\utility::flag_wait_any("interior_allies","flag_walker_destroyed"); var_00 = "security_room_check_corpse"; var_01 = "security_room_check_corpse_idle"; var_02 = "security_room_check_corpse_idle_stop"; var_03 = getent("fusion_security_room_corpse","targetname") maps\_utility::spawn_ai(1); var_03 setcontents(0); var_03.animname = "generic"; var_04 = common_scripts\utility::getstruct("fusion_security_room_corpse_fall_npc","targetname"); var_05 = spawn("script_origin",var_04.origin); var_06 = (0,0,0); if(isdefined(var_04.angles)) { var_06 = var_04.angles; var_05.angles = var_04.angles; } var_03 clearanim(%body,0.2); var_03 stopanimscripted(); var_05 maps\_anim::anim_first_frame_solo(var_03,var_00); wait(0.05); var_07 = spawn("script_model",var_03 gettagorigin("TAG_WEAPON_RIGHT")); var_07.angles = var_03 gettagangles("TAG_WEAPON_RIGHT"); var_07 setmodel("npc_m160"); var_07 linkto(var_03,"TAG_WEAPON_RIGHT"); var_08 = getent("security_room_elevator_doors","targetname"); var_08 maps\_utility::assign_animtree("security_room_elevator_doors"); var_05 maps\_anim::anim_first_frame_solo(var_08,"security_room_open_elevator"); var_09 = getent("security_elevator_door_left","targetname"); var_0A = getent("security_elevator_door_right","targetname"); var_09 linkto(var_08,"elevator_back_left_jnt"); var_0A linkto(var_08,"elevator_back_right_jnt"); common_scripts\utility::flag_wait("security_room_check_corpse"); maps\_utility::battlechatter_off("allies"); level.burke thread start_cqb_when_near(getstartorigin(var_05.origin,var_06,level.scr_anim["burke"][var_00])); var_05 maps\_anim::anim_reach_solo(level.burke,var_00); maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"vo_security_room_elevator_access"); thread security_elevator_open(); soundscripts\_snd::snd_message("start_dead_guy_foley",var_03); var_05 thread maps\_anim::anim_generic(var_03,var_00); var_05 maps\_anim::anim_single_solo(level.burke,var_00); if(!common_scripts\utility::flag("elevator_door_open")) { var_05 thread maps\_anim::anim_loop_solo(level.burke,var_01,var_02); common_scripts\utility::flag_wait("elevator_door_open"); var_05 notify(var_02); } var_0B = "security_room_turn_to_elevator"; var_0C = "elevator_descent_start_idle"; var_05 maps\_anim::anim_single_solo(level.burke,var_0B); common_scripts\utility::flag_set("burke_facing_elevator"); var_05 thread maps\_anim::anim_loop_solo(level.burke,var_0C,var_0C); wait(2); common_scripts\utility::flag_wait("elevator_descent"); var_05 notify(var_0C); var_05 delete(); if(level.currentgen) { level waittill("tff_pre_transition_intro_to_middle"); var_09 delete(); var_0A delete(); var_07 delete(); var_03 delete(); } } //Function Number: 203 start_cqb_when_near(param_00) { var_01 = 40000; while(distancesquared(self.origin,param_00) > var_01) { wait(0.1); } maps\_utility::enable_cqbwalk(); } //Function Number: 204 security_elevator_open() { var_00 = common_scripts\utility::getstruct("fusion_security_room_corpse_fall_npc","targetname"); var_01 = spawn("script_origin",var_00.origin); if(isdefined(var_00.angles)) { var_01.angles = var_00.angles; } var_02 = "security_room_approach_elevator"; var_03 = "security_room_open_elevator_idle"; var_04 = "end_approach_idle"; var_05 = "security_room_open_elevator"; var_06 = "security_room_elevator_opened_idle"; soundscripts\_snd::snd_message("start_elevator_zone_audio"); var_07 = []; var_07[var_07.size] = level.joker; var_07[var_07.size] = level.carter; level.joker maps\_utility::disable_ai_color(); level.carter maps\_utility::disable_ai_color(); level.burke maps\_utility::disable_ai_color(); common_scripts\utility::array_thread(var_07,::security_elevator_approach,var_01,var_02,var_03,var_04); level waittill("elevator_open_guy_ready"); level waittill("elevator_open_guy_ready"); common_scripts\utility::flag_wait("elevator_door_open"); var_01 notify(var_04); common_scripts\_exploder::exploder("elevator_door_open_fx"); var_08 = getent("security_room_elevator_doors","targetname"); var_08 maps\_utility::assign_animtree("security_room_elevator_doors"); common_scripts\utility::flag_set("vo_security_room_elevator_open"); level.joker thread security_elevator_open_anim(var_01,1,var_05,var_06); level.carter thread security_elevator_open_anim(var_01,0,var_05,var_06); var_01 thread maps\_anim::anim_single_solo(var_08,var_05); soundscripts\_snd::snd_message("Sec_Room_Elevator_Open"); security_elevator_descent(var_01); var_01 delete(); } //Function Number: 205 security_elevator_approach(param_00,param_01,param_02,param_03) { if(self == level.joker) { wait(4); } param_00 maps\_anim::anim_reach_solo(self,param_01); if(self == level.joker) { soundscripts\_snd::snd_message("Sec_Room_Move_To_Elevator"); } param_00 maps\_anim::anim_single_solo(self,param_01); if(self == level.joker) { soundscripts\_snd::snd_message("Sec_Room_Attach_To_Elevator"); } param_00 thread maps\_anim::anim_loop_solo(self,param_02,param_03); level notify("elevator_open_guy_ready"); } //Function Number: 206 security_elevator_open_anim(param_00,param_01,param_02,param_03) { var_04 = "stop_opened_idle"; var_05 = spawn("script_origin",param_00.origin); var_05 maps\_anim::anim_single_solo(self,param_02); if(!common_scripts\utility::flag("elevator_descent_player")) { var_05 thread maps\_anim::anim_loop_solo(self,param_03,var_04); common_scripts\utility::flag_wait("elevator_descent_player"); var_05 notify(var_04); } } //Function Number: 207 security_elevator_descent(param_00) { thread security_elevator_descent_player(); common_scripts\utility::flag_wait("burke_facing_elevator"); wait(2); common_scripts\utility::flag_wait("elevator_descent"); level.guys_down_elevator = 0; level.burke thread security_elevator_descent_ai(param_00); thread security_elevator_prompt(); common_scripts\utility::flag_wait("elevator_descent_player"); wait(1); level.joker thread security_elevator_descent_ai(param_00); level.carter security_elevator_descent_ai(param_00); } //Function Number: 208 security_elevator_prompt() { wait(4); if(common_scripts\utility::flag("elevator_descent_player")) { return; } var_00 = maps\_shg_utility::hint_button_position("jump",common_scripts\utility::getstruct("obj_pos_security_elevator","targetname").origin,128,512); common_scripts\utility::flag_wait("elevator_descent_player"); var_00 maps\fusion_utility::hint_button_clear_fus(); } //Function Number: 209 transient_transition_intro_to_middle() { if(level.currentgen) { level notify("tff_pre_transition_intro_to_middle"); unloadtransient("fusion_intro_tr"); loadtransient("fusion_middle_tr"); while(!istransientloaded("fusion_middle_tr")) { wait(0.05); } level notify("tff_post_transition_intro_to_middle"); } } //Function Number: 210 security_elevator_descent_player() { var_00 = common_scripts\utility::getstruct("elevator_descent_org","targetname"); var_01 = maps\_utility::spawn_anim_model("player_rig",level.player.origin); var_00 thread maps\_anim::anim_first_frame_solo(var_01,"elevator_descent"); var_01 hide(); common_scripts\utility::flag_wait("elevator_descent_player"); thread transient_transition_intro_to_middle(); level.player maps\_utility::blend_movespeedscale_percent(0); soundscripts\_snd::snd_message("start_player_elevator_slide"); common_scripts\utility::flag_set("update_obj_pos_elevator_descent"); level.player maps\_utility::add_wait(::maps\_shg_utility::setup_player_for_scene,1); var_01 maps\_utility::add_call(::show); thread maps\_utility::do_wait(); var_02 = 0.3; level.player playerlinktoblend(var_01,"tag_player",var_02); level.player common_scripts\utility::delaycall(var_02,::playerlinktodelta,var_01,"tag_player",0,20,20,20,20); var_03 = 3.25; if(level.currentgen) { var_03 = var_03 * 1.35; } level.player common_scripts\utility::delaycall(var_03,::enableweapons); level.player common_scripts\utility::delaycall(1.5,::givemaxammo,"iw5_bal27_sp_variablereddot"); common_scripts\utility::noself_delaycall(1,::playfxontag,common_scripts\utility::getfx("elevator_player_slide_dust"),var_01,"J_MainRoot"); level.player thread elevator_rumble(); soundscripts\_snd::snd_message("start_player_elevator_jump"); var_00 maps\_anim::anim_single_solo(var_01,"elevator_descent"); level.player unlink(); var_01 delete(); level.player enableweapons(); level.player maps\_shg_utility::setup_player_for_gameplay(); common_scripts\utility::flag_set("lab_cqb"); common_scripts\utility::flag_set("vo_lab_elevator_slide_complete"); thread street_cleanup(); maps\_utility::autosave_by_name("elevator_slide_complete"); } //Function Number: 211 elevator_rumble() { wait(0.5); var_00 = maps\_utility::get_rumble_ent("steady_rumble"); var_00.intensity = 0.2; wait(2.3); stopallrumbles(); } //Function Number: 212 play_lab_reactor_pip() { level notify("stop_evacuation_kiosk_movie"); wait(0.5); common_scripts\utility::flag_wait("vo_lab_elevator_slide_complete"); setsaveddvar("cg_cinematicfullscreen","0"); maps\_shg_utility::play_videolog("fusion_videolog","screen_add"); wait(0.5); evacuation_kiosk_movie(); } //Function Number: 213 sync_transients_after_time(param_00) { wait(param_00); synctransients(); } //Function Number: 214 corpse_trigger_think() { self waittill("trigger"); var_00 = getentarray(self.target,"targetname"); var_01 = maps\_utility::getstructarray_delete(var_00[0].script_noteworthy,"script_noteworthy"); foreach(var_03 in var_01) { var_04 = var_00[randomintrange(0,var_00.size)]; var_05 = var_04 maps\_utility::spawn_ai(); var_05.origin = var_03.origin; var_05.angles = var_03.angles; var_05 setcandamage(0); if(isdefined(var_05.weapon) && var_05.weapon != "none") { var_05 maps\_utility::gun_remove(); } var_06 = level.scr_anim["generic"][var_03.animation]; if(isarray(var_06)) { var_06 = var_06[0]; } var_05 animscripted("endanim",var_03.origin,var_03.angles,var_06); if(isdefined(var_03.script_parameters)) { if(var_03.script_parameters == "notsolid") { var_05 notsolid(); } if(var_03.script_parameters == "ripples") { var_05 thread ripples_on_body(var_03); } } if(issubstr(var_03.animation,"death")) { var_05 common_scripts\utility::delaycall(0.05,::setanimtime,var_06,1); } } if(isdefined(self.script_flag)) { common_scripts\utility::flag_wait(self.script_flag); common_scripts\utility::array_call(getentarray(var_00[0].script_noteworthy,"script_noteworthy"),::delete); } } //Function Number: 215 ripples_on_body(param_00) { self endon("death"); wait(0.1); var_01 = common_scripts\utility::get_target_ent(param_00.target); var_02 = (self.origin[0],self.origin[1],var_01.origin[2] - 1); for(;;) { playfx(common_scripts\utility::getfx("water_movement"),var_02); wait(randomfloatrange(0.5,1)); } } //Function Number: 216 street_cleanup() { level notify("street_cleanup"); waittillframeend; var_00 = getaiarray(); var_00 = common_scripts\utility::array_remove(var_00,level.burke); var_00 = common_scripts\utility::array_remove(var_00,level.joker); var_00 = common_scripts\utility::array_remove(var_00,level.carter); common_scripts\utility::array_call(var_00,::delete); common_scripts\utility::array_call(getentarray("script_vehicle_x4walker_wheels_turret","classname"),::delete); common_scripts\utility::array_call(getentarray("script_vehicle_x4walker_wheels_turret_explosive","classname"),::delete); if(isdefined(level.player.linked_to_cover)) { level.player.linked_to_cover vehicle_scripts\_cover_drone::player_unlink_from_cover(); } common_scripts\utility::array_call(getentarray("script_vehicle_cover_drone","classname"),::delete); common_scripts\utility::array_call(getentarray("mobile_turret","targetname"),::delete); common_scripts\utility::array_call(getentarray("script_vehicle_pdrone","classname"),::delete); if(isdefined(level.walker)) { level.walker connectpaths(); } } //Function Number: 217 security_elevator_descent_ai(param_00) { var_01 = "elevator_descent"; if(self == level.burke) { soundscripts\_snd::snd_message("start_burke_elevator_slide"); param_00 thread maps\_anim::anim_single_solo(self,var_01); maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"update_obj_pos_security_elevator"); common_scripts\utility::waittill_any_ents(param_00,var_01,level,"burke_elevator_landing"); var_01 = "elevator_descent_exit"; param_00 maps\_anim::anim_single_solo(self,var_01); } else { self stopanimscripted(); param_00 maps\_anim::anim_single_solo(self,var_01); } laboratory_start_idle(); } //Function Number: 218 laboratory_start_idle() { var_00 = "elevator_descent_end_idle"; var_01 = "elevator_descent_end_idle_2_cqb"; var_02 = "elevator_descent_end_idle_stop"; var_03 = common_scripts\utility::getstruct("fusion_security_room_corpse_fall_npc","targetname"); var_04 = spawn("script_origin",var_03.origin); if(isdefined(var_03.angles)) { var_04.angles = var_03.angles; } var_04 thread maps\_anim::anim_loop_solo(self,var_00,var_02); if(!isdefined(level.guys_down_elevator)) { level.guys_down_elevator = 0; } level.guys_down_elevator++; level notify("guy_down_elevator"); while(level.guys_down_elevator < 3) { level waittill("guy_down_elevator"); } common_scripts\utility::flag_wait("negotiation_elevator_to_hall"); if(self == level.burke) { wait(4); } else if(self == level.carter) { wait(1); } var_04 notify(var_02); maps\_utility::enable_cqbwalk(); maps\_utility::enable_ai_color(); self.moveplaybackrate = 1.1; if(self == level.joker) { common_scripts\utility::flag_set("start_lab_traversals"); } else { var_04 maps\_anim::anim_single_solo_run(self,var_01); } var_04 delete(); } //Function Number: 219 laboratory() { level endon("airlock_scene_prep"); thread laboratory_cqb(); thread play_lab_reactor_pip(); common_scripts\utility::flag_wait("start_lab_traversals"); thread lab_doorway_dyn_path(); thread color_group_enter_lab_trigger(); laboratory_traversal("negotiation_elevator_to_hall",level.joker); laboratory_traversal("negotiation_hall_to_lab",level.burke,"negotiation_curved_hall"); wait 0.05; laboratory_traversal("negotiation_curved_hall",level.burke,"negotiation_locker_room_entrance"); wait 0.05; laboratory_traversal("negotiation_locker_room_entrance",level.carter,"airlock_scene_prep"); } //Function Number: 220 color_group_enter_lab_trigger() { var_00 = getent("color_group_enter_lab","targetname"); if(isdefined(var_00)) { var_00 waittill("trigger"); } var_01 = getent("negotiation_hall_to_lab_carter","targetname"); var_01 delete(); var_02 = getent("negotiation_hall_to_lab_joker","targetname"); var_02 delete(); } //Function Number: 221 lab_doorway_dyn_path() { var_00 = getent("lab_doorway_dyn_path","targetname"); var_00 disconnectpaths(); level waittill("negotiation_hall_to_lab_dyn_path"); wait(5); var_00 connectpaths(); var_00 delete(); } //Function Number: 222 laboratory_traversal(param_00,param_01,param_02) { if(isdefined(param_02)) { level endon(param_02); } common_scripts\utility::flag_wait(param_00); var_03 = param_00; switch(param_00) { case "negotiation_elevator_to_hall": thread laboratory_elevator_to_hall(param_00,param_02); var_03 = "elevator_descent_end_idle_2_cqb"; common_scripts\utility::flag_set("update_obj_pos_lab_follow_joker"); break; case "negotiation_hall_to_lab": thread negotiation_hall_to_lab(param_00,param_02); maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"update_obj_pos_lab_follow_burke"); break; case "negotiation_curved_hall": break; case "negotiation_locker_room_entrance": maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"update_obj_pos_lab_follow_carter"); break; default: break; } var_04 = common_scripts\utility::getstruct(param_00,"targetname"); param_01 notify("stop_color_move"); if(param_00 != "negotiation_elevator_to_hall") { wait 0.05; var_04 maps\_anim::anim_reach_solo(param_01,var_03,undefined,1); if(param_00 == "negotiation_hall_to_lab") { level notify("negotiation_hall_to_lab_dyn_path"); } } else { var_04 = common_scripts\utility::getstruct("fusion_security_room_corpse_fall_npc","targetname"); } var_05 = param_00 + "_exit"; var_06 = getent(var_05,"targetname"); if(isdefined(var_06)) { maps\_utility::activate_trigger_with_targetname(param_00 + "_exit"); } var_04 maps\_anim::anim_single_solo_run(param_01,var_03); } //Function Number: 223 laboratory_elevator_to_hall(param_00,param_01) { wait(1); maps\_utility::activate_trigger_with_targetname(param_00 + "_carter"); if(isdefined(level.carter.node)) { level.carter.node.script_delay = undefined; } wait(1); if(!common_scripts\utility::flag("negotiation_hall_to_lab")) { maps\_utility::activate_trigger_with_targetname(param_00 + "_burke"); } if(isdefined(level.burke.node)) { level.burke.node.script_delay = undefined; } } //Function Number: 224 negotiation_hall_to_lab(param_00,param_01) { level endon(param_01); wait(1); if(isdefined(getent(param_00 + "_carter","targetname"))) { maps\_utility::activate_trigger_with_targetname(param_00 + "_carter"); } if(isdefined(level.carter.node)) { level.carter.node.script_delay = undefined; } wait(3); if(isdefined(getent(param_00 + "_carter","targetname"))) { maps\_utility::activate_trigger_with_targetname(param_00 + "_joker"); } if(isdefined(level.joker.node)) { level.joker.node.script_delay = undefined; } } //Function Number: 225 laboratory_cqb() { common_scripts\utility::flag_wait("lab_cqb"); level.player maps\_utility::blend_movespeedscale_percent(75); setsaveddvar("ai_friendlyFireBlockDuration",0); common_scripts\utility::flag_wait("reactor_room_reveal_scene"); level.player maps\_utility::blend_movespeedscale_percent(100,5); common_scripts\utility::flag_wait("reactor_room_reveal_allies_advance"); setsaveddvar("ai_friendlyFireBlockDuration",2000); } //Function Number: 226 reactor_room() { thread reactor_room_reveal_scene(); thread reactor_room_drones(); thread reactor_room_crane(); thread handle_outline_on_grenade_launcher(); if(level.nextgen) { thread reactor_room_robots(); } } //Function Number: 227 handle_outline_on_grenade_launcher() { var_00 = getent("weapon_iw5_microdronelauncher_sp","classname"); while(isdefined(var_00)) { var_00 hudoutlinedisable(6,1); while(isdefined(var_00) && distance(var_00.origin,level.player.origin) > 300) { wait 0.05; } if(!isdefined(var_00)) { break; } var_00 hudoutlineenable(6,1); while(isdefined(var_00) && distance(var_00.origin,level.player.origin) <= 300) { wait 0.05; } wait 0.05; } } //Function Number: 228 reactor_room_reveal_scene() { common_scripts\utility::flag_wait("airlock_scene_prep"); if(level.currentgen) { var_00 = ["reactor_room_enemies"]; thread maps\_cg_encounter_perf_monitor::cg_spawn_perf_monitor("reactor_room_cleanup",var_00,15,0); } soundscripts\_snd::snd_message("start_airlock_anim_notetracks"); var_01 = "fusion_airlock_opening_approach"; var_02 = "fusion_airlock_opening_idle"; var_03 = common_scripts\utility::getstruct("airlock_anim_node","targetname"); var_04 = "reactor_room_reveal_scene"; thread reactor_room_reveal_door(var_03,"fusion_airlock_opening"); thread reactor_room_reveal_ally_vo_close_check(); var_05 = []; var_05[var_05.size] = level.burke; var_05[var_05.size] = level.carter; level.reactor_room_reveal_scene_guys_ready = 0; common_scripts\utility::array_thread(var_05,::reactor_room_reveal_scene_approach,var_03,var_01,var_02,var_04); level waittill("reactor_room_reveal_scene_prepped"); var_01 = "fusion_airlock_opening"; common_scripts\utility::flag_wait("reactor_room_reveal_scene"); level notify("reactor_room_reveal_scene_started"); var_03 notify(var_04); maps\_utility::array_notify(var_05,"reactor_room_reveal_scene"); if(level.nextgen) { common_scripts\utility::array_thread(getentarray("reactor_redshirts","script_noteworthy"),::reactor_room_redshirts); thread reactor_room_redshirt_cleanup(); } var_06 = getent("reactor_room_airlock_enemy","targetname") maps\_utility::spawn_ai(1); var_06 notify("handle_detection"); var_06 setcontents(0); var_06.ignoresonicaoe = 1; var_06.animname = "generic"; var_05[var_05.size] = var_06; var_06 setcontents(0); var_03 thread maps\_anim::anim_single_run(var_05,var_01); level.burke maps\_utility::disable_cqbwalk(); level.joker maps\_utility::disable_cqbwalk(); level.carter maps\_utility::disable_cqbwalk(); level.burke.moveplaybackrate = 1; level.joker.moveplaybackrate = 1; level.carter.moveplaybackrate = 1; maps\_utility::battlechatter_off("allies"); maps\_utility::battlechatter_off("axis"); maps\_utility::delaythread(15,::maps\_utility::battlechatter_on,"allies"); maps\_utility::delaythread(15,::maps\_utility::battlechatter_on,"axis"); level.burke thread reactor_room_reveal_scene_ally_think(); level.joker thread reactor_room_reveal_scene_ally_think(); level.carter thread reactor_room_reveal_scene_ally_think(); common_scripts\utility::flag_set("vo_reactor_entrance"); maps\_utility::delaythread(12,::maps\_utility::activate_trigger_with_noteworthy,"reactor_room_first_spawn_trigger"); common_scripts\utility::array_thread(getentarray("reactor_room_robot_grid_safeguard","targetname"),::reactor_room_robot_grid_ally_safeguard); maps\_utility::delaythread(12,::maps\_utility::activate_trigger_with_targetname,"reactor_room_door_open_color_trigger"); common_scripts\utility::flag_wait("reactor_room_reveal_allies_advance"); level.burke maps\_utility::enable_ai_color(); level.carter maps\_utility::enable_ai_color(); if(!common_scripts\utility::flag("reactor_redshirts_enable")) { maps\_utility::activate_trigger_with_targetname("reactor_room_door_open_color_trigger"); } common_scripts\utility::flag_set("update_obj_pos_reactor_1"); maps\_utility::autosave_by_name(); thread reactor_room_combat(); thread reactor_room_sonic_hint_use_check(); wait(10); common_scripts\utility::flag_set("flag_show_boost_slam_hint"); } //Function Number: 229 reactor_room_sonic_hint_use_check() { level endon("SonicAoEStarted"); var_00 = 512; wait(35); while(!common_scripts\utility::flag("flag_show_sonic_hint")) { var_01 = getaiarray("axis"); var_01 = maps\_utility::array_removedead_or_dying(var_01); var_02 = maps\_utility::get_within_range(level.player.origin,var_01,var_00); if(var_02.size > 0) { common_scripts\utility::flag_set("flag_show_sonic_hint"); } wait 0.05; } } //Function Number: 230 reactor_room_reveal_scene_approach(param_00,param_01,param_02,param_03) { if(self == level.carter) { common_scripts\utility::flag_wait("reactor_room_reveal_burke_ready"); } maps\_utility::disable_ai_color(); self notify("stop_goto_node"); self notify("goal"); param_00 maps\_anim::anim_reach_solo(self,param_01); if(self == level.burke) { common_scripts\utility::flag_set("reactor_room_reveal_burke_ready"); } param_00 maps\_anim::anim_single_solo(self,param_01); param_00 thread maps\_anim::anim_loop_solo(self,param_02,param_03); level.reactor_room_reveal_scene_guys_ready++; if(level.reactor_room_reveal_scene_guys_ready >= 2) { level notify("reactor_room_reveal_scene_prepped"); } } //Function Number: 231 reactor_room_reveal_ally_vo_close_check() { var_00 = getent("airlock_vo_start_check","targetname"); while(!level.burke istouching(var_00)) { wait(0.3); } common_scripts\utility::flag_set("vo_reactor_open_airlock"); } //Function Number: 232 reactor_room_reveal_scene_ally_think() { var_00 = self.grenadeawareness; self.grenadeawareness = 0; self.ignoreall = 1; common_scripts\utility::flag_wait("reactor_room_reveal_allies_advance"); self.disablebulletwhizbyreaction = 1; self.nogrenadereturnthrow = 1; var_01 = self.goalradius; self.goalradius = 64; waittillframeend; common_scripts\utility::waittill_notify_or_timeout("goal",5); self.ignoreall = 0; self.grenadeawareness = var_00; self.disablebulletwhizbyreaction = 0; self.nogrenadereturnthrow = 0; self.goalradius = var_01; } //Function Number: 233 reactor_room_reveal_enemies_think() { self endon("death"); self.grenadeammo = 0; if(isdefined(self.target)) { self.goalradius = 16; } var_00 = 40000; while(distancesquared(self.origin,level.burke.origin) > var_00) { wait(0.1); } } //Function Number: 234 reactor_room_reveal_door(param_00,param_01) { var_02 = getent("reactor_airlock_door_1","targetname"); var_03 = getent(var_02.target,"targetname"); var_03 disconnectpaths(); var_02.animname = "fusion_airlock_door"; var_02 maps\_anim::setanimtree(); param_00 thread maps\_anim::anim_first_frame_solo(var_02,param_01); level waittill("reactor_room_reveal_scene_prepped"); var_03 linkto(var_02,"door"); common_scripts\utility::flag_wait("reactor_room_reveal_scene"); soundscripts\_snd::snd_message("start_reactor_airlock_open",var_02); soundscripts\_snd::snd_message("start_reactor_zone_audio"); soundscripts\_snd::snd_message("start_reactor_burke_attack"); var_04 = 45; var_02 playrumblelooponentity("subtle_tank_rumble"); earthquake(0.1,var_04,var_02.origin,1000); common_scripts\_exploder::exploder(3301); common_scripts\_exploder::exploder(3302); common_scripts\_exploder::exploder(3303); common_scripts\_exploder::exploder(3304); common_scripts\_exploder::exploder(3201); common_scripts\_exploder::exploder(3202); param_00 thread maps\_anim::anim_single_solo(var_02,param_01); var_05 = getanimlength(var_02 maps\_utility::getanim(param_01)); common_scripts\utility::noself_delaycall(var_05,::stopallrumbles); wait(15.5); common_scripts\utility::flag_set("reactor_room_reveal_allies_advance"); var_03 connectpaths(); waittillframeend; var_03 disconnectpaths(); common_scripts\utility::flag_set("vo_reactor_gogogo"); } //Function Number: 235 reactor_room_reveal_squibs(param_00,param_01) { level endon("intro_truck_left"); var_02 = common_scripts\utility::getstruct("reactor_reveal_bullet_org","targetname"); var_03 = common_scripts\utility::getstructarray(var_02.target,"targetname"); var_03 = common_scripts\utility::array_randomize(var_03); var_04 = -5; var_05 = 5; var_06 = 0; for(var_07 = 0;var_07 < param_00;var_07++) { magicbullet("iw5_ak12_sp",var_02.origin,var_03[var_06].origin + (randomfloatrange(var_04,var_05),randomfloatrange(var_04,var_05),randomfloatrange(var_04,var_05))); if(randomint(100) < 10) { level.player playrumbleonentity("damage_light"); } var_06++; if(var_06 >= var_03.size) { var_03 = common_scripts\utility::array_randomize(var_03); var_06 = 0; } wait(0.1); } } //Function Number: 236 reactor_room_robot_grid_ally_safeguard() { level endon("elevator_ascend"); var_00 = getent(self.target,"targetname"); var_01 = common_scripts\utility::getstruct(var_00.target,"targetname"); for(;;) { self waittill("trigger",var_02); var_03 = getaiarray("allies"); foreach(var_05 in var_03) { if(var_05 istouching(var_00) && !maps\_utility::player_can_see_ai(var_05) && !maps\_utility::player_looking_at(var_01.origin,undefined,1)) { var_05 forceteleport(var_01.origin,var_01.angles); } } } } //Function Number: 237 reactor_room_drones() { common_scripts\utility::flag_wait("reactor_drones_1"); var_00 = []; var_00[var_00.size] = thread vehicle_scripts\_pdrone::start_flying_attack_drone("reactor_drone_1"); foreach(var_02 in var_00) { var_02 thread maps\_shg_utility::make_emp_vulnerable(); var_02 laseron(); var_02 thread reactor_room_drone_cleanup(); } common_scripts\utility::flag_wait("reactor_drones_2"); var_04 = []; var_04[var_04.size] = thread vehicle_scripts\_pdrone::start_flying_attack_drone("reactor_drone_3"); var_04[var_04.size] = thread vehicle_scripts\_pdrone::start_flying_attack_drone("reactor_drone_4"); foreach(var_02 in var_04) { var_02 thread maps\_shg_utility::make_emp_vulnerable(); var_02 laseron(); var_02 thread reactor_room_drone_cleanup(); } } //Function Number: 238 reactor_room_drone_cleanup() { self endon("death"); common_scripts\utility::flag_wait("reactor_room_end_combat"); wait(randomfloatrange(1,3)); self kill(); } //Function Number: 239 reactor_room_crane() { level waittill("reactor_room_reveal_scene_started"); var_00 = getentarray("reactor_crane_track","targetname"); var_01 = []; var_02 = common_scripts\utility::getstruct("reactor_crane_track_inner","targetname"); var_03 = common_scripts\utility::getstruct(var_02.target,"targetname"); var_01["min_dist"] = int(distance(var_00[0].origin,var_02.origin)); var_01["max_dist"] = int(distance(var_00[0].origin,var_03.origin)); var_04 = common_scripts\utility::getstruct("reactor_crane_height_top","targetname"); var_05 = common_scripts\utility::getstruct(var_04.target,"targetname"); var_01["crane_height_delta"] = distance(var_04.origin,var_05.origin); var_01["rot_speed"] = 30; var_01["rot_delay"] = 0.1; var_01["crane_housing_move_speed"] = 75; var_01["crane_housing_move_delay"] = 1; var_01["height_time"] = 2.5; var_01["height_acc"] = 0.5; var_01["height_dec"] = 1.5; var_01["lower_delay"] = 1; var_01["raise_delay"] = 1; var_01["crate_height"] = 72; var_01["cable_height"] = 40; level.reactor_room_crate_tracking = []; level.reactor_room_crate_tracking["scripted_crate"] = 0; level.reactor_room_crate_tracking["near_player"] = 0; level.reactor_room_crate_tracking["near_enemies"] = 0; var_06 = getentarray("reactor_cover_crate","script_noteworthy"); common_scripts\utility::array_thread(var_06,::reactor_room_crate_think); var_00 = getentarray("reactor_crane_track","targetname"); var_00[0] thread reactor_room_crane_think(var_01,"north",var_06); var_00[1] thread reactor_room_crane_think(var_01,"south",var_06); } //Function Number: 240 crane_cable(param_00,param_01) { for(var_02 = self;isdefined(var_02.target);var_02 hide()) { var_02 = getent(var_02.target,"targetname"); } var_03 = param_01["cable_height"]; thread stop_crane_audio(param_00); for(;;) { param_00 reactor_room_link_cables(self,1); param_00 waittill("crane_moving"); param_00 reactor_room_link_cables(self,0); soundscripts\_snd::snd_message("crane_claw_drop_start",param_00); param_00 crane_animated_down(self,param_00,param_01); param_00 waittill("crane_stopped"); soundscripts\_snd::snd_message("crane_claw_drop_stop",param_00); param_00 waittill("crane_moving"); soundscripts\_snd::snd_message("crane_claw_rise_start",param_00); param_00 crane_animated_up(self,param_00,param_01); param_00 waittill("crane_stopped"); soundscripts\_snd::snd_message("crane_claw_rise_stop",param_00); } } //Function Number: 241 stop_crane_audio(param_00) { if(level.currentgen) { level waittill("tff_pre_transition_middle_to_outro"); param_00 notify("stop_claw_beep"); param_00 stoploopsound("crane_rctr_claw_drop_lp"); param_00 stoploopsound("crane_rctr_claw_rise_lp"); } } //Function Number: 242 crane_animated_down(param_00,param_01,param_02) { param_00 thread crane_cable_down(param_01,param_02); } //Function Number: 243 crane_animated_up(param_00,param_01,param_02) { param_01.last_cable thread crane_cable_up(param_01); } //Function Number: 244 crane_cable_down(param_00,param_01) { attach_housing(param_00); param_00 endon("crane_stopped"); while(distancesquared(self.og,self getorigin()) < squared(param_01["cable_height"])) { wait(0.05); } if(!isdefined(self.target)) { return; } var_02 = getent(self.target,"targetname"); var_02 thread crane_cable_down(param_00,param_01); } //Function Number: 245 attach_housing(param_00) { self.og = self getorigin(); self linkto(param_00); param_00.last_cable = self; if(!isdefined(self.target)) { return; } var_01 = getent(self.target,"targetname"); var_01 show(); } //Function Number: 246 crane_cable_up(param_00) { param_00 endon("crane_stopped"); while(distancesquared(self.og,self getorigin()) > squared(10)) { wait(0.05); } thread detach_housing(param_00); if(isdefined(self.script_noteworthy) && self.script_noteworthy == "crane_cable") { return; } var_01 = getent(self.targetname,"target"); var_01 thread crane_cable_up(param_00); } //Function Number: 247 detach_housing(param_00) { if(isdefined(self.script_noteworthy) && self.script_noteworthy == "crane_cable") { return; } self unlink(); var_01 = 0.5; self moveto(self.og,var_01); wait(var_01); self hide(); } //Function Number: 248 reactor_room_crane_think(param_00,param_01,param_02) { level endon("elevator_ascend"); var_03 = self; var_04 = getent(var_03.target,"targetname"); var_05 = getentarray(var_04.target,"targetname"); var_06 = undefined; var_07 = undefined; var_08 = undefined; var_09 = undefined; foreach(var_0B in var_05) { if(var_0B.classname == "script_model") { var_06 = var_0B; continue; } if(var_0B.classname == "script_brushmodel") { var_08 = var_0B; continue; } if(var_0B.classname == "trigger_multiple") { var_09 = var_0B; continue; } var_07 = var_0B; } var_08 linkto(var_06); var_09 enablelinkto(); var_09 linkto(var_06); var_06.animname = "reactor_crane"; var_06 maps\_anim::setanimtree(); var_06 thread maps\_anim::anim_first_frame_solo(var_06,"crane_opened"); var_0D = getent(var_06.target,"targetname"); var_0D thread crane_cable(var_06,param_00); var_06 linkto(var_04); var_04 linkto(var_03); var_03.track_inner = common_scripts\utility::spawn_tag_origin(); var_03.track_inner.origin = var_03.origin + (742,0,0); var_03.track_inner linkto(var_03); var_03.track_inner thread maps\fusion_utility::delete_on_notify("reactor_room_cleanup"); var_03.track_outer = common_scripts\utility::spawn_tag_origin(); var_03.track_outer.origin = var_03.origin + (1354,0,0); var_03.track_outer linkto(var_03); var_03.track_outer thread maps\fusion_utility::delete_on_notify("reactor_room_cleanup"); var_0E = common_scripts\utility::spawn_tag_origin(); var_0E.origin = var_04.origin; var_0E linkto(var_04); var_0E thread maps\fusion_utility::delete_on_notify("reactor_room_cleanup"); var_0F = common_scripts\utility::spawn_tag_origin(); var_0F.origin = var_06.origin; var_0F linkto(var_06); var_0F thread maps\fusion_utility::delete_on_notify("reactor_room_cleanup"); var_07 enablelinkto(); var_07 linkto(var_06); var_06 thread reactor_room_crane_light(); var_10 = []; foreach(var_12 in param_02) { var_13 = vectortoangles(var_12.origin - var_03.origin)[1]; if(var_13 < 20) { var_13 = var_13 + 360; } if(var_13 < 200 && param_01 == "south") { continue; } if(var_13 >= 200 && param_01 == "north") { continue; } var_10[var_10.size] = var_12; } var_15 = 175; if(param_01 == "south") { var_15 = 200; reactor_room_crane_rotate_to_angle(var_03,200,param_00["rot_speed"],param_00["rot_delay"]); common_scripts\utility::flag_wait("reactor_room_crane_south_start"); } else { wait(15); } for(;;) { if(param_01 == "north" && common_scripts\utility::flag("reactor_room_crane_south_start")) { break; } if(var_10.size == 0) { break; } var_12 = reactor_room_get_best_crate(var_10,param_01); var_10 = common_scripts\utility::array_remove(var_10,var_12); var_13 = vectortoangles(var_12.origin - var_03.origin)[1]; reactor_room_crane_rotate_to_angle(var_03,var_13,param_00["rot_speed"],param_00["rot_delay"]); var_16 = distance2d(var_03.origin,var_12.origin); var_04 unlink(); playfxontag(common_scripts\utility::getfx("fus_crane_housing_dust_fall"),var_0E,"tag_origin"); reactor_room_crane_adjust_housing(var_03,var_04,var_13,var_16,param_00["crane_housing_move_speed"],param_00["crane_housing_move_delay"]); var_04 linkto(var_03); var_06 unlink(); var_17 = var_06.origin; var_06 notify("crane_moving"); thread reactor_room_crane_murderplayer_think(var_09,var_06,var_12,param_00); playfxontag(common_scripts\utility::getfx("fus_crane_housing_dust"),var_0F,"tag_origin"); var_06 moveto(var_12.origin + (0,0,param_00["crate_height"]),param_00["height_time"],param_00["height_acc"],param_00["height_dec"]); wait(param_00["height_time"]); var_06 notify("crane_stopped"); thread reactor_room_crane_grab_crate(var_06,var_12,param_00); var_06 waittill("crate_grabbed"); var_18 = common_scripts\utility::spawn_tag_origin(); var_18.origin = var_12.origin; var_18 linkto(var_12); playfxontag(common_scripts\utility::getfx("fus_crate_dust_lift"),var_18,"tag_origin"); var_12 notify("crate_raised"); level notify("crate_raising"); var_06 notify("crane_moving"); var_06 moveto(var_17,param_00["height_time"],param_00["height_acc"],param_00["height_dec"]); wait(param_00["height_time"]); var_06 notify("crane_stopped"); wait(param_00["raise_delay"]); var_06 linkto(var_04); var_13 = var_15; reactor_room_crane_rotate_to_angle(var_03,var_13,param_00["rot_speed"],param_00["rot_delay"]); var_16 = randomintrange(param_00["min_dist"],param_00["max_dist"]); var_04 unlink(); reactor_room_crane_adjust_housing(var_03,var_04,var_13,var_16,param_00["crane_housing_move_speed"],param_00["crane_housing_move_delay"]); var_04 linkto(var_03); var_06 notify("crane_moving"); var_06 unlink(); var_06 moveto(var_06.origin - (0,0,param_00["crane_height_delta"]),param_00["height_time"],param_00["height_acc"],param_00["height_dec"]); wait(param_00["height_time"]); var_06 notify("crane_stopped"); wait(param_00["lower_delay"]); var_06 notify("crate_release"); var_18 delete(); wait(0.05); var_06 notify("crane_moving"); var_06 moveto(var_06.origin + (0,0,param_00["crane_height_delta"]),param_00["height_time"],param_00["height_acc"],param_00["height_dec"]); wait(param_00["height_time"]); var_06 notify("crane_stopped"); wait(param_00["raise_delay"]); var_06 linkto(var_04); } for(;;) { switch(param_01) { case "north": var_13 = randomintrange(25,180); break; case "south": default: var_13 = randomintrange(180,360); break; } var_16 = randomintrange(param_00["min_dist"],param_00["max_dist"]); reactor_room_crane_rotate_to_angle(var_03,var_13,param_00["rot_speed"],param_00["rot_delay"]); var_04 unlink(); playfxontag(common_scripts\utility::getfx("fus_crane_housing_dust_fall"),var_0E,"tag_origin"); reactor_room_crane_adjust_housing(var_03,var_04,var_13,var_16,param_00["crane_housing_move_speed"],param_00["crane_housing_move_delay"]); var_04 linkto(var_03); wait(randomfloatrange(3,7)); } } //Function Number: 249 reactor_room_crane_murderplayer_think(param_00,param_01,param_02,param_03) { param_01 endon("crane_stopped"); self endon("murderbox_activate"); for(;;) { if(distance(param_00.origin,param_02.origin) < 85) { if(level.player istouching(param_00)) { var_04 = level.player.health / level.player.damagemultiplier; level.player dodamage(var_04,param_01.origin); self notify("murderbox_activate"); } } wait 0.05; } } //Function Number: 250 reactor_room_crane_grab_crate(param_00,param_01,param_02) { param_00 maps\_anim::anim_single_solo(param_00,"crane_grab"); param_00 thread maps\_anim::anim_first_frame_solo(param_00,"crane_closed"); soundscripts\_snd::snd_message("crane_claw_crate_grab",param_00); param_01 linkto(param_00); wait(0.05); param_00 notify("crate_grabbed"); param_00 waittill("crate_release"); param_00 thread maps\_anim::anim_first_frame_solo(param_00,"crane_opened"); soundscripts\_snd::snd_message("crane_claw_crate_release",param_00); param_01 delete(); } //Function Number: 251 reactor_room_crane_light() { level endon("elevator_ascend"); var_00 = common_scripts\utility::spawn_tag_origin(); var_00.origin = self.origin; var_00.angles = self.angles; var_00 linkto(self); var_00 thread maps\fusion_utility::delete_on_notify("reactor_room_cleanup"); while(!common_scripts\utility::flag("elevator_ascend")) { playfxontag(common_scripts\utility::getfx("fus_crane_light_red"),var_00,"tag_origin"); self waittill("crate_grabbed"); stopfxontag(common_scripts\utility::getfx("fus_crane_light_red"),var_00,"tag_origin"); playfxontag(common_scripts\utility::getfx("fus_crane_light_green"),var_00,"tag_origin"); self waittill("crate_release"); stopfxontag(common_scripts\utility::getfx("fus_crane_light_green"),var_00,"tag_origin"); } } //Function Number: 252 reactor_room_link_cables(param_00,param_01) { var_02 = param_00; if(param_01) { var_02 linkto(self); } else { var_02 unlink(); } while(isdefined(var_02.target)) { var_02 = getent(var_02.target,"targetname"); if(param_01) { var_02 linkto(self); continue; } var_02 unlink(); } } //Function Number: 253 reactor_room_get_best_crate(param_00,param_01) { var_02 = 10000; var_03 = 10000; var_04 = 1000000; var_05 = (0,0,32); var_06 = 65; if(level.reactor_room_crate_tracking["scripted_crate"] < 1) { level.reactor_room_crate_tracking["scripted_crate"]++; thread reactor_room_allies_run_from_crate(); return common_scripts\utility::getclosest((3290,3676,-601),param_00,200); } if(level.reactor_room_crate_tracking["near_player"] < 1) { foreach(var_08 in param_00) { if(distancesquared(var_08.origin,level.player.origin) < var_02) { level.reactor_room_crate_tracking["near_player"]++; return var_08; } } } if(level.reactor_room_crate_tracking["near_enemies"] < 3) { foreach(var_08 in param_00) { foreach(var_0C in getaiarray("axis")) { if(distancesquared(var_08.origin,var_0C.origin) < var_03) { if(distancesquared(level.player.origin,var_08.origin) < var_04) { level.reactor_room_crate_tracking["near_enemies"]++; return var_08; } } } } } foreach(var_08 in param_00) { if(level.player worldpointinreticle_circle(var_08.origin + var_05,var_06,500)) { if(distancesquared(level.player.origin,var_08.origin) > var_02) { if(distancesquared(level.player.origin,var_08.origin) < var_04) { return var_08; } } } } return param_00[randomint(param_00.size)]; } //Function Number: 254 reactor_room_crane_rotate_to_angle(param_00,param_01,param_02,param_03) { if(param_01 >= 360) { param_01 = param_01 - 360; } var_04 = abs(param_00.angles[1] - param_01) / param_02; var_05 = 2; var_06 = 2; if(var_04 < 2) { var_04 = 2; } if(var_04 < 4) { var_05 = var_04 / 2; var_06 = var_04 / 2; } if(var_04 > 0) { playfxontag(common_scripts\utility::getfx("fus_crane_track_sparks"),param_00.track_inner,"tag_origin"); playfxontag(common_scripts\utility::getfx("fus_crane_track_sparks"),param_00.track_outer,"tag_origin"); soundscripts\_snd::snd_message("crane_mach_mvmnt_start",param_00.track_inner,param_00.track_outer); param_00 rotateto((0,param_01,0),var_04,var_05,var_06); wait(var_04); stopfxontag(common_scripts\utility::getfx("fus_crane_track_sparks"),param_00.track_inner,"tag_origin"); stopfxontag(common_scripts\utility::getfx("fus_crane_track_sparks"),param_00.track_outer,"tag_origin"); soundscripts\_snd::snd_message("crane_mach_mvmnt_stop",param_00.track_inner,param_00.track_outer); } wait(param_03); } //Function Number: 255 reactor_room_crane_adjust_housing(param_00,param_01,param_02,param_03,param_04,param_05) { var_06 = cos(param_02) * param_03; var_07 = sin(param_02) * param_03; var_08 = (param_00.origin[0] + var_06,param_00.origin[1] + var_07,param_01.origin[2]); var_09 = distance(var_08,param_01.origin) / param_04; if(var_09 > 0) { soundscripts\_snd::snd_message("crane_claw_mvmnt_start",param_01); param_01 moveto(var_08,var_09,var_09 / 2,var_09 / 2); wait(var_09); soundscripts\_snd::snd_message("crane_claw_mvmnt_stop",param_01); } wait(param_05); } //Function Number: 256 reactor_room_crate_think() { self disconnectpaths(); var_00 = common_scripts\utility::get_target_ent(); var_00 linkto(self); self waittill("crate_raised"); var_01 = self.origin; badplace_cylinder("",3,var_01,80,64,"axis","allies"); var_02 = getnodesinradius(var_01,80,0,128,"Cover"); foreach(var_04 in var_02) { var_04 disconnectnode(); } wait(3); self connectpaths(); self waittill("death"); var_00 delete(); } //Function Number: 257 get_angle_from_center(param_00,param_01) { return vectortoangles(param_01 - param_00)[1]; } //Function Number: 258 reactor_room_robots() { common_scripts\utility::flag_wait("reactor_room_reveal_scene"); var_00 = getentarray("reactor_bot","targetname"); common_scripts\utility::array_thread(getentarray("reactor_bot","targetname"),::reactor_room_robot_think); common_scripts\utility::array_thread(getentarray("reactor_bot_scripted","targetname"),::reactor_room_robot_scripted_think); } //Function Number: 259 reactor_room_robot_think() { level endon("elevator_ascend"); self endon("death"); self endon("stop_movement"); self.health = 100; self setcandamage(1); thread reactor_room_robot_monitor_death(); thread maps\_shg_utility::make_emp_vulnerable(); self.emp_death_function = ::reactor_room_robot_emp_death; self.facing = 1; var_00 = common_scripts\utility::getstruct(self.target,"targetname"); var_01 = common_scripts\utility::getstruct(var_00.target,"targetname"); var_02 = common_scripts\utility::getstruct(var_01.target,"targetname"); self.collision = getent(self.target,"targetname"); self.collision linkto(self); var_03 = 32; var_04 = 0.5; var_05 = distance(var_00.origin,var_01.origin) / var_03 + 1; var_06 = distance(var_01.origin,var_02.origin) / var_03 + 1; if(var_05 - int(var_05) > 0.5) { var_05 = int(var_05); var_05++; } else { var_05 = int(var_05); } if(var_06 - int(var_06) > 0.5) { var_06 = int(var_06); var_06++; } else { var_06 = int(var_06); } var_07 = vectortoangles(var_01.origin - var_00.origin); var_08 = vectortoangles(var_02.origin - var_01.origin); var_09 = getentarray(var_02.target,"targetname"); self.collision thread reactor_robots_badplace_think(); common_scripts\utility::array_thread(var_09,::reactor_robots_shelf_think); var_0A = []; for(var_0B = 0;var_0B < var_05;var_0B++) { for(var_0C = 0;var_0C < var_06;var_0C++) { var_0A[var_0B][var_0C] = spawnstruct(); var_0D = var_03 * var_0B * cos(var_07[1]) + var_03 * var_0C * sin(-1 * var_07[1]); var_0E = -1 * var_03 * var_0B * cos(var_08[1]) + var_03 * var_0C * sin(var_08[1]); var_0A[var_0B][var_0C].origin = (var_0D,var_0E,0) + var_00.origin; var_0F = 0; foreach(var_11 in var_09) { var_12 = var_0A[var_0B][var_0C].origin; if(distance(var_0A[var_0B][var_0C].origin,var_11.origin) < 16) { var_0A[var_0B][var_0C].shelf = 1; var_11.x = var_0B; var_11.y = var_0C; } } if(distance(var_0A[var_0B][var_0C].origin,self.origin) < 10) { var_0A[var_0B][var_0C].robot = 1; self.x = var_0B; self.y = var_0C; } } } for(;;) { foreach(var_11 in var_09) { var_0A = clear_path_weights(var_0A); var_0A = add_path_weights(var_0A,var_11.x,var_11.y,0,0); if(!isdefined(var_11.starting_origin)) { var_11.starting_origin = var_11.origin; } self notify("update_path_weights"); move_to_dest(var_0A,var_11.x,var_11.y); var_0A = clear_path_weights(var_0A); var_15 = 0; var_16 = 10; var_17 = 0; var_18 = 0; while(var_15 <= var_16 && !isdefined(var_0A[var_17][var_18].path_weight) && isdefined(var_0A[self.x][self.y].path_weight) && var_17 != self.x || var_18 != self.y) { var_17 = randomint(var_05); var_18 = randomint(var_06); var_0A = clear_path_weights(var_0A); var_0A = add_path_weights(var_0A,var_17,var_18,0,1); var_15++; wait(0.05); } if(var_15 > var_16) { wait(2); continue; } soundscripts\_snd::snd_message("reactor_bot_shelf_pickup",self); var_11 moveto((var_11.origin[0],var_11.origin[1],var_11.starting_origin[2] + var_04),0.2,0.1,0.1); wait(0.2); var_11 linkto(self); self.shelf = var_11; self notify("update_path_weights"); move_to_dest(var_0A,var_17,var_18); var_11.x = var_17; var_11.y = var_18; var_11 unlink(); self.shelf = undefined; soundscripts\_snd::snd_message("reactor_bot_shelf_drop",self); var_11 moveto((var_11.origin[0],var_11.origin[1],var_11.starting_origin[2] + var_04),0.2,0.1,0.1); wait(0.2); } } } //Function Number: 260 reactor_room_robot_emp_death() { self endon("death"); self notify("stop_movement"); self notify("emp"); playfxontag(common_scripts\utility::getfx("emp_reactor_robot_damage"),self,"tag_origin"); self moveto(self.origin,0.05); self rotateto(self.angles,0.05); wait(randomfloatrange(0.5,1.5)); stopfxontag(common_scripts\utility::getfx("emp_reactor_robot_damage"),self,"tag_origin"); self notify("death"); } //Function Number: 261 reactor_room_robot_monitor_death() { self endon("emp"); self endon("robot_lowered"); self waittill("death"); self notify("stop_movement"); playfx(common_scripts\utility::getfx("reactor_robot_death"),self.origin); } //Function Number: 262 move_to_dest(param_00,param_01,param_02) { self endon("stop_movement"); var_03 = 1; var_04 = 1; var_05 = 0.05; var_06 = isdefined(self.shelf); while(!self.x == param_01 && self.y == param_02) { var_07 = get_next_grid_position(param_00,self.x,self.y); if(var_06) { param_00[self.x][self.y].shelf = undefined; } if(self.facing_goal != self.facing) { if(var_06) { self.shelf unlink(); } self.collision unlink(); self rotateto(self.angles + (0,90 * self.facing_goal - self.facing,0),var_04); self.facing = self.facing_goal; if(var_06) { soundscripts\_snd::snd_message("reactor_bot_turn_shelf",self); } else { soundscripts\_snd::snd_message("reactor_bot_turn_self",self); } wait(var_04 + var_05); if(var_06) { self.shelf linkto(self); } self.collision linkto(self); } wait_until_path_safe(); if(var_06) { soundscripts\_snd::snd_message("reactor_bot_drive_shelf_start",self); } else { soundscripts\_snd::snd_message("reactor_bot_drive_self_start",self); } self moveto(param_00[var_07[0]][var_07[1]].origin,var_03); wait(var_03 + var_05); if(var_06) { soundscripts\_snd::snd_message("reactor_bot_drive_shelf_stop",self); } else { soundscripts\_snd::snd_message("reactor_bot_drive_self_stop",self); } if(var_06) { param_00[var_07[0]][var_07[1]].shelf = 1; } self.x = var_07[0]; self.y = var_07[1]; } } //Function Number: 263 wait_until_path_safe() { var_00 = 0; while(!var_00) { var_00 = 1; if(distance(self.origin,level.player.origin) < 200) { var_00 = 0; wait(0.5); continue; } foreach(var_02 in getaiarray()) { if(distancesquared(self.origin,var_02.origin) < 9216) { var_00 = 0; wait(0.5); break; } } } } //Function Number: 264 get_next_grid_position(param_00,param_01,param_02) { var_03 = param_00[param_01][param_02].path_weight; var_04 = param_00.size; var_05 = param_00[0].size; var_06 = 999; var_07 = undefined; if(param_01 > 0) { var_08 = param_00[param_01 - 1][param_02].path_weight; if(isdefined(var_08)) { if(var_08 < var_06) { var_06 = var_08; var_07 = "left"; } } } if(param_01 < var_04 - 1) { var_08 = param_00[param_01 + 1][param_02].path_weight; if(isdefined(var_08)) { if(var_08 < var_06) { var_06 = var_08; var_07 = "right"; } } } if(param_02 > 0) { var_08 = param_00[param_01][param_02 - 1].path_weight; if(isdefined(var_08)) { if(var_08 < var_06) { var_06 = var_08; var_07 = "down"; } } } if(param_02 < var_05 - 1) { var_08 = param_00[param_01][param_02 + 1].path_weight; if(isdefined(var_08)) { if(var_08 < var_06) { var_06 = var_08; var_07 = "up"; } } } var_09 = []; switch(var_07) { case "left": var_09 = [param_01 - 1,param_02]; self.facing_goal = 1; break; case "right": var_09 = [param_01 + 1,param_02]; self.facing_goal = 3; break; case "down": var_09 = [param_01,param_02 - 1]; self.facing_goal = 2; break; case "up": var_09 = [param_01,param_02 + 1]; self.facing_goal = 0; break; default: break; } return var_09; } //Function Number: 265 clear_path_weights(param_00) { for(var_01 = 0;var_01 < param_00.size;var_01++) { for(var_02 = 0;var_02 < param_00[var_01].size;var_02++) { param_00[var_01][var_02].path_weight = undefined; } } return param_00; } //Function Number: 266 add_path_weights(param_00,param_01,param_02,param_03,param_04) { if(param_04 && isdefined(param_00[param_01][param_02].shelf) && param_00[param_01][param_02].shelf && !self.x == param_01 && self.y == param_02) { param_00[param_01][param_02].path_weight = undefined; return param_00; } var_05 = param_00[param_01][param_02].path_weight; var_06 = param_00.size; var_07 = param_00[0].size; if(param_03 > 25) { return param_00; } if(!isdefined(var_05) || var_05 > param_03) { param_00[param_01][param_02].path_weight = param_03; param_03++; if(param_01 > 0) { param_00 = add_path_weights(param_00,param_01 - 1,param_02,param_03,param_04); } if(param_01 < var_06 - 1) { param_00 = add_path_weights(param_00,param_01 + 1,param_02,param_03,param_04); } if(param_02 > 0) { param_00 = add_path_weights(param_00,param_01,param_02 - 1,param_03,param_04); } if(param_02 < var_07 - 1) { param_00 = add_path_weights(param_00,param_01,param_02 + 1,param_03,param_04); } } return param_00; } //Function Number: 267 reactor_robots_shelf_think() { var_00 = getentarray(self.target,"targetname"); foreach(var_02 in var_00) { var_02 linkto(self); } reactor_robots_badplace_think(); } //Function Number: 268 reactor_robots_badplace_think() { var_00 = 0.1; if(level.currentgen) { var_00 = 0.3; } var_01 = 31; var_02 = 128; while(!common_scripts\utility::flag("elevator_ascend")) { self connectpaths(); self disconnectpaths(); wait(var_00); } self connectpaths(); } //Function Number: 269 reactor_room_robot_scripted_think() { level endon("elevator_ascend"); var_00 = getentarray(self.target,"targetname"); var_00 = common_scripts\utility::array_combine(var_00,common_scripts\utility::getstructarray(self.target,"targetname")); var_01 = undefined; var_02 = undefined; var_03 = undefined; var_04 = undefined; var_05 = undefined; var_06 = undefined; var_07 = 1; var_08 = []; var_08[var_08.size] = 18; var_08[var_08.size] = 36; var_08[var_08.size] = 54; foreach(var_0A in var_00) { switch(var_0A.script_parameters) { case "start_node": var_01 = var_0A; break; case "initial_lift": var_0B = getentarray("reactor_robot_lift","script_noteworthy"); foreach(var_0D in var_0B) { if(distance(var_0D.origin,var_0A.origin) < 10) { var_03 = var_0D; break; } } break; case "initial_lift_gate": var_0F = getentarray("bot_lift_gate","script_noteworthy"); foreach(var_11 in var_0F) { if(distance(var_11.origin,var_0A.origin) < 10) { var_02 = var_11; break; } } break; case "final_lift": var_0B = getentarray("reactor_robot_lift","script_noteworthy"); foreach(var_0D in var_0B) { if(distance(var_0D.origin,var_0A.origin) < 10) { var_04 = var_0D; break; } } break; case "final_gate": var_15 = getentarray("reactor_robot_final_gate","script_noteworthy"); foreach(var_11 in var_15) { if(distance(var_11.origin,var_0A.origin) < 10) { var_05 = var_11; break; } } break; case "shelf": var_06 = var_0A; var_06 thread reactor_robots_badplace_think(); break; default: break; } } if(!isdefined(var_01)) { return; } if(!isdefined(var_03)) { return; } if(!isdefined(var_02)) { return; } if(!isdefined(var_04)) { return; } if(!isdefined(var_05)) { return; } if(!isdefined(var_06)) { return; } var_19 = var_06.origin; var_1A = 1; var_1B = 32; var_1C = 4; var_1D = 64; var_1E = 3; var_1F = 1; var_20 = 1; var_21 = 3; var_22 = 1; var_23 = 1; var_24 = 1; var_1D = 44; var_25 = var_21; var_1E = var_21 / 2; var_1F = var_1E / 2; var_20 = var_1E / 2; var_26 = 1; var_27 = 0.5; var_28 = 0.5; var_29 = common_scripts\utility::getstruct(var_05.target,"targetname").origin; var_2A = var_05.origin; var_2B = 128; var_2C = 3; var_2D = 1; var_2E = 1; var_03.bars = []; var_04.bars = []; var_2F = common_scripts\utility::getstructarray("lift_bars","targetname"); foreach(var_31 in var_2F) { if(distance(var_31.origin,var_03.origin) < 64) { var_03.bars[var_03.bars.size] = var_31; var_32 = getentarray(var_31.target,"targetname"); foreach(var_34 in var_32) { var_34 linkto(var_03); } continue; } if(distance(var_31.origin,var_04.origin) < 64) { var_04.bars[var_04.bars.size] = var_31; var_32 = getentarray(var_31.target,"targetname"); foreach(var_34 in var_32) { var_34 linkto(var_04); } } } for(;;) { reactor_room_robots_lift_adjust_bars(var_03,"lower","initial"); wait(randomfloatrange(1,10)); var_06.origin = var_19; var_06 linkto(self); wait(0.05); var_39 = var_01.angles; var_3A = var_39; if(self.angles != var_01.angles) { self rotateto(var_01.angles,0.05); wait(0.1); } var_3B = spawn("script_model",self.origin); var_3B setmodel("fus_shelving_robot_01"); var_3B.angles = self.angles; var_3B linkto(self); var_3B endon("stop_movement"); var_3B.health = 100; var_3B setcandamage(1); var_3B thread maps\_shg_utility::make_emp_vulnerable(); var_3B.emp_death_function = ::reactor_room_robot_emp_death; var_3B thread reactor_room_robot_monitor_death(); var_3C = spawn("script_model",self.origin); var_3C setmodel("fus_shelving_unit_cage_01"); var_3C.angles = self.angles; var_3C linkto(var_06); var_06.models = []; var_06.models[var_06.models.size] = var_3B; var_06.models[var_06.models.size] = var_3C; for(var_3D = 0;var_3D < 3;var_3D++) { if(common_scripts\utility::cointoss()) { var_3E = spawn("script_model",self.origin + (0,0,var_08[var_3D])); var_3E setmodel("fus_shelving_unit_item_01"); var_3E.angles = self.angles + (0,90,0); var_3E linkto(var_06); var_06.models[var_06.models.size] = var_3E; } } self linkto(var_03); var_3F = common_scripts\utility::getstruct(var_01.target,"targetname"); var_40 = self.origin[2] - var_3F.origin[2]; soundscripts\_snd::snd_message("reactor_bot_elevator_start_lp",var_03); var_03 moveto(var_03.origin - (0,0,var_40),var_21,var_22,var_23); var_02 common_scripts\utility::delaycall(var_25,::moveto,var_02.origin - (0,0,var_1D),var_1E,var_1F,var_20); wait(var_21); soundscripts\_snd::snd_message("reactor_bot_initial_elevator_stop",var_03); soundscripts\_snd::snd_message("reactor_bot_elevator_stop_lp",var_03); reactor_room_robots_lift_adjust_bars(var_03,"raise","initial"); self unlink(); var_41 = common_scripts\utility::getstruct(var_3F.target,"targetname"); var_42 = vectortoangles(var_41.origin - self.origin); if(abs(var_42[1] - var_39[1]) > 2) { wait(0.1); self rotateto(var_42,var_07); soundscripts\_snd::snd_message("reactor_bot_turn_self",self); wait(var_07 + 0.1); var_39 = var_42; wait(0.1); } var_43 = 0; while(isdefined(var_3F.target)) { var_3F = common_scripts\utility::getstruct(var_3F.target,"targetname"); var_42 = vectortoangles(var_3F.origin - self.origin); if(abs(var_42[1] - var_39[1]) > 2) { var_06 unlink(); wait(0.1); self rotateto(var_42,var_07); soundscripts\_snd::snd_message("reactor_bot_turn_shelf",self); wait(var_07 + 0.1); var_39 = var_42; var_06 linkto(self); wait(0.1); } while(distance(self.origin,var_3F.origin) > var_1B + 4) { wait_until_path_safe(); soundscripts\_snd::snd_message("reactor_bot_drive_shelf_start",self); self moveto(vectornormalize(var_3F.origin - self.origin) * 32 + self.origin,var_1A); var_43++; wait(var_1A); soundscripts\_snd::snd_message("reactor_bot_drive_shelf_stop",self); if(var_43 == 2) { soundscripts\_snd::snd_message("reactor_bot_initial_elevator_start",var_03,var_24); var_03 common_scripts\utility::delaycall(var_24,::moveto,var_03.origin + (0,0,var_40),var_21,var_22,var_23); var_02 moveto(var_02.origin + (0,0,var_1D),var_1E,var_1F,var_20); } } wait_until_path_safe(); soundscripts\_snd::snd_message("reactor_bot_drive_shelf_start",self); var_44 = var_1A * distance(self.origin,var_3F.origin) / var_1B; self moveto(var_3F.origin,var_44); wait(var_44); soundscripts\_snd::snd_message("reactor_bot_drive_shelf_stop",self); } reactor_room_robots_lift_adjust_bars(var_04,"lower","final"); self linkto(var_04); soundscripts\_snd::snd_message("reactor_bot_final_elevator_start",var_04); var_04 moveto(var_04.origin - (0,0,var_2B),var_2C,var_2D,var_2E); var_05 common_scripts\utility::delaycall(2,::moveto,var_29,var_26,var_27,var_28); wait(var_2C); self unlink(); var_45 = self setcontents(0); var_3B notify("robot_lowered"); foreach(var_47 in var_06.models) { var_47 delete(); } self hide(); wait(0.5); self.origin = var_01.origin; wait(0.5); self setcontents(var_45); self show(); reactor_room_robots_lift_adjust_bars(var_04,"raise","final"); soundscripts\_snd::snd_message("reactor_bot_elevator_start_lp",var_04); var_04 moveto(var_04.origin + (0,0,var_2B),var_2C,var_2D,var_2E); soundscripts\_snd::snd_message("reactor_bot_final_elevator_stop",var_04,var_2C); soundscripts\_snd::snd_message("reactor_bot_elevator_stop_lp",var_04,var_2C); var_05 moveto(var_2A,var_26,var_27,var_28); soundscripts\_snd::snd_message("reactor_bot_elevator_open",var_05); } } //Function Number: 270 reactor_room_robots_lift_adjust_bars(param_00,param_01,param_02) { if(param_02 == "initial") { var_03 = "start_bars"; } else { var_03 = "end_bars"; } var_04 = undefined; var_05 = undefined; foreach(var_07 in param_00.bars) { if(var_07.script_noteworthy == var_03) { var_05 = var_07; } } var_09 = 45; var_0A = 1; var_0B = 0.5; var_0C = 0.5; if(param_01 == "raise") { var_09 = var_09 * -1; } var_05 = getentarray(var_05.target,"targetname"); var_0D = undefined; var_0E = undefined; foreach(var_10 in var_05) { if(var_10.script_noteworthy == "roll_down_bar_left") { var_0D = var_10; } else { var_0E = var_10; } var_10 unlink(); } var_0E rotateroll(var_09,var_0A,var_0B,var_0C); var_0D rotateroll(var_09,var_0A,var_0B,var_0C); wait(var_0A); foreach(var_10 in var_05) { var_10 unlink(); var_10 linkto(param_00); } wait(0.05); } //Function Number: 271 reactor_room_allies_run_from_crate() { level waittill("crate_raising"); var_00 = getent("reveal_crate_color_trigger","targetname"); if(isdefined(var_00)) { var_00 maps\_utility::activate_trigger(); } } //Function Number: 272 reactor_room_redshirts() { level endon("turbine_elevator_reached_top"); for(;;) { common_scripts\utility::flag_wait("reactor_redshirts_enable"); self.count++; var_00 = maps\_utility::spawn_ai(); var_00 waittill("death"); wait(randomfloatrange(1,5)); } } //Function Number: 273 reactor_room_redshirt_cleanup() { level waittill("turbine_elevator_reached_top"); waittillframeend; common_scripts\utility::array_call(getentarray("reactor_redshirts","script_noteworthy"),::delete); } //Function Number: 274 reactor_room_combat() { thread reactor_room_catwalk_combat(); thread reactor_room_combat_seek_player(); thread reactor_room_combat_mid_checkpoint(); common_scripts\utility::flag_wait("reactor_room_end_combat"); level.burke maps\_utility::disable_careful(); level.joker maps\_utility::disable_careful(); level.carter maps\_utility::disable_careful(); } //Function Number: 275 enemy_combat_equip_microwave_grenades() { var_00 = getaiarray("axis"); foreach(var_02 in var_00) { if(isdefined(var_02.script_parameters) && var_02.script_parameters == "microwave_equipped") { var_02 maps\_utility::add_spawn_function(::reactor_room_microwave_grenade_equip); } } } //Function Number: 276 reactor_room_combat_mid_checkpoint() { level endon("elevator_ascend"); common_scripts\utility::flag_wait("reactor_room_combat_mid_save_1"); maps\_utility::autosave_by_name(); } //Function Number: 277 reactor_room_combat_seek_player() { common_scripts\utility::flag_wait("flag_reactor_room_combat_seek_player"); level.burke maps\_utility::disable_careful(); level.joker maps\_utility::disable_careful(); level.carter maps\_utility::disable_careful(); var_00 = getaiarray("axis"); foreach(var_02 in var_00) { var_02 thread maps\_utility::player_seek_enable(); } } //Function Number: 278 reactor_room_microwave_grenade_equip() { maps\fusion_utility::equip_microwave_grenade(); } //Function Number: 279 reactor_room_catwalk_death() { level endon("elevator_ascend"); common_scripts\utility::flag_wait("reactor_room_catwalk_death"); var_00 = common_scripts\utility::getstruct("reactor_room_catwalk_death","targetname"); var_01 = getdvarint("cg_fov"); if(!level.player worldpointinreticle_circle(var_00.origin,var_01,250)) { var_02 = var_00 common_scripts\utility::get_target_ent() maps\_utility::spawn_ai(); var_02.deathfunction = undefined; var_02.animname = "generic"; var_02 maps\_utility::set_deathanim("reactor_room_catwalk_death"); var_02 kill(); } } //Function Number: 280 reactor_room_catwalk_combat() { level endon("elevator_ascend"); var_00 = getent("reactor_room_below_catwalk","targetname"); var_01 = common_scripts\utility::getstruct("reactor_room_catwalk_struct","targetname"); var_02 = getentarray("reactor_catwalk_spawner_test","script_noteworthy"); common_scripts\utility::array_thread(var_02,::reactor_catwalk_spawner_trigger_think); for(;;) { level waittill("reactor_catwalk_spawner_trigger_hit"); if(level.player istouching(var_00)) { wait(0.1); var_03 = getaiarray("axis"); foreach(var_05 in var_03) { if(isalive(var_05) && var_05.origin[2] >= var_01.origin[2] && distance2dsquared(var_05.origin,var_01.origin) < var_01.radius * var_01.radius) { var_05 thread maps\fusion_utility::bloody_death(); } } } } } //Function Number: 281 reactor_catwalk_spawner_trigger_think() { self waittill("trigger"); level notify("reactor_catwalk_spawner_trigger_hit"); } //Function Number: 282 turbine_room() { thread turbine_room_elevator(); thread turbine_room_explosion(); thread turbine_room_entrance_steam(); thread turbine_room_turbines(); thread turbine_room_atmosphere(); thread turbine_room_combat(); thread turbine_combat_mid_checkpoint_1(); thread turbine_room_pre_explosion(); thread pdrone_activate("turbine_room_combat_start"); thread pdrone_deactivate_think(); thread pdrone_deploy_hint(); } //Function Number: 283 turbine_room_elevator() { var_00 = getent("turbine_elevator_badplace","targetname"); badplace_brush("turbine_elevator_badplace",0,var_00,"axis"); var_01 = getent("elevator_ascend_use_trigger","targetname"); if(level.player usinggamepad()) { var_01 sethintstring(&"FUSION_OPERATE_ELEVATOR"); } else { var_01 sethintstring(&"FUSION_OPERATE_ELEVATOR_PC"); } var_02 = getent("elevator_cover_col","targetname"); var_03 = getent("elevator_door_col","targetname"); var_02 notsolid(); var_03 notsolid(); var_04 = getent("deployable_cover_final_model","targetname"); var_04.contents = var_04 setcontents(0); var_04 hide(); common_scripts\utility::flag_wait("turbine_elevator_enter"); if(level.nextgen) { common_scripts\utility::array_thread(getaiarray("axis"),::maps\fusion_utility::bloody_death,5); } else { thread turbine_enemy_elevator_removal(); } var_05 = getent("elevator_control","targetname"); var_06 = getent("elevator_button","targetname"); var_07 = 6; var_08 = 4; var_09 = getent("turbine_elevator_animnode","targetname"); var_09 linkto(var_05); var_04 linkto(var_05); var_0A = "elevator_button_scene"; level.player_rig = maps\_utility::spawn_anim_model("player_arms"); level.player_rig hide(); var_09 maps\_anim::anim_first_frame_solo(level.player_rig,var_0A); if(!isdefined(level.turbine_room_elevator_ascent_time)) { common_scripts\utility::flag_set("vo_turbine_elevator_near"); var_0B = "stop_elevator_idle"; level.burke thread turbine_room_elevator_think(var_09,var_0B); level.carter thread turbine_room_elevator_think(var_09,var_0B); var_0C = level.joker.goalradius; level.joker.goalradius = 16; var_0D = [level.burke,level.carter,level.joker,level.player]; var_0E = getent("inside_elevator_trigger","targetname"); while(!var_0E check_if_multiple_ents_inside(var_0D)) { wait(1); } level.burke maps\_utility::disable_ai_color(); level.joker maps\_utility::disable_ai_color(); level.carter maps\_utility::disable_ai_color(); common_scripts\utility::flag_set("update_obj_pos_turbine_elevator_button"); common_scripts\utility::flag_set("vo_turbine_elevator_ready"); var_0F = maps\_shg_utility::hint_button_position("use",var_06.origin,40,512); level.joker.goalradius = var_0C; common_scripts\utility::flag_set("elevator_ascend_ready"); common_scripts\utility::flag_wait("elevator_ascend"); var_0F maps\_shg_utility::hint_button_clear(); common_scripts\utility::flag_set("update_obj_pos_turbine_elevator_ascent"); thread turbine_room_elevator_button_pressed_anim(var_0A,var_09); common_scripts\utility::array_thread(getaiarray("axis"),::maps\_vehicle::force_kill); var_01 delete(); level waittill("flag_anim_elevator_button_pressed"); var_06 setmodel("fus_elevator_button_02"); var_10 = getent("joker_elevator_cover","targetname"); level.joker forceteleport(var_10.origin,var_10.angles); level.joker thread turbine_room_elevator_think(var_09,var_0B,var_04); soundscripts\_snd::snd_message("start_turbine_elevator"); level.turbine_room_elevator_ascent_time = 10; if(level.currentgen) { level.turbine_room_elevator_ascent_time = 15; } var_11 = getent("elevator_door_bottom_1","script_noteworthy"); var_12 = getent("elevator_door_bottom_2","script_noteworthy"); var_13 = getent("elevator_door_bottom_3","script_noteworthy"); var_14 = getent("elevator_door_bottom_4","script_noteworthy"); var_11 moveto(var_11.origin + (0,0,-51),var_07 / 2,var_07 / 6,var_07 / 6); var_12 moveto(var_12.origin + (0,0,-93),var_07 * 2 / 3,var_07 / 12,var_07 / 12); var_13 moveto(var_13.origin + (0,0,-140),var_07,var_07 / 18,var_07 / 18); var_14 common_scripts\utility::delaycall(var_07 * 3 / 4,::moveto,var_14.origin + (0,0,8),var_07 / 4,var_07 / 8,var_07 / 8); var_15 = getentarray("elevator_inner_door_upper","targetname"); var_16 = getentarray("elevator_inner_door_lower","targetname"); foreach(var_18 in var_15) { var_18 moveto(var_18.origin + (0,0,-80),var_08,var_08 / 6,var_08 / 6); } foreach(var_18 in var_16) { var_18 moveto(var_18.origin + (0,0,48),var_08,var_08 / 6,var_08 / 6); } maps\_utility::delaythread(0.5,::common_scripts\utility::flag_set,"vo_turbine_elevator"); maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"joker_place_elevator_cover"); var_02 solid(); var_02 linkto(var_05); var_03 solid(); wait(var_07); if(level.currentgen) { level notify("tff_pre_transition_middle_to_outro"); unloadtransient("fusion_middle_tr"); loadtransient("fusion_outro_tr"); } } else { var_02 solid(); var_02 linkto(var_05); var_03 solid(); var_04 show(); var_04 setcontents(var_04.contents); common_scripts\utility::flag_set("update_obj_pos_turbine_elevator_button"); } level notify("reactor_room_cleanup"); soundscripts\_snd::snd_message("disable_turbine_elevator_trigger"); common_scripts\utility::array_call(getentarray("reactor_room_enemies","script_noteworthy"),::delete); var_1C = getentarray("turbine_room_elevator","script_noteworthy"); foreach(var_18 in var_1C) { var_18 linkto(var_05); } var_1F = getent("elevator_destination","targetname"); var_20 = getent("elevator_door_top_1","script_noteworthy"); var_21 = getent("elevator_door_top_2","script_noteworthy"); var_22 = getent("elevator_door_top_3","script_noteworthy"); var_23 = getent("elevator_door_top_4","script_noteworthy"); var_21 disconnectpaths(); var_22 disconnectpaths(); if(level.turbine_room_elevator_ascent_time) { common_scripts\utility::flag_wait("joker_placing_turbine_elevator_cover"); var_24 = maps\_utility::get_rumble_ent(); var_24.intensity = 0.1; common_scripts\utility::noself_delaycall(level.turbine_room_elevator_ascent_time,::stopallrumbles); var_05 moveto(var_1F.origin,level.turbine_room_elevator_ascent_time,2,2); wait(level.turbine_room_elevator_ascent_time); if(level.currentgen) { while(!istransientloaded("fusion_outro_tr")) { wait(0.1); } level notify("tff_post_transition_middle_to_outro"); } } else { var_25 = var_1F.origin - var_05.origin; var_05.origin = var_05.origin + var_25; var_02.origin = var_02.origin + var_25; var_09.origin = var_09.origin + var_25; var_0A = "turbine_elevator_exit"; var_26 = "turbine_elevator_idle"; var_0B = "stop_elevator_idle"; var_09 thread maps\_anim::anim_single_solo_run(level.burke,var_0A); var_09 thread maps\_anim::anim_single_solo_run(level.carter,var_0A); var_09 thread maps\_anim::anim_loop_solo(level.joker,var_26,var_0B); var_09 thread maps\_utility::notify_delay(var_0B,5.5); var_09 maps\_utility::delaythread(5.5,::maps\_anim::anim_single_solo_run,level.joker,var_0A); } var_02 disconnectpaths(); var_27 = getentarray("elevator_inner_exit_door_upper","targetname"); var_28 = getentarray("elevator_inner_exit_door_lower","targetname"); if(isdefined(var_20)) { var_20 moveto(var_20.origin + (0,0,51),var_07 / 2,var_07 / 6,var_07 / 6); var_21 moveto(var_21.origin + (0,0,93),var_07 * 2 / 3,var_07 / 12,var_07 / 12); var_22 moveto(var_22.origin + (0,0,140),var_07,var_07 / 18,var_07 / 18); var_23 common_scripts\utility::delaycall(var_07 * 3 / 4,::moveto,var_23.origin + (0,0,-8),var_07 / 4,var_07 / 8,var_07 / 8); var_15 = getentarray("elevator_inner_door_upper","targetname"); var_16 = getentarray("elevator_inner_door_lower","targetname"); foreach(var_18 in var_15) { var_18 moveto(var_18.origin + (0,0,-80),var_08,var_08 / 6,var_08 / 6); } foreach(var_18 in var_16) { var_18 moveto(var_18.origin + (0,0,48),var_08,var_08 / 6,var_08 / 6); } } foreach(var_18 in var_27) { var_18 unlink(); var_18 moveto(var_18.origin + (0,0,80),var_08,var_08 / 6,var_08 / 6); } foreach(var_18 in var_28) { var_18 unlink(); var_18 moveto(var_18.origin + (0,0,-48),var_08,var_08 / 6,var_08 / 6); } common_scripts\_exploder::exploder(3501); common_scripts\_exploder::exploder(3502); level notify("turbine_elevator_reached_top"); if(level.currentgen) { var_31 = ["turbine_room_enemy"]; thread maps\_cg_encounter_perf_monitor::cg_spawn_perf_monitor("turbine_room_stop_combat",var_31,15,0); common_scripts\utility::flag_set("portal_on_turbine_room_flag"); } soundscripts\_snd::snd_message("stop_turbine_elevator"); common_scripts\utility::flag_set("control_room_run_prep"); soundscripts\_snd::snd_message("start_turbine_loop"); common_scripts\utility::flag_set("update_obj_pos_turbine_room_1"); common_scripts\utility::flag_set("turbine_room_combat_start"); maps\_utility::delaythread(10,::common_scripts\utility::flag_set,"vo_turbine_room_entrance"); maps\_utility::autosave_by_name("turbine_elevator_complete"); wait(1); var_21 connectpaths(); var_22 connectpaths(); } //Function Number: 284 turbine_enemy_elevator_removal() { var_00 = getaiarray("axis"); foreach(var_02 in var_00) { var_02 thread maps\_utility::player_seek_enable(); } thread maps\_utility::ai_delete_when_out_of_sight(var_00,500); } //Function Number: 285 check_if_multiple_ents_inside(param_00) { foreach(var_02 in param_00) { if(!var_02 istouching(self)) { return 0; } } return 1; } //Function Number: 286 turbine_room_elevator_button_pressed_anim(param_00,param_01) { level.player maps\_shg_utility::setup_player_for_scene(); thread maps\_player_exo::player_exo_deactivate(); var_02 = 0.4; level.player playerlinktoblend(level.player_rig,"tag_player",var_02); level.player common_scripts\utility::delaycall(var_02,::playerlinktodelta,level.player_rig,"tag_player",1,7,7,5,5,1); level.player take_car_door_shields(); wait(var_02); level.player_rig show(); level.player soundscripts\_snd::snd_message("turbine_room_elevator_button"); param_01 maps\_anim::anim_single_solo(level.player_rig,param_00); level.player_rig delete(); level.player unlink(); level.player maps\_shg_utility::setup_player_for_gameplay(); thread maps\_player_exo::player_exo_activate(); } //Function Number: 287 turbine_room_elevator_think(param_00,param_01,param_02) { var_03 = "turbine_elevator_enter"; var_04 = "turbine_elevator_idle"; var_05 = "turbine_elevator_exit"; if(self == level.joker) { common_scripts\utility::flag_wait("joker_place_elevator_cover"); } if(self == level.burke) { wait(2); } param_00 maps\_anim::anim_reach_solo(self,var_03); if(self == level.joker) { common_scripts\utility::flag_set("joker_placing_turbine_elevator_cover"); var_06 = spawn("script_model",(0,0,0)); var_06.animname = "deployable_cover"; var_06 setmodel("deployable_cover"); var_06 maps\_anim::setanimtree(); var_06 linkto(param_00); param_00 thread maps\_anim::anim_single_solo(var_06,"deployable_cover_deploy"); maps\_utility::delaythread(2.1,::common_scripts\_exploder::exploder,"fx_cover_deploy_impact"); maps\_utility::delaythread(5,::common_scripts\_exploder::exploder,"fx_cover_deploy_impact_delay"); var_07 = 5.4; param_02 common_scripts\utility::delaycall(var_07,::setcontents,param_02.contents); param_02 common_scripts\utility::delaycall(var_07,::show); var_06 common_scripts\utility::delaycall(var_07,::delete); } self linkto(param_00); param_00 maps\_anim::anim_single_solo(self,var_03); param_00 thread maps\_anim::anim_loop_solo(self,var_04,param_01); if(self == level.joker) { if(level.currentgen) { level waittill("tff_post_transition_middle_to_outro"); } else { wait(5.5); } } else if(level.currentgen) { level waittill("tff_post_transition_middle_to_outro"); } else { level waittill("turbine_elevator_reached_top"); } self unlink(); param_00 notify(param_01); param_00 thread maps\_anim::anim_single_solo_run(self,var_05); maps\_utility::disable_surprise(); maps\_utility::disable_bulletwhizbyreaction(); wait(10); maps\_utility::enable_surprise(); maps\_utility::enable_bulletwhizbyreaction(); } //Function Number: 288 turbine_room_combat() { common_scripts\utility::flag_wait("player_in_turbine_room"); level.burke maps\_utility::enable_careful(); level.joker maps\_utility::enable_careful(); level.carter maps\_utility::enable_careful(); level.turbine_room_goal_volume = getent("turbine_room_initial_goal","script_noteworthy"); common_scripts\utility::array_thread(getentarray("turbine_room_goal_volume_trigger","targetname"),::turbine_room_goal_volume_trigger_think); common_scripts\utility::flag_wait("turbine_room_combat_start"); level.burke maps\_utility::enable_ai_color(); level.joker maps\_utility::enable_ai_color(); level.carter maps\_utility::enable_ai_color(); thread turbine_room_combat_initial(); thread turbine_room_combat_seek_player(); common_scripts\utility::flag_wait("turbine_room_stop_combat"); foreach(var_01 in getaiarray("axis")) { var_01 thread maps\fusion_utility::bloody_death(randomfloatrange(0,3)); } } //Function Number: 289 turbine_combat_mid_checkpoint_1() { level endon("turbine_room_stop_combat"); common_scripts\utility::flag_wait("flag_turbine_combat_mid_save_1"); maps\_utility::autosave_by_name(); } //Function Number: 290 turbine_room_combat_initial() { thread turbine_room_squibs(); var_00 = getaiarray("axis"); foreach(var_02 in var_00) { if(randomfloat(1) < 0.25) { var_02.favoriteenemy = level.player; } } wait(5); common_scripts\utility::flag_set("turbine_room_initial_combat_retreat"); } //Function Number: 291 turbine_room_combat_seek_player() { common_scripts\utility::flag_wait("flag_turbine_room_combat_seek_player"); level.burke maps\_utility::disable_careful(); level.joker maps\_utility::disable_careful(); level.carter maps\_utility::disable_careful(); var_00 = getaiarray("axis"); foreach(var_02 in var_00) { var_02 thread maps\_utility::player_seek_enable(); } } //Function Number: 292 turbine_room_squibs() { level endon("turbine_room_initial_combat_retreat"); var_00 = common_scripts\utility::getstructarray("turbine_room_squib_source","targetname"); var_01 = common_scripts\utility::getstructarray("turbine_room_squib_dest","targetname"); wait(1); for(;;) { var_02 = randomintrange(1,var_00.size); for(var_03 = 0;var_03 < var_02;var_03++) { var_04 = var_00[randomint(var_00.size)]; var_05 = var_01[randomint(var_01.size)]; magicbullet("iw5_ak12_sp",var_04.origin,var_05.origin); wait(randomfloat(0.2)); } wait(randomfloat(0.2)); } } //Function Number: 293 turbine_room_goal_volume_trigger_think() { var_00 = common_scripts\utility::get_target_ent(); level endon("turbine_room_stop_combat"); for(;;) { self waittill("trigger"); if(var_00 != level.turbine_room_goal_volume) { level.turbine_room_goal_volume = var_00; level notify("turbine_room_update_goal"); } wait(0.5); } } //Function Number: 294 turbine_room_enemy_think() { self endon("death"); while(!isdefined(level.turbine_room_goal_volume)) { wait(1); } for(;;) { level waittill("turbine_room_update_goal"); self setgoalvolumeauto(level.turbine_room_goal_volume); wait(1); } } //Function Number: 295 turbine_room_turbines() { common_scripts\utility::flag_wait("elevator_ascend"); common_scripts\utility::array_thread(getentarray("turbine_fan","targetname"),::turbine_fan_think); } //Function Number: 296 turbine_fan_think() { var_00 = 10; var_01 = 360; if(isdefined(self.script_parameters)) { if(self.script_parameters == "ccw") { var_01 = -1 * var_01; } } for(;;) { self rotateroll(var_01 * var_00,var_00,0,0); wait(var_00); } } //Function Number: 297 turbine_room_entrance_steam() { common_scripts\utility::flag_wait("turbine_room_entrance_steam"); common_scripts\_exploder::exploder("turbine_looping_steam_fx"); } //Function Number: 298 turbine_room_pre_explosion() { common_scripts\utility::flag_wait("turbine_room_pre_explosion"); maps\_utility::pauseexploder("turbine_looping_steam_fx"); wait(2.2); common_scripts\_exploder::exploder("turbine_room_spark_steam"); soundscripts\_snd::snd_message("turbine_pre_explo"); wait(0.4); common_scripts\_exploder::exploder("turbine_room_spark_steam_2"); common_scripts\_exploder::exploder("turbine_looping_steam_fx_2"); common_scripts\_exploder::exploder("turbine_looping_steam_fx"); } //Function Number: 299 turbine_room_explosion() { var_00 = getent("turbine_explosion_volume","targetname"); badplace_brush("turbine_explosion_volume",0,var_00,"allies"); var_01 = getentarray("turbine_damaged","targetname"); common_scripts\utility::array_call(var_01,::hide); var_02 = getentarray("turbine_fan_damaged","targetname"); common_scripts\utility::array_call(var_02,::hide); common_scripts\utility::flag_wait("turbine_room_explosion"); soundscripts\_snd::snd_message("turbine_explo_audio"); wait(0.2); var_03 = common_scripts\utility::getstructarray("turbine_explosion_damage_source","targetname"); foreach(var_05 in var_03) { radiusdamage(var_05.origin,var_05.radius,200,100); } maps\_utility::pauseexploder("turbine_looping_steam_fx"); maps\_utility::pauseexploder("turbine_looping_steam_fx_2"); common_scripts\_exploder::exploder("turbine_explosion_fx"); var_07 = getent("turbine_explosion_catwalk_source","targetname"); var_07 playsound("detpack_explo_metal"); earthquake(0.5,0.5,var_07.origin,3000); badplace_delete("turbine_explosion_volume"); badplace_brush("turbine_explosion_volume",0,var_00,"axis","allies"); var_08 = getentarray("turbine_intact","targetname"); common_scripts\utility::array_call(var_08,::delete); common_scripts\utility::array_call(var_01,::show); common_scripts\utility::array_call(var_02,::show); common_scripts\utility::array_thread(var_02,::turbine_fan_think); wait(1.5); common_scripts\_exploder::exploder("turbine_explosion_steam_fx"); common_scripts\_exploder::exploder("turbine_damage_sparks"); common_scripts\utility::flag_set("vo_turbine_explosion"); soundscripts\_snd::snd_message("start_pa_emergency_turbine"); if(level.currentgen) { level waittill("notify_out_of_control_room"); maps\_utility::stop_exploder("turbine_explosion_fx"); } } //Function Number: 300 turbine_room_explosion_flying_blades() { var_00 = common_scripts\utility::getstructarray("turbine_blade_flying_start","targetname"); foreach(var_02 in var_00) { thread turbine_room_explosion_launch_blade(var_02); } } //Function Number: 301 turbine_room_explosion_launch_blade(param_00) { if(isdefined(param_00.script_delay)) { wait(param_00.script_delay); } var_01 = common_scripts\utility::getstruct(param_00.target,"targetname"); var_02 = distance(param_00.origin,var_01.origin); var_03 = 3000; var_04 = var_02 / var_03; var_05 = spawn("script_model",param_00.origin); var_05 setmodel("vehicle_v22_osprey_damaged_static_bladepiece_left"); var_05.angles = param_00.angles; var_05 moveto(var_01.origin,var_04,0,0); var_05 rotatepitch(1080,var_04,0,0); wait(var_04); var_05.angles = var_01.angles; var_05 thread maps\fusion_utility::delete_on_notify("turbine_room_cleanup"); } //Function Number: 302 turbine_room_atmosphere() { level endon("flag_shut_down_reactor_failed"); level.player endon("death"); var_00 = common_scripts\utility::getstructarray("turbine_center","script_noteworthy"); var_01 = 0.07; var_02 = 0.12; var_03 = var_02 - var_01; var_04 = 0.08; var_05 = 0.12; var_06 = var_05 - var_04; for(;;) { common_scripts\utility::flag_wait("player_in_turbine_room"); var_07 = maps\_utility::get_rumble_ent("steady_rumble"); var_07.intensity = 0.08; var_08 = 1; while(common_scripts\utility::flag("player_in_turbine_room")) { var_09 = common_scripts\utility::getclosest(level.player.origin,var_00); var_0A = get_turbine_shake_value(var_09); var_07.intensity = var_01 + var_0A * var_03; earthquake(var_04 + var_0A * var_06,var_08,level.player.origin,1000); wait(randomfloatrange(var_08 / 4,var_08 / 2)); } stopallrumbles(); } } //Function Number: 303 get_turbine_shake_value(param_00) { var_01 = 300; var_02 = 600; var_03 = var_02 - var_01; var_04 = distance(level.player.origin,param_00.origin); if(var_04 < var_01) { return 1; } if(var_04 > var_02) { return 0; } return 1 - var_04 - var_01 / var_03; } //Function Number: 304 turbine_room_steam_player() { level endon("flag_shut_down_reactor_failed"); while(common_scripts\utility::flag("player_in_turbine_room")) { playfx(common_scripts\utility::getfx("steam_player"),level.player.origin + (0,0,0)); wait(0.3); } } //Function Number: 305 control_room() { thread control_room_run(); thread control_room_explosion(); } //Function Number: 306 control_room_run() { common_scripts\utility::flag_wait("control_room_run_prep"); var_00 = getent("clip_explosion_door","targetname"); var_00 hide(); var_01 = common_scripts\utility::getstruct("control_room_burke_position","targetname"); var_02 = "fusion_door_explosion"; var_03 = getent("fusion_door_open_postup_doors","targetname"); var_03.animname = "fusion_door_open_postup_doors"; var_03 maps\_anim::setanimtree(); var_01 maps\_anim::anim_first_frame_solo(var_03,var_02); var_04 = getent("fusion_door_open_postup_door_left","targetname"); var_04 linkto(var_03,"door_R"); var_05 = getent("fusion_door_open_postup_door_right","targetname"); var_05 linkto(var_03,"door_L"); common_scripts\utility::flag_wait("control_room_run_approach"); var_06 = getaiarray("axis"); var_06 = maps\_utility::array_removedead_or_dying(var_06); while(var_06.size >= 4) { var_06 = getaiarray("axis"); var_06 = maps\_utility::array_removedead_or_dying(var_06); wait 0.05; } var_06 = getaiarray("axis"); var_06 = maps\_utility::array_removedead_or_dying(var_06); foreach(var_08 in var_06) { maps\fusion_utility::bloody_death(randomfloatrange(1,2)); } level.burke maps\_utility::disable_careful(); level.joker maps\_utility::disable_careful(); level.carter maps\_utility::disable_careful(); wait 0.05; var_0A = []; var_0A[var_0A.size] = level.burke; var_0A[var_0A.size] = level.carter; var_0B = "fusion_door_explosion_postup"; var_0C = "fusion_door_explosion_postup_loop"; var_0D = spawn("script_origin",var_01.origin); var_0D.angles = var_01.angles; var_0E = "control_room_run"; level.burke thread start_cqb_when_near(getstartorigin(var_0D.origin,var_0D.angles,level.scr_anim["burke"][var_0B])); level.carter thread start_cqb_when_near(getstartorigin(var_0D.origin,var_0D.angles,level.scr_anim["carter"][var_0B])); var_0A = []; var_0A[var_0A.size] = level.burke; var_0A[var_0A.size] = level.carter; common_scripts\utility::array_thread(var_0A,::control_room_run_approach,var_0D,var_0B,var_0C,var_0E); level waittill("control_room_run_guy_ready"); level waittill("control_room_run_guy_ready"); common_scripts\utility::flag_wait("control_room_run"); thread control_room_run_player(); thread control_room_screens(); level.burke maps\_utility::disable_cqbwalk(); level.carter maps\_utility::disable_cqbwalk(); var_0D notify("control_room_run"); thread control_room_run_joker(); maps\_utility::delaythread(2.5,::common_scripts\utility::flag_set,"update_obj_pos_control_room_door"); var_0A[var_0A.size] = var_03; common_scripts\utility::array_call(getentarray("control_room_doors","targetname"),::delete); var_0F = maps\_utility::spawn_anim_model("fusion_door_explosion_door_a",(0,0,0)); var_10 = []; var_10[var_10.size] = var_0F; soundscripts\_snd::snd_message("start_turbine_door_breach"); soundscripts\_snd::snd_message("start_turbine_door_impt",var_04,var_05); thread control_room_scene_player(var_01); maps\_utility::delaythread(5,::common_scripts\utility::flag_set,"vo_control_hall_door_stack"); maps\_utility::delaythread(6,::common_scripts\utility::flag_set,"vo_control_hall_door_kicked"); var_0A[var_0A.size] = var_0F; var_11 = getanimlength(level.burke maps\_utility::getanim(var_02)); var_01 thread maps\_anim::anim_single(var_0A,var_02); var_12 = 24; maps\_utility::delaythread(var_12,::control_room_scene,var_11 - var_12); wait(var_11); var_00 show(); var_0D delete(); } //Function Number: 307 control_room_run_approach(param_00,param_01,param_02,param_03) { param_00 maps\_anim::anim_reach_solo(self,param_01); param_00 maps\_anim::anim_single_solo(self,param_01); param_00 thread maps\_anim::anim_loop_solo(self,param_02,param_03); level notify("control_room_run_guy_ready"); } //Function Number: 308 control_room_run_player() { var_00 = common_scripts\utility::getstruct("control_room_door_explosion_dmg_org","targetname"); var_01 = var_00.radius; common_scripts\utility::flag_wait("control_room_explosion"); playrumbleonposition("grenade_rumble",var_00.origin); var_02 = getent("control_room_door_clip","targetname"); if(isdefined(var_02)) { var_02 delete(); } var_03 = distance2d(var_00.origin,level.player.origin); if(var_03 < var_01) { var_04 = level.player.health * 0.9 / level.player.damagemultiplier; var_05 = var_01 - var_03 / var_01 * var_04; level.player dodamage(var_05,var_00.origin); var_06 = common_scripts\utility::getstructarray("control_room_door_explosion_dmg_dest","targetname"); var_07 = []; foreach(var_09 in var_06) { var_07[var_07.size] = length(vectorfromlinetopoint(var_00.origin,var_09.origin,level.player.origin)); } var_0B = 0; var_0C = 1000; for(var_0D = 0;var_0D < var_07.size;var_0D++) { if(var_07[var_0D] < var_0C) { var_0B = var_0D; var_0C = var_07[var_0D]; } } var_0E = var_06[var_0B]; var_0F = common_scripts\utility::spawn_tag_origin(); var_0F.origin = level.player.origin; var_0F.angles = level.player.angles; var_10 = 0.5; level.player playerlinktoblend(var_0F,"tag_origin",var_10); var_0F moveto(var_0E.origin,var_10,0.05,0.05); var_11 = common_scripts\utility::getstruct("control_room_door_explosion_view_org","targetname"); var_0F rotateto((0,vectortoangles(var_11.origin - var_0E.origin)[1],0),var_10,0.05,0.05); level.player playrumbleonentity("damage_heavy"); wait(var_10); level.player unlink(); var_0F delete(); return; } level.player playrumbleonentity("damage_light"); } //Function Number: 309 control_room_run_joker() { wait(6); getent("fusion_door_open_postup_door_left","targetname") connectpaths(); getent("fusion_door_open_postup_door_right","targetname") connectpaths(); wait(1); var_00 = getnode("pre_control_room_joker_position","targetname"); var_01 = level.joker.goalradius; level.joker.goalradius = 64; level.joker maps\_utility::enable_cqbwalk(); level.joker setgoalnode(var_00); level.joker waittill("goal"); level.joker allowedstances("crouch"); maps\_utility::trigger_wait_targetname("cover_allies_complete"); wait(1); var_02 = common_scripts\utility::getstruct("control_room_joker_position","targetname"); var_01 = level.joker.goalradius; level.joker.goalradius = 64; level.joker maps\_utility::enable_cqbwalk(); level.joker setgoalpos(var_02.origin); level.joker waittill("goal"); level.joker allowedstances("crouch"); level waittill("control_room_scene_complete"); level.joker allowedstances("prone","crouch","stand"); level.joker maps\_utility::disable_cqbwalk(); level.joker.goalradius = var_01; } //Function Number: 310 control_room_explosion() { var_00 = getentarray("control_room_hall_intact","targetname"); var_01 = getentarray("control_room_hall_destroyed","targetname"); foreach(var_03 in var_01) { var_03 hide(); } level waittill("doors_explode"); foreach(var_03 in var_01) { var_03 show(); } foreach(var_03 in var_00) { var_03 delete(); } common_scripts\utility::flag_set("control_room_explosion"); common_scripts\utility::flag_set("update_obj_pos_control_room_explosion"); common_scripts\utility::flag_set("vo_control_room_explosion"); level thread maps\fusion_fx::vfx_control_room_explo(); soundscripts\_snd::snd_message("start_control_room_explo"); } //Function Number: 311 control_room_scene_player(param_00) { common_scripts\utility::flag_wait("control_room_console_enable"); var_01 = getent("control_room_console_use_trigger","targetname"); var_02 = common_scripts\utility::getstruct("obj_pos_control_room_console","targetname"); if(level.player usinggamepad()) { var_01 sethintstring(&"FUSION_USE_CONSOLE"); } else { var_01 sethintstring(&"FUSION_USE_CONSOLE_PC"); } var_03 = var_01 maps\_shg_utility::hint_button_trigger("use"); common_scripts\utility::flag_wait("control_room_console_used"); level.burke thread maps\fusion_utility::hide_friendname_until_flag_or_notify("control_room_scene_complete"); level.joker thread maps\fusion_utility::hide_friendname_until_flag_or_notify("control_room_scene_complete"); level.carter thread maps\fusion_utility::hide_friendname_until_flag_or_notify("control_room_scene_complete"); var_01 delete(); var_03 maps\fusion_utility::hint_button_clear_fus(); common_scripts\utility::flag_set("update_obj_pos_control_room_using_console"); var_04 = getdvarint("cg_fov"); var_05 = maps\_utility::spawn_anim_model("player_rig",level.player.origin); var_05 hide(); param_00 thread maps\_anim::anim_first_frame_solo(var_05,"control_room_scene"); level.player disableweapons(); maps\_player_exo::player_exo_deactivate(); var_06 = 1; level.player playerlinktoblend(var_05,"tag_player",var_06); thread maps\fusion_anim::fov_lerp_to_50_blendtime(level.player,var_06); var_05 common_scripts\utility::delaycall(var_06,::show); level.player common_scripts\utility::delaycall(var_06,::playerlinktodelta,var_05,"tag_player",0,30,30,30,30); level.player allowcrouch(0); level.player allowprone(0); level.player disableweapons(); level.player maps\_utility::blend_movespeedscale_percent(0); wait(var_06); common_scripts\utility::flag_wait("control_room_scene_ready"); common_scripts\utility::flag_set("control_room_scene"); level.player playerlinktodelta(var_05,"tag_player",0,60,60,70,65); param_00 thread maps\_anim::anim_single_solo(var_05,"control_room_scene"); var_07 = getanimlength(var_05 maps\_utility::getanim("control_room_scene")); wait(var_07 - 1); level.player allowcrouch(1); level.player allowprone(1); level.player enableweapons(); maps\_player_exo::player_exo_activate(); wait(1); var_05 delete(); level.player unlink(); level.player maps\_utility::blend_movespeedscale_percent(100,1); thread maps\fusion_anim::fov_reset_previous(level.player,var_04); } //Function Number: 312 control_room_scene(param_00) { common_scripts\utility::flag_set("control_room_scene_ready"); thread control_room_scene_actors(param_00); level waittill("control_room_event_1"); thread maps\fusion_aud::do_inside_bombshake(); level waittill("control_room_event_2"); thread maps\fusion_aud::do_inside_bombshake(); level waittill("control_room_event_3"); thread maps\fusion_aud::do_inside_bombshake(); } //Function Number: 313 control_room_scene_actors(param_00) { var_01 = common_scripts\utility::getstruct("control_room_burke_position","targetname"); var_02 = spawn("script_origin",var_01.origin); var_02.angles = var_01.angles; var_03 = spawn("script_origin",var_01.origin); var_03.angles = var_01.angles; var_04 = spawn("script_origin",var_01.origin); var_04.angles = var_01.angles; var_05 = "control_room_idle"; var_06 = []; var_06[var_06.size] = level.burke; var_06[var_06.size] = level.carter; if(isdefined(param_00)) { common_scripts\utility::flag_wait_or_timeout("control_room_scene",param_00); } var_02 thread maps\_anim::anim_loop_solo(level.burke,var_05,"control_room_scene"); var_04 thread maps\_anim::anim_loop_solo(level.carter,var_05,"control_room_scene"); var_05 = "control_room_scene"; var_06[var_06.size] = level.joker; common_scripts\utility::flag_wait("control_room_scene"); level notify("turbine_room_cleanup"); var_02 notify("control_room_scene"); var_04 notify("control_room_scene"); var_04 delete(); maps\_utility::clear_all_color_orders("allies"); level.burke maps\_utility::enable_ai_color(); level.joker maps\_utility::enable_ai_color(); level.carter maps\_utility::enable_ai_color(); level.joker maps\_utility::set_force_color("o"); level.carter maps\_utility::set_force_color("o"); maps\_utility::delaythread(1,::maps\_utility::activate_trigger_with_targetname,"control_room_scene_complete_color_trigger"); common_scripts\utility::flag_set("vo_control_room_scene"); var_02 maps\_anim::anim_single_run(var_06,var_05); var_02 delete(); common_scripts\utility::flag_set("flag_shut_down_reactor_failed"); common_scripts\utility::flag_set("evacuation_started"); common_scripts\utility::flag_set("update_obj_pos_control_room_exit_1"); control_room_scene_exit(); } //Function Number: 314 control_room_screens() { level notify("stop_evacuation_kiosk_movie"); setsaveddvar("cg_cinematicFullScreen","0"); cinematicingameloop("fusion_control_room_loop"); common_scripts\utility::flag_wait("control_room_scene"); wait(12); cinematicingameloop("fusion_control_room_loop_red"); common_scripts\utility::flag_wait("evacuation_started"); if(level.nextgen) { thread evacuation_kiosk_movie(); } } //Function Number: 315 control_room_scene_exit() { wait(0.45); var_00 = getent("control_room_exit_door","targetname"); getent(var_00.target,"targetname") linkto(var_00); var_01 = 0.5; var_00 rotateto(var_00.angles - (0,120,0),var_01,0,0); wait(var_01 + 0.05); var_00 rotateto(var_00.angles - (0,-10,0),1,0,1); common_scripts\utility::flag_wait("raise_control_room_emergency_exit_door"); common_scripts\utility::flag_set("update_obj_pos_control_room_exit_2"); } //Function Number: 316 scene_control_room_ai() { maps\_utility::disable_surprise(); maps\_utility::disable_bulletwhizbyreaction(); maps\_utility::disable_pain(); level waittill("control_room_scene_complete"); maps\_utility::enable_surprise(); maps\_utility::enable_bulletwhizbyreaction(); maps\_utility::enable_pain(); } //Function Number: 317 scene_control_room_fade_up() { if(!isdefined(level.overlay)) { level.overlay = maps\_hud_util::create_client_overlay("black",1,level.player); level.overlay.sort = -1; level.overlay.foreground = 1; level.overlay.color = (0,0,0); } wait(1); var_00 = 1; level.overlay fadeovertime(var_00); level.overlay.alpha = 0; wait(var_00); level.overlay destroy(); } //Function Number: 318 evacuation_setup() { common_scripts\utility::flag_wait("evacuation_started"); thread evacuation_corpses(); } //Function Number: 319 dialog_meltdown() { thread dialog_collapse(); level endon("collapse_start"); common_scripts\utility::flag_wait("hangar_enemies"); level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_gideontangosarebailinout"); level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_soarewekeepmoving"); common_scripts\utility::flag_wait("hangar_combat_retreat"); level.carter maps\fusion_vo::dialogue_queue_global("fus_ctr_jokerwhatsyourgeigerreading"); level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_weregoodjustkeepshooting"); common_scripts\utility::flag_wait("hangar_combat_retreat_02"); level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_prophetwevegotkvaextraction"); maps\fusion_vo::radio_dialogue_queue_global("fus_prt_affirmativebravoone"); common_scripts\utility::flag_wait("hangar_exit_retreat"); level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_wraithtwothreeweneedimmediate"); maps\fusion_vo::radio_dialogue_queue_global("fus_ch1_copybravooneinboundinthirty"); maps\fusion_vo::radio_dialogue_queue_global("fus_prt_bravopressurereadingsarecritical"); soundscripts\_snd::snd_music_message("mus_fusion_pressure_readings_critical"); level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_youheardtheman"); common_scripts\utility::flag_wait("reaction_explo01a"); wait(0.75); level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_goddamn2"); level.carter maps\fusion_vo::dialogue_queue_global("fus_ctr_whatthehellwasthat"); level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_pressureexplosions"); common_scripts\utility::flag_wait("ct_combat_retreat"); wait(2); common_scripts\utility::flag_wait("reaction_explo01"); wait(2); if(level.nextgen) { maps\fusion_vo::radio_dialogue_queue_global("fus_ch1_bravothisiswraithtwothree"); level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_youreadamnwelcomesight"); } common_scripts\utility::flag_wait("reaction_explo02"); wait(4); common_scripts\utility::flag_set("extraction_chopper_move_from_explosion"); maps\fusion_vo::radio_dialogue_queue_global("fus_ch1_bravowecantgetnear"); level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_copythattwothree"); level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_comeon"); level.carter maps\fusion_vo::dialogue_queue_global("fus_ctr_gogo"); common_scripts\utility::flag_wait("ct_final_retreat"); level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_theresourexfil"); } //Function Number: 320 dialog_monitor_drones_down() { common_scripts\utility::flag_wait("evacuation_first_drones_down"); if(!common_scripts\utility::flag("reaction_explo01") && !common_scripts\utility::flag("collapse_start")) { level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_dronesaredown"); } } //Function Number: 321 dialog_collapse() { common_scripts\utility::flag_wait("tower_debris"); } //Function Number: 322 outro_newscast() { } //Function Number: 323 combat_hangar() { var_00 = getentarray("hangar_enemies_01","targetname"); var_01 = getentarray("ct_enemies_01","targetname"); var_02 = getentarray("hangar_runaway","targetname"); var_03 = getentarray("hangar_runaway_02","targetname"); common_scripts\utility::array_thread(var_00,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death); common_scripts\utility::array_thread(var_01,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death); common_scripts\utility::array_thread(var_02,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death); common_scripts\utility::array_thread(var_03,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death); level.hangar_enemies = []; common_scripts\utility::flag_wait("hangar_combat_start"); if(level.currentgen) { var_04 = ["hanger_enemies"]; thread maps\_cg_encounter_perf_monitor::cg_spawn_perf_monitor("collapse_start",var_04,12,0); } var_05 = maps\_utility::array_spawn(var_02,1,1); common_scripts\utility::array_thread(var_05,::runaway_guy_delete); common_scripts\utility::flag_wait("hangar_enemies"); level.carter.dontmelee = 1; level.joker.dontmelee = 1; maps\_spawner::flood_spawner_scripted(var_00); common_scripts\utility::flag_wait("hangar_combat_retreat"); level.carter.dontmelee = undefined; level.joker.dontmelee = undefined; common_scripts\utility::flag_set("hangar_retreat_done"); common_scripts\utility::array_thread(level.hangar_enemies,::enemy_run_away,"vol_final_runaway",1); common_scripts\utility::flag_wait("hangar_combat_retreat_02"); level.ct_enemies = maps\_utility::array_spawn(var_01,1,1); var_06 = maps\_utility::array_spawn(var_03,1,1); common_scripts\utility::array_thread(level.ct_enemies,::maps\_utility::flagwaitthread,"reaction_explo01a",::enemy_run_away,"vol_ct_02",0); common_scripts\utility::flag_wait("ct_combat_retreat"); common_scripts\utility::flag_wait("reaction_explo01"); maps\_utility::autosave_by_name(); if(level.nextgen) { var_07 = getentarray("ct_runaway_drones","targetname"); common_scripts\utility::array_thread(var_07,::runaway_drone_think); } var_08 = getentarray("final_collapse_enemies","targetname"); maps\_utility::flood_spawn(var_08); common_scripts\utility::flag_wait("ct_final_retreat"); common_scripts\utility::array_thread(var_08,::maps\_spawner::flood_spawner_stop); } //Function Number: 324 extraction_chopper() { common_scripts\utility::flag_wait("reaction_explo01"); if(level.nextgen) { level.extraction_chopper = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("ct_extraction_chopper"); level.extraction_chopper soundscripts\_snd::snd_message("extraction_chopper_spawn"); level.extraction_chopper thread warbird_shooting_think(); level.extraction_chopper setmaxpitchroll(20,60); level.extraction_chopper maps\_vehicle::vehicle_lights_on("running"); level.extraction_chopper vehicle_turnengineoff(); } wait(2); if(level.nextgen) { level.extraction_chopper notify("warbird_fire"); } wait(8); common_scripts\utility::flag_set("objective_on_extraction_chopper"); if(level.nextgen) { level.extraction_chopper setgoalyaw(330); level.extraction_chopper sethoverparams(50,50,25); common_scripts\utility::flag_wait("extraction_chopper_move_from_explosion"); level.extraction_chopper notify("warbird_stop_firing"); level.extraction_chopper soundscripts\_snd::snd_message("extraction_chopper_move"); level.extraction_chopper cleargoalyaw(); level.extraction_chopper maps\_vehicle::vehicle_paths(common_scripts\utility::getstruct("extraction_chopper_move_from_explosion","targetname")); } } //Function Number: 325 extraction_chopper_collapse() { common_scripts\utility::flag_wait("tower_debris"); wait(5); var_00 = common_scripts\utility::getstruct("extraction_chopper_final_path","targetname"); if(!isdefined(level.extraction_chopper)) { level.extraction_chopper = maps\_vehicle::spawn_vehicle_from_targetname("ct_extraction_chopper"); level.extraction_chopper vehicle_turnengineoff(); } level.extraction_chopper vehicle_setspeedimmediate(0); level.extraction_chopper vehicle_teleport(var_00.origin,var_00.angles); level.extraction_chopper maps\_vehicle::vehicle_paths(var_00); } //Function Number: 326 enemy_run_away(param_00,param_01) { if(!isdefined(self)) { return; } if(distance(self.origin,level.player.origin) <= 600) { return; } self notify("enemy_run_away"); self endon("enemy_run_away"); self endon("death"); self.ignoreall = 1; var_02 = getent(param_00,"targetname"); self cleargoalvolume(); self setgoalvolumeauto(var_02); if(isdefined(param_01) && param_01) { thread enemy_delete_at_goal(); } var_03 = 10000; for(;;) { common_scripts\utility::waittill_any("damage","bad_path"); level notify("ct_enemies_runaway_damage"); } } //Function Number: 327 enemy_delete_at_goal() { self notify("enemy_delete_at_goal"); self endon("enemy_delete_at_goal"); self endon("death"); self waittill("goal"); if(isdefined(self) && isalive(self)) { self delete(); } } //Function Number: 328 hangar_enemy_think() { level.hangar_enemies[level.hangar_enemies.size] = self; self cleargoalvolume(); if(!common_scripts\utility::flag("hangar_retreat_done")) { self setgoalvolumeauto(getent("vol_enemy_hangar","targetname")); return; } self setgoalvolumeauto(getent("vol_ct_01","targetname")); } //Function Number: 329 runaway_guy_delete() { self endon("death"); self waittill("goal"); if(isdefined(self) && isalive(self)) { self delete(); } } //Function Number: 330 runaway_drone_think() { var_00 = maps\_utility::spawn_ai(1); var_00 thread runaway_guy_delete(); var_00 endon("death"); common_scripts\utility::flag_wait("collapse_start"); var_00 kill(); } //Function Number: 331 add_drone_to_squad() { if(isdefined(self.script_parameters) && self.script_parameters == "personal_drone") { var_00 = getent("squad_drone_spawner","targetname"); maps\_weapon_pdrone::pdrone_launch(var_00); if(isdefined(self.pdrone)) { self.pdrone setthreatbiasgroup("drones"); self.pdrone thread cleanup_squad_drone(); } } } //Function Number: 332 cleanup_squad_drone() { if(level.nextgen) { level waittill("street_cleanup"); } else { level waittill("tff_pre_transition_intro_to_middle"); } self delete(); } //Function Number: 333 reaction_explosions() { if(level.currentgen) { common_scripts\utility::flag_wait("hangar_enemies"); } var_00 = getentarray("pressure_explosion_1_before","targetname"); var_01 = getentarray("pressure_explosion_1_after","targetname"); var_02 = getentarray("pressure_explosion_2_before","targetname"); var_03 = getentarray("pressure_explosion_2_after","targetname"); common_scripts\utility::array_call(var_01,::hide); common_scripts\utility::array_call(var_01,::notsolid); common_scripts\utility::array_call(var_03,::hide); common_scripts\utility::array_call(var_03,::notsolid); var_04 = getent("explosion_cart","targetname"); var_04.animname = "cart"; var_04 maps\_anim::setanimtree(); var_05 = getent("fusion_utility_cart_collision","targetname"); var_05 linkto(var_04,"TAG_ORIGIN"); var_06 = getent("org_reaction_pickup_event","targetname"); var_07 = "fusion_utility_cart_explode_cart"; thread reaction_pickup_event(); if(level.nextgen) { common_scripts\utility::flag_wait("hangar_enemies"); } wait(1.5); common_scripts\utility::flag_wait("reaction_explo01a"); common_scripts\utility::array_call(var_00,::delete); common_scripts\utility::array_call(var_01,::show); common_scripts\utility::array_call(var_01,::solid); thread pressure_explosion_damage(1); level thread maps\fusion_fx::big_pipe_explosion_vfx_after_hangar(); wait(0.5); common_scripts\utility::flag_wait("reaction_explo01"); wait(0.5); common_scripts\utility::array_call(var_02,::delete); common_scripts\utility::array_call(var_03,::show); common_scripts\utility::array_call(var_03,::solid); thread pressure_explosion_damage(2); var_04 setmodel("vehicle_ind_utility_tractor_01_dstrypv"); var_06 thread maps\_anim::anim_single_solo(var_04,var_07); thread explosion_cart_kill_trigger(); var_04 thread maps\fusion_fx::underground_pipe_explosion_utility_truck_vfx(); var_06 waittill(var_07); var_05 disconnectpaths(); } //Function Number: 334 explosion_cart_kill_trigger() { wait(0.75); var_00 = common_scripts\utility::getstruct("explosion_cart_kill_struct","targetname"); radiusdamage(var_00.origin,var_00.radius,300,300,undefined); } //Function Number: 335 pressure_explosion_damage(param_00) { var_01 = common_scripts\utility::getstruct("pressure_explosion_" + param_00 + "_damage","targetname"); playrumbleonposition("grenade_rumble",var_01.origin); radiusdamage(var_01.origin,var_01.radius,300,300,undefined,"MOD_EXPLOSIVE"); } //Function Number: 336 reaction_pickup_event() { var_00 = getentarray("crater_models","targetname"); var_00 = common_scripts\utility::array_add(var_00,getent("crater_brush","targetname")); var_01 = getent("crater_brush_surface","targetname"); var_02 = getent("crater_connectpaths","targetname"); var_03 = getent("explosion_pickup_intact","targetname"); var_04 = getent("explosion_pickup","targetname"); var_04.animname = "pickup"; var_04 maps\_anim::setanimtree(); var_04 hide(); foreach(var_06 in var_00) { var_06 hide(); } var_08 = getent("truck_flip_collision","targetname"); var_08 disconnectpaths(); var_09 = []; var_09[var_09.size] = var_04; var_0A = getent("org_reaction_pickup_event","targetname"); var_0A maps\_anim::anim_first_frame(var_09,"fusion_reaction_pickup_event"); common_scripts\utility::flag_wait("reaction_explo02"); var_08 connectpaths(); var_08 delete(); var_0A thread maps\_anim::anim_single(var_09,"fusion_reaction_pickup_event"); var_04 thread reaction_pickup_queue_explosion(); var_04 thread reaction_pickup_player_proximity(); level waittill("truck_explosion"); var_03 hide(); var_04 show(); var_01 hide(); var_01 notsolid(); var_02 solid(); var_02 disconnectpaths(); common_scripts\utility::array_call(var_00,::show); var_04 thread maps\fusion_fx::underground_pipe_explosion_pickup_truck_vfx(); thread pressure_explosion_damage(3); wait(0.8); radiusdamage(var_04.origin,220,200,100,undefined,"MOD_EXPLOSIVE"); wait(0.3); radiusdamage(var_04.origin,180,200,100,undefined,"MOD_EXPLOSIVE"); } //Function Number: 337 reaction_pickup_queue_explosion() { level endon("truck_explosion"); self waittillmatch("truck_explosion","single anim"); level notify("truck_explosion"); } //Function Number: 338 reaction_pickup_player_proximity() { level endon("truck_explosion"); var_00 = 202500; for(;;) { if(distancesquared(self.origin,level.player.origin) < var_00) { var_01 = []; var_01[0] = self; maps\_anim::anim_set_time(var_01,"fusion_reaction_pickup_event",0.43); level notify("truck_explosion"); } wait(0.05); } } //Function Number: 339 reaction_ai() { var_00 = getentarray("ct_enemies_runaway","targetname"); common_scripts\utility::flag_wait("ct_combat_retreat"); common_scripts\utility::array_thread(var_00,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death); var_01 = maps\_utility::array_spawn(var_00); common_scripts\utility::flag_wait("reaction_explo01"); common_scripts\utility::array_thread(level.ct_enemies,::enemy_run_away,"vol_final_runaway",1); common_scripts\utility::array_thread(var_01,::enemy_run_away,"vol_final_runaway",1); var_02 = getentarray("ct_runaway_enemies","targetname"); common_scripts\utility::array_thread(var_02,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death); var_02 = maps\_utility::array_spawn(var_02); common_scripts\utility::flag_wait("reaction_explo02"); thread ct_enemies_final_runaway_faceplayer(var_00); var_03 = getentarray("ct_enemies_final_runaway","targetname"); common_scripts\utility::array_thread(var_03,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death); var_04 = maps\_utility::array_spawn(var_03,1,1); common_scripts\utility::flag_wait("ct_final_retreat"); var_05 = getaiarray("axis"); common_scripts\utility::array_thread(var_05,::enemy_run_away,"vol_final_runaway",1); } //Function Number: 340 ct_enemies_runaway_faceplayer() { common_scripts\utility::flag_wait("kva_retreat_faceplayer"); var_00 = getentarray("ct_runaway_enemies_backup","script_noteworthy"); foreach(var_02 in var_00) { if(isalive(var_02)) { var_02 thread maps\_utility::player_seek_enable(); } } } //Function Number: 341 ct_enemies_final_runaway_faceplayer(param_00) { self notify("enemy_aggro"); self endon("enemy_aggro"); sortbydistance(param_00,level.player.origin); level waittill("ct_enemies_runaway_damage"); } //Function Number: 342 finale_enemy_transports() { if(isdefined(level.start_point) && level.start_point == "cooling_tower") { return; } common_scripts\utility::flag_wait("evacuation_started"); var_00 = maps\_vehicle::spawn_vehicle_from_targetname("ct_enemy_transport_01"); var_00 maps\_vehicle::godon(); var_00 thread tigger_hurt_rotor(); var_00 setmaxpitchroll(30,30); var_00 maps\_vehicle::vehicle_lights_on("running"); var_00.snd_disable_vehicle_system = 1; var_01 = maps\_vehicle::spawn_vehicle_from_targetname("ct_enemy_transport_02"); var_01 maps\_vehicle::godon(); var_01 setmaxpitchroll(30,40); var_00 maps\_vehicle::vehicle_lights_on("running"); var_01.snd_disable_vehicle_system = 1; common_scripts\utility::flag_wait("hangar_enemies"); var_00.snd_disable_vehicle_system = 0; var_01.snd_disable_vehicle_system = 0; common_scripts\utility::flag_wait("hangar_combat_retreat_02"); if(level.nextgen) { maps\_utility::delaythread(1,::spawn_transport_flying_01); } common_scripts\utility::flag_wait("hangar_exit_retreat"); maps\_utility::autosave_by_name(); if(level.nextgen) { maps\_utility::delaythread(1,::spawn_transport_flying_02); } level.get_pdrone_crash_location_override = ::get_pdrone_crash_location_override; var_02 = vehicle_scripts\_pdrone::start_flying_attack_drones("kva_retreat_drones"); foreach(var_04 in var_02) { var_04 thread maps\_shg_utility::make_emp_vulnerable(); var_04 thread drone_delete_at_goal(); } maps\_vehicle::gopath(var_00); soundscripts\_snd::snd_message("hangar_transport_01_away",var_00); common_scripts\utility::flag_wait("ct_combat_retreat"); var_06 = vehicle_scripts\_pdrone::start_flying_attack_drones("kva_retreat_drones_02"); foreach(var_04 in var_06) { var_04 thread maps\_shg_utility::make_emp_vulnerable(); var_04 thread drone_delete_at_goal(); } maps\_vehicle::gopath(var_01); common_scripts\utility::flag_wait("reaction_explo01"); var_09 = vehicle_scripts\_pdrone::start_flying_attack_drones("kva_retreat_drones_03"); foreach(var_04 in var_09) { var_04 thread maps\_shg_utility::make_emp_vulnerable(); var_04 thread drone_delete_at_goal(); } common_scripts\utility::flag_wait("reaction_explo02"); foreach(var_04 in var_02) { if(isdefined(var_04) && isalive(var_04)) { var_04 common_scripts\utility::delaycall(randomfloatrange(0.05,10),::kill); } } level waittill("truck_explosion"); foreach(var_04 in var_06) { if(isdefined(var_04) && isalive(var_04)) { var_04 common_scripts\utility::delaycall(randomfloatrange(0.05,1),::kill); } } foreach(var_04 in var_09) { if(isdefined(var_04) && isalive(var_04)) { var_04 common_scripts\utility::delaycall(randomfloatrange(0.05,1),::kill); } } } //Function Number: 343 tigger_hurt_rotor() { var_00 = getent("trig_hurt_transport_01","targetname"); var_00 enablelinkto(); var_00 linkto(self); self waittill("death"); var_00 unlink(); var_00 delete(); } //Function Number: 344 spawn_transport_flying_01() { var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("ct_enemy_transport_flying_01"); foreach(var_02 in var_00) { var_02 maps\_vehicle::godon(); } soundscripts\_snd::snd_message("hangar_transport_flying_01_away",var_00[0]); } //Function Number: 345 spawn_transport_flying_02() { var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("ct_enemy_transport_flying_02"); foreach(var_02 in var_00) { var_02 maps\_vehicle::godon(); } soundscripts\_snd::snd_message("hangar_transport_flying_02_away",var_00[0]); } //Function Number: 346 evacuation_first_drones_think() { level endon("collapse_start"); self waittill("death"); if(!isdefined(level.evacuation_first_drones_dead)) { level.evacuation_first_drones_dead = 0; } level.evacuation_first_drones_dead++; if(level.evacuation_first_drones_dead >= 5) { common_scripts\utility::flag_set("evacuation_first_drones_down"); } } //Function Number: 347 kva_retreat_drones_animated() { var_00 = getent("drone_deploy_run_npc","targetname"); var_01 = getent("drone_deploy_crouch_npc","targetname"); thread kva_retreat_drone_think(var_00,0); thread kva_retreat_drone_think(var_01,0,"Cover Crouch"); } //Function Number: 348 kva_retreat_drone_think(param_00,param_01,param_02) { var_03 = param_00 maps\_utility::spawn_ai(1); var_03.animname = "generic"; var_04 = common_scripts\utility::getstruct(param_00.target,"targetname"); var_05 = spawn("script_origin",var_04.origin); var_05.angles = var_04.angles; var_06 = getent(var_04.target,"targetname"); var_07 = getsubstr(var_04.animation,0,var_04.animation.size - 4); var_08 = spawn("script_model",var_03 gettagorigin("TAG_STOWED_BACK")); var_08 setmodel(var_06.model); var_08.angles = var_03 gettagangles("TAG_STOWED_BACK"); var_08 linkto(var_03,"TAG_STOWED_BACK"); var_08.animname = "personal_drone"; var_08 useanimtree(level.scr_animtree["personal_drone"]); var_08 thread maps\_anim::anim_loop_solo(var_08,"personal_drone_folded_idle"); if(isdefined(param_02)) { var_05 maps\_anim::anim_reach_and_approach_solo(var_03,var_07,undefined,"Cover Crouch"); } else { var_05 maps\_anim::anim_generic_reach(var_03,var_07); } var_05 maps\_anim::anim_generic_reach(var_03,var_07); if(param_01) { var_05 thread maps\_anim::anim_generic_run(var_03,var_07); } else { var_05 thread maps\_anim::anim_generic(var_03,var_07); } var_06.origin = var_08.origin; var_06.angles = var_08.angles; var_09 = var_06 maps\_utility::spawn_vehicle(); var_08 delete(); var_09.animname = "personal_drone"; var_05 maps\_anim::anim_single_solo(var_09,var_07); if(isdefined(var_09.target)) { var_09 maps\_vehicle::gopath(); } if(var_09.script_team == "axis") { var_09 thread maps\_shg_utility::make_emp_vulnerable(); } } //Function Number: 349 get_pdrone_crash_location_override() { level.get_pdrone_crash_location_override = undefined; return level.player.origin + 200 * anglestoforward(level.player.angles); } //Function Number: 350 finale_enemy_gaz() { common_scripts\utility::flag_wait("evacuation_started"); if(isdefined(level.start_point) && level.start_point != "cooling_tower") { if(level.nextgen) { thread finale_enemy_gaz_1(); } } var_00 = maps\_vehicle::spawn_vehicle_from_targetname("retreat_gaz_02"); var_01 = maps\_vehicle::spawn_vehicle_from_targetname("retreat_gaz_03"); var_00 maps\_vehicle::godon(); var_01 maps\_vehicle::godon(); common_scripts\utility::flag_wait("ct_final_retreat"); wait(1); soundscripts\_snd::snd_message("start_gaz_02_retreat",var_00); maps\_vehicle::gopath(var_00); wait(1.5); soundscripts\_snd::snd_message("start_gaz_03_retreat",var_01); maps\_vehicle::gopath(var_01); } //Function Number: 351 finale_enemy_gaz_1() { var_00 = maps\_vehicle::spawn_vehicle_from_targetname("retreat_gaz_01"); var_00 maps\_vehicle::godon(); var_00.snd_disable_vehicle_system = 1; common_scripts\utility::flag_wait("hangar_enemies"); var_00.snd_disable_vehicle_system = 0; common_scripts\utility::flag_wait("stop_ambient_explosions"); wait(5); maps\_vehicle::gopath(var_00); } //Function Number: 352 cooling_tower_collapse() { var_00 = getentarray("collapse_geo_before","targetname"); var_01 = getentarray("collapse_geo_after","targetname"); common_scripts\utility::array_call(var_01,::hide); common_scripts\utility::array_call(var_01,::notsolid); var_02 = getentarray("cooling_tower_static","targetname"); thread cooling_tower_collapse_visibility(var_02); common_scripts\utility::flag_wait("collapse_start"); soundscripts\_snd::snd_message("tower_collapse_prep"); if(!isdefined(level.player_rig)) { level.player_rig = maps\_utility::spawn_anim_model("player_rig"); } var_03 = maps\_utility::spawn_anim_model("player_rig",(0,0,0)); var_03 hide(); var_04 = spawn("script_model",(0,0,0)); var_04 setmodel("fus_sever_debris"); var_04 hide(); var_04.animname = "collapse_debris_arm"; var_04 maps\_anim::setanimtree(); var_05 = maps\_utility::spawn_anim_model("fus_sever_debris_02"); var_05 hide(); var_06 = spawn("script_model",(0,0,0)); var_06 setmodel("fus_end_scene_rubble"); var_06 hide(); var_06.animname = "fus_end_scene_rubble"; var_06 maps\_anim::setanimtree(); var_07 = maps\_utility::spawn_anim_model("vehicle_xh9_warbird"); var_07 hide(); var_08 = maps\_utility::spawn_anim_model("fusion_chunk_combo"); var_09 = maps\_utility::spawn_anim_model("fusion_rock_chunk01"); var_0A = maps\_utility::spawn_anim_model("fusion_rock_chunk02"); var_0B = maps\_utility::spawn_anim_model("player_dismembered_arm"); var_0B hide(); var_0C = []; var_0C[0] = level.burke; var_0C[1] = level.player_rig; var_0C[2] = var_04; var_0C[3] = var_0B; var_0C[4] = var_06; var_0C[5] = var_05; var_0C[6] = var_08; var_0C[7] = var_09; var_0C[8] = var_0A; var_0D = []; var_0E = spawn("script_model",(0,0,0)); var_0E setmodel("fus_cooling_tower_collapse_chunks"); var_0E.animname = "fus_cooling_tower_collapse_chunks"; var_0E maps\_anim::setanimtree(); var_0D["chunks"] = var_0E; var_0E = spawn("script_model",(0,0,0)); var_0E setmodel("fus_cooling_tower_collapse_concrete_shattered"); var_0E.animname = "fus_cooling_tower_collapse_concrete_shattered"; var_0E maps\_anim::setanimtree(); var_0D["concrete_shattered"] = var_0E; var_0E = spawn("script_model",(0,0,0)); var_0E setmodel("fus_cooling_tower_collapse_concrete_shattered2"); var_0E.animname = "fus_cooling_tower_collapse_concrete_shattered2"; var_0E maps\_anim::setanimtree(); var_0D["concrete_shattered2"] = var_0E; var_0E = spawn("script_model",(0,0,0)); var_0E setmodel("fus_cooling_tower_collapse_street_collapse"); var_0E.animname = "fus_cooling_tower_collapse_street_collapse"; var_0E maps\_anim::setanimtree(); var_0D["street"] = var_0E; common_scripts\utility::array_call(var_0D,::hide); var_0F = maps\_utility::getanim_from_animname("fusion_silo_collapse_vm_pt02",level.player_rig.animname); var_10 = getanimlength(var_0F); var_11 = getangledelta(level.scr_anim["player_rig"]["fusion_silo_collapse_vm_pt02"],0,1); var_12 = getmovedelta(level.scr_anim["player_rig"]["fusion_silo_collapse_vm_pt02"],0,1); var_13 = getent("org_collapse_new","targetname"); level.player thread collapse_player_dynamic_speed(var_13); var_13 maps\_anim::anim_first_frame(var_0D,"fusion_collapse_ground_tower"); thread collapse_player_disable_exo_and_weapons(); level thread maps\fusion_fx::pressure_explosion_lead_up(); wait(1.1); level notify("collapse_animation_started"); soundscripts\_snd::snd_message("tower_collapse_start"); var_13 thread collapse_animate_lamps("fusion_collapse_ground_tower"); level thread maps\fusion_fx::big_moment_ending_vfx(var_0D); common_scripts\utility::array_call(var_02,::hide); common_scripts\utility::array_call(var_0D,::show); var_14 = getaiarray("axis"); foreach(var_16 in var_14) { var_16 kill(); } common_scripts\utility::array_thread(getentarray("collapse_stop_signs","targetname"),::collapse_stop_sign_think,var_13); common_scripts\utility::array_thread(getaiarray("allies"),::collapse_friendly_think,var_13); var_13 thread maps\_anim::anim_single(var_0D,"fusion_collapse_ground_tower"); common_scripts\utility::flag_wait("tower_knockback"); thread tower_collapse_knockback_disable_sonar(); thread collapse_shellshock(); soundscripts\_snd::snd_message("tower_collapse_player_stumble"); var_13 maps\_utility::delaythread(1,::maps\_anim::anim_first_frame_solo,level.burke,"fusion_silo_stumble_npc"); level.burke common_scripts\utility::delaycall(1,::hide); common_scripts\utility::noself_delaycall(1,::setsaveddvar,"g_friendlynamedist",0); level.burke common_scripts\utility::delaycall(1,::setcontents,0); level.player thread maps\_shg_utility::setup_player_for_scene(); level.player maps\_anim::anim_first_frame_solo(level.player_rig,"fusion_silo_collapse_vm_pt01"); var_18 = 0.5; level.player playerlinktoblend(level.player_rig,"tag_player",var_18); level.player common_scripts\utility::delaycall(var_18,::playerlinktodelta,level.player_rig,"tag_player",1,5,5,5,5,1); level.player_rig common_scripts\utility::delaycall(var_18,::show); var_19 = "fusion_silo_collapse_vm_pt01"; maps\_utility::delaythread(1,::common_scripts\utility::array_call,var_00,::delete); maps\_utility::delaythread(1,::common_scripts\utility::array_call,var_01,::show); maps\_utility::delaythread(1,::common_scripts\utility::array_call,var_01,::solid); thread maps\_utility::lerp_fov_overtime(3,75); var_1A = getanimlength(level.player_rig maps\_utility::getanim(var_19)); level.player common_scripts\utility::delaycall(var_1A - 0.5,::enableweapons); level.player thread collapse_player_look_at_tower(var_19,var_13.origin); level.player maps\_anim::anim_single_solo(level.player_rig,var_19); level.player thread maps\_shg_utility::setup_player_for_gameplay(); level.player_rig hide(); level.player unlink(); thread collapse_player_disable_exo_and_weapons(); common_scripts\utility::flag_wait("tower_debris"); soundscripts\_snd::snd_message("tower_collapse_player_knockback"); wait(0.3); level.player disableweapons(); thread maps\_utility::lerp_fov_overtime(3,65); level.player thread maps\_shg_utility::setup_player_for_scene(); level.player maps\_anim::anim_first_frame_solo(level.player_rig,"fusion_silo_collapse_vm_pt02"); var_13 maps\_anim::anim_first_frame_solo(level.burke,"fusion_silo_collapse_finale"); var_13 maps\_anim::anim_first_frame_solo(var_07,"fusion_silo_collapse_warbird"); var_1B = combineangles(level.player_rig.angles,(0,0,var_11)); var_1C = level.player_rig.origin + var_12[0] * anglestoforward(level.player_rig.angles) + var_12[1] * anglestoright(level.player_rig.angles) + var_12[2] * anglestoup(level.player_rig.angles); var_1D = var_03.origin - var_1C; var_1E = var_03.angles - var_1B; level.player_rig.angles = (0,vectortoangles(var_13.origin - level.player.origin)[1],0); level.player_rig.origin = level.player.origin; var_18 = 0.5; level.player playerlinktoblend(level.player_rig,"tag_player",var_18); level.player common_scripts\utility::delaycall(var_18,::playerlinktodelta,level.player_rig,"tag_player",1,20,20,20,0,1); level.player_rig common_scripts\utility::delaycall(var_18,::show); level.player freezecontrols(1); level.player_rig maps\_anim::anim_single_solo(level.player_rig,"fusion_silo_collapse_vm_pt02"); level notify("stop_player_pos_update"); soundscripts\_snd::snd_message("silo_collapse_plr_stunned"); var_06 show(); soundscripts\_snd::snd_message("fus_outro_burke_foley"); var_07 show(); level.burke show(); var_1F = common_scripts\utility::spawn_tag_origin(); var_1F linkto(var_07,"TAG_light_body_l",(10,0,-20),(14,110,0)); playfxontag(common_scripts\utility::getfx("fusion_light_heli_strobe_outro"),var_1F,"TAG_ORIGIN"); var_07 soundscripts\_snd::snd_message("fusion_silo_collapse_warbird"); var_13 thread maps\_anim::anim_single_solo(level.burke,"fusion_silo_collapse_finale"); var_13 thread maps\_anim::anim_single_solo(var_07,"fusion_silo_collapse_warbird"); var_13 thread maps\_anim::anim_single(var_0C,"fusion_silo_collapse_finale"); var_20 = maps\_utility::getanim_from_animname("fusion_silo_collapse_finale",level.player_rig.animname); level notify("stop_evacuation_kiosk_movie"); var_21 = getanimlength(var_20); wait(var_21 - 2); common_scripts\utility::flag_set("play_ending"); var_22 = 2; soundscripts\_snd::snd_message("ending_fade_out",var_22); maps\_utility::nextmission(); } //Function Number: 353 ending_fade_out(param_00) { setblur(10,param_00); var_01 = newhudelem(); var_01.x = 0; var_01.y = 0; var_01.horzalign = "fullscreen"; var_01.vertalign = "fullscreen"; var_01 setshader("black",640,480); if(isdefined(param_00) && param_00 > 0) { var_01.alpha = 0; var_01 fadeovertime(param_00); var_01.alpha = 1; wait(param_00); } waittillframeend; var_01 destroy(); } //Function Number: 354 collapse_shellshock() { var_00 = 10; level.player shellshock("fusion_pre_collapse",var_00); common_scripts\utility::flag_wait("tower_debris"); wait(1); var_00 = 7; level.player shellshock("fusion_collapse",var_00); wait(8); var_00 = 60; level.player shellshock("fusion_pre_collapse",var_00); } //Function Number: 355 collapse_friendly_think(param_00) { var_01 = 0.0005; var_02 = distance(self.origin,param_00.origin) * var_01 - 0.97; wait(var_02); maps\_utility::flashbangstart(4); if(self != level.burke) { common_scripts\utility::flag_wait("tower_knockback"); wait(3); maps\_utility::stop_magic_bullet_shield(); self delete(); } } //Function Number: 356 collapse_stop_sign_think(param_00) { var_01 = 0.0005; var_02 = distance(self.origin,param_00.origin) * var_01 - 0.97; wait(var_02); var_03 = getent(self.target,"targetname"); var_03 linkto(self); var_04 = vectortoangles(param_00.origin - self.origin); if(self.angles[1] - var_04[1] > -180) { var_05 = var_04 + (0,-90,90); } else { var_05 = var_05 + (0,90,-90); } var_06 = 0.3; self rotateto(var_05,var_06,0.1,0); wait(var_06); var_03 delete(); self delete(); } //Function Number: 357 collapse_animate_lamps(param_00) { var_01 = getentarray("collapse_streetlight","targetname"); foreach(var_03 in var_01) { if(isdefined(var_03)) { var_03 delete(); } } var_05 = []; for(var_06 = 1;var_06 < 10;var_06++) { var_05[var_05.size] = maps\_utility::spawn_anim_model("fusion_silo_lamp0" + var_06); } for(var_06 = 0;var_06 <= 5;var_06++) { var_05[var_05.size] = maps\_utility::spawn_anim_model("fusion_silo_lamp1" + var_06); } maps\_anim::anim_single(var_05,param_00); } //Function Number: 358 cooling_tower_collapse_visibility(param_00) { level endon("collapse_start"); common_scripts\utility::array_call(param_00,::hide); for(;;) { common_scripts\utility::flag_wait("show_collapse_tower"); common_scripts\utility::array_call(param_00,::show); common_scripts\utility::flag_waitopen("show_collapse_tower"); common_scripts\utility::array_call(param_00,::hide); } } //Function Number: 359 grey_out_player() { var_00 = maps\_hud_util::create_client_overlay("white",0,level.player); var_00.sort = -1; var_00.foreground = 1; var_00.color = (0.6,0.6,0.6); var_01 = 0.1; var_02 = 1; var_00 fadeovertime(var_01); var_00.alpha = var_02; wait(var_01); var_01 = 0.05; wait(var_01); var_01 = 0.1; var_02 = 0; var_00 fadeovertime(var_01); var_00.alpha = var_02; wait(var_01); var_00 destroy(); } //Function Number: 360 collapse_player_dynamic_speed(param_00) { level endon("stop_player_pos_update"); var_01 = 2636; var_02 = 4000; var_03 = var_02 - var_01; var_04 = 0.05; var_05 = 1; for(;;) { var_06 = distance(level.player.origin,param_00.origin) - var_01 / var_03; if(var_06 < var_04) { var_06 = var_04; } else if(var_06 > var_05) { var_06 = var_05; } level.player setmovespeedscale(var_06); wait(0.05); } level.player maps\_utility::blend_movespeedscale_percent(50,3); } //Function Number: 361 collapse_player_disable_exo_and_weapons() { maps\_player_exo::player_exo_deactivate(); level.player disableweaponswitch(); level.player disableoffhandweapons(); level.player enableinvulnerability(); level.player allowjump(0); level.player.ignoreme = 1; } //Function Number: 362 collapse_player_look_at_tower(param_00,param_01) { var_02 = maps\_utility::getanim_from_animname(param_00,level.player_rig.animname); var_03 = getanimlength(var_02); var_04 = vectortoangles(param_01 - level.player.origin); level.player setplayerangles((0,var_04[1],0)); } //Function Number: 363 collapse_cleanup() { wait(1); var_00 = getaiarray(); foreach(var_02 in var_00) { if(isdefined(var_02.magic_bullet_shield) && var_02.magic_bullet_shield) { var_02 maps\_utility::stop_magic_bullet_shield(); } } common_scripts\utility::array_call(var_00,::delete); } //Function Number: 364 play_fullscreen_blood_splatter(param_00,param_01,param_02,param_03,param_04) { var_05 = newclienthudelem(self); var_05.x = 0; var_05.y = 0; var_05 setshader(param_00,640,480); var_05.splatter = 1; var_05.alignx = "left"; var_05.aligny = "top"; var_05.sort = 1; var_05.foreground = 0; var_05.horzalign = "fullscreen"; var_05.vertalign = "fullscreen"; var_05.alpha = 0; var_05.enablehudlighting = 1; var_06 = 0; if(!isdefined(param_02)) { param_02 = 1; } if(!isdefined(param_03)) { param_03 = 1; } if(!isdefined(param_04)) { param_04 = 1; } var_07 = 0.05; if(param_02 > 0) { var_08 = 0; var_09 = param_04 / param_02 / var_07; while(var_08 < param_04) { var_05.alpha = var_08; var_08 = var_08 + var_09; wait(var_07); } } var_05.alpha = param_04; wait(param_01 - param_02 + param_03); if(param_03 > 0) { var_08 = param_04; var_0A = param_04 / param_03 / var_07; while(var_08 > 0) { var_05.alpha = var_08; var_08 = var_08 - var_0A; wait(var_07); } } var_05.alpha = 0; var_05 destroy(); } //Function Number: 365 warbird_shooting_think(param_00) { level.player endon("death"); self endon("death"); self.mgturret[0] setmode("manual"); self.mgturret[1] setmode("manual"); if(!maps\_utility::ent_flag_exist("fire_turrets")) { maps\_utility::ent_flag_init("fire_turrets"); } maps\_utility::ent_flag_set("fire_turrets"); thread warbird_fire_monitor(); for(;;) { self waittill("warbird_fire"); thread warbird_fire(param_00); } } //Function Number: 366 warbird_fire(param_00) { self endon("death"); var_01 = self.mgturret[0]; var_02 = self.mgturret[1]; while(maps\_utility::ent_flag("fire_turrets")) { var_03 = getaiarray("axis"); if(isdefined(level.flying_attack_drones)) { var_04 = level.flying_attack_drones; } else { var_04 = []; } if(isdefined(level.drones) && isdefined(level.drones["axis"].array)) { var_03 = common_scripts\utility::array_combine(var_03,level.drones["axis"].array); } var_03 = common_scripts\utility::array_combine(var_03,var_04); var_05 = []; foreach(var_07 in var_03) { if(isdefined(var_07.ignoreme) && var_07.ignoreme) { continue; } else { var_05[var_05.size] = var_07; } } var_05 = sortbydistance(var_05,self.origin); var_09 = undefined; foreach(var_07 in var_05) { if(!isdefined(var_07)) { continue; } if(!isalive(var_07)) { continue; } if(isdefined(param_00) && param_00) { var_0B = self.mgturret[0] gettagorigin("tag_flash"); var_0C = var_07 geteye(); var_0D = vectornormalize(var_0C - var_0B); var_0E = var_0B + var_0D * 20; if(!sighttracepassed(var_0E,var_0C,0,var_07,self.mgturret[0])) { continue; } } var_09 = var_07; break; } if(isdefined(var_09)) { var_01 settargetentity(var_09); var_02 settargetentity(var_09); var_01 turretfireenable(); var_02 turretfireenable(); var_01 startfiring(); var_02 startfiring(); wait_for_warbird_fire_target_done(var_09,param_00); var_01 cleartargetentity(); var_02 cleartargetentity(); var_01 turretfiredisable(); var_02 turretfiredisable(); } wait(0.05); } var_01 turretfiredisable(); var_02 turretfiredisable(); } //Function Number: 367 wait_for_warbird_fire_target_done(param_00,param_01) { param_00 endon("death"); if(!maps\_utility::ent_flag("fire_turrets")) { return; } self endon("fire_turrets"); for(;;) { if(isdefined(param_01) && param_01) { var_02 = self.mgturret[0] gettagorigin("tag_flash"); var_03 = param_00 geteye(); var_04 = vectornormalize(var_03 - var_02); var_05 = var_02 + var_04 * 20; if(!sighttracepassed(var_05,var_03,0,param_00,self.mgturret[0])) { return; } } wait(0.3); } } //Function Number: 368 warbird_fire_monitor() { self endon("death"); self waittill("warbird_stop_firing"); maps\_utility::ent_flag_clear("fire_turrets"); } //Function Number: 369 heli_looking_at_target(param_00) { var_01 = 45; var_02 = cos(var_01); var_03 = anglestoforward(self.angles); var_04 = vectornormalize(param_00.origin - self.origin); if(vectordot(var_03,var_04) >= var_02) { return 1; } return 0; } //Function Number: 370 demo_skip_forward() { common_scripts\utility::flag_wait("start_itiot"); if(getdvarint("demo_itiot") == 1) { wait(0.5); level.overlay = maps\_hud_util::create_client_overlay("black",0,level.player); level.overlay.sort = -1; level.overlay.foreground = 1; level.overlay.color = (0,0,0); level.overlay fadeovertime(1); level.overlay.alpha = 1; soundscripts\_snd::snd_message("itiot_fade_out"); var_00 = []; var_00[0] = "In the interest of time..."; thread demo_feed_lines(var_00,1); wait(1); if(isdefined(level.player.drivingvehicle)) { level.player.drivingvehicle notify("exit_vehicle_dof"); level.player maps\_utility::player_dismount_vehicle(); } else if(isdefined(level.player.drivingvehicleandturret)) { level.player.drivingvehicleandturret notify("exit_vehicle_dof"); level.player.drivingvehicleandturret notify("dismount_vehicle_and_turret"); level.player.drivingvehicleandturret = undefined; } if(isdefined(level.alpha_leader)) { level.alpha_leader maps\_utility::stop_magic_bullet_shield(); } if(isdefined(level.joker)) { level.joker maps\_utility::stop_magic_bullet_shield(); } if(isdefined(level.carter)) { level.carter maps\_utility::stop_magic_bullet_shield(); } if(isdefined(level.burke)) { level.burke maps\_utility::stop_magic_bullet_shield(); } level.burke maps\_utility::anim_stopanimscripted(); level.joker maps\_utility::anim_stopanimscripted(); level notify("itiot_cleanup"); common_scripts\utility::array_call(getaiarray(),::delete); common_scripts\utility::array_call(getentarray("script_vehicle_x4walker_wheels_turret","classname"),::delete); if(isdefined(level.player.linked_to_cover)) { level.player.linked_to_cover vehicle_scripts\_cover_drone::player_unlink_from_cover(); } common_scripts\utility::array_call(getentarray("script_vehicle_cover_drone","classname"),::delete); common_scripts\utility::array_call(getentarray("mobile_turret","targetname"),::delete); common_scripts\utility::array_call(getentarray("script_vehicle_pdrone","classname"),::delete); level.player setstance("stand"); level.player freezecontrols(1); level.player maps\_utility::teleport_player(common_scripts\utility::getstruct("itiot_player_start","targetname")); level.player setplayerangles(level.player.angles + (7,0,0)); wait(4); soundscripts\_snd::snd_message("itiot_fade_in"); level.player freezecontrols(0); common_scripts\utility::flag_set("flag_shut_down_reactor_failed"); common_scripts\utility::flag_set("evacuation_started"); } } //Function Number: 371 demo_feed_lines(param_00,param_01) { var_02 = getarraykeys(param_00); for(var_03 = 0;var_03 < var_02.size;var_03++) { var_04 = var_02[var_03]; var_05 = var_03 * param_01 + 1; maps\_utility::delaythread(var_05,::centerlinethread,param_00[var_04],param_00.size - var_03 - 1,param_01,var_04); } } //Function Number: 372 centerlinethread(param_00,param_01,param_02,param_03) { level notify("new_introscreen_element"); var_04 = newhudelem(); var_04.x = 0; var_04.y = 0; var_04.alignx = "center"; var_04.aligny = "middle"; var_04.horzalign = "center"; var_04.vertalign = "middle_adjustable"; var_04.sort = 1; var_04.foreground = 1; var_04 settext(param_00); var_04.alpha = 0; var_04 fadeovertime(0.2); var_04.alpha = 1; var_04.hidewheninmenu = 1; var_04.fontscale = 2.4; var_04.color = (0.8,1,0.8); var_04.font = "objective"; var_04.glowcolor = (0.3,0.6,0.3); var_04.glowalpha = 1; var_05 = int(param_02 * 1000 + 4000); var_04 setpulsefx(30,var_05,700); thread maps\_introscreen::hudelem_destroy(var_04); if(!isdefined(param_03)) { return; } if(!isstring(param_03)) { return; } if(param_03 != "date") { } } //Function Number: 373 introscreen_generic_fade_out(param_00,param_01,param_02,param_03) { if(!isdefined(param_02)) { param_02 = 1.5; } var_04 = newhudelem(); var_04.x = 0; var_04.y = 0; var_04.horzalign = "fullscreen"; var_04.vertalign = "fullscreen"; var_04.foreground = 1; var_04 setshader(param_00,640,480); if(isdefined(param_03) && param_03 > 0) { var_04.alpha = 0; var_04 fadeovertime(param_03); var_04.alpha = 1; wait(param_03); } wait(param_01); if(isdefined(param_02) && param_02 > 0) { var_04.alpha = 1; var_04 fadeovertime(param_02); var_04.alpha = 0; } var_04 destroy(); } //Function Number: 374 prep_cinematic(param_00) { setsaveddvar("cg_cinematicFullScreen","0"); cinematicingame(param_00,1); level.current_cinematic = param_00; } //Function Number: 375 play_cinematic(param_00,param_01,param_02) { if(!isdefined(param_01)) { soundscripts\_audio::deprecated_aud_send_msg("begin_cinematic",param_00); } if(isdefined(level.current_cinematic)) { pausecinematicingame(0); setsaveddvar("cg_cinematicFullScreen","1"); level.current_cinematic = undefined; } else { cinematicingame(param_00); } if(!isdefined(param_02) || !param_02) { setsaveddvar("cg_cinematicCanPause","1"); } wait(1); while(iscinematicplaying()) { wait(0.05); } if(!isdefined(param_02) || !param_02) { setsaveddvar("cg_cinematicCanPause","0"); } if(!isdefined(param_01)) { soundscripts\_audio::deprecated_aud_send_msg("end_cinematic",param_00); } } //Function Number: 376 setup_evacuation_scene() { maps\_drone_civilian::init(); maps\_drone_ai::init(); level.evacuation_scene_spawners = []; level.evacuation_scene_spawners["civilian"] = getentarray("evacuation_scene_spawners_civilians","targetname"); level.evacuation_scene_spawners["axis"] = getentarray("evacuation_scene_spawners_axis","targetname"); level.evacuation_scene_index = []; level.evacuation_scene_index["civilian"] = 0; level.evacuation_scene_index["axis"] = 0; level.scr_anim["civilian"]["civilian_run_hunched_A_relative"] = %civilian_run_hunched_a_relative; level.scr_anim["civilian"]["civilian_run_upright_relative"] = %civilian_run_upright_relative; level.scr_anim["civilian"]["unarmed_scared_run"] = %unarmed_scared_run; level.scr_anim["civilian"]["civilian_leaning_death"] = %civilian_leaning_death; level.scr_anim["civilian"]["DC_Burning_bunker_stumble"] = %dc_burning_bunker_stumble; level.scr_anim["civilian"]["civilian_run_upright_turnL90"] = %civilian_run_upright_turnl90; level.scr_anim["civilian"]["civilian_run_hunched_turnL90_slide"] = %civilian_run_hunched_turnl90_slide; thread handle_evacuation_scene_triggers(); } //Function Number: 377 handle_evacuation_scene_triggers() { var_00 = getentarray("evacuation_scene_trigger","script_noteworthy"); common_scripts\utility::array_thread(var_00,::evacuation_scene_trigger_think); } //Function Number: 378 evacuation_scene_trigger_think() { var_00 = common_scripts\utility::getstructarray(self.target,"targetname"); self waittill("trigger",var_01); common_scripts\utility::flag_set("hangar_exit_explosion"); foreach(var_03 in var_00) { var_03 thread evacuation_scene_think(); } } //Function Number: 379 evacuation_scene_think() { var_00 = get_evacuation_scene_spawner(self.script_parameters); if(isdefined(self.script_delay)) { wait(self.script_delay); } if(isdefined(self.script_noteworthy) && self.script_noteworthy == "runner") { var_00.target = self.target; var_01 = var_00 maps\_utility::spawn_ai(1); var_00.target = undefined; var_01.origin = self.origin; var_01.no_friendly_fire_penalty = 1; var_01 thread evacuation_scene_run_actor(self.animation,self.script_parameters); return; } if(isdefined(self.script_noteworthy) && self.script_noteworthy == "run_and_die") { var_01.target = self.target; var_01 = var_01 maps\_utility::spawn_ai(1); var_00.target = undefined; var_01.origin = self.origin; var_01.no_friendly_fire_penalty = 1; var_01 thread evacuation_scene_run_actor_and_die(self.animation,self.script_parameters); return; } if(isdefined(self.script_noteworthy) && self.script_noteworthy == "anim_then_run") { var_01.target = self.target; var_01.script_moveoverride = 1; var_01 = var_01 maps\_utility::spawn_ai(1); var_01.no_friendly_fire_penalty = 1; var_00.script_moveoverride = undefined; var_01.animname = self.script_parameters; var_02 = var_01 evacuation_scene_determine_run_cycle(self.animation); var_01 maps\_utility::set_run_anim_array(var_02,undefined,1); evacuation_scene_animate_actor(var_01); var_01 notify("move"); var_01 waittill("goal"); var_01 kill(); return; } var_01 = var_01 maps\_utility::spawn_ai(1); var_01.no_friendly_fire_penalty = 1; var_01.animname = self.script_parameters; thread evacuation_scene_animate_actor(var_01); } //Function Number: 380 get_evacuation_scene_spawner(param_00) { var_01 = level.evacuation_scene_spawners[param_00][level.evacuation_scene_index[param_00]]; level.evacuation_scene_index[param_00]++; if(level.evacuation_scene_index[param_00] >= level.evacuation_scene_spawners[param_00].size) { level.evacuation_scene_index[param_00] = 0; } return var_01; } //Function Number: 381 evacuation_scene_animate_actor(param_00) { param_00 endon("death"); param_00.allowdeath = 1; var_01 = self.animation; if(isarray(level.scr_anim[param_00.animname][var_01])) { var_02 = 1; thread maps\_anim::anim_generic_loop(param_00,var_01,"stop_idle"); return; } var_03 = issubstr(var_01,"death"); if(var_03) { param_00.skipdeathanim = 1; param_00.noragdoll = 1; } if(var_01 == "dubai_restaurant_rolling_soldier") { param_00 common_scripts\utility::delaycall(1.8,::startragdoll); } if(issubstr(var_01,"run")) { maps\_anim::anim_single_solo_run(param_00,var_01); } else { maps\_anim::anim_single_solo(param_00,var_01); } if(var_03) { param_00 kill(); } var_04 = var_01 + "_idle"; if(isdefined(level.scr_anim[param_00.animname][var_04])) { thread maps\_anim::anim_loop_solo(param_00,var_04,"stop_idle"); } } //Function Number: 382 evacuation_scene_run_actor(param_00,param_01) { self.runanim = level.scr_anim[param_01][param_00]; self waittill("goal"); self delete(); } //Function Number: 383 evacuation_scene_run_actor_and_die(param_00,param_01) { self waittill("goal"); self.animation = param_00; self.animname = param_01; var_02 = common_scripts\utility::getstruct(self.target,"targetname"); var_02 evacuation_scene_animate_actor(self); } //Function Number: 384 evacuation_scene_determine_run_cycle(param_00) { if(issubstr(param_00,"civilian_run_hunched")) { param_00 = "civilian_run_hunched_A_relative"; } else if(issubstr(param_00,"civilian_run_upright")) { param_00 = "civilian_run_upright_relative"; } else { } self.runanim = level.scr_anim[self.animname][param_00]; return param_00; } //Function Number: 385 evacuation_balcony_death() { common_scripts\utility::flag_wait("reaction_explo01"); var_00 = getent("evacuation_scene_civilian_balcony_death","targetname"); var_01 = common_scripts\utility::getstruct(var_00.target,"targetname"); var_02 = var_00 maps\_utility::spawn_ai(1); var_02.no_friendly_fire_penalty = 1; var_02.origin = var_01.origin; var_02.angles = var_01.angles; var_01 maps\_anim::anim_generic(var_02,"payback_comp_balcony_kick_enemy"); var_02 kill(level.player.origin); var_02 startragdoll(); } //Function Number: 386 evacuation_corpses() { var_00 = getent("evacuation_corpse_civilian","targetname"); var_01 = common_scripts\utility::getstructarray("evacuation_corpse","targetname"); foreach(var_03 in var_01) { if(!isdefined(var_03.script_parameters)) { continue; } var_04 = undefined; switch(var_03.script_parameters) { case "civilian": var_04 = var_00 maps\_utility::spawn_ai(); break; case "allies": case "axis": default: break; } if(!isdefined(var_04)) { continue; } var_04.origin = var_03.origin; var_04.angles = var_03.angles; var_04 setcandamage(0); var_05 = level.scr_anim["generic"][var_03.animation]; if(isarray(var_05)) { var_05 = var_05[0]; } var_04 animscripted("endanim",var_03.origin,var_03.angles,var_05); var_04 notsolid(); if(issubstr(var_03.animation,"death")) { var_04 common_scripts\utility::delaycall(0.05,::setanimtime,var_05,1); } } } //Function Number: 387 detect_turret_death() { self.deathfunction = ::set_turret_death_anim; } //Function Number: 388 set_turret_death_anim() { if(self.damageweapon == "none" && self.damagetaken > 100) { var_00 = animscripts\death::getstrongbulletdamagedeathanim(); if(isdefined(var_00)) { self.deathanim = var_00; } } return 0; } //Function Number: 389 smaw_laser_think() { for(;;) { level.player waittill("weaponchange"); if(level.player getcurrentweapon() == "smaw_nolock_fusion") { level.player laseron(); continue; } level.player laseroff(); } } //Function Number: 390 intro_heli_movies() { common_scripts\utility::flag_wait("intro_text_cinematic_over"); setsaveddvar("cg_cinematicFullScreen","0"); cinematicingameloop("fusion_heliscreen01"); level.burke waittillmatch("start_video_2","single anim"); stopcinematicingame(); cinematicingameloop("fusion_heliscreen02"); level.burke waittillmatch("start_video_3","single anim"); stopcinematicingame(); cinematicingame("fusion_heliscreen03"); wait(1.9); stopcinematicingame(); cinematicingameloop("fusion_heliscreen01"); wait(90); stopcinematicingame(); } //Function Number: 391 evacuation_kiosk_movie() { level endon("stop_evacuation_kiosk_movie"); setsaveddvar("cg_cinematicFullScreen","0"); var_00 = 0; for(;;) { var_01 = level.player.origin[0] < 7200; var_00 = var_00 && iscinematicplaying(); if(!var_00 && var_01) { cinematicingameloop("fusion_evacuation"); var_00 = 1; } else if(var_00 && !var_01) { stopcinematicingame(); var_00 = 0; } wait(0.5); } } //Function Number: 392 take_car_door_shields() { self notify("remove_car_doors"); } //Function Number: 393 drone_delete_at_goal() { self waittill("reached_path_end"); self delete(); } //Function Number: 394 give_night_vision(param_00) { level endon("flag_end_sonar_vision"); if(isdefined(param_00)) { common_scripts\utility::flag_wait(param_00); } level.player setweaponhudiconoverride("actionslot1","dpad_icon_nvg"); level.player notifyonplayercommand("sonar_vision","+actionslot 1"); level.player thread maps\fusion_utility::thermal_with_nvg(); } //Function Number: 395 sonar_hint() { level.player endon("death"); common_scripts\utility::flag_wait("turbine_room_combat_start"); wait(7); if(!maps\_nightvision::nightvision_check(level.player)) { maps\_utility::hintdisplaymintimehandler("hint_use_sonar",8); } } //Function Number: 396 tower_collapse_knockback_disable_sonar() { wait(1); maps\sanfran_b_sonar_vision::sonar_vision_off(); maps\fusion_utility::sonar_off(); common_scripts\utility::flag_set("flag_end_sonar_vision"); } //Function Number: 397 pdrone_deploy_hint() { level.player endon("death"); common_scripts\utility::flag_wait("turbine_room_combat_start"); wait(7); if(!common_scripts\utility::flag("flag_player_using_drone")) { maps\_utility::hintdisplaymintimehandler("drone_deploy_prompt",8); common_scripts\utility::flag_set("drone_deploy_prompt_displayed"); } } //Function Number: 398 pdrone_activate(param_00) { if(isdefined(param_00)) { common_scripts\utility::flag_wait(param_00); } level.player setweaponhudiconoverride("actionslot1","dpad_icon_drone"); level.player notifyonplayercommand("use_drone","-actionslot 1"); thread maps\fusion_utility::spawn_player_drone_think(); } //Function Number: 399 pdrone_deactivate_think() { common_scripts\utility::flag_wait("turbine_room_stop_combat"); if(!common_scripts\utility::flag("player_drone_attack_done")) { level.player setweaponhudiconoverride("actionslot1","dpad_icon_drone_off"); common_scripts\utility::flag_clear("flag_player_using_drone"); common_scripts\utility::flag_set("player_drone_attack_done"); } }