/******************************************************************* * Decompiled By: Bog * Decompiled File: lab_code.gsc * Game: Call of Duty: Advanced Warfare * Platform: PC * Function Count: 388 * Decompile Time: 5692 ms * Timestamp: 4/22/2024 2:32:54 AM *******************************************************************/ //Function Number: 1 setup_spawn_functions() { maps\_utility::array_spawn_function_noteworthy("enemy_research_building_wave_01",::research_building_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_research_building_wave_02",::research_building_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_pool_building_wave_01",::pool_building_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_research_bridge_wave_01",::facility_bridge_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_pool_building_walkway_wave_01",::pool_building_walkway_01_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_pool_building_walkway_wave_02",::pool_building_walkway_01_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_research_left_01",::research_left_01_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_research_left_lower_01",::research_left_lower_01_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_research_right_lower_01",::research_right_lower_01_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_platform_01",::research_platform_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_research_right_01",::research_right_01_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_pool_building_wave_02",::pool_building_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_courtyard_initial",::courtyard_enemy_initial_think); maps\_utility::array_spawn_function_noteworthy("enemy_courtyard_jammer",::courtyard_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_courtyard_jammer_complete",::courtyard_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_courtyard_jammer_ladder",::courtyard_jammer_ladder_enemy_think); maps\_utility::array_spawn_function_noteworthy("enemy_courtyard_sniper_fodder",::courtyard_enemy_sniper_fodder_think); maps\_utility::array_spawn_function_noteworthy("enemy_foam_corridor_b",::foam_corridor_enemy_think); maps\_utility::array_spawn_function_targetname("combat_courtyard_general_01",::combat_courtyard_general_01_think); maps\_utility::array_spawn_function_targetname("combat_courtyard_path_left_00",::combat_courtyard_path_left_00_think); maps\_utility::array_spawn_function_targetname("combat_courtyard_path_left_01",::combat_courtyard_path_left_01_think); maps\_utility::array_spawn_function_targetname("combat_courtyard_path_left_02",::combat_courtyard_path_left_02_think); maps\_utility::array_spawn_function_targetname("combat_courtyard_path_left_03",::combat_courtyard_path_left_03_think); maps\_utility::array_spawn_function_targetname("combat_courtyard_path_middle_01",::combat_courtyard_path_middle_01_think); maps\_utility::array_spawn_function_targetname("combat_courtyard_path_middle_02",::combat_courtyard_path_middle_02_think); maps\_utility::array_spawn_function_targetname("combat_courtyard_path_middle_03",::combat_courtyard_path_middle_03_think); maps\_utility::array_spawn_function_targetname("combat_courtyard_path_right_01",::combat_courtyard_path_right_01_think); maps\_utility::array_spawn_function_targetname("combat_courtyard_path_right_02",::combat_courtyard_path_right_02_think); maps\_utility::array_spawn_function_targetname("combat_courtyard_path_right_03",::combat_courtyard_path_right_03_think); maps\_utility::array_spawn_function_noteworthy("guy_01_seeker",::patrol_01_unload_spawn_func); maps\_utility::array_spawn_function_noteworthy("guy_02_seeker",::patrol_02_unload_spawn_func); maps\_utility::array_spawn_function_noteworthy("guy_03_seeker",::patrol_03_unload_spawn_func); maps\_utility::array_spawn_function_noteworthy("guy_04_seeker",::patrol_04_unload_spawn_func); maps\_utility::array_spawn_function_noteworthy("enemy_stealth_patrol_01",::set_flag_on_death,"flag_patroler_01_clear_a","flag_patroler_takedown_02_follow_a","flag_patroler_takedown_02_follow_b","flag_patroler_takedown_02_ready"); maps\_utility::array_spawn_function_noteworthy("enemy_stealth_patrol_02",::set_flag_on_death,"flag_patroler_01_clear_b","flag_patrol_02_clear_for_vehicle_takedown"); maps\_utility::array_spawn_function_noteworthy("combat_mech_march_05",::set_flag_on_death,"flag_mech_march_hide_right_complete","flag_mech_march_hide_right"); maps\_utility::array_spawn_function_noteworthy("enemy_post_breach_patrol_01",::set_flag_on_death,"flag_breach_patrol_01_clear","flag_breach_patrol_01_dead"); maps\_utility::array_spawn_function_noteworthy("enemy_post_breach_patrol_02",::set_flag_on_death,"flag_breach_patrol_02_dead"); maps\_utility::array_spawn_function_noteworthy("combat_mech_march_follower",::mech_march_follower_enemy_think); maps\_utility::array_spawn_function_noteworthy("combat_mech_march_runner",::mech_march_runner_enemy_think); common_scripts\utility::array_thread(getentarray("trigger_set_and_clear_flag","script_noteworthy"),::maps\lab_utility::trigger_set_and_clear_flag_think); maps\_utility::add_global_spawn_function("axis",::add_drone_to_squad); common_scripts\utility::array_thread(getentarray("helo_spotlight_shoot_trigger","script_noteworthy"),::helo_spotlight_shoot_trigger_think); common_scripts\utility::array_thread(getentarray("camera_scanner_interior_trigger","script_noteworthy"),::maps\lab_vo::camera_scanner_interior_trigger_think); } //Function Number: 2 player_damage_check() { for(;;) { level.player waittill("damage",var_00,var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08); iprintlnbold("Damage Type: " + var_04); wait 0.05; } } //Function Number: 3 spawn_ai_flashlight() { maps\_flashlight_cheap::add_cheap_flashlight(); } //Function Number: 4 equip_player() { setsaveddvar("bg_viewBobAmplitudeStanding","0.007 0.007"); maps\_variable_grenade::give_player_variable_grenade(); maps\_player_exo::player_exo_add_single("exo_melee"); if(common_scripts\utility::flag("flag_obj_bio_weapons_hack")) { thread maps\_cloak::disable_cloak_system(); } } //Function Number: 5 debug_start_equip_player() { level.player takeweapon("iw5_unarmed_nullattach"); level.player giveweapon("iw5_hbra3_sp_silencer01_variablereddot"); level.player givemaxammo("iw5_hbra3_sp_silencer01_variablereddot"); level.player switchtoweapon("iw5_hbra3_sp_silencer01_variablereddot"); } //Function Number: 6 equip_player_smg() { setsaveddvar("bg_viewBobAmplitudeStanding","0.007 0.007"); level.player takeweapon("iw5_unarmed_nullattach"); level.player giveweapon("iw5_hbra3_sp"); level.player switchtoweapon("iw5_hbra3_sp"); } //Function Number: 7 lab_intro_screen() { level.player disableweapons(); level.player freezecontrols(1); var_00 = 8.4; thread maps\_shg_utility::play_chyron_video("chyron_text_biolab",8.4); common_scripts\utility::flag_wait("chyron_video_done"); soundscripts\_snd::snd_message("aud_lab_intro_screen"); wait(var_00); common_scripts\utility::flag_set("flag_escape_the_sniper_obj_give"); common_scripts\utility::flag_set("lab_intro_screen_complete"); soundscripts\_snd::snd_message("hud_malfunction"); } //Function Number: 8 startcloakingbinksequence() { common_scripts\utility::flag_wait("lab_intro_screen_complete"); setsaveddvar("cg_cinematicfullscreen","0"); common_scripts\utility::flag_wait("flag_burke_dive_over_log"); common_scripts\utility::flag_wait("flag_player_enters_forest"); stopcinematicingame(); cinematicingame("cloaking_hud_reboot"); common_scripts\utility::flag_wait("flag_player_cloak_on"); stopcinematicingame(); cinematicingame("cloaking_hud_ready"); common_scripts\utility::flag_wait("flag_player_cloak_on_pressed"); stopcinematicingame(); } //Function Number: 9 startcloakingbinksequence_debug() { setsaveddvar("cg_cinematicfullscreen","0"); common_scripts\utility::flag_wait("flag_player_enters_forest"); stopcinematicingame(); cinematicingame("cloaking_hud_reboot"); common_scripts\utility::flag_wait("flag_player_cloak_on"); stopcinematicingame(); cinematicingame("cloaking_hud_ready"); common_scripts\utility::flag_wait("flag_player_cloak_on_pressed"); stopcinematicingame(); } //Function Number: 10 player_movement_tweaks() { maps\_utility::player_speed_percent(80,1); level.player takeweapon("fraggrenade"); level.player takeweapon("flash_grenade"); setsaveddvar("bg_viewbobamplitudestanding","0.03 0.02"); setsaveddvar("player_sprintunlimited","1"); common_scripts\utility::flag_wait("flag_player_enters_forest"); setsaveddvar("player_sprintunlimited","0"); common_scripts\utility::flag_wait("flag_forest_climb_wall_complete"); maps\_utility::player_speed_percent(100,1); } //Function Number: 11 helo_spotlight_init() { if(isdefined(level.start_point) && level.start_point == "forest_start") { var_00 = getent("helo_spotlight","targetname"); var_00.origin = common_scripts\utility::getstruct("path_helo_river_path_start","targetname").origin; } level.helo_spotlight = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("helo_spotlight"); level.helo_spotlight maps\_vehicle::godon(); level.helo_spotlight maps\_utility::ent_flag_init("spotlight_on"); level.helo_spotlight soundscripts\_snd::snd_message("aud_helo_spotlight_spawn"); level.helo_spotlight.spotlight = spawnturret("misc_turret",level.helo_spotlight gettagorigin("tag_flash"),"heli_spotlight_so_castle"); level.helo_spotlight.spotlight setmode("manual"); level.helo_spotlight.spotlight setmodel("com_blackhawk_spotlight_on_mg_setup"); level.helo_spotlight.spotlight maketurretinoperable(); level.helo_spotlight.spotlight makeunusable(); level.helo_spotlight.spotlight.angles = level.helo_spotlight gettagangles("tag_flash"); level.helo_spotlight.spotlight linkto(level.helo_spotlight,"tag_flash",(0,2,-6),(0,90,-20)); level.helo_spotlight thread helo_spotlight_think(); level.helo_spotlight setlookatent(level.burke); level.helo_spotlight maps\_vehicle::mgoff(); common_scripts\utility::flag_wait("flag_helo_spotlight_on"); level.helo_spotlight maps\_utility::ent_flag_set("spotlight_on"); } //Function Number: 12 helo_spotlight_handle_intro_rumbles() { maps\lab_utility::setup_level_rumble_ent(); wait(0.9); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.6,0.2); wait(1.3); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.4,0.2); wait(3); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.2,0.2); wait(3); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.4,0.2); wait(4.3); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.4,1.75); } //Function Number: 13 helo_spotlight_movement() { common_scripts\utility::flag_wait("flag_helo_spotlight_path_02"); level.helo_spotlight maps\_utility::vehicle_detachfrompath(); var_00 = common_scripts\utility::getstruct("path_helo_spotlight_02_start","targetname"); level.helo_spotlight thread maps\_utility::vehicle_dynamicpath(var_00,0); common_scripts\utility::flag_wait("flag_helo_spotlight_path_03"); level.helo_spotlight maps\_utility::vehicle_detachfrompath(); level.helo_spotlight vehicle_setspeed(60,30,25); var_00 = common_scripts\utility::getstruct("path_helo_spotlight_03_start","targetname"); level.helo_spotlight thread maps\_utility::vehicle_dynamicpath(var_00,0); common_scripts\utility::flag_wait("flag_player_enters_forest"); level.helo_spotlight thread helo_spotlight_forest_think(); level.helo_spotlight maps\_utility::vehicle_detachfrompath(); var_00 = common_scripts\utility::getstruct("path_helo_river_path_start","targetname"); level.helo_spotlight thread maps\_utility::vehicle_dynamicpath(var_00,0); common_scripts\utility::flag_wait("flag_helo_arrived_at_crash"); level.helo_spotlight maps\_utility::vehicle_land(); level.helo_spotlight.spotlight delete(); level.helo_spotlight delete(); } //Function Number: 14 helo_spotlight_think(param_00) { self endon("death"); self notify("stop_helo_spotlight"); self endon("stop_helo_spotlight"); thread helo_spotlight_light_motion(); var_01 = 0; var_02 = "docks_heli_spotlight"; if(isdefined(param_00)) { var_02 = param_00; } for(;;) { if(!maps\_utility::ent_flag("spotlight_on")) { if(var_01) { var_01 = 0; stopfxontag(common_scripts\utility::getfx(var_02),self.spotlight,"tag_flash"); stopfxontag(common_scripts\utility::getfx("lab_heli_spot_flare"),self.spotlight,"tag_flash"); } var_03 = level.player; if(isdefined(var_03)) { self.spotlight settargetentity_smoothtracking(var_03); } wait(0.2); continue; } wait(0.5); if(!var_01) { var_01 = 1; playfxontag(common_scripts\utility::getfx(var_02),self.spotlight,"tag_flash"); playfxontag(common_scripts\utility::getfx("lab_heli_spot_flare"),self.spotlight,"tag_flash"); } } } //Function Number: 15 helo_spotlight_light_motion() { self endon("stop_helo_spotlight"); self endon("death"); for(;;) { var_00 = undefined; if(isdefined(self.override_target)) { self.spotlight settargetentity_smoothtracking(self.override_target); while(isdefined(self.override_target)) { wait(0.5); } continue; } else { var_01 = [level.player,level.burke]; var_00 = level.burke; if(isdefined(var_00) && !common_scripts\utility::flag("flag_player_enters_forest")) { self.spotlight settargetentity_smoothtracking(var_00); } else { } } if(isdefined(var_00) && isai(var_00)) { var_02 = randomfloatrange(1,2.5) * 1000; var_03 = gettime() + var_02; while(gettime() < var_03) { if(!isdefined(var_00) || !isalive(var_00)) { break; } wait(0.1); } continue; } wait(randomfloatrange(3,5)); } } //Function Number: 16 helo_spotlight_climbing_moment(param_00,param_01) { var_02 = gettime() / 1000; var_03 = 100; while(!common_scripts\utility::flag("flag_player_wall_look_right")) { var_04 = 1 - gettime() / 1000 - var_02 / param_00; param_01.origin = level.player.origin + (1000 * var_04 + var_03,0,0); wait(0.05); } while(common_scripts\utility::flag("flag_player_wall_look_right")) { var_04 = 1 - gettime() / 1000 - var_02 / param_00; param_01.origin = level.player.origin + (500 * var_04 + var_03,0,0); wait(0.05); } while(!common_scripts\utility::flag("flag_player_cloak_on_pressed")) { var_04 = 1 - gettime() / 1000 - var_02 / param_00; param_01.origin = level.player.origin + (1000 * var_04 + var_03,0,0); wait(0.05); } } //Function Number: 17 helo_spotlight_forest_think() { level endon("helo_spotlight_point_of_no_return"); self clearlookatent(); self.spotlight settargetentity_smoothtracking(undefined); self.spotlight noisy_turret_clear_default_angles(); var_00 = 20; var_01 = gettime() / 1000; thread helo_spotlight_kill_player_unless_notify(var_00,"player_climbing_wall"); var_02 = spawn("script_origin",level.player.origin); self.override_target = var_02; level thread maps\_utility::notify_delay("helo_spotlight_stop_search",15); helo_spotlight_search_for_player(var_02); var_03 = 200; var_02.origin = level.player.origin + (1500 + var_03,0,0); while(!common_scripts\utility::flag("player_climbing_wall")) { var_04 = 1 - gettime() / 1000 - var_01 / var_00; var_02.origin = level.player.origin + (1500 * var_04 + var_03,0,0); wait(0.05); } var_00 = 20; thread helo_spotlight_kill_player_unless_notify(var_00,"flag_player_climb_succeeded"); thread helo_spotlight_climbing_moment(var_00,var_02); common_scripts\utility::flag_wait("flag_player_climb_succeeded"); var_00 = 15; thread helo_spotlight_kill_player_unless_notify(var_00,"flag_player_cloak_on_pressed"); common_scripts\utility::flag_wait("flag_player_cloak_on_pressed"); var_04 = 0; var_01 = gettime() / 1000; var_00 = 20; var_03 = 215; while(var_04 < 1) { var_04 = gettime() / 1000 - var_01 / var_00; var_02.origin = level.player.origin + (-1000 * var_04 + var_03,0,0); wait(0.05); } self.override_target = undefined; self notify("stop_helo_spotlight"); self.spotlight.real_target = undefined; self.spotlight noisy_turret_set_default_angles((25,-90,-20)); } //Function Number: 18 helo_spotlight_search_for_player(param_00) { level endon("helo_spotlight_stop_search"); level endon("player_climbing_wall"); var_01 = 0.5; var_02 = 1; var_03 = common_scripts\utility::getstructarray("helo_spotlight_search_loc","targetname"); for(;;) { param_00.origin = var_03[randomint(var_03.size)].origin; self.spotlight common_scripts\utility::waittill_notify_or_timeout("turret_on_target",1); wait(randomfloatrange(var_01,var_02)); } } //Function Number: 19 helo_spotlight_kill_player_unless_notify(param_00,param_01) { level endon(param_01); wait(param_00); level notify("helo_spotlight_point_of_no_return"); self.override_target.origin = level.player geteye(); var_02 = getent("climb_wall_use_trigger","targetname"); if(isdefined(var_02)) { var_02 delete(); } level.player endon("death"); level.player enablehealthshield(0); if(common_scripts\utility::flag("player_climbing_wall")) { thread knock_player_off_wall(); } for(;;) { helo_spotlight_shoot_location(level.player geteye() + (randomintrange(-10,10),randomintrange(-10,10),randomintrange(-10,10))); level.player dodamage(level.player.maxhealth / 3,level.helo_spotlight.origin,level.helo_spotlight); wait(randomfloatrange(0.5,1)); } } //Function Number: 20 knock_player_off_wall() { common_scripts\utility::flag_set("flag_cloak_fail_kill_player"); level.player waittill("death"); level notify("player_falling_to_death"); earthquake(0.2,3,level.player.origin,8000); var_00 = 0.4; var_01 = spawn("script_origin",level.player.origin); var_01.angles = level.player getgunangles(); var_01 moveto(common_scripts\utility::getstruct("obj_forest_climb_wall_fall_loc","targetname").origin,var_00,var_00); level.player playerlinktoblend(var_01,undefined,var_00); level.player_rig delete(); wait(var_00); level.player unlink(); } //Function Number: 21 player_falling_kill_logic(param_00) { var_01 = int(tablelookup("sp/deathquotetable.csv",1,"size",0)); var_02 = randomint(var_01); if(!isdefined(param_00)) { param_00 = 3; } common_scripts\utility::flag_clear("can_save"); var_03 = gettime() + param_00 * 1000; while(!level.player isonground() && gettime() < var_03) { wait(0.05); } if(level.player isonground()) { level.player kill(); return; } maps\_utility::missionfailedwrapper(); } //Function Number: 22 settargetentity_smoothtracking(param_00) { self.real_target = param_00; if(isdefined(param_00)) { if(!isdefined(self.spotlight_target)) { self.spotlight_target = common_scripts\utility::spawn_tag_origin(); } self.spotlight_target.origin = param_00.origin; self.spotlight_target linkto(self); self settargetentity(self.spotlight_target); thread noisy_turret_think(); } } //Function Number: 23 noisy_turret_set_default_angles(param_00) { self.no_target_local_spotlight_angles = param_00; } //Function Number: 24 noisy_turret_clear_default_angles() { self.no_target_local_spotlight_angles = undefined; } //Function Number: 25 noisy_turret_think() { self notify("stop_noisy_turret_think"); self endon("stop_noisy_turret_think"); self endon("death"); if(!isdefined(self.cur_local_angles)) { self.cur_local_angles = (0,0,0); self.self_to_target_local_angles = (0,0,0); self.pitch_rate = 0; self.yaw_rate = 0; self.last_pitch_noise = 0; self.last_yaw_noise = 0; } var_00 = 0.05; for(;;) { waittillframeend; waittillframeend; if(isdefined(self.real_target) && isdefined(self.real_target.origin)) { var_01 = self.real_target.origin; if(isai(self.real_target)) { var_01 = var_01 + (0,0,32); } if(isplayer(self.real_target)) { var_01 = var_01 + (0,0,32); } var_02 = transformmove((0,0,0),(0,0,0),self.origin,self.angles,var_01,(0,0,0))["origin"]; var_03 = vectornormalize(var_02); self.self_to_target_local_angles = vectortoangles(var_03); } else if(isdefined(self.no_target_local_spotlight_angles)) { self.self_to_target_local_angles = self.no_target_local_spotlight_angles; } var_05 = angleclamp180(self.self_to_target_local_angles[0] - self.cur_local_angles[0]); var_06 = angleclamp180(self.self_to_target_local_angles[1] - self.cur_local_angles[1]); var_07 = 180; var_08 = 180; var_09 = length((var_05,var_06,0)); if(var_09 < 10) { var_0A = max(var_09 / 10,0.7); var_07 = var_07 * var_0A; var_08 = var_08 * var_0A; } if(abs(angleclamp180(self.cur_local_angles[0])) < 89) { var_0A = min(1 / cos(self.cur_local_angles[0]),3); var_08 = var_08 * var_0A; } var_05 = clamp(var_05,-1 * var_07 * var_00,var_07 * var_00); var_06 = clamp(var_06,-1 * var_08 * var_00,var_08 * var_00); var_05 = maps\_utility::linear_interpolate(0.8,var_05,self.pitch_rate * var_00 * 0.8); var_06 = maps\_utility::linear_interpolate(0.8,var_06,self.yaw_rate * var_00 * 0.8); self.pitch_rate = var_05 / var_00; self.yaw_rate = var_06 / var_00; var_0B = gettime() * 0.001 * 1.5; var_0C = perlinnoise2d(0,var_0B,2,2,1) * 0.5; var_0D = perlinnoise2d(1.5,var_0B,2,2,1) * 1.5; var_05 = var_05 + var_0C - self.last_pitch_noise; var_06 = var_06 + var_0D - self.last_yaw_noise; self.last_pitch_noise = var_0C; self.last_yaw_noise = var_0D; self.cur_local_angles = self.cur_local_angles + (var_05,var_06,0); var_0E = anglestoforward(self.cur_local_angles); var_0F = var_0E * 1000; var_10 = transformmove(self.origin,self.angles,(0,0,0),(0,0,0),var_0F,(0,0,0))["origin"]; self.spotlight_target unlink(); self.spotlight_target.origin = var_10; self.spotlight_target linkto(self); wait(var_00); } } //Function Number: 26 se_intro() { thread lab_intro_screen(); common_scripts\utility::flag_wait("chyron_video_done"); thread helo_spotlight_handle_intro_rumbles(); thread helo_spotlight_init(); thread helo_spotlight_movement(); common_scripts\utility::flag_wait("lab_intro_screen_complete"); setsaveddvar("ammoCounterHide","1"); level.player maps\_shg_utility::setup_player_for_scene(1); level.player thread player_run_rumble(); var_00 = maps\_utility::spawn_anim_model("player_rig_intro"); var_00.weapon = "none"; var_00 dontcastshadows(); var_01 = spawn("script_origin",(0,0,0)); var_02 = common_scripts\utility::getstruct("intro_anim_org","targetname"); var_01.origin = var_02.origin; if(isdefined(var_02.angles)) { var_01.angles = var_02.angles; } level.player playerlinktodelta(var_00,"tag_player",1,0,0,0,0,1); var_01 maps\_anim::anim_first_frame_solo(var_00,"intro_recover"); var_01 maps\_anim::anim_first_frame_solo(level.burke,"intro_recover"); maps\_utility::delaythread(0.5,::helo_spotlight_shoot_struct,"intro_anim_bullet_dest"); var_01 thread burke_intro_anim(level.burke,"intro_recover"); var_01 thread maps\_anim::anim_single_solo(var_00,"intro_recover"); var_03 = getanimlength(var_00 maps\_utility::getanim("intro_recover")); var_04 = gettime(); for(;;) { if(gettime() - var_04 >= var_03 * 1000) { break; } common_scripts\utility::waittill_any_ents(level,"allow_player_control",var_01,"intro_recover"); if(level.player getnormalizedmovement()[0] > 0.5) { break; } if(gettime() - var_04 >= var_03 * 1000) { break; } wait(0.05); } level.player unlink(); var_00 delete(); level.player enableweapons(); setsaveddvar("player_sprintunlimited","1"); level.player forcesprint(); var_01 delete(); level.player maps\_shg_utility::setup_player_for_gameplay(); thread helo_sniper_threaten_player(); common_scripts\utility::array_thread(getentarray("player_run_progress_trigger","script_noteworthy"),::player_run_progress_trigger_think); } //Function Number: 27 player_run_rumble() { var_00 = maps\_utility::get_rumble_ent("steady_rumble"); var_01 = 0.05; var_02 = 0.25; while(!common_scripts\utility::flag("flag_player_enters_forest")) { var_03 = length(level.player getvelocity()); var_04 = var_03 / 320; var_00.intensity = var_04 * var_02; if(var_00.intensity > 1) { var_00.intensity = 1; } wait(0.1); var_00.intensity = var_04 * var_01; if(var_00.intensity > 1) { var_00.intensity = 1; } if(var_03 > 0) { var_05 = 0.3 * 1 - var_03 / 194; } else { var_05 = 0; } var_06 = 0.3 + var_05; if(var_06 > 0) { wait(var_06); } } var_00 delete(); stopallrumbles(); } //Function Number: 28 burke_intro_anim(param_00,param_01) { level.burke maps\_utility::gun_remove(); level.burke maps\_utility::disable_pain(); level.burke maps\_utility::disable_ai_color(); soundscripts\_snd::snd_message("aud_burke_intro_anim"); maps\_anim::anim_single_solo_run(param_00,param_01); common_scripts\utility::flag_set("flag_burke_intro_react_se_start"); } //Function Number: 29 se_intro_burke_react() { common_scripts\utility::flag_wait("flag_burke_intro_react_se_start"); var_00 = common_scripts\utility::getstruct("burke_intro_react_anim_org","targetname"); var_00 maps\_anim::anim_reach_solo(level.burke,"burke_intro_react"); maps\_utility::delaythread(0.05,::helo_spotlight_shoot_struct,"burke_intro_react_bullet_dest"); var_00 maps\_anim::anim_single_solo_run(level.burke,"burke_intro_react"); common_scripts\utility::flag_set("flag_burke_shack_se_start"); } //Function Number: 30 se_intro_shack() { common_scripts\utility::flag_wait("flag_burke_shack_se_start"); var_00 = common_scripts\utility::getstruct("burke_intro_shack_org","targetname"); var_00 maps\_anim::anim_reach_solo(level.burke,"lab_shack_enter"); var_00 maps\_anim::anim_single_solo(level.burke,"lab_shack_enter"); var_00 thread maps\_anim::anim_loop_solo(level.burke,"lab_shack_idle","ender"); common_scripts\utility::flag_wait("flag_burke_dive_over_log"); soundscripts\_snd::snd_message("aud_shack_explode_whizby"); wait(0.25); var_00 notify("ender"); level.burke maps\_utility::anim_stopanimscripted(); helo_spotlight_shoot_struct("intro_shack_bullet_dest"); thread maps\lab_fx::shack_roof_damage_fx(); thread shack_explode(); var_01 = distance(level.player.origin,level.burke.origin); if(var_01 < 200) { thread maps\lab_utility::rumble_heavy_1(); } else if(var_01 < 500) { thread maps\lab_utility::rumble_light(); } var_00 maps\_anim::anim_single_run_solo(level.burke,"lab_shack_exit"); } //Function Number: 31 shack_explode() { maps\_utility::activate_trigger_with_targetname("shack_explode"); soundscripts\_snd::snd_message("player_reaches_shack"); } //Function Number: 32 se_check_player_too_far_from_burke() { while(!common_scripts\utility::flag("flag_helo_spotlight_path_02")) { if(!maps\_utility::players_within_distance(300,level.burke.origin)) { magicbullet("s1_lab_heli_railgun_sp",level.helo_spotlight.origin,level.player); } wait(randomfloatrange(1,2)); } } //Function Number: 33 se_slow_player_if_too_far_ahead() { var_00 = common_scripts\utility::getstruct("intro_shack_bullet_dest","targetname"); var_01 = getent("obj_forest_climb_wall","targetname"); var_02 = 1; var_03 = 0.7; var_04 = 0.5; while(!common_scripts\utility::flag("flag_burke_dive_over_log")) { if(distance2dsquared(level.player.origin,var_00.origin) < distance2dsquared(level.burke.origin,var_00.origin)) { while(var_02 >= var_03 && distance2dsquared(level.player.origin,var_00.origin) < distance2dsquared(level.burke.origin,var_00.origin)) { var_02 = var_02 - 0.1; level.player setmovespeedscale(var_02); wait(var_04); } while(distance2dsquared(level.player.origin,var_00.origin) < distance2dsquared(level.burke.origin,var_00.origin)) { wait 0.05; } while(var_02 < 1) { var_02 = var_02 + 0.1; level.player setmovespeedscale(var_02); wait 0.05; } var_02 = 1; level.player setmovespeedscale(var_02); } wait 0.05; } while(!common_scripts\utility::flag("flag_player_slide_start")) { if(distance2dsquared(level.player.origin,var_01.origin) < distance2dsquared(level.burke.origin,var_01.origin)) { while(var_02 >= var_03 && distance2dsquared(level.player.origin,var_01.origin) < distance2dsquared(level.burke.origin,var_01.origin)) { var_02 = var_02 - 0.1; level.player setmovespeedscale(var_02); wait(var_04); } while(distance2dsquared(level.player.origin,var_01.origin) < distance2dsquared(level.burke.origin,var_01.origin)) { wait 0.05; } while(var_02 < 1) { var_02 = var_02 + 0.1; level.player setmovespeedscale(var_02); wait 0.05; } var_02 = 1; level.player setmovespeedscale(var_02); } wait 0.05; } } //Function Number: 34 se_burke_stumble_run() { var_00 = common_scripts\utility::getstruct("burke_stumble_run_anim_org","targetname"); if(!common_scripts\utility::flag("flag_helo_spotlight_path_02")) { var_00 maps\_anim::anim_reach_solo(level.burke,"burke_stumble_run"); maps\_utility::delaythread(0.15,::helo_spotlight_shoot_struct,"burke_stumble_run_bullet_dest"); level.burke soundscripts\_snd::snd_message("aud_burke_stumble_run"); var_00 maps\_anim::anim_single_solo_run(level.burke,"burke_stumble_run"); } common_scripts\utility::flag_set("flag_emp_cocked_exo_dialogue"); } //Function Number: 35 se_burke_dive_over_log() { var_00 = common_scripts\utility::getstruct("burke_dive_over_log_anim_org","targetname"); var_00 maps\_anim::anim_reach_solo(level.burke,"burke_dive_over_log"); maps\_utility::delaythread(1.1,::helo_spotlight_shoot_struct,"burke_dive_over_log_bullet_dest"); level.burke soundscripts\_snd::snd_message("aud_burke_step_over_log"); var_00 maps\_anim::anim_single_solo_run(level.burke,"burke_dive_over_log"); if(maps\_utility::players_within_distance(350,level.burke.origin)) { se_burke_stumble_knee(); return; } se_burke_tree_cover_01(); } //Function Number: 36 se_burke_tree_cover_01() { var_00 = common_scripts\utility::getstruct("burke_tree_cover_01_anim_org","targetname"); var_00 maps\_anim::anim_reach_solo(level.burke,"burke_tree_cover_01"); maps\_utility::delaythread(0.6,::helo_spotlight_shoot_struct,"burke_tree_cover_01_bullet_dest_1"); level.burke soundscripts\_snd::snd_message("aud_burke_tree_cover_01"); var_00 maps\_anim::anim_single_solo(level.burke,"burke_tree_cover_01"); var_00 thread maps\_anim::anim_loop_solo(level.burke,"burke_tree_cover_01_idle","ender"); common_scripts\utility::flag_wait("flag_helo_spotlight_path_02"); var_00 notify("ender"); level.burke maps\_utility::anim_stopanimscripted(); common_scripts\utility::flag_set("flag_gogogo_dialogue_start"); var_00 maps\_anim::anim_single_solo_run(level.burke,"burke_tree_cover_01_exit"); } //Function Number: 37 se_burke_stumble_knee() { maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"flag_gogogo_dialogue_start"); } //Function Number: 38 se_burke_hill_slide() { var_00 = common_scripts\utility::getstruct("hill_slide_anim_org","targetname"); var_00 maps\_anim::anim_reach_solo(level.burke,"burke_hill_slide"); maps\_utility::delaythread(2.6,::helo_spotlight_shoot_struct,"hill_slide_bullet_dest_2"); if(maps\_utility::players_within_distance(400,level.burke.origin)) { maps\_utility::delaythread(0.25,::se_player_hill_slide); common_scripts\utility::flag_set("flag_burke_hill_slide_start"); level.burke soundscripts\_snd::snd_message("burke_hill_slide","anim_02"); var_00 maps\_anim::anim_single_solo_run(level.burke,"burke_hill_slide_alt"); } else { maps\_utility::delaythread(2,::se_player_hill_slide); common_scripts\utility::flag_set("flag_burke_hill_slide_start"); level.burke soundscripts\_snd::snd_message("burke_hill_slide","anim_01"); var_00 maps\_anim::anim_single_solo_run(level.burke,"burke_hill_slide"); } if(maps\_utility::players_within_distance(400,level.burke.origin)) { common_scripts\utility::flag_set("flag_run_dialogue_start"); se_burke_river_over_log(); return; } se_burke_tree_stump(); se_burke_river_over_log(); } //Function Number: 39 se_player_hill_slide() { common_scripts\utility::flag_wait("flag_player_slide_start"); var_00 = common_scripts\utility::getstruct("hill_slide_anim_org","targetname"); soundscripts\_snd::snd_message("aud_player_hill_slide"); level.player_rig = maps\lab_utility::spawn_player_rig(); level.player_rig dontcastshadows(); level.player_rig hide(); level.player freezecontrols(1); level.player maps\_shg_utility::setup_player_for_scene(0); level.player setstance("stand"); var_00 maps\_anim::anim_first_frame_solo(level.player_rig,"player_hill_slide"); level.player playerlinktoblend(level.player_rig,"tag_player",0.2); wait(0.2); level.player playerlinktodelta(level.player_rig,"tag_player",1,20,20,20,0); level.player_rig common_scripts\utility::delaycall(0.1,::show); maps\_utility::delaythread(2.85,::helo_spotlight_shoot_struct,"hill_slide_bullet_dest_4"); var_00 thread maps\_anim::anim_single_solo(level.player_rig,"player_hill_slide"); thread handle_player_slide_rumbles(); var_01 = getanimlength(level.player_rig maps\_utility::getanim("player_hill_slide")); var_02 = gettime(); for(;;) { if(gettime() - var_02 >= var_01 * 1000) { break; } common_scripts\utility::waittill_any_ents(level,"allow_player_control",var_00,"player_hill_slide"); if(level.player getnormalizedmovement()[0] > 0.5) { break; } if(gettime() - var_02 >= var_01 * 1000) { break; } wait(0.05); } level.player unlink(); level.player freezecontrols(0); level.player enableweapons(); level.player maps\_shg_utility::setup_player_for_gameplay(); level.player forcesprint(); setsaveddvar("player_sprintunlimited","1"); level.player_rig delete(); level.player thread river_slow_movement_ai_think(); } //Function Number: 40 handle_player_slide_rumbles() { maps\lab_utility::setup_level_rumble_ent(); wait(1.35); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.75,0.5); wait(0.6); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.3,2); wait(2.1); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.5,0.3); } //Function Number: 41 se_burke_tree_stump() { var_00 = common_scripts\utility::getstruct("burke_tree_stump_org","targetname"); var_00 maps\_anim::anim_reach_solo(level.burke,"burke_hill_slide_stump"); maps\_utility::delaythread(0.4,::helo_spotlight_shoot_struct,"burke_tree_stump_bullet_dest"); level.burke soundscripts\_snd::snd_message("aud_burke_hill_slide_stump"); var_00 maps\_anim::anim_single_solo(level.burke,"burke_hill_slide_stump"); var_00 thread maps\_anim::anim_loop_solo(level.burke,"burke_hill_slide_stump_idle","ender"); common_scripts\utility::flag_wait("flag_burke_cross_river"); var_00 notify("ender"); level.burke maps\_utility::anim_stopanimscripted(); common_scripts\utility::flag_set("flag_run_dialogue_start"); if(level.nextgen) { var_00 maps\_anim::anim_single_solo_run(level.burke,"burke_hill_slide_stump_exit"); } } //Function Number: 42 se_burke_river_over_log() { var_00 = common_scripts\utility::getstruct("burke_river_over_log_org","targetname"); var_00 maps\_anim::anim_reach_solo(level.burke,"burke_river_over_log"); level.burke soundscripts\_snd::snd_message("aud_burke_river_over_log"); var_00 maps\_anim::anim_single_solo_run(level.burke,"burke_river_over_log"); } //Function Number: 43 se_burke_river_cross() { thread se_wall_climb_roots(); var_00 = common_scripts\utility::getstruct("forest_climb_anim_org","targetname"); var_00 maps\_anim::anim_reach_solo(level.burke,"burke_river_cross"); maps\_utility::delaythread(0.6,::helo_spotlight_shoot_struct,"river_cross_bullet_dest_1"); maps\_utility::delaythread(5.05,::helo_spotlight_shoot_struct,"river_cross_bullet_dest_3"); maps\_utility::delaythread(10.35,::helo_spotlight_shoot_struct,"river_cross_bullet_dest_5"); maps\_utility::delaythread(12.6,::helo_spotlight_shoot_struct,"river_cross_bullet_dest_6"); var_00 maps\_anim::anim_single_solo_run(level.burke,"burke_river_cross"); if(maps\_utility::players_within_distance(400,level.burke.origin)) { se_burke_river_to_wall(var_00); return; } se_burke_cover_tree_wave(var_00); se_burke_tree_to_wall(var_00); } //Function Number: 44 se_burke_river_to_wall(param_00) { param_00 maps\_anim::anim_single_solo(level.burke,"burke_river_to_wall"); } //Function Number: 45 se_burke_cover_tree_wave(param_00) { var_01 = common_scripts\utility::getstruct("forest_take_cover_wave_anim_org","targetname"); param_00 maps\_anim::anim_single_solo(level.burke,"burke_river_to_tree"); var_01 thread maps\_anim::anim_loop_solo(level.burke,"burke_forest_cover_tree_wave","ender"); common_scripts\utility::flag_wait("flag_player_enters_forest"); var_01 notify("ender"); } //Function Number: 46 se_burke_tree_to_wall(param_00) { param_00 maps\_anim::anim_single_solo(level.burke,"burke_tree_to_wall"); } //Function Number: 47 helo_spotlight_shoot_struct(param_00) { var_01 = common_scripts\utility::getstruct(param_00,"targetname"); if(!isdefined(var_01)) { return; } helo_spotlight_shoot_location(var_01.origin); } //Function Number: 48 helo_spotlight_shoot_location(param_00) { if(!isdefined(level.helo_spotlight)) { return; } var_01 = get_helo_spotlight_bullet_origin(param_00); magicbullet("s1_lab_heli_railgun_sp",var_01,param_00); playfx(common_scripts\utility::getfx("heli_railgun_muzzleflash"),var_01,param_00 - var_01); soundscripts\_snd::snd_message("chopper_sniper_shot",var_01,param_00); if(distancesquared(param_00,level.player.origin) < 40000) { common_scripts\utility::noself_delaycall(0.1,::earthquake,0.5,0.5,param_00,200); level.player common_scripts\utility::delaycall(0.1,::playrumbleonentity,"damage_light"); } } //Function Number: 49 helo_spotlight_shoot_trigger_think() { level endon("flag_player_enters_forest"); self waittill("trigger"); var_00 = 0; for(;;) { var_01 = level.player getgunangles(); var_02 = level.player geteye(); var_03 = var_02 + anglestoforward(var_01) * 150 + anglestoright(var_01) * randomintrange(-40,40); var_04 = bullettrace(var_02,var_03,0); var_05 = get_helo_spotlight_bullet_origin(var_04["position"]); if(!maps\_utility::shot_endangers_any_player(var_05,var_04["position"])) { helo_spotlight_shoot_location(var_04["position"]); return; } wait(0.05); } } //Function Number: 50 se_wall_climb_roots() { var_00 = common_scripts\utility::getstruct("forest_climb_anim_org","targetname"); var_01 = spawn("script_origin",var_00.origin); if(isdefined(var_00.angles)) { var_01.angles = var_00.angles; } level.wallclimb_roots = getent("wallclimb_roots","targetname"); level.wallclimb_roots.animname = "wallclimb_roots"; level.wallclimb_roots maps\_utility::assign_animtree(); var_01 maps\_anim::anim_first_frame_solo(level.wallclimb_roots,"burke_wall_climb"); } //Function Number: 51 se_burke_forest_wall_climb() { var_00 = common_scripts\utility::getstruct("forest_climb_anim_org","targetname"); var_01 = spawn("script_origin",var_00.origin); if(isdefined(var_00.angles)) { var_01.angles = var_00.angles; } level.burke maps\_utility::enable_pain(); level.burke thread maps\lab_utility::cloak_off(); var_02 = [level.burke,level.wallclimb_roots]; var_01 maps\_anim::anim_first_frame_solo(level.wallclimb_roots,"burke_wall_climb"); level.burke soundscripts\_snd::snd_message("aud_burke_wall_climb"); level.burke maps\lab_utility::clear_additive_helmet_anim(0); var_01 thread maps\_anim::anim_single(var_02,"burke_wall_climb"); maps\_utility::delaythread(8,::player_climb_wall); maps\_utility::delaythread(1,::maps\lab_fx::wall_climb_dust_fx); thread helo_wall_climb(var_01); thread maps\lab_lighting::enter_forest(); var_01 waittill("burke_wall_climb"); var_03 = "burke_wall_climb_loop_end"; var_01 thread maps\_anim::anim_loop_solo(level.burke,"burke_wall_climb_loop",var_03); common_scripts\utility::flag_wait("flag_burke_says_exo_is_on"); var_01 notify(var_03); var_01 maps\_anim::anim_single_solo(level.burke,"burke_says_exo_is_on"); common_scripts\utility::flag_wait("flag_forest_climb_wall_complete"); thread spawn_takedown_01_guys(); } //Function Number: 52 burke_wall_climb_teleport(param_00) { var_01 = common_scripts\utility::getstruct("forest_search_drone_anim_org","targetname"); level.burke stopanimscripted(); var_01 thread maps\_anim::anim_loop_solo(level.burke,"burke_search_drone_idle","ender"); } //Function Number: 53 player_climb_wall_head_sway() { level endon("player_falling_to_death"); level.player endon("stop_head_sway"); for(;;) { screenshake(level.player.origin,7,9,4,2,0.2,0.2,0,0.3,0.375,0.225); wait(1); } } //Function Number: 54 player_climb_wall() { level endon("player_falling_to_death"); level endon("flag_cloak_fail_kill_player"); common_scripts\utility::flag_set("flag_forest_climb_wall_start"); soundscripts\_snd::snd_message("forest_climb_wall_start"); thread show_exo_cloak_hint(); var_00 = common_scripts\utility::getstruct("forest_climb_anim_org","targetname"); var_01 = getent("climb_wall_use_trigger","targetname"); var_01 thread maps\_utility::addhinttrigger(&"LAB_CLIMB_WALL_HINT",&"LAB_CLIMB_WALL_HINT_PC"); var_02 = var_01 maps\_shg_utility::hint_button_trigger("x"); var_01 waittill("trigger"); var_01 delete(); var_02 maps\_shg_utility::hint_button_clear(); common_scripts\utility::flag_set("player_climbing_wall"); common_scripts\utility::flag_set("player_climbing_wall_lighting"); level.player setstance("stand"); var_03 = getentarray("tree_wall_climb","targetname"); foreach(var_05 in var_03) { var_05 hide(); } level.player_rig = maps\lab_utility::spawn_player_rig(); level.player_rig hide(); level.player freezecontrols(1); level.player maps\_shg_utility::setup_player_for_scene(0); var_07 = 0.5; level.player playerlinktoblend(level.player_rig,"tag_player",var_07); var_08 = [level.player_rig,level.wallclimb_roots]; level.player_rig common_scripts\utility::delaycall(var_07,::show); soundscripts\_snd::snd_message("aud_player_wall_climb_01"); level notify("player_wall_climb_01"); level.player thread player_climb_wall_head_sway(); thread handle_player_wall_climb_rumbles(); var_00 maps\_anim::anim_single(var_08,"player_wall_climb_1"); maps\lab_utility::wait_until_left_swing_pressed(level.wallclimb_roots gettagorigin("jnt_root03") + (0,0,10)); level.player thread maps\lab_utility::monitor_right_swing_released(); soundscripts\_snd::snd_message("aud_player_wall_climb_02"); level notify("player_wall_climb_02"); var_00 maps\_anim::anim_single(var_08,"player_wall_climb_2"); maps\lab_utility::wait_until_next_right_swing(level.wallclimb_roots gettagorigin("jnt_root05") + (0,0,0)); thread maps\lab_utility::monitor_left_swing_released(); soundscripts\_snd::snd_message("aud_player_wall_climb_03"); level notify("player_wall_climb_03"); var_00 maps\_anim::anim_single(var_08,"player_wall_climb_3"); maps\lab_utility::wait_until_next_left_swing(level.wallclimb_roots gettagorigin("jnt_root07") + (0,0,0)); var_09 = level.burke gettagorigin("tag_origin"); thread maps\lab_utility::monitor_right_swing_released(); soundscripts\_snd::snd_message("aud_player_wall_climb_04"); level notify("player_wall_climb_04"); var_00 maps\_anim::anim_single(var_08,"player_wall_climb_4"); level.burke overridelightingorigin(var_09); if(level.nextgen) { setsaveddvar("r_adaptivesubdiv",0); } maps\lab_utility::wait_until_next_right_swing(level.wallclimb_roots gettagorigin("jnt_breakoff03") + (0,0,0)); common_scripts\utility::flag_set("flag_player_climb_succeeded"); level.nextgrenadedrop = 1000000; soundscripts\_snd::snd_message("aud_player_wall_climb_05"); level notify("player_wall_climb_05"); var_00 maps\_anim::anim_single(var_08,"player_wall_climb_5"); common_scripts\utility::flag_set("flag_player_cloak_enabled"); if(!common_scripts\utility::flag("flag_player_cloak_on_pressed")) { var_00 thread maps\_anim::anim_loop(var_08,"player_wall_climb_loop","player_wall_climb_loop_end"); common_scripts\utility::flag_wait("flag_player_cloak_on_pressed"); var_00 notify("player_wall_climb_loop_end"); } soundscripts\_snd::snd_message("wall_climb_cloak_activate"); level notify("aud_wall_climb_done"); level notify("wall_cloak_on"); level.burke defaultlightingorigin(); var_00 maps\_anim::anim_single(var_08,"player_wall_climb_lastjump"); maps\lab_utility::wait_until_both_swings_pressed(); level.player notify("stop_head_sway"); level notify("last_jump_made"); soundscripts\_snd::snd_message("wall_climb_last_jump"); var_00 maps\_anim::anim_single(var_08,"player_wall_climb_end"); if(level.nextgen) { setsaveddvar("r_adaptivesubdiv",1); } level.player unlink(); level.player freezecontrols(0); level.player enableweapons(); level.player maps\_shg_utility::setup_player_for_gameplay(); common_scripts\utility::flag_set("flag_player_exo_enabled"); setsaveddvar("player_sprintunlimited","1"); level.player_rig delete(); maps\_cloak::turn_on_the_cloak_effect(); common_scripts\utility::flag_set("flag_forest_climb_wall_complete"); common_scripts\utility::flag_set("flag_forest_climb_wall_complete_lighting"); foreach(var_05 in var_03) { var_05 show(); } soundscripts\_snd::snd_message("random_dog_barks"); } //Function Number: 55 handle_player_wall_climb_rumbles() { wait(0.5); thread maps\lab_utility::rumble_heavy(); wait(0.5); thread maps\lab_utility::rumble_light_1(); level waittill("player_wall_climb_02"); wait(0.75); thread maps\lab_utility::rumble_light(); level waittill("player_wall_climb_03"); wait(0.5); thread maps\lab_utility::rumble_light(); level waittill("player_wall_climb_04"); wait(1); thread maps\lab_utility::rumble_light(); level waittill("player_wall_climb_05"); wait(2.15); thread maps\lab_utility::rumble_heavy(); maps\lab_utility::setup_level_rumble_ent(); level waittill("wall_cloak_on"); wait(1); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.3,0.15); wait(0.16); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.3,0.2); wait(3.5); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.4,0.2); level waittill("last_jump_made"); wait(0.6); maps\lab_utility::rumble_light(); wait(0.85); maps\lab_utility::rumble_heavy(); } //Function Number: 56 helo_wall_climb(param_00) { common_scripts\utility::flag_wait("player_climbing_wall"); common_scripts\utility::flag_set("flag_helo_low_pass_claok_start"); level.helo_spotlight.animname = "spotlight_helo"; param_00 maps\_anim::anim_single_solo(level.helo_spotlight,"player_wall_climb"); param_00 thread maps\_anim::anim_loop_solo(level.helo_spotlight,"player_wall_climb_loop","ender"); common_scripts\utility::flag_wait("flag_player_cloak_on_pressed"); param_00 notify("ender"); param_00 maps\_anim::anim_single_solo(level.helo_spotlight,"player_wall_climb_end"); common_scripts\utility::flag_set("flag_helo_low_pass_complete"); level.helo_spotlight notify("stop_helo_spotlight"); level.helo_spotlight.override_target linkto(level.helo_spotlight); level.helo_spotlight maps\_utility::vehicle_detachfrompath(); level.helo_spotlight vehicle_setspeed(20,15,5); var_01 = common_scripts\utility::getstruct("path_helo_goto_crash_site_start","targetname"); level.helo_spotlight thread maps\_utility::vehicle_dynamicpath(var_01,0); level.helo_spotlight.script_vehicle_selfremove = 1; } //Function Number: 57 player_stealth_cloak_think() { if(!common_scripts\utility::flag("flag_player_cloak_on")) { maps\_cloak::cloaked_stealth_enable_lab_hud_cinematic(); } common_scripts\utility::flag_wait("flag_player_cloak_on"); level.player maps\_cloak::cloaked_stealth_player_setup(); maps\_cloak::cloaked_stealth_disable_lab_hud_cinematic(); maps\_cloak::cloaked_stealth_enable_battery_hud(); common_scripts\utility::flag_wait("flag_player_cloak_off"); maps\_cloak::cloaked_stealth_disable_battery_hud(); } //Function Number: 58 show_exo_cloak_hint() { common_scripts\utility::flag_wait("flag_player_cloak_on"); maps\_utility::display_hint_timeout("exo_toggle_hint",10); } //Function Number: 59 break_exo_cloak_hint() { if(common_scripts\utility::flag("flag_player_cloak_on_pressed")) { return 1; } if(common_scripts\utility::flag("flag_cloak_fail_kill_player")) { return 1; } if(level.player buttonpressed("dpad_right")) { common_scripts\utility::flag_set("flag_player_cloak_on_pressed"); return 1; } return 0; } //Function Number: 60 break_prone_hint() { if(level.player getstance() == "prone") { return 1; } if(!common_scripts\utility::flag("player_near_logging_road_end_log")) { return 1; } if(common_scripts\utility::flag("flag_seeker_clear")) { return 1; } return 0; } //Function Number: 61 break_detonate_frb_hint() { if(common_scripts\utility::flag("flag_obj_neutralize_bio_weapons_complete")) { return 1; } if(!common_scripts\utility::flag("flag_foam_room_clear")) { return 1; } return 0; } //Function Number: 62 se_search_drones_01() { common_scripts\utility::flag_wait("flag_forest_climb_wall_complete"); var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("drones_search"); var_01 = common_scripts\utility::getstruct("forest_search_drone_anim_org","targetname"); foreach(var_03 in var_00) { var_03 maps\_utility::ent_flag_set("fire_disabled"); var_03.ignoreme = 1; var_03 maps\_utility::delaythread(randomfloatrange(0.05,1),::maps\lab_fx::drone_search_light_fx); } level.burke maps\_utility::set_grenadeammo(0); thread se_search_drone_backup(); thread se_search_drone_vehicle(var_01); thread se_search_drone_deer(var_01); level.burke soundscripts\_snd::snd_message("burke_run_slide"); common_scripts\utility::flag_wait("flag_search_drone_burke_anim_start"); var_05 = getnodearray("node_search_drone","targetname"); foreach(var_07 in var_05) { var_07 disconnectnode(); } maps\_utility::delaythread(32.5,::common_scripts\utility::flag_set,"flag_search_drone_complete_dialogue_start"); maps\_utility::delaythread(32.5,::common_scripts\utility::flag_set,"flag_search_drone_complete_dialogue_start"); level thread maps\_utility::notify_delay("se_search_drone_backup_progress",32); var_01 notify("ender"); level.burke maps\_utility::anim_stopanimscripted(); var_01 maps\_anim::anim_single_solo_run(level.burke,"burke_search_drone"); maps\_utility::autosave_by_name(); level.burke maps\_utility::set_moveplaybackrate(0.8); common_scripts\utility::flag_set("flag_search_drone_se_complete"); } //Function Number: 63 se_search_drone_backup() { var_00 = maps\_vehicle::spawn_vehicle_from_targetname("se_search_drone_backup"); var_00 endon("death"); var_00 endon("drone_spotted_player"); thread search_drone_behavior(var_00,undefined,1); var_00 sethoverparams(16,5,5); var_00 thread search_drone_random_turns(); var_00 maps\_utility::delaythread(0.25,::maps\lab_fx::drone_search_light_fx); level waittill("se_search_drone_backup_progress"); var_00 maps\_vehicle::gopath(); } //Function Number: 64 search_drone_random_turns() { self endon("weapon_fired"); self endon("start_vehiclepath"); self endon("drone_spotted_player"); self setvehgoalpos(self.origin,1); self notify("goal"); self.pacifist = 1; maps\_utility::ent_flag_set("fire_disabled"); for(;;) { var_00 = randomint(360); self setgoalyaw(var_00); wait(randomfloatrange(2,5)); } } //Function Number: 65 search_drone_behavior(param_00,param_01,param_02) { param_00 endon("death"); param_00 setcontents(8192); param_00 makevehiclenotcollidewithplayers(1); var_03 = 40; var_04 = 512; var_05 = 256; var_06 = 100; if(isdefined(param_02) && param_02) { var_06 = 1; } if(isdefined(param_01) && param_01) { var_06 = 32; } var_07 = var_03 * var_03; var_08 = var_04 * var_04; var_09 = var_05 * var_05; param_00.alerted_amount = 0; var_0A = 2; if(isdefined(param_02) && param_02) { var_0A = 0.1; } var_0B = 0.05; param_00 thread search_drone_alert_monitor(); param_00 thread search_drone_damage_detection(); for(;;) { var_0C = length(level.player getvelocity()); var_0D = level._cloaked_stealth_settings.cloak_on; var_0E = level.player geteye(); if(param_00.alerted_amount >= var_0A) { if((isdefined(param_01) && param_01) || isdefined(param_02) && param_02) { param_00 se_search_drone_spotted_player(); } else { param_00 search_drone_spotted_player(); } param_00.alerted_amount = 0; } var_0F = 0; if(var_0D) { if(distancesquared(var_0E,param_00.origin) < var_07) { if(!param_00.alerted_amount) { } param_00.alerted_amount = param_00.alerted_amount + var_0B * 2; var_0F = 1; } } else if(distancesquared(var_0E,param_00.origin) < var_08 && sighttracepassed(param_00.origin,var_0E,0,param_00)) { if(!param_00.alerted_amount) { } param_00.alerted_amount = param_00.alerted_amount + var_0B; var_0F = 1; } if(distancesquared(var_0E,param_00.origin) < var_09) { if(var_0C > var_06) { if(!param_00.alerted_amount) { thread maps\lab_vo::search_drone_warning_dialogue(); } param_00.alerted_amount = param_00.alerted_amount + var_0B; var_0F = 1; } } if(var_0F) { param_00 notify("alerted"); } else { param_00 notify("not_alerted"); } wait(var_0B); } } //Function Number: 66 search_drone_damage_detection() { self endon("death"); for(;;) { self waittill("damage",var_00,var_01); if(isdefined(var_01) && isdefined(var_01.team)) { if(isenemyteam(self.team,var_01.team)) { self.alerted_amount = 100; self notify("alerted"); } } } } //Function Number: 67 search_drone_alert_monitor() { self endon("drone_spotted_player"); self endon("death"); for(;;) { self waittill("alerted"); if(!common_scripts\utility::flag("flag_forest_takedown_01")) { self playsound("atlasdrn_angry"); } self waittill("not_alerted"); self stoploopsound("seeker_alarm_lp"); } } //Function Number: 68 se_search_drone_spotted_player() { self laseron(); self playloopsound("atlasdrn_detection_lp"); thread maps\lab_vo::search_drone_alerted_dialogue(); wait(1); self.pacifist = 0; maps\_utility::ent_flag_clear("fire_disabled"); self stopanimscripted(); self setvehgoalpos(level.player.origin + (0,0,90),1); level.player enablehealthshield(0); maps\_utility::vehicle_detachfrompath(); thread vehicle_scripts\_pdrone::flying_attack_drone_logic(); level.player enablehealthshield(0); for(;;) { level notify("player_failed_drone_scene"); self waittill("weapon_fired"); level.player dodamage(34 / level.player.damagemultiplier,self.origin,self); } } //Function Number: 69 search_drone_spotted_player() { self notify("search_drone_spotted_player"); self endon("search_drone_spotted_player"); self endon("death"); self laseron(); maps\_utility::ent_flag_clear("fire_disabled"); self.pacifist = 0; self.ignoreme = 0; maps\_utility::set_favoriteenemy(level.player); var_00 = level.player.origin; maps\_cloak::cloak_device_hit_by_electro_magnetic_pulse(); maps\_utility::vehicle_detachfrompath(); while(sighttracepassed(self.origin,level.player geteye(),0,self)) { if(isdefined(self.script_stealthgroup) && isdefined(level._stealth.group.groups[maps\_utility::string(self.script_stealthgroup)])) { var_01 = maps\_stealth_shared_utilities::group_get_ai_in_group(maps\_utility::string(self.script_stealthgroup)); foreach(var_03 in var_01) { if(var_03 == self) { continue; } if(isdefined(var_03.enemy) || isdefined(var_03.favoriteenemy)) { continue; } var_03 notify("heard_alarm",var_00); } } self waittill("new_target"); maps\_utility::set_favoriteenemy(undefined); if(isdefined(self.enemy)) { self.enemy common_scripts\utility::waittill_notify_or_timeout("target_lost",10); } wait(3); } maps\_utility::ent_flag_set("fire_disabled"); self laseroff(); self.pacifist = 1; self.ignoreme = 1; } //Function Number: 70 se_search_drone_vehicle(param_00) { var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("se_search_drone"); var_01.animname = "search_drone"; var_01 endon("drone_spotted_player"); thread search_drone_behavior(var_01,1); var_01 maps\_utility::ent_flag_set("fire_disabled"); var_01 maps\_vehicle::godon(); var_01.ignoreme = 1; var_01 thread maps\lab_fx::drone_search_light_fx(); param_00 maps\_anim::anim_first_frame_solo(var_01,"search_drone"); common_scripts\utility::flag_wait("flag_search_drone_burke_anim_start"); param_00 maps\_anim::anim_single_solo(var_01,"search_drone"); var_02 = common_scripts\utility::getstruct("path_search_drone_end","targetname"); var_01 thread maps\_utility::vehicle_dynamicpath(var_02,0); var_01.script_vehicle_selfremove = 1; } //Function Number: 71 se_search_drone_deer(param_00) { var_01 = spawn("script_model",param_00.origin); var_01 setmodel("fullbody_deer_c"); var_01.animname = "deer"; var_01 maps\_anim::setanimtree(); param_00 maps\_anim::anim_first_frame_solo(var_01,"search_drone"); maps\_utility::delaythread(31,::maps\lab_fx::deer_leaves_fx); common_scripts\utility::flag_wait("flag_search_drone_burke_anim_start"); var_01 soundscripts\_snd::snd_message("deer_foliage_rustle"); param_00 maps\_anim::anim_single_solo(var_01,"search_drone"); var_01 delete(); } //Function Number: 72 force_patrol_anim_set(param_00,param_01,param_02) { maps\_patrol_extended::force_patrol_anim_set(param_00,param_01,0,param_02); } //Function Number: 73 spawn_takedown_01_guys() { common_scripts\utility::flag_wait("flag_forest_climb_wall_complete"); level endon("flag_se_takedown_01_started"); level.guy_1 = getent("enemy_takedown_player_01","targetname") maps\_utility::spawn_ai(1); level.guy_2 = getent("enemy_takedown_burke_01","targetname") maps\_utility::spawn_ai(1); level.guy_1 maps\_utility::set_ignoreme(1); level.guy_2 maps\_utility::set_ignoreme(1); level.guy_1 maps\_utility::set_ignoreall(1); level.guy_2 maps\_utility::set_ignoreall(1); level waittill("player_failed_drone_scene"); common_scripts\utility::flag_set("forest_player_passed_takedown"); } //Function Number: 74 se_forest_takedown_01() { var_00 = common_scripts\utility::getstruct("forest_takedown_01_org","targetname"); thread burke_se_forest_takedown_01(var_00); common_scripts\utility::flag_wait("flag_forest_takedown_01"); level.player allowmelee(0); level.player.disable_melee = 1; var_01 = getnodearray("node_search_drone","targetname"); foreach(var_03 in var_01) { var_03 connectnode(); } thread se_forest_takedown_01_fail_conditions(level.guy_1,level.guy_2); thread se_forest_takedown_01_distance_think(); var_00 = common_scripts\utility::getstruct("forest_takedown_01_org","targetname"); level.guy_1 force_patrol_anim_set("active_forward"); level.guy_1 common_scripts\utility::delay_script_call(3,::maps\_flashlight_cheap::add_cheap_flashlight,"flashlight",0,"flashlight_spotlight"); level.guy_2 force_patrol_anim_set("gundown"); level.guy_1.nodrop = 1; level.guy_2.nodrop = 1; level.guy_1.diequietly = 1; level.guy_2.diequietly = 1; level.guy_1 maps\_utility::disable_surprise(); level.guy_2 maps\_utility::disable_surprise(); level.guy_1.animname = "disarm_guy_1"; level.guy_2.animname = "disarm_guy_2"; common_scripts\utility::flag_set("flag_forest_takedown_01_dialogue_start"); thread maps\lab_utility::enable_takedown_hint(level.guy_1,101,1); level.guy_1 thread maps\lab_utility::display_takedown_world_prompt_on_enemy(self); self waittill("player_completed_takedown"); common_scripts\utility::flag_set("flag_se_takedown_01_started"); level.burke maps\_utility::anim_stopanimscripted(); var_00 notify("ender"); level.guy_1 notify("enemy"); level.guy_2 notify("enemy"); if(isdefined(level.guy_1.function_stack)) { level.guy_1 maps\_utility::function_stack_clear(); } level.guy_1 stopsounds(); if(isdefined(level.burke.function_stack)) { level.burke maps\_utility::function_stack_clear(); } level.burke stopsounds(); var_05 = [level.burke,level.guy_1,level.guy_2]; level.player setstance("stand"); level.guy_1 notify("flashlight_off"); level.player_rig = maps\lab_utility::spawn_player_rig(); level.player_rig hide(); level.player freezecontrols(1); level.player maps\_shg_utility::setup_player_for_scene(0); maps\_player_exo::player_exo_deactivate(); soundscripts\_snd::snd_message("player_forest_takedown",level.guy_1); soundscripts\_snd::snd_message("burke_forest_takedown",level.guy_2); var_06 = 0.5; level.player playerlinktoblend(level.player_rig,"tag_player",var_06); var_07 = [level.guy_1,level.player_rig]; var_08 = [level.burke,level.guy_2]; level.player_rig common_scripts\utility::delaycall(var_06,::show); thread se_burke_takedown_01(var_00); level.guy_1 notify("takedown_01_start"); thread maps\lab_fx::forest_takedown_fx(); thread forest_takedown_01_rumbles(); thread forest_takedown_handle_gideon_weapon(); thread award_player_exo_challenge_kill_for_scene(); var_00 maps\_anim::anim_single(var_07,"forest_disarm"); setsaveddvar("ammoCounterHide","0"); level.guy_1 maps\_utility::pretend_to_be_dead(); level.guy_2 maps\_utility::pretend_to_be_dead(); level.player unlink(); level.player freezecontrols(0); level.player enableweapons(); level.player maps\_shg_utility::setup_player_for_gameplay(); maps\_player_exo::player_exo_activate(); maps\_player_exo::player_exo_remove_single("exo_melee"); setsaveddvar("player_sprintunlimited","1"); level.player_rig delete(); level.guy_1 kill(); level.player thread equip_player_smg(); if(level._cloaked_stealth_settings.cloak_on == 1) { level.player maps\_cloak::turn_off_the_cloak_effect(); wait(0.05); level.player maps\_cloak::turn_on_the_cloak_effect(); } common_scripts\utility::flag_set("flag_se_takedown_01_complete"); soundscripts\_snd::snd_message("takedown_01_complete"); maps\_utility::autosave_by_name(); level.player allowmelee(1); level.player.disable_melee = undefined; thread maps\lab_lighting::logging_road(); } //Function Number: 75 award_player_exo_challenge_kill_for_scene() { wait(2.5); level.player maps\_upgrade_challenge::give_player_challenge_kill(1); } //Function Number: 76 forest_takedown_01_rumbles() { maps\lab_utility::setup_level_rumble_ent(); wait(0.75); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.6,0.3); wait(1); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.2,0.5); wait(0.65); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.8,0.2); } //Function Number: 77 forest_takedown_handle_gideon_weapon() { wait(5); level.guy_2 maps\_utility::gun_remove(); var_00 = spawn("script_model",level.burke.origin); var_01 = "npc_hbra3_nocamo"; if(isdefined(level.burke.free_running_hidden_weapon)) { var_01 = getweaponmodel(level.burke.free_running_hidden_weapon); } var_00 setmodel(var_01); var_00 maps\_utility::teleport_to_ent_tag(level.burke,"tag_weapon_right"); wait(8.25); var_00 delete(); level.burke animscripts\free_run::disable_free_running(); } //Function Number: 78 burke_se_forest_takedown_01(param_00) { level endon("flag_logging_road_loud_combat"); param_00 maps\_anim::anim_reach_solo(level.burke,"forest_disarm_arrive",undefined,1); maps\_utility::delaythread(0.5,::maps\lab_fx::burke_tree_slide_fx); level.burke soundscripts\_snd::snd_message("burke_slide_02"); param_00 maps\_anim::anim_single_solo(level.burke,"forest_disarm_arrive"); level.burke maps\_utility::set_moveplaybackrate(1); param_00 thread maps\_anim::anim_loop_solo(level.burke,"forest_disarm_idle","ender"); common_scripts\utility::flag_wait("flag_se_takedown_01_started"); level.burke maps\_utility::anim_stopanimscripted(); param_00 notify("ender"); } //Function Number: 79 se_forest_takedown_01_fail_conditions(param_00,param_01) { self endon("player_completed_takedown"); var_02 = 36; var_03 = 1024; var_04 = 184; var_05 = 300; var_06 = var_02 * var_02; var_07 = var_03 * var_03; var_08 = var_04 * var_04; var_09 = 0.05; while(!common_scripts\utility::flag("flag_se_takedown_01_complete") && !common_scripts\utility::flag("forest_player_passed_takedown")) { var_0A = length(level.player getvelocity()); var_0B = level._cloaked_stealth_settings.cloak_on; var_0C = level.player.origin; if(var_0B) { if(distancesquared(var_0C,param_00.origin) < var_06 || distancesquared(var_0C,param_01.origin) < var_06) { break; } } else if(distancesquared(var_0C,param_00.origin) < var_07 || distancesquared(var_0C,param_01.origin) < var_07) { if(param_00 cansee(level.player) || param_01 cansee(level.player)) { break; } } if(distancesquared(var_0C,param_00.origin) < var_08 || distancesquared(var_0C,param_01.origin) < var_08) { if(var_0A > var_05) { break; } } wait(var_09); } wait(0.05); if(!common_scripts\utility::flag("flag_se_takedown_01_started") || common_scripts\utility::flag("forest_player_passed_takedown")) { self notify("takedown_failed"); level notify("se_takedown_01_failed"); common_scripts\utility::flag_set("flag_disable_takedown_hint"); level.should_display_melee_hint = 0; common_scripts\utility::flag_clear("can_save"); param_00 maps\_utility::set_ignoreall(0); param_01 maps\_utility::set_ignoreall(0); level._cloaked_stealth_settings.cloak_disabled = 1; param_00.favoriteenemy = level.player; param_01.favoriteenemy = level.player; param_00 maps\_utility::set_baseaccuracy(999); param_01 maps\_utility::set_baseaccuracy(999); param_00 maps\_utility::magic_bullet_shield(); param_01 maps\_utility::magic_bullet_shield(); param_00 setgoalentity(level.player); param_01 setgoalentity(level.player); param_00.goalradius = 20; param_01.goalradius = 20; param_00.combatmode = "no_cover"; param_01.combatmode = "no_cover"; param_00 notify("end_patrol"); param_01 notify("end_patrol"); param_00 notify("enemy"); param_01 notify("enemy"); level notify("patrol_alerted"); common_scripts\utility::flag_set("_stealth_spotted"); maps\_cloak::cloak_device_hit_by_electro_magnetic_pulse(); level.player enablehealthshield(0); for(;;) { param_00 waittill("shooting"); level.player dodamage(level.player.maxhealth / 3,param_00 gettagorigin("tag_flash"),param_00); } } } //Function Number: 80 se_forest_takedown_01_distance_think() { level endon("flag_slowly_dialogue_start"); level endon("se_takedown_01_failed"); for(;;) { if(maps\_utility::players_within_distance(300,level.guy_1.origin)) { common_scripts\utility::flag_set("flag_slowly_dialogue_start"); } wait(0.1); } } //Function Number: 81 se_burke_takedown_01(param_00) { var_01 = [level.burke,level.guy_2]; level.guy_2.allowdeath = 1; level.guy_2.a.nodeath = 1; level.guy_2 maps\_utility::set_battlechatter(0); level.guy_2 setcontents(0); level.guy_2 common_scripts\utility::delaycall(14,::setanimrate,level.guy_2 maps\_utility::getanim("forest_disarm"),0); thread maps\lab_utility::ai_kill_when_out_of_sight(level.guy_2,1024); param_00 maps\_anim::anim_single_run(var_01,"forest_disarm"); level.burke maps\_utility::set_moveplaybackrate(0.8); level.burke maps\_utility::enable_cqbwalk(); } //Function Number: 82 se_vehicle_takedown_01() { self endon("takedown_failed"); level endon("flag_se_vehicle_takedown_01_failed"); thread maps\lab_lighting::vrap_takedown_lights_on(); thread maps\lab_lighting::lighting_vehicle_takedown_01_on(); var_00 = common_scripts\utility::getstruct("vrap_takedown_org","targetname"); var_01 = spawn("script_origin",var_00.origin); var_02 = spawn("script_origin",var_00.origin); if(isdefined(var_00.angles)) { var_01.angles = var_00.angles; var_02.angles = var_00.angles; } var_03 = getent("blocker_vrap_takedown_door","targetname"); var_03.origin = var_03.origin + (0,0,10000); var_03 disconnectpaths(); var_04 = getent("vrap_01","targetname") maps\_utility::spawn_vehicle(); var_05 = maps\_utility::spawn_targetname("enemy_vrap_01"); var_06 = maps\_utility::spawn_targetname("enemy_vrap_02"); var_04.animname = "vrap"; var_05.animname = "vrap_guy_1"; var_06.animname = "vrap_guy_2"; var_05.allowdeath = 1; var_05.diequietly = 1; var_06.diequietly = 1; var_05.health = 1; var_06.health = 1; var_05.found = 1; var_06.found = 1; var_07 = [var_04,var_05]; var_08 = [var_06]; var_06.vehicle_idle_override = var_06 maps\_utility::getanim("vrap_takedown_idle"); var_06 notify("enteredvehicle"); var_04 thread maps\_utility::guy_enter_vehicle(var_06); var_06.allowdeath = 1; var_09 = "vrap_takedown_ender"; var_01 thread maps\_anim::anim_loop(var_07,"vrap_takedown_idle",var_09); thread se_vehicle_takedown_fail_conditions(var_05,var_06,var_01,var_02,var_09,var_04); thread se_vehicle_takedown_stealth_alert_check(var_05,1); thread se_vehicle_takedown_stealth_alert_check(var_06,0); common_scripts\utility::flag_wait("flag_vehicle_takedown_01"); soundscripts\_snd::snd_message("truck_takedown_radio",var_05); if(!common_scripts\utility::flag("flag_forest_player_alt_path_01")) { se_vehicle_mute_charge(var_01); thread maps\lab_utility::enable_takedown_hint(var_05,101); var_0A = common_scripts\utility::spawn_tag_origin(); var_0A.origin = var_05.origin + (0,0,52); var_0A linkto(var_05,"j_neck"); var_05 thread maps\lab_utility::activate_takedown_world_prompt_on_truck_enemy(self); self waittill("player_completed_takedown"); level.player setstance("stand"); common_scripts\utility::flag_set("flag_vehicle_takedown_01_start"); thread maps\lab_lighting::lighting_vehicle_takedown_01(var_05); var_05 maps\_stealth_utility::disable_stealth_for_ai(); var_06 maps\_stealth_utility::disable_stealth_for_ai(); level.player maps\_shg_utility::setup_player_for_scene(1); maps\_player_exo::player_exo_deactivate(); level.player maps\_utility::set_ignoreme(1); var_06 = maps\_vehicle_aianim::convert_guy_to_drone(var_06); var_06.animname = "vrap_guy_2"; var_01 notify(var_09); var_02 notify(var_09); level.player_rig = maps\lab_utility::spawn_player_rig(); level.player_rig.animname = "player_rig"; level.player_rig hide(); level.player playerlinktoblend(level.player_rig,"tag_player",0.2); level.player_rig common_scripts\utility::delaycall(0.2,::show); var_0B = [var_04,var_05,var_06,level.burke,level.player_rig]; soundscripts\_snd::snd_message("truck_takedown"); thread vehicle_takedown_rumbles(); thread award_player_exo_challenge_kill_for_scene(); var_01 maps\_anim::anim_single(var_0B,"vrap_takedown"); var_05 maps\_utility::pretend_to_be_dead(); level.player unlink(); level.player freezecontrols(0); level.player enableweapons(); level.player maps\_shg_utility::setup_player_for_gameplay(); maps\_player_exo::player_exo_activate(); level.player_rig delete(); level.player maps\_utility::set_ignoreme(0); var_03 connectpaths(); var_03 delete(); var_01 notify(var_09); var_02 notify(var_09); var_01 delete(); var_02 delete(); } common_scripts\utility::flag_set("flag_se_vehicle_takedown_01_complete"); thread maps\_utility::autosave_stealth(); } //Function Number: 83 se_vehicle_mute_charge(param_00) { self endon("takedown_failed"); var_01 = maps\_utility::spawn_anim_model("vrap_mute"); var_01 hide(); var_02 = getent("vrap_mute_hint","targetname"); level.vrap_mute_obj = spawn("script_model",(0,0,0)); level.vrap_mute_obj setmodel("mutecharge_obj"); level.vrap_mute_obj.angles = var_02.angles; level.vrap_mute_obj.origin = var_02.origin; level.vrap_mute_trig = getent("trig_vrap_mute","targetname"); level.vrap_mute_trig thread maps\_utility::addhinttrigger(&"LAB_PLANT_MUTE_HINT",&"LAB_PLANT_MUTE_HINT_PC"); level.vrap_mute_trig.button = level.vrap_mute_trig maps\_shg_utility::hint_button_trigger("x"); thread vehicle_mute_charge_failed(); common_scripts\utility::flag_wait("flag_vrap_mute_start"); while(isdefined(level._cloaked_stealth_settings.playing_view_model_cloak_toggle_anim) && level._cloaked_stealth_settings.playing_view_model_cloak_toggle_anim == 1) { wait(0.05); } level.player_rig = maps\lab_utility::spawn_player_rig(); level.player_rig hide(); var_03 = [level.player_rig,var_01]; param_00 thread maps\_anim::anim_first_frame(var_03,"vrap_mute"); level.vrap_mute_trig thread maps\_utility::addhinttrigger("",""); level.vrap_mute_trig.button maps\_shg_utility::hint_button_clear(); soundscripts\_snd::snd_message("lab_mute_gun_holster"); level.player maps\_shg_utility::setup_player_for_scene(1); maps\_player_exo::player_exo_deactivate(); level.player playerlinktoblend(level.player_rig,"tag_player",0.5); wait(0.5); var_01 thread maps\_cloak::activate_mute_volume(350,20); var_01 soundscripts\_snd::snd_message("aud_vrap_mute_start",350,20); level.vrap_mute_obj hide(); level.player_rig show(); var_01 show(); thread mute_charge_01_rumbles(); param_00 maps\_anim::anim_single(var_03,"vrap_mute"); level.player unlink(); level.player enableweapons(); level.player freezecontrols(0); level.player maps\_shg_utility::setup_player_for_gameplay(); maps\_player_exo::player_exo_activate(); level.player_rig delete(); } //Function Number: 84 mute_charge_01_rumbles() { maps\lab_utility::setup_level_rumble_ent(); wait(0.65); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.4,0.2); wait(0.5); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.3,0.75); } //Function Number: 85 vehicle_takedown_rumbles() { wait(0.93); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.7,0.2); wait(1); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.7,0.2); } //Function Number: 86 vehicle_mute_charge_failed() { self endon("player_completed_takedown"); level endon("flag_vrap_mute_start"); common_scripts\utility::waittill_any_ents(self,"takedown_failed",level,"flag_se_vehicle_takedown_01_failed"); thread vehicle_mute_charge_cleanup(); } //Function Number: 87 vehicle_mute_charge_cleanup() { if(isdefined(level.vrap_mute_obj)) { level.vrap_mute_obj delete(); } if(isdefined(level.vrap_mute_trig)) { if(isdefined(level.vrap_mute_trig.button)) { level.vrap_mute_trig.button maps\_shg_utility::hint_button_clear(); } level.vrap_mute_trig delete(); } } //Function Number: 88 se_vehicle_takedown_fail_conditions(param_00,param_01,param_02,param_03,param_04,param_05) { self endon("player_completed_takedown"); thread se_vehicle_takedown_fail_condition_guy(param_00,param_02,param_04,1,param_05); thread se_vehicle_takedown_fail_condition_guy(param_01,param_03,param_04,0,param_05); common_scripts\utility::waittill_any_ents(param_00,"death",param_01,"death"); if(level.player maps\_utility::ent_flag_exist("_stealth_in_mute_radius") && level.player maps\_utility::ent_flag("_stealth_in_mute_radius")) { if(isdefined(param_00)) { param_00 maps\_stealth_utility::disable_stealth_for_ai(); } if(isdefined(param_01)) { param_01 maps\_stealth_utility::disable_stealth_for_ai(); param_01 = maps\_vehicle_aianim::convert_guy_to_drone(param_01); param_01.animname = "vrap_guy_2"; param_03 thread maps\_anim::anim_single_solo(param_01,"vrap_takedown"); param_03 maps\_utility::delaythread(0.05,::maps\_anim::anim_set_time,[param_01],"vrap_takedown",1); param_01 setanimrate(param_01 maps\_utility::getanim("vrap_takedown"),0); param_01 kill(level.burke.origin,level.burke); } if(!isdefined(param_00) || !isalive(param_00)) { if(isdefined(param_01) && isalive(param_01)) { param_01 kill(level.burke.origin,level.burke); } } if(!isdefined(param_01) || !isalive(param_01)) { if(isdefined(param_00) && isalive(param_00)) { param_00 kill(level.burke.origin,level.burke); } } } else { common_scripts\utility::flag_set("_stealth_spotted"); maps\_cloak::cloak_device_hit_by_electro_magnetic_pulse(); } self notify("takedown_failed"); common_scripts\utility::flag_set("flag_disable_takedown_hint"); common_scripts\utility::flag_set("flag_se_vehicle_takedown_01_failed"); common_scripts\utility::flag_set("flag_se_vehicle_takedown_01_complete"); level.should_display_melee_hint = 0; } //Function Number: 89 se_vehicle_takedown_stealth_alert_check(param_00,param_01) { param_00 endon("death"); if(param_01) { common_scripts\utility::waittill_any_ents(param_00,"patrol_alerted",param_00,"_stealth_spotted",param_00,"stealth_event",param_00,"_stealth_found_corpse",param_00,"alerted",param_00,"enemy",param_00,"touch"); } else { common_scripts\utility::waittill_any_ents(param_00,"patrol_alerted",param_00,"_stealth_spotted",param_00,"stealth_event",param_00,"_stealth_found_corpse",param_00,"alerted",param_00,"enemy"); } param_00 notify("alerted"); } //Function Number: 90 se_vehicle_takedown_fail_condition_guy(param_00,param_01,param_02,param_03,param_04) { self endon("player_completed_takedown"); param_00 endon("death"); var_05 = param_00 maps\_stealth_shared_utilities::ai_get_behavior_function("animation","wrapper"); param_00 maps\_stealth_shared_utilities::ai_create_behavior_function("animation","wrapper",::se_vehicle_takedown_dummyfunc); param_00 maps\_utility::ent_flag_set("_stealth_behavior_reaction_anim"); param_00._stealth.debug_state = "hanging around"; param_00 waittill("alerted"); param_01 notify(param_02); self notify("takedown_failed"); common_scripts\utility::flag_set("flag_disable_takedown_hint"); common_scripts\utility::flag_set("flag_se_vehicle_takedown_01_failed"); common_scripts\utility::flag_set("flag_se_vehicle_takedown_01_complete"); level.should_display_melee_hint = 0; if(param_03) { waittillframeend; param_01 maps\_anim::anim_single_solo(param_00,"vrap_takedown_fail"); param_00 maps\_stealth_shared_utilities::ai_create_behavior_function("animation","wrapper",var_05); } else { param_04 maps\_vehicle::vehicle_unload(); param_00 waittill("jumpedout"); param_00 maps\_stealth_shared_utilities::ai_create_behavior_function("animation","wrapper",var_05); } param_00 maps\_utility::ent_flag_clear("_stealth_behavior_reaction_anim"); } //Function Number: 91 se_vehicle_takedown_dummyfunc(param_00) { } //Function Number: 92 drones_logging_road() { var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("drones_logging_road_wave_1"); foreach(var_02 in var_00) { var_02 maps\_utility::ent_flag_set("fire_disabled"); var_02.ignoreme = 1; var_02 thread maps\lab_fx::drone_search_light_fx(); thread search_drone_behavior(var_02); } common_scripts\utility::flag_wait("flag_se_vehicle_takedown_01_complete"); wait(0.1); var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("drones_logging_road_wave_1"); foreach(var_02 in var_00) { var_02 maps\_utility::ent_flag_set("fire_disabled"); var_02.ignoreme = 1; var_02 thread maps\lab_fx::drone_search_light_fx(); thread search_drone_behavior(var_02); } } //Function Number: 93 se_mech_march() { if(common_scripts\utility::flag("flag_logging_road_loud_combat")) { return; } level endon("flag_logging_road_loud_combat"); common_scripts\utility::flag_wait("flag_se_mech_march_start"); if(!common_scripts\utility::flag("flag_se_vehicle_takedown_01_complete")) { common_scripts\utility::flag_set("flag_se_vehicle_takedown_01_failed"); common_scripts\utility::flag_set("flag_se_vehicle_takedown_01_complete"); } level notify("dog_barks_stop"); var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("gaz_mech_march_02"); var_00 soundscripts\_snd::snd_message("gaz_04_slow_by"); var_00 maps\_vehicle::vehicle_lights_on(); var_00 thread maps\lab_fx::logging_road_mud_tracks_2(); var_00 thread forest_stealth_gaz_think(); var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("brt_mech_march_01"); var_01 soundscripts\_snd::snd_message("gaz_05_slow_by"); var_01 thread maps\lab_fx::logging_road_mud_tracks_2(); var_01 thread forest_stealth_gaz_think(); var_00 thread maps\lab_lighting::logging_road_gaz_headlight_moment(); var_02 = getentarray("combat_mech_march_runner","script_noteworthy"); foreach(var_04 in var_02) { var_04 maps\_utility::spawn_ai(1,0); wait(randomfloatrange(0.1,0.25)); } var_02 = getentarray("combat_mech_march","script_noteworthy"); foreach(var_04 in var_02) { var_07 = var_04 maps\_utility::spawn_ai(1,0); var_07 thread mech_march_footstep_rumbles(); } var_09 = getent("combat_mech_march_05","script_noteworthy"); var_0A = var_09 maps\_utility::spawn_ai(1,0); var_0A thread mech_march_footstep_rumbles(); var_02 = getentarray("combat_mech_march_follower","script_noteworthy"); foreach(var_04 in var_02) { var_04 maps\_utility::spawn_ai(1,0); } } //Function Number: 94 mech_march_footstep_rumbles() { level endon("flag_logging_road_loud_combat"); self endon("death"); for(;;) { self waittill("moveanim",var_00); if(var_00 == "footstep_rumble") { var_01 = 300; var_02 = distance(self.origin,level.player.origin); if(var_02 < var_01) { maps\lab_utility::setup_level_rumble_ent(); var_03 = var_01 - var_02 / var_01; thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,var_03,0.25); wait(0.25); } else { wait 0.05; } continue; } wait 0.05; } } //Function Number: 95 mech_march_follower_enemy_think() { self endon("death"); force_patrol_anim_set("gundown",0); maps\_utility::set_moveplaybackrate(0.9); } //Function Number: 96 mech_march_runner_enemy_think() { self endon("death"); force_patrol_anim_set("patroljog",0); maps\_utility::set_moveplaybackrate(1.1); } //Function Number: 97 disable_rappel_trigger_monitor() { level endon("flag_rappel_start"); var_00 = getent("rappel_cancel_trigger","targetname"); var_01 = getent("rappel_use_trigger","targetname"); var_00 waittill("trigger"); var_01 common_scripts\utility::trigger_off(); } //Function Number: 98 se_cormack_meet() { thread disable_rappel_trigger_monitor(); common_scripts\utility::flag_wait("flag_logging_road_complete"); level.nextgrenadedrop = -1; if(common_scripts\utility::flag("flag_logging_road_loud_combat")) { common_scripts\utility::flag_set("flag_vo_stealth_recovered"); } level notify("patrol_radios_stop"); level notify("aud_start_clearing_damb"); common_scripts\utility::flag_wait("flag_cormack_meet_init"); common_scripts\utility::flag_set("flag_obj_crawl_under_log"); thread maps\lab_lighting::cliff_rappel_lighting_setup(); thread maps\lab_lighting::cliff_rappel(); var_00 = common_scripts\utility::getstruct("cliff_rappel_org","targetname"); se_cormack_meet_init(); level.burke thread burke_disable_cqb(); level.knox.ignoreme = 1; var_01 = getnode("node_burke_cover_rappel","targetname"); level.burke thread maps\lab_utility::goto_node(var_01,0); var_02 = [level.cormack,level.knox]; var_00 thread maps\_anim::anim_loop(var_02,"cliff_meetup_idle","ender"); var_03 = spawn("script_model",var_00.origin); var_03 setmodel("rope_carabiner"); var_03.animname = "carabiner_burke"; var_03 maps\_anim::setanimtree(); var_04 = spawn("script_model",var_00.origin); var_04 setmodel("rope_carabiner"); var_04.animname = "carabiner_cormack"; var_04 maps\_anim::setanimtree(); var_05 = spawn("script_model",var_00.origin); var_05 setmodel("rope_carabiner"); var_05.animname = "carabiner_knox"; var_05 maps\_anim::setanimtree(); var_05 overridematerial("mtl_rope_carabiner","mtl_rope_carabiner_cloak"); level.carabiner_knox = var_05; var_06 = spawn("script_model",var_00.origin); var_06 setmodel("lab_anchor_system"); var_06.animname = "anchor_system_burke"; var_06 maps\_anim::setanimtree(); var_07 = spawn("script_model",var_00.origin); var_07 setmodel("lab_anchor_system"); var_07.animname = "anchor_system_cormack"; var_07 maps\_anim::setanimtree(); var_08 = spawn("script_model",var_00.origin); var_08 setmodel("lab_anchor_system"); var_08.animname = "anchor_system_knox"; var_08 maps\_anim::setanimtree(); var_09 = spawn("script_model",var_00.origin); var_09 setmodel("rope30ft_120j"); var_09.animname = "rope_30_burke"; var_09 maps\_anim::setanimtree(); var_0A = spawn("script_model",var_00.origin); var_0A setmodel("rope30ft_120j"); var_0A.animname = "rope_30_cormack"; var_0A maps\_anim::setanimtree(); var_0B = spawn("script_model",var_00.origin); var_0B setmodel("rope30ft_120j"); var_0B.animname = "rope_30_knox"; var_0B maps\_anim::setanimtree(); var_0B overridematerial("mtl_rope_blk","mtl_rope_blk_cloak"); level.rope_knox = var_0B; var_0C = [var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A,var_0B]; var_00 thread maps\_anim::anim_first_frame(var_0C,"cliff_meetup"); common_scripts\utility::flag_wait("flag_cormack_meet_start"); soundscripts\_snd::snd_message("aud_burke_nearing_cliff"); var_00 maps\_anim::anim_reach_solo(level.burke,"cliff_meetup"); level.burke thread maps\lab_utility::cloak_off(); level.cormack maps\_utility::anim_stopanimscripted(); level.knox maps\_utility::anim_stopanimscripted(); common_scripts\utility::flag_set("flag_cliff_rappel_dialogue_start"); level.burke pushplayer(0); level.burke.dontavoidplayer = 0; level.burke.dontchangepushplayer = undefined; var_00 notify("ender"); var_02 = [level.cormack,level.knox,level.burke,var_06,var_07,var_08,var_09,var_0A,var_0B,var_03,var_04,var_05]; maps\_utility::delaythread(12,::equip_player); var_00 maps\_anim::anim_single(var_02,"cliff_meetup"); var_0D = [level.burke,var_09]; var_00 thread maps\_anim::anim_loop(var_0D,"cliff_meetup_rappel_idle","ender"); var_0E = getnode("node_knox_rappel_1","targetname"); var_0F = getnode("node_cormack_rappel_1","targetname"); level.knox maps\lab_utility::goto_node(var_0E,0); level.cormack maps\lab_utility::goto_node(var_0F,0); level.cormack thread maps\lab_utility::cloak_on(); level.knox thread maps\lab_utility::cloak_on(); var_10 = getent("cliff_clip_cormack","targetname"); var_10 delete(); common_scripts\utility::flag_set("flag_player_ready_to_rappel"); thread maps\lab_vo::cliff_rappel_dialogue_nag(); var_11 = getent("rappel_use_trigger","targetname"); var_11 thread maps\_utility::addhinttrigger(&"LAB_RAPPEL_HINT",&"LAB_RAPPEL_HINT_PC"); var_12 = var_11 maps\_shg_utility::hint_button_trigger("x"); var_11 thread maps\lab_utility::disable_trigger_while_player_animating("flag_rappel_start"); common_scripts\utility::flag_wait("flag_rappel_start"); common_scripts\utility::flag_clear("flag_player_cloak_enabled"); thread cleanup_ai_logging_road(); level.knox.ignoreme = 0; soundscripts\_snd::snd_message("aud_rappel_player_hookup"); var_13 = [var_06,var_07,var_08,var_09,var_0A,var_0B,var_03,var_04,var_05]; thread rope_end_rappel(var_00,var_13); thread courtyard_rappel_preview(); common_scripts\utility::flag_set("flag_rappel_start_lighting"); common_scripts\utility::flag_set("flag_cliff_rappeling_dialogue_start"); var_11 thread maps\_utility::addhinttrigger("",""); var_12 maps\_shg_utility::hint_button_clear(); var_14 = spawn("script_model",var_00.origin); var_14 hide(); var_14 setmodel("rope30ft_240j"); var_14.animname = "rope_vm"; var_14 maps\_anim::setanimtree(); var_15 = spawn("script_model",var_00.origin); var_15 hide(); var_15 setmodel("rope_carabiner"); var_15.animname = "carabiner_vm"; var_15 maps\_anim::setanimtree(); var_16 = spawn("script_model",var_00.origin); var_16 hide(); var_16 setmodel("lab_anchor_system"); var_16.animname = "anchor_system"; var_16 maps\_anim::setanimtree(); level.player maps\_shg_utility::setup_player_for_scene(1); maps\_player_exo::player_exo_deactivate(); level.player_rig = maps\lab_utility::spawn_player_rig(); level.player_rig hide(); var_17 = 1; level.player playerlinktoblend(level.player_rig,"tag_player",var_17); level.player common_scripts\utility::delaycall(2,::playerlinktodelta,level.player_rig,"tag_player",1,0,0,0,0,1); level.player enableslowaim(0.4,0.25); level.player_rig common_scripts\utility::delaycall(var_17,::show); var_16 common_scripts\utility::delaycall(var_17,::show); var_18 = getent("cliff_clip_gideon","targetname"); var_18 delete(); thread player_rappel(var_00,var_14,var_15,var_16); level.burke maps\_utility::anim_stopanimscripted(); var_00 notify("ender"); thread burke_rappel(var_00,var_09); } //Function Number: 99 burke_disable_cqb() { common_scripts\utility::flag_wait("flag_seeker_clear"); maps\_utility::disable_cqbwalk(); } //Function Number: 100 burke_rappel(param_00,param_01) { var_02 = spawn("script_model",param_00.origin); var_02 hide(); var_02 setmodel("rope150ft_240j"); var_02.animname = "rope_150_burke"; var_02 maps\_anim::setanimtree(); level.burke_rope_long = var_02; level.burke_rope = param_01; var_03 = [level.burke,param_01,var_02]; param_00 maps\_anim::anim_single(var_03,"cliff_jump"); level.burke thread maps\lab_utility::cloak_on(); level.burke maps\_utility::place_weapon_on("iw5_hbra3_sp_silencer01_variablereddot","right"); var_02 delete(); } //Function Number: 101 player_rappel(param_00,param_01,param_02,param_03) { level notify("aud_stop_clearing_damb"); param_01 common_scripts\utility::delaycall(1,::show); param_02 common_scripts\utility::delaycall(1,::show); var_04 = spawn("script_model",param_00.origin); var_04 hide(); var_04 setmodel("weapon_rappel_rope_long"); var_04.animname = "rope_vm_long"; var_04 maps\_anim::setanimtree(); level.player_rope_long = var_04; level.player_rope = param_01; var_05 = [level.player_rig,param_01,var_04,param_02,param_03]; thread play_cliff_rappel_animation(param_00,level.player_rig,var_05); thread player_rappel_control(param_00,level.player_rig,var_05); level.player_rig waittill("cliff_jump"); level notify("cliff_rappel_landing"); level.player unlink(); level.player freezecontrols(0); level.player enableweapons(); level.player maps\_shg_utility::setup_player_for_gameplay(); maps\_player_exo::player_exo_activate(); level.player_rig delete(); level.player disableslowaim(); common_scripts\utility::flag_set("flag_player_cloak_enabled"); soundscripts\_snd::snd_message("player_rappel_complete"); var_04 delete(); maps\_utility::autosave_by_name(); if(level.currentgen) { level notify("tff_pre_intro_to_middle"); unloadtransient("lab_intro_tr"); loadtransient("lab_middle_tr"); while(!istransientloaded("lab_middle_tr")) { wait(0.05); } level notify("tff_post_intro_to_middle"); } } //Function Number: 102 rope_end_rappel(param_00,param_01) { level waittill("cliff_rappel_landing"); foreach(var_03 in param_01) { var_03 delete(); } var_05 = spawn("script_model",param_00.origin); var_05 setmodel("rope150ft_240j"); var_05.animname = "rope_150_knox_end"; var_05 maps\_anim::setanimtree(); var_06 = spawn("script_model",param_00.origin); var_06 setmodel("rope150ft_240j"); var_06.animname = "rope_150_cormack_end"; var_06 maps\_anim::setanimtree(); var_07 = spawn("script_model",param_00.origin); var_07 setmodel("rope150ft_240j"); var_07.animname = "rope_150_burke_end"; var_07 maps\_anim::setanimtree(); var_08 = spawn("script_model",param_00.origin); var_08 setmodel("rope150ft_240j"); var_08.animname = "rope_150_player_end"; var_08 maps\_anim::setanimtree(); var_09 = [var_05,var_06,var_07,var_08]; param_00 maps\_anim::anim_loop(var_09,"cliff_jump_end"); } //Function Number: 103 player_input_rappel_hint_off() { return level.player getnormalizedmovement()[0] < -0.1; } //Function Number: 104 player_rappel_control(param_00,param_01,param_02) { param_01 endon("cliff_jump"); var_03 = 1; var_04 = 1; var_05 = 1; var_06 = 1; var_07 = 0.1; common_scripts\utility::flag_wait("flag_rappel_player_input_start"); thread rappel_control_hint(); level.player lerpviewangleclamp(1,0.5,0,10,20,20,30); if(0) { thread camera_view_tuning(param_01); } if(0) { thread camera_sway_tuning(); } thread player_rappel_camera_sway(param_01,1); for(;;) { if(common_scripts\utility::flag("flag_rappel_player_input_stop")) { maps\_anim::anim_set_rate(param_02,"cliff_jump",1); thread player_rappel_camera_sway(param_01,0); return; } var_08 = level.player getnormalizedmovement(); if(var_08[0] < 0) { var_06 = var_08[0] * -1; } else { var_06 = 0; } if(var_06 > 0) { soundscripts\_snd::snd_message("aud_rappel_player_movement_start",param_01); level.player_is_rappelling = 1; } else { soundscripts\_snd::snd_message("aud_rappel_player_movement_stop",param_01); } var_09 = abs(var_06 - var_04); if(var_09 > 0.01) { if(var_09 > 0.5) { var_07 = 0.1; } else { var_07 = 0.03; } if(var_06 > var_04) { var_04 = var_04 + var_07; if(var_04 > 1) { var_04 = 1; } } else { var_04 = var_04 - var_07; if(var_04 < 0) { var_04 = 0; level.player_is_rappelling = 0; } } maps\_anim::anim_set_rate(param_02,"cliff_jump",var_04); } wait 0.05; } } //Function Number: 105 rappel_control_hint() { wait(1.5); maps\_utility::hintdisplayhandler("player_input_rappel_hint"); } //Function Number: 106 play_cliff_rappel_animation(param_00,param_01,param_02) { thread rappel_animation_rumbles(); param_00 maps\_anim::anim_single(param_02,"cliff_jump"); param_01 notify("cliff_jump"); } //Function Number: 107 rappel_animation_rumbles() { maps\lab_utility::setup_level_rumble_ent(); wait(1.15); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.8,0.4); wait(2.4); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.3,0.3); wait(7.4); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.4,0.5); wait(3.75); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.1,3.75); thread rappel_rumbles(); } //Function Number: 108 rappel_rumbles() { level endon("cliff_rappel_landing"); while(!isdefined(level.player_is_rappelling)) { wait(0.5); } maps\lab_utility::setup_level_rumble_ent(); for(;;) { if(level.player_is_rappelling == 1) { thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.1,0.4); } wait(0.5); } } //Function Number: 109 player_rappel_camera_sway(param_00,param_01) { param_00 endon("cliff_jump"); param_00 notify("killduplicatethread"); param_00 endon("killduplicatethread"); if(!param_01) { return; } for(;;) { if(0) { screenshake(level.player.origin,level.values[0],level.values[1],level.values[2],level.values[3],level.values[4],level.values[5],level.values[6],level.values[7],level.values[8],level.values[9]); } else { screenshake(level.player.origin,0.2,4.1,0.56,2,0.95,0,0,0.4,0.1,0.1); } wait(1); } } //Function Number: 110 camera_sway_tuning() { level.values[0] = 0.2; level.values[1] = 4.1; level.values[2] = 0.56; level.values[3] = 2; level.values[4] = 0.95; level.values[5] = 0; level.values[6] = 0; level.values[7] = 0.4; level.values[8] = 0.1; level.values[9] = 0.1; var_00[0] = "scalePitch"; var_00[1] = "scaleyaw"; var_00[2] = "scaleroll"; var_00[3] = "duration"; var_00[4] = "durationfadeup"; var_00[5] = "durationfadedown"; var_00[6] = "radius"; var_00[7] = "frequencypitch"; var_00[8] = "frequencyyaw"; var_00[9] = "frequencyroll"; var_01 = 0; var_02 = 0; for(;;) { if(level.player buttonpressed("DPAD_LEFT")) { var_01++; if(var_01 >= var_00.size) { var_01 = 0; } var_02 = 1; wait(0.5); } else if(level.player buttonpressed("DPAD_RIGHT")) { var_01--; if(var_01 < 0) { var_01 = var_00.size - 1; } var_02 = 1; wait(0.5); } else if(level.player buttonpressed("DPAD_UP")) { level.values[var_01] = level.values[var_01] + 0.05; var_02 = 1; } else if(level.player buttonpressed("DPAD_DOWN")) { level.values[var_01] = level.values[var_01] - 0.05; var_02 = 1; } if(var_02) { var_03 = "selected(" + var_00[var_01] + ") "; for(var_04 = 0;var_04 < var_00.size;var_04++) { var_03 = var_03 + var_00[var_04] + "(" + level.values[var_04] + ") "; } iprintln(var_03); var_02 = 0; } wait 0.05; } } //Function Number: 111 camera_view_tuning(param_00) { param_00 endon("cliff_jump"); level.values[0] = 10; level.values[1] = 30; level.values[2] = 30; level.values[3] = 45; var_01[0] = "right"; var_01[1] = "left"; var_01[2] = "top"; var_01[3] = "bottom"; var_02 = 0; var_03 = 0; for(;;) { if(level.player buttonpressed("DPAD_LEFT")) { var_02++; if(var_02 >= var_01.size) { var_02 = 0; } var_03 = 1; wait(0.5); } else if(level.player buttonpressed("DPAD_RIGHT")) { var_02--; if(var_02 < 0) { var_02 = var_01.size - 1; } var_03 = 1; wait(0.5); } else if(level.player buttonpressed("DPAD_UP")) { level.values[var_02] = level.values[var_02] + 0.05; var_03 = 1; } else if(level.player buttonpressed("DPAD_DOWN")) { level.values[var_02] = level.values[var_02] - 0.05; var_03 = 1; } if(var_03) { var_04 = "selected(" + var_01[var_02] + ") "; for(var_05 = 0;var_05 < var_01.size;var_05++) { var_04 = var_04 + var_01[var_05] + "(" + level.values[var_05] + ") "; } iprintln(var_04); var_03 = 0; level.player lerpviewangleclamp(0.2,0.1,0.1,level.values[0],level.values[1],level.values[2],level.values[3]); } wait 0.05; } } //Function Number: 112 player_rappel_rope_swap(param_00) { level.player_rope_long show(); level.player_rope hide(); } //Function Number: 113 burke_rappel_rope_swap(param_00) { level.burke_rope_long show(); level.burke_rope hide(); } //Function Number: 114 se_cormack_meet_init() { maps\lab::spawn_cormack_common(); level.cormack thread maps\lab_utility::cloak_on(); maps\lab::spawn_knox_common(); level.knox thread maps\lab_utility::cloak_on(); } //Function Number: 115 play_rappel_pip(param_00) { wait(1); maps\_shg_utility::play_videolog("lab_videolog_01","screen_add"); } //Function Number: 116 se_breach_guards() { maps\_utility::battlechatter_off("axis"); level.burke maps\_utility::enable_cqbwalk(); level.cormack maps\_utility::enable_cqbwalk(); level.knox maps\_utility::enable_cqbwalk(); setsaveddvar("ai_friendlyFireBlockDuration",0); thread maps\lab_utility::enable_all_fixed_scanners(); var_00 = common_scripts\utility::getstruct("breach_guards_org","targetname"); var_01 = getent("camera_breach","script_noteworthy"); var_02 = maps\_utility::spawn_targetname("breach_guard_01",1); var_03 = maps\_utility::spawn_targetname("breach_guard_02",1); var_02.ignoreme = 1; var_03.ignoreme = 1; var_01.ignoreme = 1; var_02.animname = "guy_1"; var_03.animname = "guy_2"; var_04 = [var_02,var_03]; var_00 thread maps\_anim::anim_loop(var_04,"breach_duards_idle","ender"); common_scripts\utility::flag_wait("flag_facility_breach_start"); var_05 = getnode("node_burke_shoot_camera","targetname"); level.burke maps\_utility::disable_ai_color(); level.burke.ignoreme = 1; level.burke thread maps\lab_utility::goto_node(var_05,0); var_06 = getnode("node_cormack_shoot_camera","targetname"); level.cormack maps\_utility::disable_ai_color(); level.cormack.ignoreme = 1; level.cormack thread maps\lab_utility::goto_node(var_06,0); var_07 = getnode("node_knox_shoot_camera","targetname"); level.knox maps\_utility::disable_ai_color(); level.knox.ignoreme = 1; level.knox thread maps\lab_utility::goto_node(var_07,0); if(isdefined(var_01.destructible_parts) && var_01.destructible_parts[0].v["health"] > 0) { var_04 = [var_01,var_02,var_03]; } else { var_04 = [var_02,var_03]; } common_scripts\utility::array_thread(var_04,::breach_guy_think); level waittill("breach_guard_damaged"); level.burke.ignoreme = 0; level.cormack.ignoreme = 0; level.knox.ignoreme = 0; common_scripts\utility::flag_set("flag_breach_guards_alerted"); var_00 notify("ender"); wait(0.5); foreach(var_09 in var_04) { var_09.ignoreall = 0; var_09.ignoreme = 0; var_09.dontattackme = undefined; var_09.dontevershoot = undefined; var_09 maps\_utility::anim_stopanimscripted(); } level.burke maps\_utility::set_baseaccuracy(999); level.cormack maps\_utility::set_baseaccuracy(999); level.knox maps\_utility::set_baseaccuracy(999); while((isdefined(var_01.destructible_parts) && var_01.destructible_parts[0].v["health"] > 0) || isdefined(var_02) && var_02.health > 0 || isdefined(var_03) && var_03.health > 0) { wait(0.05); } common_scripts\utility::flag_set("flag_breach_guards_clear"); maps\_utility::autosave_by_name(); common_scripts\utility::flag_wait("flag_facility_security_camera"); common_scripts\utility::flag_set("flag_light_security_camera_off"); var_01 notify("stop_fixed_scanner_audio"); level.burke maps\_utility::set_baseaccuracy(0.2); level.cormack maps\_utility::set_baseaccuracy(0.2); level.knox maps\_utility::set_baseaccuracy(0.2); level.burke maps\_utility::disable_cqbwalk(); level.cormack maps\_utility::disable_cqbwalk(); level.knox maps\_utility::disable_cqbwalk(); setsaveddvar("ai_friendlyFireBlockDuration",2000); level.knox maps\_utility::delaythread(2,::maps\lab_utility::cloak_off); level.burke maps\_utility::delaythread(3.25,::maps\lab_utility::cloak_off); level.cormack maps\_utility::delaythread(4.5,::maps\lab_utility::cloak_off); } //Function Number: 117 breach_guy_think() { self.health = 1; self.allowdeath = 1; if(isai(self)) { thread maps\lab_utility::disable_grenades(); common_scripts\utility::waittill_any_ents(self,"damage",self,"_stealth_spotted",self,"stealth_event",self,"enemy",self,"weapon_fired"); } else { while(self.destructible_parts[0].v["health"] > 0) { wait(0.05); } } level notify("breach_guard_damaged",self); } //Function Number: 118 se_facility_breach() { common_scripts\utility::flag_wait_all("flag_facility_breach_start","flag_breach_guards_clear"); thread maps\lab_lighting::facility_breach(); thread maps\lab_breach::facility_breach(); thread maps\lab_breach::facility_breach_get_burke_into_position(); var_00 = getnode("node_cormack_facility_breach","targetname"); level.cormack thread maps\lab_utility::goto_node(var_00,0); var_00 = getnode("node_knox_facility_breach","targetname"); level.knox thread maps\lab_utility::goto_node(var_00,0); level waittill("breaching"); thread facility_breach_rumbles(); level.knox thread knox_move_to_breach_door(); common_scripts\utility::flag_wait_any("flag_facility_breach_complete","flag_burke_kills_guy"); var_01 = getnode("node_burke_breach_01","targetname"); var_02 = getnode("node_cormack_breach_00","targetname"); var_03 = getnode("node_knox_breach_01","targetname"); level.burke maps\lab_utility::goto_node(var_01,0); level.cormack maps\lab_utility::goto_node(var_02,0); level.knox maps\lab_utility::goto_node(var_03,0); level.cormack thread maps\lab_utility::prevent_friendly_from_shooting_during_stealth(); level.knox thread maps\lab_utility::prevent_friendly_from_shooting_during_stealth(); soundscripts\_snd::snd_message("aud_lab_ambient_emitters"); if(level.currentgen) { level notify("tff_pre_intro_audio_to_middle"); unloadtransient("lab_intro_audio_tr"); } } //Function Number: 119 facility_breach_rumbles() { maps\lab_utility::setup_level_rumble_ent(); wait(1.6); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,1,0.2); wait(0.65); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.3,0.75); wait(8.5); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.6,0.75); } //Function Number: 120 se_server_room_entrance() { common_scripts\utility::flag_wait("flag_obj_bio_weapons_04"); maps\_stealth_utility::disable_stealth_system(); var_00 = common_scripts\utility::getstruct("server_room_entrance_org","targetname"); level.monitor = spawn("script_model",var_00.origin); level.monitor setmodel("lab_server_monitor_01_opc"); level.monitor.animname = "server_monitor"; level.monitor maps\_anim::setanimtree(); level.cormack notify("anim_reach_server_room_started"); level.burke notify("anim_reach_server_room_started"); level.knox notify("anim_reach_server_room_started"); if(isdefined(level.cormack.cloak) && level.cormack.cloak == "on") { level.cormack maps\lab_utility::cloak_off(); } if(isdefined(level.burke.cloak) && level.burke.cloak == "on") { level.burke maps\lab_utility::cloak_off(); } if(isdefined(level.knox.cloak) && level.knox.cloak == "on") { level.knox maps\lab_utility::cloak_off(); } thread burke_server_room_se(var_00); thread cormack_server_room_se(var_00); thread knox_server_room_se(var_00); thread enemy_server_room_se(var_00); level.monitor thread monitor_server_room_se(var_00); var_01 = getent("security_door_right_model","targetname"); var_02 = getent("security_door_right_clip","targetname"); var_02 linkto(var_01); var_02 disconnectpaths(); var_01.orig_origin = var_01.origin; var_01.orig_angles = var_01.angles; var_03 = maps\_utility::spawn_anim_model("security_door_right",var_01.origin); var_00 maps\_anim::anim_first_frame_solo(var_03,"server_room_peek"); var_01 linkto(var_03,"tag_origin_animated"); common_scripts\utility::flag_wait_all("flag_obj_bio_weapons_05","flag_burke_server_room_ready","flag_knox_server_room_ready"); thread play_monitor_cinematic(); common_scripts\utility::flag_set("flag_se_server_room_start"); common_scripts\utility::flag_set("flag_server_room_start_lighting"); soundscripts\_snd::snd_message("aud_server_room_door_crack"); var_00 thread maps\_anim::anim_single_solo(var_03,"server_room_peek"); maps\_utility::add_wait(::common_scripts\utility::flag_wait,"flag_server_room_enemy_killed_by_player"); maps\_utility::add_wait(::common_scripts\utility::flag_wait,"player_entered_server_room"); maps\_utility::add_wait(::maps\_utility::_wait,8); maps\_utility::add_wait(::se_server_room_player_misses,level.player); maps\_utility::do_wait_any(); var_04 = "server_room_enter"; soundscripts\_snd::snd_message("aud_server_room_door_enter"); common_scripts\utility::flag_set("flag_sever_room_guy_kill"); var_02 connectpaths(); var_05 = getent("dsm_usetrigger","targetname"); var_05 thread maps\lab_utility::disable_trigger_while_player_animating("flag_se_server_room_exit_start"); common_scripts\utility::flag_wait("flag_se_server_room_exit_start"); common_scripts\utility::flag_wait("monitor_finished_animating"); soundscripts\_snd::snd_message("aud_player_computer_gl_timing_fix"); maps\_utility::delaythread(0.5,::common_scripts\utility::flag_set,"flag_obj_bio_weapons_hack"); maps\_utility::delaythread(0.5,::common_scripts\utility::flag_set,"bio_weapons_hack_lighting"); level.knox maps\_utility::anim_stopanimscripted(); var_00 notify("ender"); var_01 unlink(); var_01.origin = var_01.orig_origin; var_01.angles = var_01.orig_angles; var_02 disconnectpaths(); var_06 = spawn("script_model",var_00.origin); var_06 setmodel("npc_variable_grenade_lethal"); var_06.animname = "grenade1"; var_06 maps\_anim::setanimtree(); var_07 = spawn("script_model",var_00.origin); var_07 setmodel("npc_variable_grenade_lethal"); var_07.animname = "grenade2"; var_07 maps\_anim::setanimtree(); var_08 = spawn("script_model",var_00.origin); var_08 setmodel("npc_variable_grenade_lethal"); var_08.animname = "grenade3"; var_08 maps\_anim::setanimtree(); level.player maps\_shg_utility::setup_player_for_scene(0); maps\_player_exo::player_exo_deactivate(); level.player_rig = maps\lab_utility::spawn_player_rig(); level.player_rig hide(); var_09 = 0.5; maps\_utility::delaythread(var_09,::maps\_cloak::disable_cloak_system); level.player playerlinktoblend(level.player_rig,"tag_player",var_09); level.player common_scripts\utility::delaycall(var_09,::playerlinktodelta,level.player_rig,"tag_player",1,15,15,10,10); level.player enableslowaim(0.3,0.15); level.player_rig common_scripts\utility::delaycall(var_09,::show); var_0A = [level.knox,var_06,var_07,var_08]; level.player_rig thread player_server_room_se_end(var_00); level.burke thread server_room_se_end(var_00); level.cormack thread server_room_se_end(var_00); maps\_utility::activate_trigger_with_targetname("trig_color_server_room"); if(!common_scripts\utility::flag("flag_server_room_promo")) { var_00 maps\_utility::delaythread(0.5,::maps\_anim::anim_single_run,var_0A,"server_room_exit"); } else { var_00 maps\_utility::delaythread(0.5,::maps\_anim::anim_single_run,var_0A,"server_room_exit_promo"); } common_scripts\utility::flag_wait("flag_combat_research_start"); level thread maps\lab_fx::thermite_servers_explosion(); common_scripts\utility::flag_wait("flag_post_server_room_dialogue_complete"); maps\_utility::autosave_by_name(); thread open_server_room_door(); common_scripts\utility::flag_set("flag_enable_battle_chatter"); maps\_utility::activate_trigger_with_targetname("trig_color_research_facility_01"); } //Function Number: 121 se_server_room_player_misses(param_00) { level endon("flag_enemy_server_room_se_dead"); param_00 common_scripts\utility::waittill_any("weapon_fired","grenade_fire"); wait(0.1); } //Function Number: 122 se_server_room_player_close(param_00) { level endon("flag_enemy_server_room_se_dead"); var_01 = common_scripts\utility::getstruct("server_room_entrance_org","targetname"); var_02 = 62500; while(distancesquared(param_00.origin,var_01.origin) > var_02) { wait(0.05); } } //Function Number: 123 play_monitor_cinematic() { setsaveddvar("cg_cinematicfullscreen","0"); cinematicingame("lab_uploadscreen"); while(!iscinematicplaying()) { wait(0.1); } pausecinematicingame(1); common_scripts\utility::flag_wait("flag_obj_bio_weapons_hack"); pausecinematicingame(0); common_scripts\utility::flag_wait("flag_obj_bio_weapons_complete"); stopcinematicingame(); cinematicingame("lab_uploadscreen_end"); } //Function Number: 124 monitor_interaction_rumbles() { maps\lab_utility::setup_level_rumble_ent(); wait(3.8); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.18,0.15); wait(0.25); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.18,0.15); wait(0.75); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.1,0.5); wait(4.3); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.18,0.15); wait(0.4); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.18,0.15); wait(0.3); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.18,0.15); wait(0.3); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.18,0.15); } //Function Number: 125 stop_monitor_cinematic() { stopcinematicingame(); } //Function Number: 126 player_server_room_se_end(param_00) { if(!common_scripts\utility::flag("flag_server_room_promo")) { param_00 maps\_anim::anim_first_frame_solo(self,"server_room_exit"); } else { param_00 maps\_anim::anim_first_frame_solo(self,"server_room_exit_promo"); } common_scripts\utility::flag_wait("flag_obj_bio_weapons_hack"); thread monitor_interaction_rumbles(); if(!common_scripts\utility::flag("flag_server_room_promo")) { param_00 maps\_anim::anim_single_solo(self,"server_room_exit"); } else if(!common_scripts\utility::flag("flag_demo_itiot")) { var_01 = getdvarint("g_friendlyNameDist"); setsaveddvar("g_friendlyNameDist",0); param_00 maps\_anim::anim_single_solo(self,"server_room_exit_promo"); setsaveddvar("g_friendlyNameDist",var_01); } level.player unlink(); level.player_rig delete(); level.player maps\_shg_utility::setup_player_for_gameplay(); maps\_player_exo::player_exo_activate(); level.player disableslowaim(); common_scripts\utility::flag_set("flag_obj_bio_weapons_complete"); maps\_utility::autosave_by_name(); } //Function Number: 127 open_server_room_door() { soundscripts\_snd::snd_message("open_server_room_door"); common_scripts\utility::flag_set("open_server_room_door_lighting"); var_00 = getent("door_server_room_left","targetname"); var_01 = getent("door_server_room_right","targetname"); var_02 = getent("clip_door_server_room_left","targetname"); var_03 = getent("clip_door_server_room_right","targetname"); var_02 linkto(var_00); var_03 linkto(var_01); var_04 = common_scripts\utility::getstruct("struct_door_server_room_left","targetname"); var_05 = common_scripts\utility::getstruct("struct_door_server_room_right","targetname"); var_00 moveto(var_04.origin,1,0.5,0.5); var_01 moveto(var_05.origin,1,0.5,0.5); wait(0.5); var_02 connectpaths(); var_03 connectpaths(); } //Function Number: 128 se_server_room_player_kills_guy(param_00) { level endon("end_enemy_server_room_se_dead"); self endon("death"); self waittill("damage",var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09); if(var_02 == level.player) { common_scripts\utility::flag_set("flag_server_room_enemy_killed_by_player"); } if(self.damagelocation == "head") { level.player maps\_upgrade_challenge::give_player_challenge_headshot(1); return; } level.player maps\_upgrade_challenge::give_player_challenge_kill(1); } //Function Number: 129 burke_server_room_se(param_00) { wait(2); param_00 maps\_anim::anim_reach_solo(level.burke,"server_room_entry_intro"); param_00 maps\_anim::anim_single_solo(level.burke,"server_room_entry_intro"); common_scripts\utility::flag_set("flag_burke_server_room_ready"); param_00 thread maps\_anim::anim_loop_solo(level.burke,"server_room_door_idle","ender"); common_scripts\utility::flag_wait("flag_se_server_room_start"); param_00 notify("ender"); level.burke maps\_utility::anim_stopanimscripted(); param_00 maps\_anim::anim_single_solo(level.burke,"server_room_peek"); param_00 thread maps\_anim::anim_loop_solo(level.burke,"server_room_door_idle","ender"); common_scripts\utility::flag_wait_any("flag_server_room_enemy_killed_by_player","flag_server_room_enemy_killed_by_knox"); if(common_scripts\utility::flag("flag_server_room_enemy_killed_by_player")) { wait(2); } else { wait(4); } param_00 notify("ender"); level.burke maps\_utility::anim_stopanimscripted(); param_00 maps\_anim::anim_single_solo(level.burke,"server_room_enter"); param_00 thread maps\_anim::anim_loop_solo(level.burke,"server_room_enter_idle","ender"); param_00 thread maps\lab_utility::notify_on_flag("flag_obj_bio_weapons_hack","ender"); common_scripts\utility::flag_wait("flag_se_server_room_exit_start"); level.burke maps\_utility::anim_stopanimscripted(); param_00 notify("ender"); } //Function Number: 130 cormack_server_room_se(param_00) { param_00 maps\_anim::anim_reach_solo(level.cormack,"server_room_entry_intro"); param_00 maps\_anim::anim_single_solo(level.cormack,"server_room_entry_intro"); common_scripts\utility::flag_set("flag_cormack_server_room_ready"); if(!common_scripts\utility::flag("flag_se_server_room_start")) { param_00 thread maps\_anim::anim_loop_solo(level.cormack,"server_room_door_idle","ender"); } common_scripts\utility::flag_wait("flag_se_server_room_start"); param_00 notify("ender"); level.cormack maps\_utility::anim_stopanimscripted(); param_00 maps\_anim::anim_single_solo(level.cormack,"server_room_peek"); param_00 maps\_anim::anim_single_solo(level.cormack,"server_room_enter"); param_00 thread maps\_anim::anim_loop_solo(level.cormack,"server_room_door_idle","ender"); param_00 thread maps\lab_utility::notify_on_flag("flag_obj_bio_weapons_hack","ender"); common_scripts\utility::flag_wait("flag_se_server_room_exit_start"); level.cormack maps\_utility::anim_stopanimscripted(); param_00 notify("ender"); } //Function Number: 131 knox_server_room_se(param_00) { param_00 maps\_anim::anim_reach_solo(level.knox,"server_room_entry_intro"); param_00 maps\_anim::anim_single_solo(level.knox,"server_room_entry_intro"); common_scripts\utility::flag_set("flag_knox_server_room_ready"); if(!common_scripts\utility::flag("flag_se_server_room_start")) { param_00 thread maps\_anim::anim_loop_solo(level.knox,"server_room_door_idle","ender"); common_scripts\utility::flag_wait("flag_se_server_room_start"); param_00 notify("ender"); } param_00 thread knox_server_room_se_peek("server_room_peek","server_room_door_idle","ender"); common_scripts\utility::flag_wait("flag_sever_room_guy_kill"); param_00 notify("ender"); level.knox maps\_utility::anim_stopanimscripted(); if(!common_scripts\utility::flag("flag_server_room_enemy_killed_by_player")) { soundscripts\_snd::snd_message("aud_server_room_door_kick"); param_00 maps\_anim::anim_single_solo(level.knox,"server_room_enter_fail"); } param_00 thread maps\_anim::anim_loop_solo(level.knox,"server_room_door_idle","ender"); param_00 thread maps\lab_utility::notify_on_flag("flag_obj_bio_weapons_hack","ender"); common_scripts\utility::flag_wait("flag_se_server_room_exit_start"); level.knox maps\_utility::anim_stopanimscripted(); param_00 notify("ender"); } //Function Number: 132 knox_server_room_se_peek(param_00,param_01,param_02) { level endon("flag_sever_room_guy_kill"); maps\_anim::anim_single_solo(level.knox,param_00); thread maps\_anim::anim_loop_solo(level.knox,param_01,param_02); } //Function Number: 133 server_room_fire_knox_gun(param_00) { if(!common_scripts\utility::flag("flag_server_room_enemy_killed_by_player")) { magicbullet(level.knox.weapon,level.knox gettagorigin("tag_flash"),level.console_guy geteye()); } } //Function Number: 134 server_room_se_end(param_00) { common_scripts\utility::flag_wait("flag_obj_bio_weapons_hack"); if(!common_scripts\utility::flag("flag_server_room_promo")) { param_00 maps\_anim::anim_single_solo_run(self,"server_room_exit"); return; } param_00 maps\_anim::anim_single_solo_run(self,"server_room_exit_promo"); } //Function Number: 135 enemy_server_room_se(param_00) { level endon("flag_enemy_server_room_se_dead"); common_scripts\utility::flag_wait("flag_se_server_room_start"); level.console_guy = getent("guy_se_server_room","targetname") maps\_utility::spawn_ai(1); level.console_guy.animname = "guy_01_server_room"; level.console_guy.ignoresonicaoe = 1; level.console_guy thread se_server_room_player_kills_guy(param_00); param_00 thread maps\_anim::anim_loop_solo(level.console_guy,"server_room_door_idle","ender"); level.console_guy.allowdeath = 0; common_scripts\utility::flag_wait("flag_sever_room_guy_kill"); common_scripts\utility::flag_set("flag_server_room_enemy_killed_by_knox"); param_00 notify("ender"); if(isalive(level.console_guy) && common_scripts\utility::flag("flag_server_room_enemy_killed_by_player")) { param_00 maps\_anim::anim_single_solo(level.console_guy,"server_room_enter"); return; } if(isalive(level.console_guy)) { param_00 maps\_anim::anim_single_solo(level.console_guy,"server_room_enter_fail"); } } //Function Number: 136 monitor_server_room_se(param_00) { param_00 thread maps\_anim::anim_loop_solo(self,"server_room_door_idle","ender"); level.monitor setmodel("lab_server_monitor_01_opc"); common_scripts\utility::flag_wait_any("flag_server_room_enemy_killed_by_player","flag_server_room_enemy_killed_by_knox"); self stopanimscripted(); param_00 notify("ender"); if(common_scripts\utility::flag("flag_server_room_enemy_killed_by_player")) { param_00 maps\_anim::anim_single_solo(self,"server_room_enter"); } else { param_00 maps\_anim::anim_single_solo(self,"server_room_enter_fail"); } level.monitor setmodel("lab_server_monitor_01_obj"); common_scripts\utility::flag_set("monitor_finished_animating"); common_scripts\utility::flag_wait("flag_obj_bio_weapons_hack"); level.monitor setmodel("lab_server_monitor_01_opc"); if(!common_scripts\utility::flag("flag_server_room_promo")) { param_00 maps\_anim::anim_single_solo(self,"server_room_exit"); return; } param_00 maps\_anim::anim_single_solo(self,"server_room_exit_promo"); } //Function Number: 137 se_foam_room_player() { var_00 = getent("org_foam_room","targetname"); common_scripts\utility::flag_wait("flag_obj_neutralize_bio_weapons_planted"); thread foam_room_door_01_close(); thread foam_room_door_03_close(); var_01 = "foam_room"; var_02 = spawn("script_model",var_00.origin); var_02 setmodel("npc_foam_grenade"); var_02.animname = "foam_bomb"; var_02 maps\_anim::setanimtree(); level.player enableinvulnerability(); thread maps\lab_lighting::foam_plant_dof(); var_03 = maps\_utility::spawn_anim_model("player_rig_intro"); var_03 hide(); var_00 maps\_anim::anim_first_frame_solo(var_03,var_01); soundscripts\_snd::snd_message("player_plant_frb"); level.player maps\_shg_utility::setup_player_for_scene(1); maps\_player_exo::player_exo_deactivate(); var_04 = [var_03,var_02]; level.player playerlinktoblend(var_03,"tag_player",0.2); wait(0.5); var_03 show(); thread frb_plant_rumbles(); var_00 maps\_anim::anim_single(var_04,var_01); level.player disableinvulnerability(); level notify("reset_plant_dof"); level.player maps\_shg_utility::setup_player_for_gameplay(); maps\_player_exo::player_exo_activate(); var_02 hidepart("root_pin"); var_02 hidepart("flipper"); var_03 delete(); level.player unlink(); } //Function Number: 138 frb_plant_rumbles() { maps\lab_utility::setup_level_rumble_ent(); wait(1.3); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.3,0.4); wait(0.5); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.8,0.3); wait(0.75); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.7,0.2); level.player waittill("detonate"); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.2,0.4); } //Function Number: 139 se_foam_room() { common_scripts\utility::flag_wait("flag_obj_neutralize_bio_weapons_planted"); thread foam_room_clear_think(); var_00 = getent("org_foam_warp1","targetname"); var_01 = getent("org_foam_warp2","targetname"); var_02 = getent("org_foam_warp3","targetname"); level.cormack forceteleport(var_00.origin,var_00.angles); level.knox forceteleport(var_01.origin,var_01.angles); level.burke forceteleport(var_02.origin,var_02.angles); level.cormack.goalradius = 64; level.knox.goalradius = 64; level.burke.goalradius = 64; if(!common_scripts\utility::flag("flag_obj_courtyard_jammer_start")) { waittillframeend; wait(3); maps\_utility::activate_trigger_with_targetname("trig_color_foam_planted"); level.burke maps\_utility::delaythread(0.05,::maps\_utility::disable_ai_color); level.cormack maps\_utility::delaythread(0.05,::maps\_utility::disable_ai_color); level.knox maps\_utility::delaythread(0.05,::maps\_utility::disable_ai_color); } common_scripts\utility::flag_wait("flag_foam_room_complete_dialogue"); common_scripts\utility::flag_set("flag_enable_battle_chatter"); level.burke maps\_utility::enable_ai_color(); level.cormack maps\_utility::enable_ai_color(); level.knox maps\_utility::enable_ai_color(); level.burke.ignoreall = 0; level.cormack.ignoreall = 0; level.knox.ignoreall = 0; level.cormack notify("goal_changed"); level.knox notify("goal_changed"); level.burke notify("goal_changed"); if(!common_scripts\utility::flag("flag_obj_courtyard_jammer_start")) { waittillframeend; wait(0.75); level.cormack.goalradius = 2048; level.knox.goalradius = 2048; level.burke.goalradius = 2048; maps\_utility::activate_trigger_with_targetname("trig_color_foam_room_exit"); } wait(2.5); thread maps\_utility::autosave_by_name("courtyard_start"); } //Function Number: 140 foam_room_clear_think() { var_00 = getent("vol_foam_room_clear","targetname"); while(!common_scripts\utility::flag("flag_foam_room_clear")) { if(level.player istouching(var_00) && level.burke istouching(var_00) && level.knox istouching(var_00) && level.cormack istouching(var_00)) { common_scripts\utility::flag_set("flag_foam_room_clear"); thread foam_room_door_02_close(); continue; } wait(0.1); } } //Function Number: 141 se_knox_courtyard_hangar_door_hack_open() { common_scripts\utility::flag_wait("flag_hangar_mech_01_dead"); var_00 = common_scripts\utility::getstruct("knox_courtyard_hangar_door_hack_open_org","targetname"); var_00 maps\_anim::anim_reach_solo(level.knox,"courtyard_hangar_door_hack_enter"); common_scripts\utility::flag_set("flag_courtyard_door_hack_dialogue"); soundscripts\_snd::snd_message("aud_courtyard_hangar_door_hack",level.scr_anim["knox"]["courtyard_hangar_door_hack_enter"],level.knox); var_00 maps\_anim::anim_single_solo(level.knox,"courtyard_hangar_door_hack_enter"); soundscripts\_snd::snd_message("aud_courtyard_hangar_door_hack_idle",level.scr_anim["knox"]["courtyard_hangar_door_hack_idle"][0],level.knox); var_00 thread maps\_anim::anim_loop_solo(level.knox,"courtyard_hangar_door_hack_idle","ender"); common_scripts\utility::flag_wait("flag_courtyard_hangar_door_hack_success"); var_00 notify("ender"); level.knox maps\_utility::anim_stopanimscripted(); level notify("hack_success"); soundscripts\_snd::snd_message("aud_courtyard_hangar_door_open"); var_00 maps\_anim::anim_single_solo(level.knox,"courtyard_hangar_door_hack_exit"); } //Function Number: 142 se_foam_room_bomb() { level.player thread handle_foam_detonator(); level.player waittill("detonate"); var_00 = getent("org_foam_research","targetname"); level notify("vfx_foam_room_explode_start"); } //Function Number: 143 handle_foam_detonator() { level.player endon("detonate"); for(;;) { common_scripts\utility::flag_wait("flag_foam_room_clear"); maps\_utility::display_hint("detonate_frb"); level.player thread maps\_foam_bomb::handle_detonator(); common_scripts\utility::flag_waitopen("flag_foam_room_clear"); self switchtoweapon(self.old_weapon); self takeweapon(level.c4_weaponname); } } //Function Number: 144 se_foam_corridor_bomb(param_00) { var_01 = maps\_utility::spawn_anim_model("foam_bomb"); thread maps\_anim::anim_single_solo(var_01,"foam_corridor_exit"); soundscripts\_snd::snd_message("foam_grenade",level.burke); level waittill("foam_grenade_detonate"); var_01 delete(); level notify("vfx_foam_corridor_explode_start"); var_02 = getent("blocker_foam_corridor","targetname"); var_02 solid(); var_02 disconnectpaths(); var_02 moveto(var_02.origin + (0,156,0),5,0.25,0.25); wait(3); thread tank_hangar_door_open(); common_scripts\utility::flag_set("flag_foam_corridor_exit_door_open_dialogue"); wait(3); cleanup_foam_corridor_enemies(); } //Function Number: 145 se_foam_corridor_grenade() { level.burke waittillmatch("burke_grenade_hold","single anim"); var_00 = spawn("script_model",level.burke gettagorigin("tag_inhand")); var_00 setmodel("projectile_m67fraggrenade"); var_00 linkto(level.burke,"tag_inhand"); var_01 = common_scripts\utility::getstruct("struct_foam_corridor_grenade_dest","targetname"); level.burke waittillmatch("burke_grenade_release","single anim"); var_00 delete(); var_02 = level.burke gettagorigin("tag_inhand"); var_03 = magicgrenade("fraggrenade",var_02,var_01.origin,2); var_03 waittill("death"); foreach(var_05 in getaiarray("axis")) { if(isdefined(var_05.magic_bullet_shield) && var_05.magic_bullet_shield == 1) { var_05 maps\_utility::stop_magic_bullet_shield(); } } radiusdamage(var_01.origin,300,99999,99999); common_scripts\utility::flag_wait("foam_corridor_end"); thread tank_hangar_door_open(); wait(0.5); common_scripts\utility::flag_set("flag_foam_corridor_exit_door_open_dialogue"); } //Function Number: 146 debug_track(param_00) { wait(0.05); } //Function Number: 147 se_foam_corridor_guy_4() { } //Function Number: 148 se_foam_corridor() { level.burke.dontmelee = 1; level.knox.dontmelee = 1; level.cormack.dontmelee = 1; level.burke maps\_utility::disable_ai_color(); level.knox maps\_utility::disable_ai_color(); level.cormack maps\_utility::disable_ai_color(); var_00 = getent("blocker_foam_corridor","targetname"); var_00 notsolid(); var_00 connectpaths(); var_01 = common_scripts\utility::getstruct("foam_corridor_anim_node","targetname"); var_02 = spawn("script_origin",var_01.origin); if(isdefined(var_01.angles)) { var_02.angles = var_01.angles; } var_03 = "foam_corridor_in"; var_04 = "foam_corridor_idle"; var_05 = "foam_corridor_grenade_throw"; var_06 = "foam_corridor_idle_2"; var_07 = "foam_corridor_exit"; var_08 = "foam_corridor_idle_end"; var_09 = "foam_corridor_idle2_end"; var_0A = []; var_0A[var_0A.size] = level.burke; var_0A[var_0A.size] = level.knox; var_0A[var_0A.size] = level.cormack; common_scripts\utility::trigger_off("trigger_foam_corridor_end","targetname"); common_scripts\utility::array_thread(var_0A,::se_foam_corridor_approach,var_02,var_03,var_04,var_08); common_scripts\utility::flag_set("flag_foam_corridor_another_door_dialogue"); level waittill("foam_corridor_squadmate_ready"); level waittill("foam_corridor_squadmate_ready"); level waittill("foam_corridor_squadmate_ready"); common_scripts\utility::flag_wait("foam_corridor_start"); common_scripts\utility::flag_waitopen("flag_player_inside_foam_corridor"); common_scripts\utility::flag_set("flag_foam_corridor_improvise_dialogue"); var_0B = common_scripts\utility::getstruct("hovertank_reveal_org","targetname"); var_0C = maps\_utility::spawn_anim_model("hovertank",level.hovertank.origin); level.hovertank hide(); thread se_hovertank_reveal_actor(var_0C,var_0B); var_02 notify(var_08); thread se_foam_corridor_grenade(); var_02 maps\_anim::anim_single(var_0A,var_05); var_02 thread maps\_anim::anim_loop(var_0A,var_06,var_09); common_scripts\utility::trigger_on("trigger_foam_corridor_end","targetname"); common_scripts\utility::flag_wait("foam_corridor_end"); var_02 notify(var_09); foreach(var_0E in var_0A) { var_0F = spawnstruct(); var_0F thread maps\_utility::function_stack(::foam_room_end_animation,var_0E,var_01,var_07); var_0F thread maps\_utility::function_stack(::se_hovertank_reveal_actor,var_0E,var_0B); } common_scripts\utility::flag_set("flag_foam_corridor_exit"); level.burke.dontmelee = 0; level.knox.dontmelee = 0; level.cormack.dontmelee = 0; level.burke maps\_utility::enable_ai_color_dontmove(); level.knox maps\_utility::enable_ai_color_dontmove(); level.cormack maps\_utility::enable_ai_color_dontmove(); var_02 delete(); } //Function Number: 149 foam_room_end_animation(param_00,param_01,param_02) { param_01 maps\_anim::anim_single_solo_run(param_00,param_02); } //Function Number: 150 se_foam_corridor_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("foam_corridor_squadmate_ready"); } //Function Number: 151 se_exfil() { common_scripts\utility::flag_wait("flag_exfil_start"); common_scripts\utility::flag_set("flag_exfil_start_dialogue"); var_00 = common_scripts\utility::getstruct("org_se_exfil","targetname"); thread maps\lab_lighting::exfil(); var_01 = common_scripts\utility::getstruct("hovertank_exit_burke_position","targetname"); level.burke maps\_utility::anim_stopanimscripted(); level.burke forceteleport(var_01.origin,var_01.angles,1000); var_02 = common_scripts\utility::getstruct("hovertank_exit_knox_position","targetname"); level.knox maps\_utility::anim_stopanimscripted(); level.knox forceteleport(var_02.origin,var_02.angles,1000); level.knox setgoalnode(getnode("knox_exfil_node","targetname")); level.burke pushplayer(1); level.cormack pushplayer(1); level.burke.moveplaybackrate = 0.9; level.knox.moveplaybackrate = 0.9; level.player maps\_utility::blend_movespeedscale_percent(80); thread cormack_exfil_approach(var_00); level.burke thread burke_exfil_approach(var_00,"exfil_burke_enter"); var_03 = [level.burke]; common_scripts\utility::flag_wait("flag_burke_ready_for_exfil"); var_00 notify("fly_in_idle_stop"); var_00 thread maps\_anim::anim_single(var_03,"exfil_burke_enter"); var_00 maps\_anim::anim_single(var_03,"exfil_burke_enter"); var_00 thread maps\_anim::anim_loop(var_03,"exfil_hover_idle","exfil_hover_idle_stop"); common_scripts\utility::flag_set("flag_player_exfil_enter_ready"); thread se_player_exfil_out_of_bounds_check(); common_scripts\utility::flag_wait("flag_player_exfil_enter"); maps\_utility::autosave_by_name(); common_scripts\utility::flag_set("flag_exfil_dialogue"); thread maps\lab_lighting::exfil_dof(); var_00 notify("exfil_hover_idle_stop"); var_00 notify("exfil_hover_idle_stop"); waittillframeend; maps\_player_exo::player_exo_deactivate(); maps\_player_exo::player_exo_add_single("exo_melee"); var_04 = maps\_utility::spawn_anim_model("player_rig_intro"); var_04.animname = "player_rig_intro"; var_04.weapon = "none"; var_04 hide(); level.razorback maps\_anim::anim_first_frame_solo(var_04,"exfil_enter","tag_guy1"); level notify("player_enters_razorback"); var_05 = 0.5; level.player playerlinktoblend(var_04,"tag_player",var_05); level.player maps\_utility::add_wait(::maps\_shg_utility::setup_player_for_scene,1); var_04 maps\_utility::add_call(::show); thread maps\_utility::do_wait(); var_03 = [level.cormack,level.burke,level.knox,var_04]; foreach(var_07 in var_03) { var_07 linkto(level.razorback,"tag_guy1"); } level.razorback thread maps\_anim::anim_single(var_03,"exfil_enter","tag_guy1"); maps\_utility::delaythread(4,::common_scripts\utility::flag_set,"flag_obj_battle_exfil_complete"); maps\_utility::delaythread(12,::common_scripts\utility::flag_set,"flag_burke_destroy_tank"); maps\_utility::delaythread(30,::common_scripts\utility::flag_set,"flag_mission_complete"); level waittill("level_fade_out"); var_09 = 3; maps\lab_utility::ending_fade_out(var_09); wait(var_09); maps\_utility::nextmission(); } //Function Number: 152 se_player_exfil_out_of_bounds_check() { var_00 = getent("obj_battle_exfil_04","targetname"); while(!common_scripts\utility::flag("flag_player_exfil_enter")) { if(distance(level.player.origin,var_00.origin) > 2000) { common_scripts\utility::flag_clear("flag_player_close_to_exfil"); maps\_utility::display_hint_timeout("hint_dont_leave_mission",5); if(distance(level.player.origin,var_00.origin) > 3000) { common_scripts\utility::flag_set("flag_player_close_to_exfil"); level notify("mission failed"); setdvar("ui_deadquote",&"LAB_MISSION_FAILED_LEFT_MISSION"); maps\_utility::missionfailedwrapper(); } continue; } common_scripts\utility::flag_set("flag_player_close_to_exfil"); wait(0.3); } common_scripts\utility::flag_set("flag_player_close_to_exfil"); } //Function Number: 153 break_exfil_out_bounds() { if(common_scripts\utility::flag("flag_player_close_to_exfil")) { return 1; } return 0; } //Function Number: 154 se_exfil_razorback(param_00) { common_scripts\utility::flag_set("flag_obj_show_razorback_marker"); var_01 = common_scripts\utility::getstruct("org_se_exfil","targetname"); level.razorback = maps\_vehicle::spawn_vehicle_from_targetname("helo_exfil"); soundscripts\_snd::snd_message("razorback_land"); level.razorback.animname = "razorback"; level.razorback maps\_anim::setanimtree(); level.razorback thread maps\lab_fx::se_exfil_fx(); thread maps\lab_lighting::razorback_lighting(level.razorback); thread maps\lab_lighting::burke_exfil_lighting(); param_00 = maps\_utility::spawn_targetname("guy_helo_exfil"); param_00.animname = "guy_exfil"; var_02 = maps\_utility::spawn_targetname("guy_helo_exfil_pilot"); var_02.animname = "guy_exfil_pilot"; var_02 maps\_utility::gun_remove(); var_02 linkto(level.razorback,"tag_guy1"); level.razorback thread maps\_anim::anim_loop_solo(var_02,"exfil_pilot_idle","ender","tag_guy1"); var_03 = [param_00,level.razorback]; var_01 thread maps\_anim::anim_single(var_03,"exfil_fly_in"); thread handle_player_close_to_aircraft_rumbles(); common_scripts\utility::waittill_any_ents(level,"flag_burke_ready_for_exfil",var_01,"exfil_fly_in"); if(!common_scripts\utility::flag("flag_burke_ready_for_exfil")) { var_01 thread maps\_anim::anim_loop(var_03,"exfil_fly_in_idle","fly_in_idle_stop"); } common_scripts\utility::flag_wait("flag_burke_ready_for_exfil"); level notify("thruster_front_off"); var_01 notify("fly_in_idle_stop"); param_00 maps\_utility::anim_stopanimscripted(); var_01 thread maps\_anim::anim_single(var_03,"exfil_burke_enter"); var_01 maps\_anim::anim_single(var_03,"exfil_burke_enter"); var_01 thread maps\_anim::anim_loop(var_03,"exfil_hover_idle","exfil_hover_idle_stop"); common_scripts\utility::flag_wait("flag_player_exfil_enter"); var_01 notify("exfil_hover_idle_stop"); waittillframeend; var_03 = [param_00]; param_00 maps\_utility::anim_stopanimscripted(); var_01 thread maps\_anim::anim_single_solo(level.razorback,"exfil_enter"); foreach(param_00 in var_03) { param_00 linkto(level.razorback,"tag_guy1"); } level.razorback thread maps\_anim::anim_single(var_03,"exfil_enter","tag_guy1"); } //Function Number: 155 burke_exfil_approach(param_00,param_01) { param_00 maps\_anim::anim_reach_solo(self,param_01); common_scripts\utility::flag_set("flag_burke_ready_for_exfil"); } //Function Number: 156 cormack_exfil_approach(param_00) { param_00 maps\_anim::anim_reach_solo(level.cormack,"exfil_cormack_approach"); maps\_utility::delaythread(2,::common_scripts\utility::flag_set,"flag_exfil_loadup_dialogue"); param_00 maps\_anim::anim_single_solo(level.cormack,"exfil_cormack_approach"); param_00 thread maps\_anim::anim_loop_solo(level.cormack,"exfil_cormack_approach_idle","ender"); common_scripts\utility::flag_wait("flag_player_exfil_enter"); level.cormack stopanimscripted(); param_00 notify("ender"); } //Function Number: 157 setup_combat() { setup_spawn_functions(); setup_hovertank(); thread player_stealth_cloak_think(); thread setup_clip(); thread setup_triggers(); thread combat_gaz_bridge(); thread forest_ambient_enemy_se(); thread foreat_stealth_ambient_vehicle_drive_by(); thread combat_forest_patrols_start(); thread logging_road_loud_combat(); thread combat_logging_road_end(); thread combat_research_building(); thread combat_research_building_bridge(); thread combat_research_pool_walkway_01(); thread combat_research_left_01(); thread combat_research_right_01(); thread combat_research_pool_room(); thread combat_research_platform_01(); thread combat_courtyard_path_general(); thread combat_courtyard_jammer(); thread combat_courtyard_jammer_complete(); thread skip_foam_corridor(); thread cleanup_courtyard_enemies(); thread open_hangar_doors(); thread combat_tank_road(); thread courtyard_gate_think(1); thread courtyard_gate_think(2); } //Function Number: 158 combat_gaz_bridge() { common_scripts\utility::flag_wait("flag_increase_sinper_shots_01"); wait(3); var_00 = getent("gaz_bridge_02","targetname"); } //Function Number: 159 helo_spotlight_logging_road() { if(!isdefined(level.start_point) || level.start_point != "logging_road") { common_scripts\utility::flag_wait("flag_se_takedown_01_complete"); } level.helo_spotlight_logging_road = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("helo_spotlight_logging_road"); level.helo_spotlight_logging_road soundscripts\_snd::snd_message("aud_patrol_helo_debris_sfx"); level.helo_spotlight_logging_road maps\_vehicle::godon(); level.helo_spotlight_logging_road maps\_utility::ent_flag_init("spotlight_on"); level.helo_spotlight_logging_road.spotlight = spawnturret("misc_turret",level.helo_spotlight_logging_road gettagorigin("tag_flash"),"heli_spotlight_so_castle"); level.helo_spotlight_logging_road.spotlight setmode("manual"); level.helo_spotlight_logging_road.spotlight setmodel("com_blackhawk_spotlight_on_mg_setup"); level.helo_spotlight_logging_road.spotlight maketurretinoperable(); level.helo_spotlight_logging_road.spotlight makeunusable(); level.helo_spotlight_logging_road.spotlight.angles = level.helo_spotlight_logging_road gettagangles("tag_flash"); level.helo_spotlight_logging_road.spotlight linkto(level.helo_spotlight_logging_road,"tag_flash",(0,2,-6),(0,90,-20)); level.helo_spotlight_logging_road thread helo_spotlight_think("docks_heli_spotlight_cheap"); level.helo_spotlight_logging_road thread helo_spotlight_point_of_interest_tracking(); level.helo_spotlight_logging_road maps\_utility::ent_flag_set("spotlight_on"); level.helo_spotlight_logging_road maps\_vehicle::mgoff(); level.helo_spotlight_logging_road thread helo_spotlight_logging_road_break_off(); common_scripts\utility::flag_wait("flag_helo_logging_road_end"); level.helo_spotlight_logging_road.spotlight delete(); } //Function Number: 160 helo_spotlight_logging_road_break_off() { self endon("death"); common_scripts\utility::flag_wait("flag_logging_road_loud_combat"); self notify("newpath"); maps\_utility::vehicle_liftoff(512); maps\_utility::vehicle_dynamicpath(common_scripts\utility::getstruct("logging_road_chopper_detour","targetname")); } //Function Number: 161 combat_forest_patrols_start() { if(!isdefined(level.start_point) || level.start_point != "logging_road") { common_scripts\utility::flag_wait("flag_se_takedown_01_complete"); } level.patrol_01 = maps\_utility::spawn_targetname("enemy_stealth_patrol_01",1); level.patrol_01 force_patrol_anim_set("active_right",1); level.patrol_01 thread guy_patrol_takedown_02(); var_00 = maps\_utility::spawn_targetname("enemy_stealth_patrol_02",1); var_00 force_patrol_anim_set("active_left",1); var_01 = maps\_utility::spawn_targetname("enemy_stealth_patrol_03",1); var_01 force_patrol_anim_set("gundown"); var_02 = maps\_utility::spawn_targetname("enemy_stealth_patrol_04",1); var_02 force_patrol_anim_set("active",1); var_03 = maps\_utility::spawn_targetname("enemy_stealth_patrol_06",1); var_03 force_patrol_anim_set("creepwalk"); var_04 = maps\_utility::spawn_targetname("enemy_stealth_patrol_07",1); var_04 force_patrol_anim_set("creepwalk"); var_05 = [level.patrol_01,var_00,var_01,var_02,var_03,var_04]; soundscripts\_snd::snd_message("combat_forest_patrols_start",var_05); thread helo_spotlight_logging_road(); foreach(var_07 in var_05) { if(isdefined(var_07.pdroneactive) && var_07.pdroneactive) { var_07 thread start_search_drone_behavior_when_pdrone_follower_spawned(); } } common_scripts\utility::flag_wait("flag_forest_drive_by_01"); var_09 = maps\_utility::spawn_targetname("enemy_stealth_patrol_08",1); var_09 force_patrol_anim_set("casualkiller"); var_0A = maps\_utility::spawn_targetname("enemy_stealth_patrol_09",1); var_0A force_patrol_anim_set("casualkiller"); } //Function Number: 162 start_search_drone_behavior_when_pdrone_follower_spawned() { self endon("death"); while(!isdefined(self.pdrone)) { wait(0.5); } if(isdefined(self.script_stealthgroup)) { self.pdrone.script_stealthgroup = self.script_stealthgroup; } thread search_drone_behavior(self.pdrone); } //Function Number: 163 set_flag_on_death(param_00,param_01,param_02,param_03) { self waittill("death"); if(isdefined(param_00)) { common_scripts\utility::flag_set(param_00); } if(isdefined(param_01)) { common_scripts\utility::flag_set(param_01); } if(isdefined(param_02)) { common_scripts\utility::flag_set(param_02); } if(isdefined(param_03)) { common_scripts\utility::flag_set(param_03); } } //Function Number: 164 patrol_03_idle_think() { common_scripts\utility::flag_wait("flag_patrol_03_idle"); var_00 = common_scripts\utility::getstruct("forest_stealth_ambiant_01_org","targetname"); var_00 maps\_anim::anim_loop_solo(self,"patrol_sit_idle","ender"); } //Function Number: 165 forest_ambient_enemy_se() { common_scripts\utility::flag_wait("flag_forest_climb_wall_complete"); var_00 = maps\_utility::spawn_targetname("enemy_stealth_ambient_02",1); var_00 maps\_flashlight_cheap::add_cheap_flashlight("flashlight"); var_01 = maps\_utility::spawn_targetname("enemy_stealth_ambient_04",1); var_01 maps\_flashlight_cheap::add_cheap_flashlight("flashlight"); var_02 = maps\_utility::spawn_targetname("enemy_stealth_ambient_05",1); var_02 maps\_flashlight_cheap::add_cheap_flashlight("flashlight"); soundscripts\_snd::snd_message("combat_forest_patrols_start",[var_00,var_01,var_02]); } //Function Number: 166 flag_wait_both_or_timeout(param_00,param_01,param_02) { var_03 = param_02 * 1000; var_04 = gettime(); for(;;) { if(common_scripts\utility::flag(param_00) && common_scripts\utility::flag(param_01)) { break; } if(gettime() >= var_04 + var_03) { break; } wait(0.05); } } //Function Number: 167 burke_forest_stealth_movement() { level.burke pushplayer(1); level.burke.dontavoidplayer = 1; level.burke.dontchangepushplayer = 1; level endon("flag_ready_burke_for_mech_march"); if(common_scripts\utility::flag("flag_logging_road_loud_combat")) { return; } level endon("flag_logging_road_loud_combat"); var_00 = getnode("node_burke_forest_stealth_01","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); common_scripts\utility::flag_wait_all("flag_patroler_takedown_02_follow_a","flag_forest_drive_by_01","flag_burke_forest_01_moveup"); var_00 = getnode("node_burke_takedown_02_follow","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); common_scripts\utility::flag_wait_all("flag_patroler_takedown_02_follow_b","flag_forest_drive_by_02"); if(!common_scripts\utility::flag("flag_patroler_takedown_02_ready")) { var_00 = getnode("node_burke_takedown_02","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); level.burke maps\_utility::set_moveplaybackrate(0.7); } else { level.burke maps\_utility::set_moveplaybackrate(1); } if(isdefined(level.patrol_01) && isalive(level.patrol_01)) { thread burke_patrol_takedown_02(level.patrol_01); } else { common_scripts\utility::flag_set("flag_se_takedown_02_complete"); var_00 = getnode("node_burke_takedown_02","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); } common_scripts\utility::flag_wait_all("flag_se_takedown_02_complete","flag_patroler_06_clear","flag_patroler_07_clear","flag_patroler_03_clear"); var_00 = getnode("node_burke_forest_stealth_02","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); level.burke maps\_utility::set_moveplaybackrate(1); var_01 = getnodearray("node_logging_road","targetname"); foreach(var_03 in var_01) { var_03 disconnectnode(); } wait(1); common_scripts\utility::flag_set("flag_recharge_cloak_01"); maps\_utility::display_hint_timeout("exo_toggle_hint",5); level.burke maps\lab_utility::ai_toggle_cloak_animate(2,0,"right"); if(common_scripts\utility::flag("flag_forest_player_alt_path_01")) { common_scripts\utility::flag_set("flag_move_to_vehicle_takedown_01"); common_scripts\utility::flag_set("flag_move_to_vrap_takedown"); } flag_wait_both_or_timeout("flag_move_to_vrap_takedown","flag_aproach_vehicle_dialogue_complete",12); common_scripts\utility::flag_set("flag_move_to_vehicle_takedown_01"); var_00 = getnode("node_burke_forest_stealth_03","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); foreach(var_03 in var_01) { var_03 connectnode(); } common_scripts\utility::flag_wait_any("flag_se_vehicle_takedown_01_complete","flag_forest_player_alt_path_01"); if(!common_scripts\utility::flag("flag_se_vehicle_takedown_01_failed") && !common_scripts\utility::flag("flag_forest_player_alt_path_01")) { var_00 = getnode("node_burke_forest_stealth_04","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); } else { common_scripts\utility::flag_set("flag_se_vehicle_takedown_01_complete"); common_scripts\utility::flag_set("flag_se_vehicle_takedown_01_failed"); } wait(2); common_scripts\utility::flag_wait("flag_drone_pass_02"); var_00 = getnode("node_burke_forest_stealth_05","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); common_scripts\utility::flag_wait("flag_recharge_cloak_trench"); level.burke maps\lab_utility::ai_toggle_cloak_animate(-1,-1); var_00 = getnode("node_burke_forest_stealth_06","targetname"); level.burke maps\lab_utility::goto_node(var_00,0); common_scripts\utility::flag_wait("flag_trench_complete"); var_00 = getnode("node_burke_forest_stealth_14","targetname"); level.burke maps\lab_utility::goto_node(var_00,0); level.burke maps\_utility::enable_cqbwalk(); } //Function Number: 168 burke_mech_march_movement() { if(common_scripts\utility::flag("flag_logging_road_loud_combat")) { return; } level endon("flag_logging_road_loud_combat"); level endon("flag_cormack_meet_init"); common_scripts\utility::flag_wait("flag_ready_burke_for_mech_march"); level.burke pushplayer(1); level.burke.dontavoidplayer = 1; level.burke.dontchangepushplayer = 1; level.burke maps\_utility::set_moveplaybackrate(1); if(!isdefined(level.start_point) || level.start_point != "mech_march") { maps\_utility::autosave_stealth(); } var_00 = getnode("node_burke_forest_stealth_07","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); wait(0.5); level.burke maps\lab_utility::ai_toggle_cloak_animate(1,0); level notify("burke_recharge_mech_done"); common_scripts\utility::flag_wait("flag_mech_march_hide_right"); var_00 = getnode("node_burke_forest_stealth_08","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); common_scripts\utility::flag_wait("flag_mech_march_hide_right_complete"); var_00 = getnode("node_burke_forest_stealth_09","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); common_scripts\utility::flag_wait_any("flag_logging_road_seeker_01","flag_gaz_01_scanner_on"); var_00 = getnode("node_burke_forest_stealth_10","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); level.burke maps\_utility::disable_cqbwalk(); level.burke maps\_utility::delaythread(5,::maps\_utility::enable_sprint); common_scripts\utility::flag_wait_all("flag_seeker_patrol_01_clear","flag_seeker_patrol_02_clear","flag_seeker_patrol_03_clear","flag_seeker_patrol_04_clear"); common_scripts\utility::flag_set("flag_seeker_patrol_01_clear"); thread advance_gideon_if_player_ahead(); common_scripts\utility::flag_wait_all("flag_move_up_seeker_01","flag_seeker_cone_safe_right"); var_00 = getnode("node_burke_forest_stealth_11","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); common_scripts\utility::flag_wait_all("flag_move_up_seeker_02","flag_seeker_cone_safe_left"); var_00 = getnode("node_burke_forest_stealth_12","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); level.burke maps\_utility::enable_cqbwalk(); level.burke maps\_utility::disable_sprint(); common_scripts\utility::flag_wait("flag_move_up_seeker_03"); var_00 = getnode("node_burke_forest_stealth_13","targetname"); level.burke maps\lab_utility::goto_node(var_00,1); level.burke maps\_utility::enable_cqbwalk(); common_scripts\utility::flag_wait("flag_exit_seeker_area"); common_scripts\utility::flag_set("flag_obj_crawl_under_log"); var_00 = getnode("node_burke_forest_stealth_15","targetname"); level.burke maps\lab_utility::goto_node(var_00,0); level.burke maps\_utility::enable_cqbwalk(); } //Function Number: 169 advance_gideon_if_player_ahead() { common_scripts\utility::flag_wait("flag_move_up_seeker_03"); common_scripts\utility::flag_set("flag_move_up_seeker_01"); common_scripts\utility::flag_set("flag_move_up_seeker_02"); } //Function Number: 170 burke_patrol_takedown_02(param_00) { param_00 endon("death"); param_00 endon("stealth_enemy_endon_alert"); param_00.animname = "guy"; var_01 = common_scripts\utility::getstruct("forest_takedown_02_org","targetname"); param_00 thread maps\_stealth_utility::stealth_enemy_endon_alert(); thread burke_patrol_takedown_02_cleanup(param_00,"death",param_00,"stealth_enemy_endon_alert",var_01,"forest_takedown_02"); common_scripts\utility::flag_wait_all("flag_patroler_03_clear","flag_patroler_06_clear","flag_patroler_07_clear","flag_patroler_takedown_02_ready"); if(isalive(param_00)) { level.burke notify("stop_goto_node"); var_01 maps\_anim::anim_reach_solo(level.burke,"forest_takedown_02",undefined,1); level notify("patrol_takedown_02_start"); var_01 thread maps\_anim::anim_single_solo(level.burke,"forest_takedown_02"); level.burke soundscripts\_snd::snd_message("burke_solo_takedown",param_00); } } //Function Number: 171 guy_patrol_takedown_02() { self endon("death"); self endon("stealth_enemy_endon_alert"); self endon("alerted"); self.animname = "guy"; var_00 = common_scripts\utility::getstruct("forest_takedown_02_org","targetname"); common_scripts\utility::flag_wait("flag_patroler_takedown_02_reach_start"); var_00 maps\_anim::anim_reach_solo(self,"forest_takedown_02_loser_enter"); var_00 maps\_anim::anim_single_solo(self,"forest_takedown_02_loser_enter"); var_00 thread maps\_anim::anim_loop_solo(self,"forest_takedown_02_loser_idle","ender"); thread guy_patrol_takedown_02_alert_check(var_00); common_scripts\utility::flag_set("flag_patroler_takedown_02_ready"); level waittill("patrol_takedown_02_start"); var_00 notify("ender"); maps\_utility::anim_stopanimscripted(); self.ignoresonicaoe = 1; var_00 thread maps\_anim::anim_single_solo(self,"forest_takedown_02_loser"); level waittill("forest_takedown_02_guy_stabbed"); thread forest_takedown_02_ai_kill(self); var_00 waittill("forest_takedown_02"); self kill(); } //Function Number: 172 guy_patrol_takedown_02_alert_check(param_00) { self endon("death"); level endon("forest_takedown_02_guy_stabbed"); common_scripts\utility::waittill_any_ents(self,"patrol_alerted",self,"_stealth_spotted",self,"stealth_event",self,"_stealth_found_corpse",self,"alerted",self,"enemy",self,"touch"); self notify("alerted"); param_00 notify("ender"); maps\_utility::anim_stopanimscripted(); if(isdefined(self.flashlight)) { self.flashlight delete(); } } //Function Number: 173 forest_takedown_02_ai_kill(param_00) { if(!isalive(param_00)) { return; } param_00.allowdeath = 1; param_00.a.nodeath = 1; param_00 maps\_utility::set_battlechatter(0); param_00.ignoreall = 1; } //Function Number: 174 burke_patrol_takedown_02_cleanup(param_00,param_01,param_02,param_03,param_04,param_05) { common_scripts\utility::waittill_any_ents(param_00,param_01,param_02,param_03,param_04,param_05); common_scripts\utility::flag_set("flag_se_takedown_02_complete"); level.burke maps\_utility::anim_stopanimscripted(); if(isalive(param_00)) { param_00 maps\_utility::anim_stopanimscripted(); } } //Function Number: 175 foreat_stealth_ambient_vehicle_drive_by() { common_scripts\utility::flag_wait("flag_forest_drive_by_01"); var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("gaz_raod_drive_by_01"); var_00 maps\_vehicle::vehicle_lights_on(); var_00 soundscripts\_snd::snd_message("gaz_01_dist_by"); var_00 thread forest_stealth_gaz_think(); var_00 thread maps\lab_fx::logging_road_mud_tracks(); wait(1.5); var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("gaz_raod_drive_by_02"); var_01 maps\_vehicle::vehicle_lights_on(); var_01 soundscripts\_snd::snd_message("gaz_02_dist_by"); var_01 thread forest_stealth_gaz_think(); var_01 thread maps\lab_fx::logging_road_mud_tracks(); wait(0.5); common_scripts\utility::flag_wait("flag_forest_drive_by_02"); var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("gaz_raod_drive_by_03"); var_02 maps\_vehicle::vehicle_lights_on(); var_02 soundscripts\_snd::snd_message("gaz_03_close_by"); var_02 thread forest_stealth_gaz_think(); var_02 thread maps\lab_fx::logging_road_mud_tracks(); common_scripts\utility::flag_wait_all("flag_se_takedown_02_complete","flag_move_to_vehicle_takedown_01"); common_scripts\utility::flag_set("flag_move_to_vrap_takedown"); thread drones_logging_road(); } //Function Number: 176 forest_stealth_gaz_think(param_00) { self endon("death"); common_scripts\utility::flag_wait("_stealth_spotted"); if(!isdefined(param_00) || !param_00) { wait(randomfloat(0.5)); } else { while(length(self vehicle_getvelocity()) > 0) { wait(0.5); } common_scripts\utility::flag_set("flag_gaz_01_scanner_on"); } self vehicle_setspeed(0,10,10); self notify("vehicle_stopping"); var_01 = maps\_vehicle::vehicle_unload(); foreach(var_03 in var_01) { var_03 thread maps\_utility::player_seek(); } } //Function Number: 177 helo_spotlight_point_of_interest_tracking() { self endon("death"); var_00 = 1000; var_01 = 500; var_02 = 3; var_03 = 10; var_04 = spawnstruct(); var_04.origin = (0,0,0); self.override_target = var_04; var_05 = common_scripts\utility::getstructarray("spotlight_point_of_interest","targetname"); for(;;) { var_06 = self.origin + anglestoforward(self.angles) * var_00; var_07 = []; foreach(var_09 in var_05) { if(distance2d(var_06,var_09.origin) < var_01) { var_07[var_07.size] = var_09; } } if(var_07.size > 0) { var_04.origin = var_07[randomint(var_07.size)].origin; self.spotlight common_scripts\utility::waittill_notify_or_timeout("turret_on_target",10); wait(randomfloatrange(var_02,var_03)); continue; } wait(1); } } //Function Number: 178 combat_logging_road_end() { common_scripts\utility::flag_wait("flag_logging_road_end_combat"); thread logging_road_seeker_save(); var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("gaz_logging_road_01"); var_00 maps\_vehicle::vehicle_lights_on(); var_00 soundscripts\_snd::snd_message("skr_distant_pull_up_and_scan"); var_00 thread forest_stealth_gaz_think(1); level endon("flag_logging_road_loud_combat"); common_scripts\utility::flag_wait("flag_seeker_patrol_spawn"); common_scripts\utility::flag_set("flag_helo_logging_road_end"); maps\_utility::spawn_script_noteworthy("guy_01_seeker",1); maps\_utility::spawn_script_noteworthy("guy_02_seeker",1); maps\_utility::spawn_script_noteworthy("guy_03_seeker",1); maps\_utility::spawn_script_noteworthy("guy_04_seeker",1); var_01 = maps\_utility::array_spawn_noteworthy("seeker_guards",1); var_00 thread maps\lab_utility::attach_scanner_turret(); if(common_scripts\utility::flag("flag_logging_road_loud_combat")) { if(isdefined(var_01[0]) && isalive(var_01[0])) { var_01[0] notify("ai_event","gunshot"); var_01[0] maps\_utility::set_favoriteenemy(level.player); } } common_scripts\utility::flag_wait("flag_gaz_01_scanner_on"); var_00 thread seeker_think(); var_00 thread maps\lab_utility::attach_scanner(1500,15,15,-5,50,10,200,50,0.35,-12,5,"veh_turret_scanner_search_red","veh_turret_scanner_search"); } //Function Number: 179 logging_road_seeker_save() { level endon("flag_logging_road_loud_combat"); common_scripts\utility::flag_wait("flag_seeker_checkpoint"); thread maps\_utility::autosave_stealth(); } //Function Number: 180 seeker_think() { self waittill("reached_dynamic_path_end"); level waittill("_stealth_spotted"); maps\_vehicle::vehicle_unload(); } //Function Number: 181 patrol_creepwalk_unload_spawn_func() { self waittill("jumpedout"); } //Function Number: 182 patrol_01_unload_spawn_func() { force_patrol_anim_set("casualkiller"); } //Function Number: 183 patrol_02_unload_spawn_func() { force_patrol_anim_set("patroljog"); } //Function Number: 184 patrol_03_unload_spawn_func() { force_patrol_anim_set("casualkiller"); } //Function Number: 185 patrol_04_unload_spawn_func() { force_patrol_anim_set("casualkiller"); } //Function Number: 186 logging_road_loud_combat() { level endon("flag_cormack_meet_init"); common_scripts\utility::flag_wait("_stealth_spotted"); common_scripts\utility::flag_set("flag_logging_road_loud_combat"); common_scripts\utility::flag_set("flag_vo_stealth_broken"); if(isdefined(level.burke.function_stack)) { level.burke maps\_utility::function_stack_clear(); } level.burke stopsounds(); level.burke.alwaysrunforward = undefined; maps\_utility::radio_dialogue_stop(); level.burke maps\_utility::enable_ai_color(); level.burke maps\_utility::enable_careful(); level.burke maps\_utility::disable_cqbwalk(); level.burke maps\lab_utility::cloak_off(1); level.burke maps\_utility::set_moveplaybackrate(1); maps\_utility::array_spawn_function_noteworthy("logging_road_loud_combat_enemy",::logging_road_loud_combat_enemy_think); if(!common_scripts\utility::flag("flag_logging_road_field_passed")) { thread logging_road_loud_combat_field(); } if(!common_scripts\utility::flag("flag_logging_road_trench_passed")) { thread logging_road_loud_combat_trench(); } if(!common_scripts\utility::flag("flag_se_mech_march_start")) { thread logging_road_loud_combat_mech_march(); } if(!common_scripts\utility::flag("flag_logging_road_end_combat")) { thread logging_road_loud_combat_end(); } common_scripts\utility::flag_set("flag_move_up_seeker_03"); maps\_player_exo::player_exo_add_single("exo_melee"); common_scripts\utility::flag_wait("flag_exit_seeker_area"); var_00 = getnode("node_burke_forest_stealth_15","targetname"); level.burke maps\lab_utility::goto_node(var_00,0); level.burke maps\_utility::enable_cqbwalk(); } //Function Number: 187 logging_road_loud_combat_enemy_think() { self endon("death"); thread maps\_utility::player_seek(); self.pathrandompercent = 300; } //Function Number: 188 logging_road_loud_combat_field() { var_00 = maps\_utility::array_spawn_targetname("logging_road_loud_combat_field_enemy"); } //Function Number: 189 logging_road_loud_combat_trench() { var_00 = maps\_utility::array_spawn_targetname("logging_road_loud_combat_trench_enemy"); } //Function Number: 190 logging_road_loud_combat_mech_march() { var_00 = maps\_utility::array_spawn_targetname("logging_road_loud_combat_mechmarch_enemy"); } //Function Number: 191 logging_road_loud_combat_end() { var_00 = maps\_utility::array_spawn_targetname("logging_road_loud_combat_end_enemy"); } //Function Number: 192 logging_road_end_drop_logic() { var_00 = getent("forest_drop_clip","targetname"); var_00 notsolid(); common_scripts\utility::flag_wait("flag_logging_road_complete"); thread player_near_logging_road_end_log(); thread player_under_logging_road_end_log(); common_scripts\utility::flag_wait("flag_seeker_clear"); thread cleanup_ai_logging_road(); if(isdefined(level.player.old_weapon)) { level.player takeweapon("iw5_unarmed_nullattach"); level.player switchtoweapon(level.player.old_weapon); level.player enableweaponswitch(); level.player.old_weapon = undefined; } var_00 solid(); } //Function Number: 193 player_near_logging_road_end_log() { level endon("flag_seeker_clear"); for(;;) { common_scripts\utility::flag_wait("player_near_logging_road_end_log"); maps\_utility::hintdisplayhandler("prone_hint"); common_scripts\utility::flag_waitopen("player_near_logging_road_end_log"); } } //Function Number: 194 player_under_logging_road_end_log() { level endon("flag_seeker_clear"); var_00 = getent("player_under_logging_road_end_log","targetname"); for(;;) { while(!level.player istouching(var_00)) { wait 0.05; } while(level.player istouching(var_00)) { if(common_scripts\utility::flag("flag_logging_road_loud_combat")) { wait(randomfloatrange(1,2.5)); thread kill_player_under_log_test(); } wait 0.05; } } } //Function Number: 195 kill_player_under_log_test() { level notify("kill_player_under_log_test"); level endon("kill_player_under_log_test"); level.player endon("death"); level endon("flag_seeker_clear"); for(;;) { if(level.burke getclosestenemysqdist(level.player.origin) < 1048576) { break; } wait(0.1); } thread kill_player_under_log_execution(); } //Function Number: 196 kill_player_under_log_execution() { var_00 = common_scripts\utility::array_randomize(common_scripts\utility::getstructarray("kill_player_under_log_bullet_soruce","targetname")); var_01 = var_00[0]; foreach(var_03 in var_00) { if(bullettracepassed(var_03.origin,level.player geteye(),0,level.player)) { var_01 = var_03; break; } } for(;;) { magicbullet("iw5_bal27_sp",var_01.origin,level.player geteye()); level.player enabledeathshield(0); level.player dodamage(level.player.health / 10,var_01.origin); wait(0.05); } } //Function Number: 197 cleanup_ai_logging_road() { common_scripts\utility::array_call(getaiarray("axis"),::delete); } //Function Number: 198 combat_post_breach_patrol() { common_scripts\utility::flag_wait("flag_post_breach_patrol"); var_00 = common_scripts\utility::getstruct("org_post_breach_patrol","targetname"); level.burke thread maps\lab_utility::prevent_friendly_from_shooting_during_stealth(); level.cormack thread maps\lab_utility::prevent_friendly_from_shooting_during_stealth(); level.knox thread maps\lab_utility::prevent_friendly_from_shooting_during_stealth(); level.burke maps\lab_utility::disable_grenades(); level.cormack maps\lab_utility::disable_grenades(); level.knox maps\lab_utility::disable_grenades(); level.burke.ignoreme = 1; level.cormack.ignoreme = 1; level.knox.ignoreme = 1; var_01 = 21.5; level.burke maps\_utility::delaythread(var_01,::maps\_stealth_utility::disable_stealth_for_ai); level.cormack maps\_utility::delaythread(var_01,::maps\_stealth_utility::disable_stealth_for_ai); level.knox maps\_utility::delaythread(var_01,::maps\_stealth_utility::disable_stealth_for_ai); level.burke maps\_utility::set_baseaccuracy(999); level.cormack maps\_utility::set_baseaccuracy(999); level.knox maps\_utility::set_baseaccuracy(999); var_02 = maps\_utility::spawn_script_noteworthy("enemy_post_breach_patrol_01",1); var_03 = maps\_utility::spawn_script_noteworthy("enemy_post_breach_patrol_02",1); var_02 thread se_breach_patrol_guy_01(var_00); var_03 thread se_breach_patrol_guy_02(var_00); var_02.fovcosine = cos(35); var_03.fovcosine = cos(35); maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"flag_breach_patrol_01_clear"); maps\_utility::delaythread(14,::common_scripts\utility::flag_set,"flag_breach_patrol_02_reached_end"); level.burke thread burke_post_breach_move(); level.cormack thread cormack_post_breach_move(); level.knox thread knox_post_breach_move(var_02,var_03); var_04 = [var_02,var_03]; foreach(var_06 in var_04) { var_06 thread patrol_post_breach_think(var_01); } common_scripts\utility::flag_wait_all("flag_breach_patrol_01_dead","flag_breach_patrol_02_dead"); level.burke.ignoreme = 0; level.cormack.ignoreme = 0; level.knox.ignoreme = 0; level.burke maps\lab_utility::enable_grenades(); level.cormack maps\lab_utility::enable_grenades(); level.knox maps\lab_utility::enable_grenades(); level.burke maps\_utility::set_baseaccuracy(0.2); level.cormack maps\_utility::set_baseaccuracy(0.2); level.knox maps\_utility::set_baseaccuracy(0.2); level.burke maps\_utility::enable_ai_color_dontmove(); level.cormack maps\_utility::enable_ai_color_dontmove(); level.knox maps\_utility::enable_ai_color_dontmove(); if(!common_scripts\utility::flag("flag_obj_bio_weapons_04")) { maps\_utility::activate_trigger_with_targetname("trig_color_facility_clear"); } } //Function Number: 199 se_breach_patrol_guy_01(param_00) { self endon("death"); self endon("damage"); self.animname = "guy_1"; self.allowdeath = 1; param_00 maps\_anim::anim_single_solo(self,"se_breach_patrol_guy_01"); } //Function Number: 200 se_breach_patrol_guy_02(param_00) { self endon("death"); self endon("damage"); self.animname = "guy_2"; self.allowdeath = 1; param_00 maps\_anim::anim_single_solo(self,"se_breach_patrol_guy_02"); } //Function Number: 201 patrol_post_breach_think(param_00) { self endon("death"); maps\lab_utility::disable_grenades(); thread force_alert_patrol(param_00); common_scripts\utility::waittill_any_ents(self,"damage",self,"patrol_alerted",self,"_stealth_spotted",self,"stealth_event",self,"weapon_fired"); maps\_utility::ent_flag_clear("_stealth_enabled"); level notify("patrol_alerted"); common_scripts\utility::flag_set("_stealth_spotted"); common_scripts\utility::flag_set("flag_post_breach_patrol_alerted"); } //Function Number: 202 force_alert_patrol(param_00) { level endon("patrol_alerted"); self.dontattackme = undefined; self.dontevershoot = undefined; level thread maps\_utility::notify_delay("patrol_alerted",param_00); maps\_utility::delaythread(param_00,::common_scripts\utility::flag_set,"_stealth_spotted"); maps\_utility::delaythread(param_00,::common_scripts\utility::flag_set,"flag_post_breach_patrol_alerted"); } //Function Number: 203 knox_move_to_breach_door() { wait(10); var_00 = getnode("node_knox_breach_door","targetname"); level.knox thread maps\lab_utility::goto_node(var_00,0); } //Function Number: 204 burke_post_breach_move() { level.burke endon("anim_reach_server_room_started"); thread cloak_off_server_room(2); var_00 = getnode("node_burke_breach_02","targetname"); var_01 = getnode("node_burke_breach_03","targetname"); common_scripts\utility::flag_wait("breach_done"); maps\_utility::delaythread(2,::maps\lab_utility::cloak_on); common_scripts\utility::flag_wait("flag_breach_patrol_01_clear"); maps\lab_utility::goto_node(var_01,0); } //Function Number: 205 cormack_post_breach_move() { level.cormack endon("anim_reach_server_room_started"); thread cloak_off_server_room(1.75); var_00 = getnode("node_cormack_breach_02","targetname"); var_01 = getnode("node_knox_breach_02","targetname"); common_scripts\utility::flag_wait("lab_breach_all_guys_dead"); maps\_utility::delaythread(3.75,::maps\lab_utility::cloak_on); common_scripts\utility::flag_wait_all("flag_breach_patrol_01_clear","flag_burke_exit_breach_room"); maps\lab_utility::goto_node(var_00,0); common_scripts\utility::flag_wait_any("flag_breach_patrol_01_dead","flag_breach_patrol_02_dead","flag_breach_patrol_02_reached_end"); maps\lab_utility::goto_node(var_01,0); } //Function Number: 206 knox_post_breach_move(param_00,param_01) { level.knox endon("anim_reach_server_room_started"); thread cloak_off_server_room(1.5,0.2); var_02 = getnode("node_knox_breach_02","targetname"); var_03 = getnode("node_knox_breach_03","targetname"); var_04 = getnode("node_knox_breach_04","targetname"); common_scripts\utility::flag_wait("lab_breach_all_guys_dead"); maps\_utility::set_baseaccuracy(999); maps\lab_utility::any_enemy_is_able_to_attack(); maps\_utility::delaythread(3,::maps\lab_utility::cloak_on); common_scripts\utility::flag_wait_all("flag_breach_patrol_01_clear","flag_burke_exit_breach_room"); maps\lab_utility::goto_node(var_02,0); common_scripts\utility::flag_wait_any("flag_breach_patrol_01_dead","flag_breach_patrol_02_dead","flag_breach_patrol_02_reached_end"); maps\lab_utility::goto_node(var_03,0); if(common_scripts\utility::flag("flag_breach_patrol_01_dead") && common_scripts\utility::flag("flag_breach_patrol_02_reached_end")) { } else if(common_scripts\utility::flag("flag_breach_patrol_01_dead") && !common_scripts\utility::flag("flag_breach_patrol_02_reached_end")) { maps\lab_utility::goto_node(var_04,0); } common_scripts\utility::flag_wait_all("flag_breach_patrol_01_dead","flag_breach_patrol_02_dead"); maps\lab_utility::goto_node(var_04,0); } //Function Number: 207 cloak_off_server_room(param_00,param_01) { common_scripts\utility::flag_wait_all("flag_breach_patrol_01_dead","flag_breach_patrol_02_dead"); wait(param_00); maps\lab_utility::cloak_off(); maps\_utility::enable_cqbwalk(); if(isdefined(param_01)) { maps\_utility::set_baseaccuracy(param_01); } } //Function Number: 208 combat_research_building() { common_scripts\utility::flag_wait("flag_research_facility_combat_dialogue_complete"); var_00 = getentarray("enemy_research_building_wave_01","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } var_00 = getentarray("enemy_research_wave_01","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } maps\lab_utility::spawn_metrics_waittill_count_reaches(4,["enemy_research_building_wave_01","enemy_research_wave_01"],0); var_00 = getentarray("enemy_research_building_wave_02","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } } //Function Number: 209 combat_research_building_bridge() { common_scripts\utility::flag_wait("flag_combat_research_02"); var_00 = getentarray("enemy_research_bridge_wave_01","script_noteworthy"); if(var_00.size > 0 && !common_scripts\utility::flag("flag_obj_neutralize_bio_weapons_complete")) { maps\_spawner::flood_spawner_scripted(var_00); } common_scripts\utility::flag_wait("flag_combat_research_bridge_01"); var_00 = getentarray("enemy_research_bridge_wave_02","script_noteworthy"); if(var_00.size > 0 && !common_scripts\utility::flag("flag_obj_neutralize_bio_weapons_complete")) { maps\_spawner::flood_spawner_scripted(var_00); } maps\lab_utility::spawn_metrics_waittill_count_reaches(1,["enemy_research_bridge_wave_01","enemy_research_bridge_wave_02"],0); var_00 = ["enemy_research_bridge_wave_01","enemy_research_bridge_wave_02"]; maps\lab_utility::delete_spawners(var_00); maps\_utility::activate_trigger_with_targetname("trig_color_research_facility_bridge"); common_scripts\utility::flag_set("flag_combat_facility_bridge_seek_player"); } //Function Number: 210 combat_research_pool_walkway_01() { common_scripts\utility::flag_wait("flag_combat_research_03"); var_00 = getentarray("enemy_pool_building_walkway_wave_01","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } maps\lab_utility::spawn_metrics_waittill_count_reaches(3,["enemy_pool_building_walkway_wave_01"],0); var_00 = getentarray("enemy_pool_building_walkway_wave_02","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } maps\lab_utility::spawn_metrics_waittill_count_reaches(2,["enemy_pool_building_walkway_wave_01","enemy_pool_building_walkway_wave_02"],0); var_00 = ["enemy_pool_building_walkway_wave_01","enemy_pool_building_walkway_wave_02"]; maps\lab_utility::delete_spawners(var_00); common_scripts\utility::flag_set("flag_guys_pool_bldg_01_seek_player"); } //Function Number: 211 combat_research_left_01() { level endon("flag_combat_research_right_01"); common_scripts\utility::flag_wait("flag_combat_research_left_01"); var_00 = getentarray("enemy_research_left_01","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } var_00 = getentarray("enemy_research_left_lower_01","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } maps\lab_utility::spawn_metrics_waittill_count_reaches(3,["enemy_research_left_01","enemy_research_left_lower_01"],0); common_scripts\utility::flag_set("flag_guys_research_left_01_seek_player"); } //Function Number: 212 combat_research_right_01() { level endon("flag_combat_research_left_01"); common_scripts\utility::flag_wait("flag_combat_research_right_01"); var_00 = getentarray("enemy_research_right_flank_01","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } var_00 = getentarray("enemy_research_right_01","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } var_00 = getentarray("enemy_research_right_lower_01","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } thread combat_spawn_research_right_flank_02(); maps\lab_utility::spawn_metrics_waittill_count_reaches(3,["enemy_research_right_01","enemy_research_right_lower_01"],0); common_scripts\utility::flag_set("flag_guys_research_right_01_seek_player"); } //Function Number: 213 combat_spawn_research_right_flank_02() { common_scripts\utility::flag_wait_any("flag_combat_research_04","flag_right_flank_01_dead"); var_00 = getentarray("enemy_research_right_flank_02","script_noteworthy"); foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } } //Function Number: 214 combat_research_platform_01() { common_scripts\utility::flag_wait_any("flag_guys_research_right_01_seek_player","flag_guys_research_left_01_seek_player"); var_00 = getentarray("enemy_platform_01","script_noteworthy"); if(!common_scripts\utility::flag("flag_combat_research_05")) { foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } } } //Function Number: 215 combat_research_pool_room() { common_scripts\utility::flag_set("flag_bomb_plant_trigger_on"); thread control_foam_room_door02_clip(); thread foam_planted_kill_enemies(); common_scripts\utility::flag_wait("flag_combat_research_03"); var_00 = ["enemy_research_building_wave_01"]; maps\lab_utility::delete_spawners(var_00); common_scripts\utility::flag_wait_any("flag_combat_research_04","flag_combat_research_04_bottom"); var_00 = ["enemy_pool_building_wave_01"]; maps\lab_utility::delete_spawners(var_00); var_00 = getentarray("enemy_pool_building_wave_02","script_noteworthy"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } thread maps\_utility::autosave_by_name("pool_room"); common_scripts\utility::flag_wait("flag_combat_research_05"); soundscripts\_snd::snd_message("aud_foam_room_emitters"); var_00 = ["enemy_pool_building_wave_02"]; maps\lab_utility::delete_spawners(var_00); var_01 = ["enemy_research_building_wave_01","enemy_research_building_wave_02","enemy_pool_building_wave_01","enemy_pool_building_wave_02"]; maps\lab_utility::spawn_metrics_waittill_count_reaches(5,["enemy_research_building_wave_01","enemy_research_building_wave_02","enemy_pool_building_wave_01","enemy_pool_building_wave_02"],0); common_scripts\utility::flag_set("flag_combat_research_retreat_foam_room"); maps\_utility::activate_trigger_with_targetname("trig_color_foam_room_combat"); maps\lab_utility::spawn_metrics_waittill_count_reaches(3,["enemy_research_building_wave_01","enemy_research_building_wave_02","enemy_pool_building_wave_01","enemy_pool_building_wave_02"],0); common_scripts\utility::flag_set("flag_foam_room_combat_clear_out"); maps\lab_utility::spawn_metrics_waittill_count_reaches(0,["enemy_research_building_wave_01","enemy_research_building_wave_02","enemy_pool_building_wave_01","enemy_pool_building_wave_02"],0); common_scripts\utility::flag_set("flag_research_building_combat_complete"); common_scripts\utility::flag_clear("flag_enable_battle_chatter"); soundscripts\_snd::snd_message("research_building_combat_complete"); var_02 = getaiarray("axis"); foreach(var_04 in var_02) { var_05 = randomfloatrange(0.5,2); var_04 thread maps\lab_utility::bloody_death(var_05); wait(0.3); } common_scripts\utility::flag_wait_all("flag_research_building_combat_complete","flag_player_inside_foam_room"); level.burke.ignoreall = 1; level.cormack.ignoreall = 1; level.knox.ignoreall = 1; var_07 = getentarray("c_trigger_researh","script_noteworthy"); foreach(var_09 in var_07) { var_09 common_scripts\utility::trigger_off(); } } //Function Number: 216 foam_planted_kill_enemies() { common_scripts\utility::flag_wait("flag_obj_neutralize_bio_weapons_planted"); var_00 = getaiarray("axis"); foreach(var_02 in var_00) { var_03 = randomfloatrange(0.5,1); var_02 thread maps\lab_utility::bloody_death(var_03); } } //Function Number: 217 foam_room_door_think() { var_00 = 0.75; var_01 = getent("door_foam_room_l","targetname"); var_02 = getent("door_foam_room_r","targetname"); var_03 = var_01 common_scripts\utility::get_target_ent(); var_04 = var_02 common_scripts\utility::get_target_ent(); var_03 linkto(var_01); var_04 linkto(var_02); var_05 = common_scripts\utility::getstruct("org_door_foam_room_open_l","targetname"); var_06 = common_scripts\utility::getstruct("org_door_foam_room_open_r","targetname"); var_07 = common_scripts\utility::getstruct("org_door_foam_room_close_l","targetname"); var_08 = common_scripts\utility::getstruct("org_door_foam_room_close_r","targetname"); var_01 moveto(var_05.origin,var_00,0.25,0.25); var_02 moveto(var_06.origin,var_00,0.25,0.25); wait(var_00); var_03 connectpaths(); var_04 connectpaths(); common_scripts\utility::flag_wait("flag_combat_research_05"); var_01 moveto(var_07.origin,var_00,0.25,0.25); var_02 moveto(var_08.origin,var_00,0.25,0.25); wait(var_00); var_03 disconnectpaths(); var_04 disconnectpaths(); common_scripts\utility::flag_wait("flag_foam_room_complete_dialogue"); var_01 moveto(var_05.origin,var_00,0.25,0.25); var_02 moveto(var_06.origin,var_00,0.25,0.25); wait(var_00); var_03 connectpaths(); var_04 connectpaths(); } //Function Number: 218 foam_room_door_01_close() { var_00 = 0.75; var_01 = getent("door_01_foam_room_l","targetname"); var_02 = getent("door_01_foam_room_r","targetname"); var_03 = var_01 common_scripts\utility::get_target_ent(); var_04 = var_02 common_scripts\utility::get_target_ent(); var_03 linkto(var_01); var_04 linkto(var_02); var_05 = common_scripts\utility::getstruct("org_door_01_foam_room_close_l","targetname"); var_06 = common_scripts\utility::getstruct("org_door_01_foam_room_close_r","targetname"); var_01 moveto(var_05.origin,var_00,0.25,0.25); var_02 moveto(var_06.origin,var_00,0.25,0.25); wait(var_00); var_03 disconnectpaths(); var_04 disconnectpaths(); } //Function Number: 219 foam_room_door_03_close() { var_00 = 0.75; var_01 = getent("door_03_foam_room_l","targetname"); var_02 = getent("door_03_foam_room_r","targetname"); var_03 = var_01 common_scripts\utility::get_target_ent(); var_04 = var_02 common_scripts\utility::get_target_ent(); var_03 linkto(var_01); var_04 linkto(var_02); var_05 = common_scripts\utility::getstruct("org_door_03_foam_room_close_l","targetname"); var_06 = common_scripts\utility::getstruct("org_door_03_foam_room_close_r","targetname"); var_01 moveto(var_05.origin,var_00,0.25,0.25); var_02 moveto(var_06.origin,var_00,0.25,0.25); wait(var_00); var_03 disconnectpaths(); var_04 disconnectpaths(); } //Function Number: 220 foam_room_door_02_close() { var_00 = 0.75; var_01 = getent("door_02_foam_room_l","targetname"); var_02 = getent("door_02_foam_room_r","targetname"); soundscripts\_snd::snd_message("foam_room_door_close",var_01,var_02); var_03 = var_01 common_scripts\utility::get_target_ent(); var_04 = var_02 common_scripts\utility::get_target_ent(); var_03 linkto(var_01); var_04 linkto(var_02); var_05 = common_scripts\utility::getstruct("org_door_02_foam_room_close_l","targetname"); var_06 = common_scripts\utility::getstruct("org_door_02_foam_room_close_r","targetname"); common_scripts\utility::flag_wait("flag_combat_research_05"); var_01 moveto(var_05.origin,var_00,0.25,0.25); var_02 moveto(var_06.origin,var_00,0.25,0.25); wait(var_00); var_03 disconnectpaths(); var_04 disconnectpaths(); } //Function Number: 221 control_foam_room_door02_clip() { var_00 = getent("foam_room_instant_door02_clip","targetname"); var_00 notsolid(); var_00 connectpaths(); common_scripts\utility::flag_wait("flag_foam_room_clear"); var_00 solid(); } //Function Number: 222 courtyard_scrambler_rotate() { var_00 = getent("scrambler_top","targetname"); var_00.point_tag = common_scripts\utility::spawn_tag_origin(); var_01 = var_00.point_tag; var_01 linkto(var_00,"lab_comm_satellite_top_lod0_comb",(15,15,220),(0,0,0),0); playfxontag(common_scripts\utility::getfx("light_glow_red_steady"),var_01,"tag_origin"); while(!common_scripts\utility::flag("flag_obj_jammer_complete")) { var_00 addyaw(2.5); wait(0.05); } var_02 = 2.5; for(var_03 = 0;var_03 < 25;var_03++) { var_02 = var_02 - 0.1; var_00 addyaw(var_02); wait(0.05); } } //Function Number: 223 platform_door_think() { var_00 = 0.75; var_01 = getent("door_platform_l","targetname"); var_02 = getent("door_platform_r","targetname"); soundscripts\_snd::snd_message("door2courtyard_open"); var_03 = var_01 common_scripts\utility::get_target_ent(); var_04 = var_02 common_scripts\utility::get_target_ent(); var_03 linkto(var_01); var_04 linkto(var_02); var_05 = common_scripts\utility::getstruct("org_door_platform_open_l","targetname"); var_06 = common_scripts\utility::getstruct("org_door_platform_open_r","targetname"); var_07 = common_scripts\utility::getstruct("org_door_platform_close_l","targetname"); var_08 = common_scripts\utility::getstruct("org_door_platform_close_r","targetname"); var_01 moveto(var_05.origin,var_00,0.25,0.25); var_02 moveto(var_06.origin,var_00,0.25,0.25); wait(var_00); var_03 connectpaths(); var_04 connectpaths(); common_scripts\utility::flag_wait("flag_combat_research_05"); var_01 moveto(var_07.origin,var_00,0.25,0.25); var_02 moveto(var_08.origin,var_00,0.25,0.25); wait(var_00); var_03 disconnectpaths(); var_04 disconnectpaths(); } //Function Number: 224 combat_courtyard_mech() { common_scripts\utility::flag_wait("flag_courtyard_hangar_door_block"); level.cormack maps\_utility::disable_ai_color(); level.knox maps\_utility::disable_ai_color(); var_00 = getnode("cormack_mech_sneak","script_noteworthy"); var_01 = getnode("knox_mech_sneak","script_noteworthy"); level.cormack setgoalnode(var_00); level.knox setgoalnode(var_01); level.hangar_mech_01 = getent("enemy_hangar_mech_01","targetname") maps\_utility::spawn_ai(1); level.hangar_mech_01 maps\_mech::mech_start_reduced_nonplayer_damage(); level.hangar_mech_01 maps\_utility::magic_bullet_shield(); soundscripts\_snd::snd_message("courtyard_hangar_mech_01_spawned",level.hangar_mech_01); level.knox.ignoreme = 1; level.cormack.ignoreme = 1; level.burke.ignoreme = 1; level.burke.ignoreall = 1; level.knox.ignoreall = 1; level.cormack.ignoreall = 1; level.hangar_mech_01.ignoreall = 1; maps\_utility::delaythread(2,::courtyard_hangar_door_close); level.hangar_mech_01.animname = "mech"; var_02 = common_scripts\utility::getstruct("courtyard_mech_reveal","targetname"); var_02 maps\_anim::anim_single_solo(level.hangar_mech_01,"courtyard_mech_intro",undefined,0.55); level.hangar_mech_01 maps\_utility::stop_magic_bullet_shield(); maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_courtyard_initial",128); maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_hangar_building_01",128); level notify("remove_doormen"); level.burke.ignoreall = 0; level.hangar_mech_01.ignoreall = 0; level.hangar_mech_01 setgoalentity(level.player); level.hangar_mech_01.favoriteenemy = level.player; createthreatbiasgroup("player"); createthreatbiasgroup("mech"); level.player setthreatbiasgroup("player"); level.hangar_mech_01 setthreatbiasgroup("mech"); setthreatbias("player","mech",900000); level.hangar_mech_01 maps\_mech::mech_start_rockets(); level.hangar_mech_01 maps\_mech::mech_start_hunting(); level.hangar_mech_01 maps\_mech::mech_start_badplace_behavior(); wait_for_mech_distance(); level.hangar_mech_01.walkdist = 200; level.hangar_mech_01.walkdistfacingmotion = level.hangar_mech_01.walkdist; level.knox.ignoreall = 0; level.cormack.ignoreall = 0; common_scripts\utility::flag_set("flag_combat_courtyard_jammer"); common_scripts\utility::flag_set("flag_courtyard_hangar_door_hack"); } //Function Number: 225 wait_for_mech_distance() { if(isdefined(level.hangar_mech_01) && isalive(level.hangar_mech_01)) { level.hangar_mech_01 endon("death"); var_00 = getent("obj_defend_01","targetname"); var_01 = 600; var_02 = var_01 * var_01; while(distancesquared(level.hangar_mech_01.origin,var_00.origin) < var_02) { wait(0.1); } } } //Function Number: 226 courtyard_gates_think() { common_scripts\utility::flag_wait("flag_foam_room_complete_dialogue"); var_00 = getentarray("courtyard_perimeter_gate_instance_02","script_noteworthy"); var_01 = undefined; foreach(var_03 in var_00) { if(var_03.classname == "script_model") { var_01 = var_03; break; } } var_05 = getent(var_01.target,"targetname"); var_01 maps\_anim::anim_first_frame_solo(var_01,"opened"); var_05 notsolid(); common_scripts\utility::flag_wait("flag_combat_courtyard_general_01"); var_05 common_scripts\utility::delaycall(1,::solid); var_01 maps\_anim::anim_single_solo(var_01,"close"); var_01 maps\_anim::anim_first_frame_solo(var_01,"closed"); } //Function Number: 227 courtyard_rappel_preview() { level.burke.ignoreme = 1; level.cormack.ignoreme = 1; level.knox.ignoreme = 1; level.player.ignoreme = 1; var_00 = getentarray("courtyard_perimeter_gate_instance_01","script_noteworthy"); var_01 = undefined; foreach(var_03 in var_00) { if(var_03.classname == "script_model") { var_01 = var_03; break; } } var_05 = getent(var_01.target,"targetname"); var_01 maps\_anim::anim_first_frame_solo(var_01,"opened"); var_05 notsolid(); var_05 connectpaths(); thread courtyard_rappel_preview_guys(); thread courtyard_rappel_preview_vehicles(); level waittill("cliff_rappel_landing"); level.player.ignoreme = 0; var_01 maps\_anim::anim_single_solo(var_01,"close"); var_01 maps\_anim::anim_first_frame_solo(var_01,"closed"); wait(3); var_05 solid(); var_05 disconnectpaths(); } //Function Number: 228 courtyard_rappel_preview_guys() { level endon("cliff_rappel_landing"); var_00 = getent("enemy_courtyard_rappel_preview_01","script_noteworthy"); var_01 = getent("enemy_courtyard_rappel_preview_02","script_noteworthy"); var_02 = getent("enemy_courtyard_rappel_preview_03","script_noteworthy"); var_03 = getent("enemy_courtyard_rappel_preview_04","script_noteworthy"); maps\_utility::array_spawn_function_noteworthy("enemy_courtyard_rappel_preview_01",::courtyard_rappel_preview_think); maps\_utility::array_spawn_function_noteworthy("enemy_courtyard_rappel_preview_02",::courtyard_rappel_preview_think); maps\_utility::array_spawn_function_noteworthy("enemy_courtyard_rappel_preview_03",::courtyard_rappel_preview_think); maps\_utility::array_spawn_function_noteworthy("enemy_courtyard_rappel_preview_04",::courtyard_rappel_preview_think); wait(21); for(;;) { var_04 = randomintrange(1,2); for(var_05 = 0;var_05 < var_04;var_05++) { var_00 maps\_utility::spawn_ai(); var_01 maps\_utility::spawn_ai(); var_02 maps\_utility::spawn_ai(); var_03 maps\_utility::spawn_ai(); var_00.count++; var_01.count++; var_02.count++; var_03.count++; wait(randomfloatrange(0.8,1.2)); } wait(randomfloatrange(2,3)); } } //Function Number: 229 courtyard_rappel_preview_vehicles() { wait(19); var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("courtyard_vrap_preview"); var_00 maps\_vehicle::vehicle_lights_on(); level waittill("cliff_rappel_landing"); var_00 delete(); } //Function Number: 230 courtyard_rappel_preview_think() { self.goalradius = 8; self.ignoreme = 1; self waittill("goal"); self delete(); } //Function Number: 231 courtyard_rpg_drop() { self.dropweapon = 0; } //Function Number: 232 combat_courtyard_path_general() { level.courtyard_goal_volume = getent("courtyard_combat_volume_initial","script_noteworthy"); common_scripts\utility::array_thread(getentarray("courtyard_goal_volume_trigger","targetname"),::courtyard_goal_volume_trigger_think); thread combat_courtyard_path_jammer_building(); thread combat_courtyard_path_left_00(); thread combat_courtyard_path_left_01(); thread combat_courtyard_path_left_02(); thread combat_courtyard_path_left_03(); thread combat_courtyard_path_middle_01(); thread combat_courtyard_path_middle_02(); thread combat_courtyard_path_middle_03(); thread combat_courtyard_path_right_01(); thread combat_courtyard_path_right_02(); thread combat_courtyard_path_right_03(); thread courtyard_gates_think(); thread courtyard_scrambler_rotate(); soundscripts\_snd::snd_message("courtyard_start_dish"); common_scripts\utility::flag_wait("flag_combat_courtyard_general_01"); var_00 = getentarray("combat_courtyard_general_01","targetname"); if(var_00.size > 0) { foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } } thread maps\lab_lighting::courtyard_sun_off(); thread courtyard_traversal_initial(); thread courtyard_hangar_door_open(); thread courtyard_hangar_door_hack(); level.courtyard_vrap04 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("courtyard_vrap04"); level.courtyard_vrap04 maps\_vehicle::vehicle_lights_on(); soundscripts\_snd::snd_message("aud_ctyard_vrap04"); wait(1); level.courtyard_vrap05 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("courtyard_vrap05"); level.courtyard_vrap05 maps\_vehicle::vehicle_lights_on(); soundscripts\_snd::snd_message("aud_ctyard_vrap05"); common_scripts\utility::flag_wait_either("flag_combat_courtyard_vehicle01_a","flag_combat_courtyard_vehicle01_b"); thread maps\_utility::autosave_by_name("courtyard_midpoint"); thread combat_courtyard_mech(); var_00 = getentarray("enemy_hangar_building_01","script_noteworthy"); maps\_utility::array_spawn_function(var_00,::courtyard_rpg_drop); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } level.courtyard_vrap01 = maps\_vehicle::spawn_vehicle_from_targetname("courtyard_vrap01"); var_04 = undefined; var_05 = level.courtyard_vrap01.riders[0]; var_06 = level.courtyard_vrap01.riders[1]; if(common_scripts\utility::flag("flag_combat_courtyard_vehicle01_a")) { var_04 = getvehiclenode("courtyard_vehicle01_a","targetname"); } if(common_scripts\utility::flag("flag_combat_courtyard_vehicle01_b")) { var_04 = getvehiclenode("courtyard_vehicle01_b","targetname"); } level.courtyard_vrap01 thread maps\_vehicle_code::_vehicle_paths(var_04); level.courtyard_vrap01 startpath(var_04); level.courtyard_vrap01 maps\_vehicle::vehicle_lights_on(); soundscripts\_snd::snd_message("aud_ctyard_vrap01"); level.courtyard_vrap01 waittill("unloaded"); if(common_scripts\utility::flag("flag_combat_courtyard_vehicle01_a")) { var_05 setgoalnode(getnode("vrap01_startingposition0_node_a","targetname")); var_06 setgoalnode(getnode("vrap01_startingposition1_node_a","targetname")); } if(common_scripts\utility::flag("flag_combat_courtyard_vehicle01_b")) { var_05 setgoalnode(getnode("vrap01_startingposition0_node_b","targetname")); var_06 setgoalnode(getnode("vrap01_startingposition1_node_b","targetname")); } var_05.fixednode = 1; var_06.fixednode = 1; } //Function Number: 233 combat_courtyard_path_jammer_building() { common_scripts\utility::flag_wait_either("flag_combat_courtyard_path_jammer_building_lower","flag_combat_courtyard_path_jammer_building_upper"); var_00 = undefined; if(common_scripts\utility::flag("flag_combat_courtyard_path_jammer_building_lower")) { var_00 = getentarray("combat_courtyard_path_jammer_building_lower","targetname"); } else if(common_scripts\utility::flag("flag_combat_courtyard_path_jammer_building_upper")) { var_00 = getentarray("combat_courtyard_path_jammer_building_upper","targetname"); } if(var_00.size > 0) { maps\_utility::array_spawn(var_00); } } //Function Number: 234 combat_courtyard_path_left_00() { common_scripts\utility::flag_wait("flag_combat_courtyard_path_left_00"); var_00 = getentarray("combat_courtyard_path_left_00","targetname"); if(var_00.size > 0) { maps\_utility::array_spawn(var_00); } } //Function Number: 235 combat_courtyard_path_left_01() { level endon("flag_combat_courtyard_path_right_01"); level endon("flag_combat_courtyard_path_right_02"); level endon("flag_combat_courtyard_path_right_03"); level endon("flag_combat_courtyard_path_middle_01"); level endon("flag_combat_courtyard_path_middle_02"); level endon("flag_combat_courtyard_path_middle_03"); common_scripts\utility::flag_wait("flag_combat_courtyard_path_left_01"); var_00 = getentarray("combat_courtyard_path_left_01","targetname"); if(var_00.size > 0) { maps\_utility::array_spawn(var_00); } } //Function Number: 236 combat_courtyard_path_left_02() { level endon("flag_combat_courtyard_path_right_01"); level endon("flag_combat_courtyard_path_right_02"); level endon("flag_combat_courtyard_path_right_03"); level endon("flag_combat_courtyard_path_middle_01"); level endon("flag_combat_courtyard_path_middle_02"); level endon("flag_combat_courtyard_path_middle_03"); common_scripts\utility::flag_wait("flag_combat_courtyard_path_left_02"); var_00 = getentarray("combat_courtyard_path_left_02","targetname"); if(var_00.size > 0) { maps\_utility::array_spawn(var_00); } } //Function Number: 237 combat_courtyard_path_left_03() { level endon("flag_combat_courtyard_path_right_01"); level endon("flag_combat_courtyard_path_right_02"); level endon("flag_combat_courtyard_path_right_03"); level endon("flag_combat_courtyard_path_middle_01"); level endon("flag_combat_courtyard_path_middle_02"); level endon("flag_combat_courtyard_path_middle_03"); common_scripts\utility::flag_wait("flag_combat_courtyard_path_left_03"); var_00 = getentarray("combat_courtyard_path_left_03","targetname"); if(var_00.size > 0) { maps\_utility::array_spawn(var_00); } } //Function Number: 238 combat_courtyard_path_middle_01() { level endon("flag_combat_courtyard_path_right_01"); level endon("flag_combat_courtyard_path_right_02"); level endon("flag_combat_courtyard_path_right_03"); level endon("flag_combat_courtyard_path_left_01"); level endon("flag_combat_courtyard_path_left_02"); level endon("flag_combat_courtyard_path_left_03"); common_scripts\utility::flag_wait("flag_combat_courtyard_path_middle_01"); var_00 = getentarray("combat_courtyard_path_middle_01","targetname"); if(var_00.size > 0) { maps\_utility::array_spawn(var_00); } var_01 = getent("combat_courtyard_path_middle_01_rpg","targetname"); var_01 maps\_utility::add_spawn_function(::courtyard_rpg_drop); var_02 = getent("combat_courtyard_path_middle_01_ar","targetname"); var_03 = var_01 maps\_utility::spawn_ai(); var_03.baseaccuracy = 0.2; var_04 = var_02 maps\_utility::spawn_ai(); common_scripts\utility::flag_wait_either("flag_combat_courtyard_path_left_02","flag_combat_courtyard_path_right_02"); maps\_utility::ai_delete_when_out_of_sight([var_03],64); maps\_utility::ai_delete_when_out_of_sight([var_04],64); } //Function Number: 239 combat_courtyard_path_middle_02() { level endon("flag_combat_courtyard_path_right_01"); level endon("flag_combat_courtyard_path_right_02"); level endon("flag_combat_courtyard_path_right_03"); level endon("flag_combat_courtyard_path_left_01"); level endon("flag_combat_courtyard_path_left_02"); level endon("flag_combat_courtyard_path_left_03"); common_scripts\utility::flag_wait("flag_combat_courtyard_path_middle_02"); var_00 = getentarray("combat_courtyard_path_middle_02","targetname"); if(var_00.size > 0) { maps\_utility::array_spawn(var_00); } } //Function Number: 240 combat_courtyard_path_middle_03() { level endon("flag_combat_courtyard_path_right_01"); level endon("flag_combat_courtyard_path_right_02"); level endon("flag_combat_courtyard_path_right_03"); level endon("flag_combat_courtyard_path_left_01"); level endon("flag_combat_courtyard_path_left_02"); level endon("flag_combat_courtyard_path_left_03"); common_scripts\utility::flag_wait("flag_combat_courtyard_path_middle_03"); var_00 = getentarray("combat_courtyard_path_middle_03","targetname"); if(var_00.size > 0) { maps\_utility::array_spawn(var_00); } } //Function Number: 241 combat_courtyard_path_right_01() { level endon("flag_combat_courtyard_path_left_01"); level endon("flag_combat_courtyard_path_left_02"); level endon("flag_combat_courtyard_path_left_03"); level endon("flag_combat_courtyard_path_middle_01"); level endon("flag_combat_courtyard_path_middle_02"); level endon("flag_combat_courtyard_path_middle_03"); common_scripts\utility::flag_wait("flag_combat_courtyard_path_right_01"); var_00 = getentarray("combat_courtyard_path_right_01","targetname"); if(var_00.size > 0) { maps\_utility::array_spawn(var_00); } } //Function Number: 242 combat_courtyard_path_right_02() { level endon("flag_combat_courtyard_path_left_01"); level endon("flag_combat_courtyard_path_left_02"); level endon("flag_combat_courtyard_path_left_03"); level endon("flag_combat_courtyard_path_middle_01"); level endon("flag_combat_courtyard_path_middle_02"); level endon("flag_combat_courtyard_path_middle_03"); common_scripts\utility::flag_wait("flag_combat_courtyard_path_right_02"); var_00 = getentarray("combat_courtyard_path_right_02","targetname"); if(var_00.size > 0) { maps\_utility::array_spawn(var_00); } } //Function Number: 243 combat_courtyard_path_right_03() { level endon("flag_combat_courtyard_path_left_01"); level endon("flag_combat_courtyard_path_left_02"); level endon("flag_combat_courtyard_path_left_03"); level endon("flag_combat_courtyard_path_middle_01"); level endon("flag_combat_courtyard_path_middle_02"); level endon("flag_combat_courtyard_path_middle_03"); common_scripts\utility::flag_wait("flag_combat_courtyard_path_right_03"); var_00 = getentarray("combat_courtyard_path_right_03","targetname"); if(var_00.size > 0) { maps\_utility::array_spawn(var_00); } } //Function Number: 244 combat_courtyard_jammer() { level endon("flag_obj_jammer_interact"); common_scripts\utility::flag_wait("flag_combat_courtyard_jammer"); common_scripts\utility::array_thread(getentarray("courtyard_goal_volume_trigger_b","targetname"),::courtyard_goal_volume_trigger_b_think); level.courtyard_vrap02 = maps\_vehicle::spawn_vehicle_from_targetname("courtyard_vrap02"); var_00 = getvehiclenode("courtyard_vrap02_go","targetname"); common_scripts\utility::flag_wait("flag_courtyard_hangar_door_block"); if(isdefined(level.hangar_mech_01)) { level.hangar_mech_01 waittill("death"); common_scripts\utility::flag_set("flag_hangar_mech_01_dead"); } level.burke.ignoreme = 0; level.cormack.ignoreme = 0; maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_courtyard_initial",128); level.courtyard_vrap02 thread maps\_vehicle_code::_vehicle_paths(var_00); level.courtyard_vrap02 startpath(var_00); level.courtyard_vrap02 maps\_vehicle::vehicle_lights_on(); soundscripts\_snd::snd_message("aud_ctyard_vrap02"); thread combat_courtyard_jammer_ladder_left(); thread combat_courtyard_jammer_ladder_right(); var_01 = getentarray("enemy_courtyard_jammer","targetname"); common_scripts\utility::flag_wait_either("flag_jammer_combat_ladder_left","flag_jammer_combat_ladder_right"); wait(15); if(var_01.size > 0) { maps\_spawner::flood_spawner_scripted(var_01); } } //Function Number: 245 combat_courtyard_jammer_ladder_left() { common_scripts\utility::flag_wait("flag_jammer_combat_ladder_left"); var_00 = getentarray("enemy_courtyard_jammer_ladder_left","targetname"); if(var_00.size > 0) { foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } } } //Function Number: 246 combat_courtyard_jammer_ladder_right() { common_scripts\utility::flag_wait("flag_jammer_combat_ladder_right"); var_00 = getentarray("enemy_courtyard_jammer_ladder_right","targetname"); if(var_00.size > 0) { foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } } } //Function Number: 247 combat_courtyard_jammer_complete() { common_scripts\utility::flag_wait("flag_combat_courtyard_jammer_complete"); maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_courtyard_jammer",128); wait(2); var_00 = getentarray("enemy_courtyard_sniper_fodder","script_noteworthy"); if(var_00.size > 0) { foreach(var_02 in var_00) { var_02 maps\_utility::spawn_ai(1); } } thread courtyard_enemy_sniper_fodder_count(); level.player.ignoreme = 1; maps\_utility::wait_for_notify_or_timeout("flag_courtyard_sniper_sequence_complete",28); maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_courtyard_sniper_fodder",128); level.player.ignoreme = 0; common_scripts\utility::flag_set("flag_courtyard_sniper_sequence_complete"); var_00 = getentarray("enemy_courtyard_jammer_complete","targetname"); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } var_00 = getentarray("enemy_courtyard_jammer_complete_perimeter","targetname"); maps\_utility::array_spawn_function(var_00,::courtyard_rpg_drop); if(var_00.size > 0) { maps\_spawner::flood_spawner_scripted(var_00); } wait(5); var_04 = getent("enemy_courtyard_mech_02","targetname"); if(isdefined(var_04)) { var_04 = getent("enemy_courtyard_mech_03","targetname"); } if(isdefined(var_04)) { var_04 = getent("enemy_courtyard_mech_04","targetname"); } if(isdefined(var_04)) { var_04 maps\_utility::spawn_ai(1); } } //Function Number: 248 cleanup_courtyard_enemies() { common_scripts\utility::flag_wait("flag_obj_tank_02"); maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_courtyard_initial",128); maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_hangar_building_01",128); maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_courtyard_jammer",128); maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_courtyard_jammer_complete",128); maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_courtyard_jammer_complete_perimeter",128); maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_courtyard_flood",128); maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_courtyard_sniper_fodder",128); if(isdefined(level.hangar_mech_01)) { level.hangar_mech_01 delete(); } if(isdefined(level.courtyard_mech_01)) { level.courtyard_mech_01 delete(); } if(isdefined(level.courtyard_mech_02)) { level.courtyard_mech_02 delete(); } if(isdefined(level.courtyard_mech_03)) { level.courtyard_mech_03 delete(); } if(isdefined(level.courtyard_mech_04)) { level.courtyard_mech_04 delete(); } if(isdefined(level.courtyard_vrap01)) { level.courtyard_vrap01 delete(); } if(isdefined(level.courtyard_vrap02)) { level.courtyard_vrap02 delete(); } if(isdefined(level.courtyard_vrap03)) { level.courtyard_vrap03 delete(); } if(isdefined(level.courtyard_vrap04)) { level.courtyard_vrap04 delete(); } if(isdefined(level.courtyard_vrap05)) { level.courtyard_vrap05 delete(); } maps\_utility::delaythread(0.05,::maps\_utility::array_delete,getentarray("script_vehicle_cover_drone","classname")); } //Function Number: 249 vrap_sonic_blast_immunity_toggle() { self endon("death"); wait(0.5); if(isdefined(self.riders)) { var_00 = self.riders; foreach(var_02 in var_00) { if(isalive(var_02) && isai(var_02)) { var_02.ignoresonicaoe = 1; } } wait(0.5); while(self.riders.size > 0) { wait 0.05; } foreach(var_02 in var_00) { var_02.ignoresonicaoe = 0; } } } //Function Number: 250 cleanup_foam_corridor_enemies() { maps\lab_utility::cleanup_ai_with_script_noteworthy("enemy_foam_corridor_b",128); } //Function Number: 251 skip_foam_corridor() { common_scripts\utility::flag_wait("flag_combat_foam_corridor"); thread tank_hangar_door_open(); level.burke maps\_utility::disable_ai_color(); level.knox maps\_utility::disable_ai_color(); level.cormack maps\_utility::disable_ai_color(); var_00 = common_scripts\utility::getstruct("foam_corridor_anim_node","targetname"); var_01 = "foam_corridor_exit"; var_02 = []; var_02[var_02.size] = level.burke; var_02[var_02.size] = level.knox; var_02[var_02.size] = level.cormack; var_03 = common_scripts\utility::getstruct("hovertank_reveal_org","targetname"); var_04 = maps\_utility::spawn_anim_model("hovertank",level.hovertank.origin); level.hovertank hide(); thread se_hovertank_reveal_actor(var_04,var_03); foreach(var_06 in var_02) { thread se_hovertank_reveal_actor(var_06,var_03); } common_scripts\utility::flag_set("flag_foam_corridor_exit"); } //Function Number: 252 combat_foam_corridor() { common_scripts\utility::flag_wait("flag_combat_foam_corridor"); createthreatbiasgroup("player"); createthreatbiasgroup("foam_corridor_axis"); level.player setthreatbiasgroup("player"); var_00 = getentarray("enemy_foam_corridor_b","script_noteworthy"); if(var_00.size > 0) { foreach(var_02 in var_00) { var_03 = var_02 maps\_utility::spawn_ai(1); var_03.grenadeawareness = 0; } } thread se_foam_corridor(); } //Function Number: 253 foam_corridor_enemy_think() { self endon("death"); self setthreatbiasgroup("foam_corridor_axis"); maps\_utility::magic_bullet_shield(1); while(!common_scripts\utility::flag("flag_foam_corridor_exit")) { common_scripts\utility::flag_wait("flag_player_inside_foam_corridor"); setthreatbias("foam_corridor_axis","player",9999999); self.baseaccuracy = 999999; common_scripts\utility::flag_waitopen("flag_player_inside_foam_corridor"); setthreatbias("foam_corridor_axis","player",1); self.baseaccuracy = 1; } maps\_utility::set_battlechatter(0); } //Function Number: 254 combat_tank_courtyard() { common_scripts\utility::flag_wait("player_in_hovertank"); common_scripts\utility::array_thread(getentarray("gate_1_react_guys","targetname"),::combat_tank_courtyard_gate_1_guys_think); maps\_utility::array_spawn_targetname("tank_courtyard_guys_1",1); common_scripts\utility::flag_wait("flag_courtyard_gate_01_explode"); var_00 = maps\_utility::array_spawn_targetname("courtyard_tank_vrap_1",1); thread maps\lab_aud::aud_tank_section_vehicles_spawned(var_00); common_scripts\utility::flag_wait("flag_courtyard_gate_02_explode"); } //Function Number: 255 combat_tank_courtyard_gate_1_guys_think() { var_00 = common_scripts\utility::getstruct(self.target,"targetname"); var_01 = maps\_utility::spawn_ai(1); var_01.ignoreall = 1; var_02 = common_scripts\utility::getstruct("courtyard_tank_flee_point","targetname"); var_01.animname = "generic"; var_01.goalradius = var_02.radius; var_01 setgoalpos(var_02.origin); var_03 = var_00.animation; var_04 = 0; var_05 = 0; if(isdefined(var_00.script_parameters)) { if(var_00.script_parameters == "scripted_death") { var_05 = 1; } else { var_04 = float(var_00.script_parameters); } } var_00 thread maps\_anim::anim_generic_run(var_01,var_03); var_06 = getanimlength(var_01 maps\_utility::getanim(var_03)); if(var_04 > 0) { wait(0.05); var_07 = var_06 - var_04 / var_06; var_01 setanimtime(var_01 maps\_utility::getanim(var_03),var_07); } if(var_05) { wait(var_06 - 0.3); var_01 startragdoll(); maps\lab_anim::ai_kill(var_01); return; } if(isdefined(var_01) && isalive(var_01)) { var_01.goalradius = var_02.radius; var_01 setgoalpos(var_02.origin); thread maps\_utility::ai_delete_when_out_of_sight([var_01],5000); } } //Function Number: 256 combat_tank_field_flee_guys_think() { self endon("death"); self.ignoreall = 1; var_00 = common_scripts\utility::getstruct("tank_field_flee_point","targetname"); if(isdefined(self.ridingvehicle)) { self waittill("jumpedout"); } self.goalradius = 256; self setgoalpos(var_00.origin); thread maps\_utility::ai_delete_when_out_of_sight([self],512); } //Function Number: 257 combat_tank_road() { } //Function Number: 258 setup_clip() { var_00 = getent("blocker_vrap_takedown_door","targetname"); var_00.origin = var_00.origin - (0,0,10000); var_00 connectpaths(); thread takedown_trunk(); thread foam_room_door_think(); thread platform_door_think(); } //Function Number: 259 takedown_trunk() { var_00 = getent("takedown_stump","targetname"); var_01 = getent("takedown_stump_damaged","targetname"); var_01 hide(); if(common_scripts\utility::flag("flag_se_takedown_01_complete")) { var_00 hide(); var_01 show(); } } //Function Number: 260 tank_hangar_door_open() { var_00 = getent("tank_hangar_door_l","targetname"); var_01 = getent("tank_hangar_door_r","targetname"); var_02 = var_00 common_scripts\utility::get_target_ent(); var_03 = var_01 common_scripts\utility::get_target_ent(); var_02 linkto(var_00); var_03 linkto(var_01); var_04 = common_scripts\utility::getstruct("tank_hanger_door_l_opened","targetname"); var_05 = common_scripts\utility::getstruct("tank_hanger_door_r_opened","targetname"); var_06 = 0.75; var_00 moveto(var_04.origin,var_06,0.25,0.25); var_01 moveto(var_05.origin,var_06,0.25,0.25); wait(var_06); var_02 connectpaths(); var_03 connectpaths(); } //Function Number: 261 tank_hangar_door_close() { var_00 = getent("tank_hangar_door_l","targetname"); var_01 = getent("tank_hangar_door_r","targetname"); var_02 = var_00 common_scripts\utility::get_target_ent(); var_03 = var_01 common_scripts\utility::get_target_ent(); var_02 linkto(var_00); var_03 linkto(var_01); var_04 = common_scripts\utility::getstruct("tank_hanger_door_l_opened","targetname"); var_05 = common_scripts\utility::getstruct("tank_hanger_door_r_opened","targetname"); var_06 = common_scripts\utility::getstruct("tank_hanger_door_closed","targetname"); var_07 = 0.75; var_00 moveto(var_06.origin,var_07,0.25,0.25); var_01 moveto(var_06.origin,var_07,0.25,0.25); wait(var_07); var_02 disconnectpaths(); var_03 disconnectpaths(); } //Function Number: 262 helo_sniper_bullet_impacts() { while(!common_scripts\utility::flag("flag_player_enters_forest")) { var_00 = 3; var_01 = 6; if(common_scripts\utility::flag("flag_increase_sinper_shots_01")) { var_00 = 2; var_01 = 4; } if(common_scripts\utility::flag("flag_hill_slide_complete")) { var_00 = 1; var_01 = 3; } wait(randomfloatrange(var_00,var_01)); var_02 = vectornormalize(anglestoforward(level.player.angles)); var_03 = vectornormalize(anglestoright(level.player.angles)); var_04 = spawn("script_origin",(0,0,0)); var_02 = var_02 * randomintrange(128,512); var_03 = var_03 * randomintrange(-96,96); var_05 = randomint(360); var_04.angles = (0,var_05,0); var_06 = get_helo_spotlight_bullet_origin(); var_07 = 0; var_08 = level.player.origin + var_02 + var_03; var_09 = randomintrange(64,256); var_0A = randomintrange(1,2); var_0B = var_08 + vectornormalize(anglestoforward(var_04.angles)) * var_09; var_0C = var_0B - var_08; var_0D = var_0A * 0.05; while(var_07 < var_0D) { var_0E = randomfloat(1); if(var_0E < 0.8) { var_04.origin = var_08 + var_0C * var_07 / var_0D; var_0F = randomintrange(-40,40); var_10 = randomintrange(-40,40); var_11 = randomintrange(-5,5); var_04.origin = var_04.origin + (var_0F,var_10,var_11); if(!maps\_utility::shot_endangers_any_player(var_06,var_04.origin)) { helo_spotlight_shoot_location(var_04.origin); } } var_07 = var_07 + 0.05; wait(0.05); } var_04 delete(); } } //Function Number: 263 helo_sniper_threaten_player() { level notify("player_run_progress_trigger_hit"); level endon("player_run_progress_trigger_hit"); var_00 = randomfloatrange(5,8); var_01 = 2; var_02 = 4; wait(var_00); while(!common_scripts\utility::flag("flag_player_enters_forest")) { helo_spotlight_shoot_location(level.player geteye() + (randomintrange(-10,10),randomintrange(-10,10),randomintrange(-10,10))); wait(randomfloatrange(var_01,var_02)); } } //Function Number: 264 player_run_progress_trigger_think() { level endon("flag_player_enters_forest"); self waittill("trigger"); helo_sniper_threaten_player(); } //Function Number: 265 get_helo_spotlight_bullet_origin(param_00) { if(!isdefined(param_00)) { return level.helo_spotlight gettagorigin("tag_guy1") + (0,0,28); } var_01 = 88; var_02 = level.helo_spotlight gettagorigin("tag_deathfx"); var_02 = var_02 + vectornormalize(param_00 - var_02) * var_01; return var_02; } //Function Number: 266 river_slow_movement_ai_think() { level endon("player_climbing_wall"); for(;;) { common_scripts\utility::flag_wait("flag_player_in_river"); if(isplayer(self)) { self setmovespeedscale(0.4); self allowjump(0); self takeweapon("iw5_unarmed_nullattach"); self giveweapon("s1_unarmed_water"); self switchtoweapon("s1_unarmed_water"); self allowcrouch(0); self allowprone(0); if(!isdefined(level.rumble_ent)) { level.rumble_ent = maps\_utility::get_rumble_ent("steady_rumble"); } level.rumble_ent.intensity = 0.08; } common_scripts\utility::flag_waitopen("flag_player_in_river"); if(isplayer(self)) { self setmovespeedscale(0.8); self allowjump(1); self takeweapon("s1_unarmed_water"); self giveweapon("iw5_unarmed_nullattach"); self switchtoweapon("iw5_unarmed_nullattach"); self allowsprint(1); self allowcrouch(1); self allowprone(1); if(isdefined(level.rumble_ent)) { level.rumble_ent delete(); level.rumble_ent = undefined; stopallrumbles(); } } } } //Function Number: 267 lerp_move_speed_scale(param_00,param_01,param_02) { self notify("lerp_move_speed_scale"); self endon("lerp_move_speed_scale"); var_03 = gettime() * 0.001; for(;;) { var_04 = gettime() * 0.001 - var_03; if(var_04 >= param_02) { break; } self setmovespeedscale(maps\_utility::linear_interpolate(var_04 / param_02,param_00,param_01)); wait 0.05; } self setmovespeedscale(param_01); } //Function Number: 268 open_hangar_doors() { common_scripts\utility::flag_wait("player_in_hovertank"); var_00 = getent("tank_hangar_garage_door_clip","targetname"); var_00 delete(); var_01 = getent("tank_hangar_garage_door","targetname"); var_01.animname = "tank_hangar_garage_door"; var_01 maps\_utility::assign_animtree(); var_01 maps\_anim::anim_single_solo(var_01,"lab_tank_hanger_door_open"); } //Function Number: 269 courtyard_gate_think(param_00) { var_01 = getentarray("courtyard_perimeter_gate_instance_0" + param_00,"script_noteworthy"); var_02 = undefined; foreach(var_04 in var_01) { if(var_04.classname == "script_model") { var_02 = var_04; break; } } var_06 = spawnstruct(); var_06.origin = var_02.origin; if(isdefined(var_02.angles)) { var_06.angles = var_02.angles; } var_02.animname = "perimeter_gate"; var_02 maps\_utility::assign_animtree(); var_07 = getent(var_02.target,"targetname"); var_08 = getent(var_07.target,"targetname"); var_07 disconnectpaths(); var_08 connectpaths(); var_08 notsolid(); common_scripts\utility::flag_wait("player_in_hovertank"); var_02 maps\_anim::anim_first_frame_solo(var_02,"opened"); var_08 disconnectpaths(); var_08 solid(); var_07 connectpaths(); var_07 delete(); maps\_utility::deletestruct_ref(var_06); } //Function Number: 270 courtyard_gate_take_damage(param_00) { common_scripts\utility::flag_wait("player_in_hovertank"); var_01 = "flag_courtyard_gate_0" + param_00 + "_explode"; level endon(var_01); self setcandamage(1); var_02 = 500; var_03 = 1000; self.health = var_02 + var_03; for(;;) { self waittill("damage",var_04,var_05,var_06,var_07,var_08,var_09,var_0A,var_0B,var_0C,var_0D); if(var_05 != level.player) { self.health = self.health + var_04; continue; } if(self.health <= var_03) { common_scripts\utility::flag_set(var_01); } } } //Function Number: 271 setup_triggers() { var_00 = getentarray("trigs_tank_combat","targetname"); foreach(var_02 in var_00) { var_02 common_scripts\utility::trigger_off(); } common_scripts\utility::flag_wait("flag_obj_tank_complete"); foreach(var_02 in var_00) { var_02 common_scripts\utility::trigger_on(); } } //Function Number: 272 research_building_enemy_think() { self endon("death"); self setgoalvolumeauto(getent("info_v_combat_research_01","targetname")); common_scripts\utility::flag_wait("flag_combat_research_02"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_combat_pool_room_01","targetname")); common_scripts\utility::flag_wait("flag_combat_research_03"); while(!common_scripts\utility::flag("flag_player_inside_foam_room")) { common_scripts\utility::flag_wait_any("flag_combat_research_04","flag_combat_research_04_bottom"); if(common_scripts\utility::flag("flag_combat_research_04")) { self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_combat_pool_room_03","targetname")); continue; } if(common_scripts\utility::flag("flag_combat_research_04_bottom")) { self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_combat_pool_room_bottom","targetname")); } wait 0.05; } self cleargoalvolume(); maps\_utility::player_seek(); } //Function Number: 273 facility_bridge_enemy_think() { self endon("death"); self setgoalvolumeauto(getent("info_v_combat_facility_bridge_01","targetname")); common_scripts\utility::flag_wait("flag_combat_facility_bridge_seek_player"); self cleargoalvolume(); maps\_utility::player_seek(); } //Function Number: 274 pool_building_walkway_01_enemy_think() { self endon("death"); self setgoalvolumeauto(getent("info_v_combat_pool_room_walkway_02","targetname")); common_scripts\utility::flag_wait("flag_guys_pool_bldg_01_seek_player"); self cleargoalvolume(); maps\_utility::player_seek(); } //Function Number: 275 research_right_01_enemy_think() { self endon("death"); self setgoalvolumeauto(getent("info_v_combat_pool_room_walkway_03","targetname")); common_scripts\utility::flag_wait("flag_guys_research_right_01_seek_player"); self cleargoalvolume(); maps\_utility::player_seek(); } //Function Number: 276 research_left_01_enemy_think() { self endon("death"); if(randomint(2) == 0) { self setgoalvolumeauto(getent("info_v_combat_pool_room_walkway_04","targetname")); } else { self setgoalvolumeauto(getent("info_v_combat_pool_room_walkway_05","targetname")); } common_scripts\utility::flag_wait("flag_guys_research_left_01_seek_player"); self cleargoalvolume(); maps\_utility::player_seek(); } //Function Number: 277 research_left_lower_01_enemy_think() { self endon("death"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_combat_pool_room_platform","targetname")); while(!common_scripts\utility::flag("flag_player_inside_foam_room")) { common_scripts\utility::flag_wait_any("flag_combat_research_04","flag_combat_research_04_bottom"); if(common_scripts\utility::flag("flag_combat_research_04")) { self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_combat_pool_room_03","targetname")); continue; } if(common_scripts\utility::flag("flag_combat_research_04_bottom")) { self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_combat_pool_room_bottom","targetname")); } wait 0.05; } self cleargoalvolume(); maps\_utility::player_seek(); } //Function Number: 278 research_right_lower_01_enemy_think() { self endon("death"); self setgoalvolumeauto(getent("info_v_combat_pool_room_bottom_03","targetname")); while(!common_scripts\utility::flag("flag_player_inside_foam_room")) { common_scripts\utility::flag_wait_any("flag_combat_research_04","flag_combat_research_04_bottom"); if(common_scripts\utility::flag("flag_combat_research_04")) { self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_combat_pool_room_03","targetname")); continue; } if(common_scripts\utility::flag("flag_combat_research_04_bottom")) { self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_combat_pool_room_bottom","targetname")); } wait 0.05; } self cleargoalvolume(); maps\_utility::player_seek(); } //Function Number: 279 research_platform_enemy_think() { self endon("death"); self setgoalvolumeauto(getent("info_v_combat_pool_room_platform","targetname")); common_scripts\utility::flag_wait("flag_combat_research_05"); common_scripts\utility::flag_wait("flag_foam_room_combat_clear_out"); self cleargoalvolume(); maps\_utility::player_seek(); } //Function Number: 280 pool_building_enemy_think() { self endon("death"); self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_combat_pool_room_03","targetname")); while(!common_scripts\utility::flag("flag_player_inside_foam_room")) { common_scripts\utility::flag_wait_any("flag_combat_research_04","flag_combat_research_04_bottom"); if(common_scripts\utility::flag("flag_combat_research_04")) { self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_combat_pool_room_03","targetname")); continue; } if(common_scripts\utility::flag("flag_combat_research_04_bottom")) { self cleargoalvolume(); self setgoalvolumeauto(getent("info_v_combat_pool_room_bottom","targetname")); } wait 0.05; } self cleargoalvolume(); maps\_utility::player_seek(); } //Function Number: 281 courtyard_goal_volume_trigger_think() { var_00 = common_scripts\utility::get_target_ent(); level endon("flag_obj_courtyard_jammer_start"); for(;;) { self waittill("trigger"); if(var_00 != level.courtyard_goal_volume) { level.courtyard_goal_volume = var_00; level notify("courtyard_enemy_update_goal"); } wait(0.5); } } //Function Number: 282 courtyard_goal_volume_trigger_b_think() { var_00 = common_scripts\utility::get_target_ent(); level endon("flag_obj_tank_02"); for(;;) { self waittill("trigger"); if(var_00 != level.courtyard_goal_volume) { level.courtyard_goal_volume = var_00; level notify("courtyard_enemy_update_goal"); } wait(0.5); } } //Function Number: 283 combat_courtyard_general_01_think() { self endon("death"); common_scripts\utility::flag_wait_any("flag_combat_courtyard_path_left_01","flag_combat_courtyard_path_left_02","flag_combat_courtyard_path_right_02"); maps\_utility::ai_delete_when_out_of_sight([self],512); } //Function Number: 284 combat_courtyard_path_left_00_think() { self endon("death"); common_scripts\utility::flag_wait_any("flag_combat_courtyard_path_middle_02","flag_combat_courtyard_path_right_01"); maps\_utility::ai_delete_when_out_of_sight([self],640); } //Function Number: 285 combat_courtyard_path_left_01_think() { self endon("death"); common_scripts\utility::flag_wait_any("flag_combat_courtyard_path_middle_01","flag_combat_courtyard_path_middle_02","flag_combat_courtyard_path_right_01","flag_combat_courtyard_path_right_01"); maps\_utility::ai_delete_when_out_of_sight([self],640); } //Function Number: 286 combat_courtyard_path_left_02_think() { self endon("death"); common_scripts\utility::flag_wait_any("flag_combat_courtyard_path_middle_02","flag_combat_courtyard_path_middle_03","flag_combat_courtyard_path_right_02","flag_combat_courtyard_path_right_02"); maps\_utility::ai_delete_when_out_of_sight([self],640); } //Function Number: 287 combat_courtyard_path_left_03_think() { self endon("death"); common_scripts\utility::flag_wait_any("flag_combat_courtyard_path_middle_03","flag_combat_courtyard_path_right_03"); maps\_utility::ai_delete_when_out_of_sight([self],640); } //Function Number: 288 combat_courtyard_path_middle_01_think() { self endon("death"); maps\lab_utility::equip_microwave_grenade(); common_scripts\utility::flag_wait_any("flag_combat_courtyard_path_left_01","flag_combat_courtyard_path_right_01","flag_combat_courtyard_path_right_02"); maps\_utility::ai_delete_when_out_of_sight([self],640); } //Function Number: 289 combat_courtyard_path_middle_02_think() { self endon("death"); maps\lab_utility::equip_microwave_grenade(); common_scripts\utility::flag_wait_any("flag_combat_courtyard_path_left_01","flag_combat_courtyard_path_left_02","flag_combat_courtyard_path_right_01","flag_combat_courtyard_path_right_02"); maps\_utility::ai_delete_when_out_of_sight([self],640); } //Function Number: 290 combat_courtyard_path_middle_03_think() { self endon("death"); maps\lab_utility::equip_microwave_grenade(); common_scripts\utility::flag_wait_any("flag_combat_courtyard_path_left_02","flag_combat_courtyard_path_left_03","flag_combat_courtyard_path_right_02","flag_combat_courtyard_path_right_02"); maps\_utility::ai_delete_when_out_of_sight([self],640); } //Function Number: 291 combat_courtyard_path_right_01_think() { self endon("death"); maps\lab_utility::equip_microwave_grenade(); common_scripts\utility::flag_wait_any("flag_combat_courtyard_path_left_00","flag_combat_courtyard_path_left_01","flag_combat_courtyard_path_middle_02"); maps\_utility::ai_delete_when_out_of_sight([self],640); } //Function Number: 292 combat_courtyard_path_right_02_think() { self endon("death"); maps\lab_utility::equip_microwave_grenade(); common_scripts\utility::flag_wait_any("flag_combat_courtyard_path_left_01","flag_combat_courtyard_path_left_02","flag_combat_courtyard_path_middle_02","flag_combat_courtyard_path_middle_03"); maps\_utility::ai_delete_when_out_of_sight([self],640); } //Function Number: 293 combat_courtyard_path_right_03_think() { self endon("death"); maps\lab_utility::equip_microwave_grenade(); common_scripts\utility::flag_wait_any("flag_combat_courtyard_path_left_02","flag_combat_courtyard_path_left_03","flag_combat_courtyard_path_middle_02","flag_combat_courtyard_path_middle_02"); maps\_utility::ai_delete_when_out_of_sight([self],640); } //Function Number: 294 courtyard_enemy_initial_think() { self endon("death"); self.fixednode = 1; wait(randomfloatrange(30,40)); self.fixednode = 0; while(!isdefined(level.courtyard_goal_volume)) { wait(1); } for(;;) { level waittill("courtyard_enemy_update_goal"); self setgoalvolumeauto(level.courtyard_goal_volume); wait(1); } } //Function Number: 295 courtyard_enemy_think() { self endon("death"); while(!isdefined(level.courtyard_goal_volume)) { wait(1); } for(;;) { level waittill("courtyard_enemy_update_goal"); self setgoalvolumeauto(level.courtyard_goal_volume); wait(1); } } //Function Number: 296 courtyard_jammer_ladder_enemy_think() { self endon("death"); wait(randomfloatrange(20,25)); while(!isdefined(level.courtyard_goal_volume)) { wait(1); } for(;;) { level waittill("courtyard_enemy_update_goal"); self setgoalvolumeauto(level.courtyard_goal_volume); wait(1); } } //Function Number: 297 courtyard_enemy_sniper_fodder_think() { self endon("death"); maps\_utility::add_damage_function(::courtyard_enemy_sniper_fodder_damage_function); thread courtyard_enemy_sniper_fodder_track(); self.fixednode = 1; common_scripts\utility::flag_wait("flag_courtyard_sniper_sequence_complete"); maps\_utility::remove_damage_function(::courtyard_enemy_sniper_fodder_damage_function); self.fixednode = 0; while(!isdefined(level.courtyard_goal_volume)) { wait(1); } for(;;) { level waittill("courtyard_enemy_update_goal"); self setgoalvolumeauto(level.courtyard_goal_volume); wait(1); } } //Function Number: 298 courtyard_enemy_sniper_fodder_track() { level endon("flag_courtyard_sniper_sequence_complete"); self waittill("death",var_00); if(var_00 == level.player) { level notify("courtyard_enemy_sniped"); } } //Function Number: 299 courtyard_enemy_sniper_fodder_count() { level endon("flag_courtyard_sniper_sequence_complete"); level waittill("courtyard_enemy_sniped"); level waittill("courtyard_enemy_sniped"); level waittill("courtyard_enemy_sniped"); level waittill("courtyard_enemy_sniped"); common_scripts\utility::flag_set("flag_courtyard_sniper_sequence_complete"); } //Function Number: 300 courtyard_enemy_sniper_fodder_damage_function(param_00,param_01,param_02,param_03,param_04,param_05,param_06) { if(param_01 == level.burke || param_01 == level.cormack) { if(self.health > 0) { self.health = self.health + param_00; } } } //Function Number: 301 courtyard_doormen_enemy_think() { self endon("death"); level waittill("remove_doormen"); self delete(); } //Function Number: 302 courtyard_burke_defend_squad() { var_00 = getnode("burke_defend_exterior","script_noteworthy"); level.burke maps\_utility::disable_ai_color(); level.burke.ignoreme = 1; level.burke.ignoreall = 1; level.burke.ignoresuppression = 1; level.burke.goalradius = 32; level.burke setgoalnode(var_00); level.burke waittill("goal"); level.burke.ignoreme = 0; level.burke.ignoreall = 0; level.burke.ignoresuppression = 0; } //Function Number: 303 courtyard_hangar_door_hack() { common_scripts\utility::flag_wait("flag_courtyard_hangar_door_hack"); maps\lab_utility::disable_all_fixed_scanners(); var_00 = getent("bad_place_courtyard_stairs","targetname"); badplace_brush("courtyard_stairs",-1,var_00,"axis"); var_01 = getnode("burke_escort_exterior","script_noteworthy"); var_02 = getnode("cormack_defend_exterior","script_noteworthy"); level.knox.ignoreme = 1; thread se_knox_courtyard_hangar_door_hack_open(); level.burke setgoalnode(var_01); level.cormack setgoalnode(var_02); thread courtyard_traversal_jammer(); var_03 = getent("bad_place_courtyard_roof","targetname"); badplace_brush("courtyard_roof",-1,var_03,"axis"); common_scripts\utility::flag_wait("flag_obj_jammer_complete"); soundscripts\_snd::snd_message("aud_post_courtyard_emitters"); thread courtyard_traversal_hangar(); common_scripts\utility::flag_wait("flag_courtyard_sniper_sequence_complete"); badplace_delete("courtyard_roof"); thread courtyard_burke_defend_squad(); common_scripts\utility::flag_set("flag_courtyard_hangar_door_hack_success"); thread courtyard_hangar_door_open(); var_04 = getent("trig_dmg_player_hangar","targetname"); var_04 common_scripts\utility::trigger_off(); thread courtyard_burke_enter_hangar_logic(); thread courtyard_cormack_enter_hangar_logic(); level.knox.ignoreme = 0; common_scripts\utility::array_thread(getentarray("courtyard_traversal_forward01","script_noteworthy"),::common_scripts\utility::trigger_off); common_scripts\utility::array_thread(getentarray("courtyard_traversal_backward01","script_noteworthy"),::common_scripts\utility::trigger_off); common_scripts\utility::array_thread(getentarray("courtyard_traversal_forward02","script_noteworthy"),::common_scripts\utility::trigger_off); var_05 = getnode("knox_defend_interior_02","script_noteworthy"); var_06 = getnode("cormack_defend_interior_02","script_noteworthy"); var_07 = getnode("knox_hack_interior","script_noteworthy"); level.burke.goalradius = 32; level.cormack.goalradius = 32; level.knox.goalradius = 32; level.burke setgoalnode(var_05); level.cormack setgoalnode(var_06); level.knox setgoalnode(var_07); level.burke.ignoreall = 1; level.burke.ignoresuppression = 1; level.cormack.ignoreall = 1; level.cormack.ignoresuppression = 1; level.burke maps\_utility::enable_ai_color_dontmove(); level.cormack maps\_utility::enable_ai_color_dontmove(); level.knox maps\_utility::enable_ai_color_dontmove(); common_scripts\utility::flag_wait("flag_obj_tank_02"); badplace_delete("courtyard_stairs"); } //Function Number: 304 courtyard_hangar_door_logic() { var_00 = getent("hangar_interior_volume","targetname"); while(!common_scripts\utility::flag("hangar_door_closing")) { common_scripts\utility::flag_wait("flag_player_inside_hangar"); if(level.burke istouching(var_00) && level.knox istouching(var_00) && level.cormack istouching(var_00)) { var_01 = getent("bad_place_courtyard_exit_platform","targetname"); badplace_brush("courtyard_exit_platform",-1,var_01,"allies"); common_scripts\utility::flag_set("hangar_door_closing"); var_02 = common_scripts\utility::getstruct("knox_courtyard_hangar_door_hack_close_org","targetname"); var_02.origin = level.knox.origin; var_02.angles = level.knox.angles; common_scripts\utility::flag_set("flag_obj_tank_02"); thread courtyard_hangar_door_close(); var_03 = common_scripts\utility::getstruct("org_courtyard_rpg_02","targetname"); var_04 = undefined; switch(randomintrange(0,3)) { case 0: var_04 = common_scripts\utility::getstruct("dest_courtyard_rpg_02_a","targetname"); break; case 1: var_04 = common_scripts\utility::getstruct("dest_courtyard_rpg_02_b","targetname"); break; case 2: var_04 = common_scripts\utility::getstruct("dest_courtyard_rpg_02_c","targetname"); break; } var_05 = magicbullet("rpg_straight",var_03.origin,var_04.origin); var_06 = 0.6; var_05 soundscripts\_snd::snd_message("courtyard_hangar_door_close_rpg",var_04.origin,var_06); wait(var_06); var_07 = distance(level.player.origin,var_04.origin); if(var_07 < 200) { thread maps\lab_utility::rumble_heavy_1(); } else if(var_07 < 500) { thread maps\lab_utility::rumble_heavy(); } var_05 delete(); badplace_delete("courtyard_exit_platform"); var_08 = getent("courtyard_hangar_door_l","targetname"); var_08 playsound("detpack_explo_metal"); earthquake(0.5,0.5,var_08.origin,3000); level.player playrumbleonentity("damage_heavy"); continue; } wait(0.1); } var_09 = getent("courtyard_door_clip","targetname"); var_09 solid(); var_09 disconnectpaths(); thread maps\_utility::autosave_by_name("courtyard_exited"); } //Function Number: 305 courtyard_glowing_ladders() { common_scripts\utility::flag_wait("flag_obj_courtyard_jammer_start"); var_00 = getent("jammer_ladder_interior","targetname"); var_01 = getent("jammer_ladder_exterior","targetname"); var_00 setmodel("safety_ladder_196_obj"); var_01 setmodel("safety_ladder_196_obj"); common_scripts\utility::flag_wait_either("flag_courtyard_ladder_touching","flag_obj_jammer_complete"); var_00 setmodel("safety_ladder_196"); var_01 setmodel("safety_ladder_196"); } //Function Number: 306 courtyard_jammer_scene() { common_scripts\utility::flag_wait("flag_obj_courtyard_jammer_start"); thread courtyard_glowing_ladders(); common_scripts\utility::flag_set("aud_start_jammer"); var_00 = common_scripts\utility::getstruct("org_jammer_1","targetname"); var_01 = "jammerplant_1"; var_02 = maps\_utility::spawn_anim_model("jammer"); var_00 thread maps\_anim::anim_single_solo(var_02,var_01); maps\_utility::delaythread(0.05,::maps\_anim::anim_set_time,[var_02],var_01,1); maps\_anim::anim_set_rate_single(var_02,var_01,0); var_02 setmodel("vm_jamming_device_obj"); common_scripts\utility::flag_wait("flag_obj_jammer_interact"); common_scripts\utility::flag_set("flag_combat_courtyard_jammer_complete"); thread maps\lab_lighting::courtyard_jammer_plant_dof(); soundscripts\_snd::snd_message("courtyard_end_jammer"); level.player enableinvulnerability(); var_03 = maps\_utility::spawn_anim_model("player_rig_intro"); var_03 hide(); maps\_utility::delaythread(1.15,::player_jammer_movie); var_00 maps\_anim::anim_first_frame_solo(var_03,var_01); level.player maps\_shg_utility::setup_player_for_scene(1); maps\_player_exo::player_exo_deactivate(); var_02 common_scripts\utility::delaycall(0.9,::delete); var_04 = maps\_utility::spawn_anim_model("jammer"); var_05 = [var_03,var_04]; level.player playerlinktoblend(var_03,"tag_player",0.4); var_04 setmodel("vm_jamming_device"); wait(0.5); var_03 show(); thread courtyard_jammer_rumbles(); var_00 maps\_anim::anim_single(var_05,var_01); level.player disableinvulnerability(); level notify("reset_jammer_plant_dof"); level.player maps\_shg_utility::setup_player_for_gameplay(); maps\_player_exo::player_exo_activate(); var_03 delete(); level.player unlink(); common_scripts\utility::flag_set("flag_obj_jammer_complete"); } //Function Number: 307 courtyard_jammer_rumbles() { maps\lab_utility::setup_level_rumble_ent(); wait(0.5); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.2,0.2); wait(0.5); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.2,0.3); wait(0.5); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.5,0.2); } //Function Number: 308 player_jammer_movie() { setsaveddvar("cg_cinematicfullscreen","0"); cinematicingame("jammer_ui_loop"); thread stop_jammer_movie(); } //Function Number: 309 stop_jammer_movie() { level waittill("flag_obj_tank_02"); stopcinematicingame(); } //Function Number: 310 courtyard_burke_enter_hangar_logic() { var_00 = getent("hangar_interior_volume","targetname"); common_scripts\utility::flag_wait("flag_player_inside_hangar"); level.burke.ignoreall = 1; level.burke.ignoresuppression = 1; while(!level.burke istouching(var_00)) { wait(0.1); } level.burke.ignoreall = 0; level.burke.ignoresuppression = 0; } //Function Number: 311 courtyard_cormack_enter_hangar_logic() { var_00 = getent("hangar_interior_volume","targetname"); common_scripts\utility::flag_wait("flag_player_inside_hangar"); level.cormack.ignoreall = 1; level.cormack.ignoresuppression = 1; while(!level.burke istouching(var_00)) { wait(0.1); } level.cormack.ignoreall = 0; level.cormack.ignoresuppression = 0; } //Function Number: 312 courtyard_hangar_door_open() { var_00 = getent("courtyard_hangar_door_l","targetname"); var_01 = getent("courtyard_hangar_door_r","targetname"); var_02 = var_00 common_scripts\utility::get_target_ent(); var_03 = var_01 common_scripts\utility::get_target_ent(); var_02 linkto(var_00); var_03 linkto(var_01); var_04 = common_scripts\utility::getstruct("courtyard_hanger_door_l_opened","targetname"); var_05 = common_scripts\utility::getstruct("courtyard_hanger_door_r_opened","targetname"); var_06 = 0.75; var_00 moveto(var_04.origin,var_06,0.25,0.25); var_01 moveto(var_05.origin,var_06,0.25,0.25); wait(var_06); var_02 connectpaths(); var_03 connectpaths(); } //Function Number: 313 courtyard_hangar_door_close() { soundscripts\_snd::snd_message("aud_courtyard_hangar_door_close"); var_00 = getent("courtyard_hangar_door_l","targetname"); var_01 = getent("courtyard_hangar_door_r","targetname"); var_02 = var_00 common_scripts\utility::get_target_ent(); var_03 = var_01 common_scripts\utility::get_target_ent(); var_02 linkto(var_00); var_03 linkto(var_01); var_04 = common_scripts\utility::getstruct("courtyard_hanger_door_closed","targetname"); var_05 = 0.5; var_00 moveto(var_04.origin,var_05,0.25,0.25); var_01 moveto(var_04.origin,var_05,0.25,0.25); wait(var_05); var_02 disconnectpaths(); var_03 disconnectpaths(); } //Function Number: 314 courtyard_intro_magic_bullets() { var_00 = common_scripts\utility::getstruct("org_courtyard_magicbullet_01","targetname"); var_01 = common_scripts\utility::getstruct("org_courtyard_magicbullet_02","targetname"); var_02 = common_scripts\utility::getstruct("org_courtyard_magicbullet_03","targetname"); var_03 = common_scripts\utility::getstruct("dest_courtyard_magicbullet_01","targetname"); var_04 = common_scripts\utility::getstruct("dest_courtyard_magicbullet_02","targetname"); var_05 = common_scripts\utility::getstruct("dest_courtyard_magicbullet_03","targetname"); common_scripts\utility::flag_wait("courtyard_intro_magic_bullets"); magicbullet("iw5_bal27_sp",var_00.origin,var_03.origin); wait(0.2); for(var_06 = 0;var_06 < 5;var_06++) { magicbullet("iw5_bal27_sp",var_01.origin,var_04.origin); wait(0.1); } wait(0.2); for(var_06 = 0;var_06 < 4;var_06++) { magicbullet("iw5_bal27_sp",var_02.origin,var_05.origin); wait(0.1); } } //Function Number: 315 courtyard_traversal_initial() { var_00 = getent("courtyard_door_clip","targetname"); var_00 notsolid(); var_00 connectpaths(); common_scripts\utility::array_thread(getentarray("courtyard_traversal_forward01","script_noteworthy"),::common_scripts\utility::trigger_on); common_scripts\utility::array_thread(getentarray("courtyard_traversal_backward01","script_noteworthy"),::common_scripts\utility::trigger_off); common_scripts\utility::array_thread(getentarray("courtyard_traversal_forward02","script_noteworthy"),::common_scripts\utility::trigger_off); } //Function Number: 316 courtyard_traversal_jammer() { var_00 = getent("courtyard_door_clip","targetname"); var_00 solid(); var_00 disconnectpaths(); common_scripts\utility::array_thread(getentarray("courtyard_traversal_forward01","script_noteworthy"),::common_scripts\utility::trigger_off); common_scripts\utility::array_thread(getentarray("courtyard_traversal_backward01","script_noteworthy"),::common_scripts\utility::trigger_on); common_scripts\utility::array_thread(getentarray("courtyard_traversal_forward02","script_noteworthy"),::common_scripts\utility::trigger_off); } //Function Number: 317 courtyard_traversal_hangar() { var_00 = getent("courtyard_door_clip","targetname"); var_00 notsolid(); var_00 connectpaths(); common_scripts\utility::array_thread(getentarray("courtyard_traversal_forward01","script_noteworthy"),::common_scripts\utility::trigger_off); common_scripts\utility::array_thread(getentarray("courtyard_traversal_backward01","script_noteworthy"),::common_scripts\utility::trigger_off); common_scripts\utility::array_thread(getentarray("courtyard_traversal_forward02","script_noteworthy"),::common_scripts\utility::trigger_on); } //Function Number: 318 courtyard_traversal_tank() { common_scripts\utility::array_thread(getentarray("courtyard_traversal_forward01","script_noteworthy"),::common_scripts\utility::trigger_off); common_scripts\utility::array_thread(getentarray("courtyard_traversal_backward01","script_noteworthy"),::common_scripts\utility::trigger_off); common_scripts\utility::array_thread(getentarray("courtyard_traversal_forward02","script_noteworthy"),::common_scripts\utility::trigger_off); } //Function Number: 319 se_hovertank_reveal() { var_00 = common_scripts\utility::getstruct("hovertank_reveal_org","targetname"); common_scripts\utility::flag_wait("flag_foam_corridor_exit"); for(var_01 = 1;var_01 <= 4;var_01++) { getent("lab_tank_lift_0" + var_01,"script_noteworthy") thread se_hovertank_reveal_lift_think(var_01); } common_scripts\utility::flag_set("flag_obj_tank_04"); common_scripts\utility::flag_wait("flag_hovertank_reveal_scene"); common_scripts\utility::flag_set("flag_obj_tank_05"); common_scripts\utility::flag_wait("flag_hovertank_reveal_scene_started"); maps\_utility::autosave_by_name(); common_scripts\utility::flag_set("flag_tank_hangar_reveal_dialogue"); soundscripts\_snd::snd_message("hover_tank_startup_sequence"); thread maps\lab_lighting::stair_wait(); maps\_utility::delaythread(37,::allow_player_hovertank_mount,var_00); } //Function Number: 320 se_hovertank_reveal_actor(param_00,param_01) { var_02 = "hovertank_reveal_approach"; var_03 = "hovertank_reveal_loop"; var_04 = "hovertank_reveal"; var_05 = "hovertank_reveal_loop_ender"; var_06 = "hovertank_static_ender"; var_07 = spawn("script_origin",param_01.origin); if(isdefined(param_01.angles)) { var_07.angles = param_01.angles; } if(param_00.animname != "hovertank") { if(param_00 == level.knox) { level.knox.goalradius = 16; level.knox setgoalnode(getnode("tank_hangar_knox_node","targetname")); common_scripts\utility::flag_wait("flag_move_knox_to_console"); } var_07 maps\_anim::anim_reach_solo(param_00,var_02); if(param_00 == level.burke) { common_scripts\utility::flag_set("flag_tank_hangar_sweep_dialogue"); } param_00 common_scripts\utility::delaycall(0.05,::setanimrate,param_00 maps\_utility::getanim(var_02),1.05); var_07 maps\_anim::anim_single_solo(param_00,var_02); var_07 thread maps\_anim::anim_loop_solo(param_00,var_03,var_05); } else { var_07 thread maps\_anim::anim_loop_solo(param_00,"hovertank_reveal_static",var_06); } param_00.ready_for_reveal = 1; common_scripts\utility::flag_wait("flag_hovertank_reveal_scene"); var_08 = 1; while(var_08) { var_08 = 0; if(!isdefined(level.burke.ready_for_reveal) || !isdefined(level.cormack.ready_for_reveal)) { var_08 = 1; } wait(0.05); } var_07 notify(var_06); common_scripts\utility::flag_set("flag_hovertank_reveal_scene_started"); if(param_00 != level.knox) { var_07 notify(var_05); if(param_00.animname == "hovertank") { var_07 thread maps\_anim::anim_single_solo(param_00,var_04); param_00 thread maps\lab_utility::delete_on_notify(level,"hovertank_hide_exterior"); common_scripts\utility::waittill_any_ents(var_07,var_04,level,"player_in_hovertank"); if(!common_scripts\utility::flag("player_in_hovertank")) { if(isdefined(param_00)) { var_07 thread maps\_anim::anim_loop_solo(param_00,var_03,var_05); } } } else { param_00 common_scripts\utility::delaycall(0.05,::setanimrate,param_00 maps\_utility::getanim(var_04),1.05); var_07 maps\_anim::anim_single_solo(param_00,var_04); if(!common_scripts\utility::flag("player_in_hovertank")) { var_07 thread maps\_anim::anim_loop_solo(param_00,"hovertank_idle",var_05); } } } common_scripts\utility::flag_wait("player_in_hovertank"); if(isdefined(param_00)) { param_00 maps\_utility::anim_stopanimscripted(); param_00.ready_for_reveal = undefined; } var_07 notify(var_05); wait 0.05; var_07 delete(); maps\_utility::deletestruct_ref(self); } //Function Number: 321 se_hovertank_reveal_lift_think(param_00) { var_01 = "hovertank_reveal"; self.animname = "htank_reveal_lift_0" + param_00; maps\_utility::assign_animtree(); maps\_anim::anim_first_frame_solo(self,var_01); common_scripts\utility::flag_wait("flag_hovertank_reveal_scene_started"); maps\_anim::anim_single_solo(self,var_01); } //Function Number: 322 allow_player_hovertank_mount(param_00) { common_scripts\utility::flag_set("flag_obj_tank_06"); var_01 = getent("hovertank_enter_trigger","targetname"); var_01 waittill("trigger"); if(!isdefined(param_00)) { param_00 = common_scripts\utility::getstruct("hovertank_reveal_org","targetname"); } thread maps\lab_lighting::tank_board_enter(); thread maps\lab_lighting::tank_board_enter_top_lights(); common_scripts\utility::flag_set("player_entering_hovertank"); common_scripts\utility::flag_set("flag_tank_board_dialogue"); var_02 = level.hovertank.angles; var_03 = level.hovertank.origin; se_hovertank_mount(param_00); level.hovertank vehicle_teleport(var_03,var_02,0,0); level.player maps\_player_stats::toggle_register_kills_for_vehicle_occupants(0); level.player thread mount_hovertank(1); common_scripts\utility::flag_set("player_in_hovertank"); common_scripts\utility::flag_set("flag_player_in_hovertank_dialogue"); soundscripts\_snd::snd_message("aud_player_gets_in_tank"); wait(0.5); thread maps\_utility::autosave_by_name("tank_hangar"); thread combat_tank_courtyard(); } //Function Number: 323 se_hovertank_mount(param_00) { var_01 = spawn("script_origin",param_00.origin); if(isdefined(param_00.angles)) { var_01.angles = param_00.angles; } level.player_rig = maps\lab_utility::spawn_player_rig(); level.player_rig hide(); level.player_rig dontcastshadows(); level.player maps\_shg_utility::setup_player_for_scene(0); maps\_player_exo::player_exo_deactivate(); var_02 = 0.5; level.player playerlinktoblend(level.player_rig,"tag_player",var_02); level.player_rig common_scripts\utility::delaycall(var_02,::show); level notify("msg_vfx_player_in_tank"); thread tank_hangar_door_close(); var_03 = maps\_utility::spawn_anim_model("hovertank_interior",level.hovertank.origin); var_03.angles = level.hovertank.angles; var_03 setmaterialscriptparam(1,0); var_03 hidepart("TAG_SHADOW_HIDE"); var_04 = [level.player_rig,level.hovertank,var_03]; var_05 = "hovertank_enter"; var_01 thread maps\_anim::anim_single(var_04,var_05); soundscripts\_snd::snd_message("hovertank_enter"); level waittill("hovertank_enter_start_npcs"); var_06 = [level.burke,level.cormack,level.knox]; var_01 thread maps\_anim::anim_single(var_06,var_05); thread maps\lab_lighting::tank_turrent_reflection(var_03,var_06); level waittill("hovertank_show_interior"); maps\_cloak::cloaked_stealth_disable_battery_hud(); var_03 show(); level waittill("hovertank_hide_exterior"); level.hovertank hide(); level.hovertank clearanim(level.scr_anim["hovertank"]["hovertank_enter"],0.2); var_01 waittill(var_05); var_03 delete(); level.player unlink(); level.player_rig delete(); } //Function Number: 324 mount_hovertank(param_00) { setup_hovertank_combat(); level notify("tank_switch"); var_01 = vehicle_scripts\_hovertank::add_hovertank_turret(level.hovertank); var_01 hidepart("TAG_BOOT"); thread maps\lab_lighting::hovertank_turrent_light(var_01); thread maps\lab_lighting::hovertank_turrent_reflection(var_01); maps\_player_exo::player_exo_deactivate(); level.player vehicle_scripts\_hovertank::hovertank_ride(level.hovertank,level.hovertank_turret); level.use_hovertank_chromatic_aberration = 1; if(isdefined(param_00) && param_00 == 1) { level.hovertank_turret thread vehicle_scripts\_hovertank::hoverscreen_reveal(3); } else { level.hovertank_turret thread vehicle_scripts\_hovertank::hoverscreen_reveal(1.5); } level.burke thread ride_hovertank_ai(); level.cormack thread ride_hovertank_ai(); level.knox thread ride_hovertank_ai(); var_01 setmodel("vehicle_mil_hovertank_simple_vm"); } //Function Number: 325 hoverscreen_damage_fx(param_00,param_01) { if(!isdefined(param_00)) { param_00 = 0.25; } if(!isdefined(param_01)) { param_01 = 1; } level.hovertank_turret setmaterialscriptparam(1,0.1); wait(param_00); level.hovertank_turret setmaterialscriptparam(0,0.1); } //Function Number: 326 hoverscreen_restore(param_00) { level.hovertank_turret setmaterialscriptparam(0,param_00); } //Function Number: 327 setup_hovertank_combat() { setsaveddvar("r_hudoutlinewidth",1); setsaveddvar("r_hudoutlinepostmode",2); setsaveddvar("r_hudoutlinehalolumscale",0.75); setsaveddvar("r_hudoutlinehaloblurradius",0.35); maps\_utility::battlechatter_off("allies"); maps\_utility::battlechatter_off("axis"); maps\_utility::delaythread(0.05,::delete_mobile_cover); maps\lab_utility::hovertank_setup_hint_data(); maps\_utility::array_spawn_function_noteworthy("tank_courtyard_enemy",::tank_battle_rpg_enemy_think); maps\_utility::array_spawn_function_noteworthy("tank_combat_warbird",::tank_combat_warbird_think); maps\_utility::array_spawn_function_noteworthy("tank_combat_vrap",::tank_combat_vrap); var_00 = getentarray("vrap_placed","script_noteworthy"); foreach(var_02 in var_00) { var_02 thread tank_combat_vrap(); } maps\_utility::array_spawn_function_noteworthy("tank_combat_littlebird",::tank_combat_littlebird_think); maps\_utility::array_spawn_function_noteworthy("tank_battle_enemy_tank",::enemy_tank_ai_think); maps\_utility::array_spawn_function_noteworthy("tank_road_enemy",::tank_road_enemy_think); maps\_utility::add_global_spawn_function("axis",::hovertank_combat_global_enemy_think); maps\_utility::array_spawn_function_noteworthy("tank_combat_field_flee_guy",::combat_tank_field_flee_guys_think); common_scripts\utility::array_thread(getentarray("destructible_trailer_collision","script_noteworthy"),::maps\lab_utility::destructible_trailer_collision_think); common_scripts\utility::array_thread(getentarray("can_tip","script_noteworthy"),::maps\lab_utility::can_tip_think); common_scripts\utility::array_thread(getentarray("log_pile_scripted","script_noteworthy"),::maps\lab_utility::log_pile_scripted_think); common_scripts\utility::array_thread(getentarray("trigger_spawn_and_set_flag","script_noteworthy"),::maps\lab_utility::trigger_spawn_and_set_flag_think); maps\_utility::array_spawn_function_noteworthy("tank_battle_rpg_enemy",::tank_battle_rpg_enemy_think); level.vehiclespawncallbackthread = ::lab_vehicle_callback; thread courtyard_scripted_props_staged_wakeup(); thread hovertank_combat_road_log_scene(); thread hovertank_combat_clearing_choppers_1(); thread hovertank_combat_clearing_choppers_3(); thread hovertank_ascent_final_enemies(); thread hovertank_combat_cleanup(); level.hovertank thread hovertank_monitor_status(); thread hovertank_checkpoint_logic(); common_scripts\utility::array_thread(getentarray("destructible_boxtruck","script_noteworthy"),::maps\lab_utility::destructible_boxtruck_think); level maps\_utility::waittillthread("hovertank_end",::cleanup_hovertank_combat); } //Function Number: 328 disable_static_mobile_cover() { var_00 = getentarray("static_mobile_cover","script_noteworthy"); foreach(var_02 in var_00) { var_02 vehicle_scripts\_cover_drone::cover_drone_disable(); } } //Function Number: 329 delete_mobile_cover() { var_00 = getentarray("script_vehicle_cover_drone","classname"); foreach(var_02 in var_00) { if(isdefined(var_02)) { var_02 delete(); } } } //Function Number: 330 cleanup_hovertank_combat() { maps\_utility::remove_global_spawn_function("axis",::hovertank_combat_global_enemy_think); } //Function Number: 331 hovertank_checkpoint_logic() { level.hovertank endon("hovertank_done"); var_00 = 0; for(;;) { if(issaverecentlyloaded() && !var_00) { var_00 = 1; if(common_scripts\utility::flag("hovertank_clearing_reached")) { if(level.hovertank vehicle_scripts\_hovertank::get_trophy_ammo() < 60) { level.hovertank vehicle_scripts\_hovertank::set_trophy_ammo(60); } } else if(common_scripts\utility::flag("hovertank_road_reached")) { if(level.hovertank vehicle_scripts\_hovertank::get_trophy_ammo() < 80) { level.hovertank vehicle_scripts\_hovertank::set_trophy_ammo(80); } } else { } } else if(!issaverecentlyloaded()) { var_00 = 0; } wait(0.1); } } //Function Number: 332 courtyard_scripted_props_staged_wakeup() { var_00 = getentarray("courtyard_scripted_props","script_noteworthy"); foreach(var_02 in var_00) { var_02 courtyard_scripted_props_think(); wait(0.05); } } //Function Number: 333 courtyard_scripted_props_think() { if(self.classname == "script_brushmodel") { self delete(); return; } if(self.classname == "script_model") { self physicslaunchclient(self.origin,(0,0,0)); } } //Function Number: 334 hovertank_combat_global_enemy_think() { maps\_utility::disable_long_death(); self.dropweapon = 0; self.grenadeammo = 0; thread maps\lab_utility::hovertank_enemy_outline(4); thread maps\lab_utility::hovertank_aimed_enemy_ai_weapon_hint(1,"missile"); self 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(isdefined(var_09)) { if(var_09 == "hovertank_antiair") { self.health = self.health + var_00; continue; } if(var_09 == "hovertank_missile_small") { self kill(var_03,var_01); } } } } //Function Number: 335 lab_vehicle_callback(param_00) { if(issubstr(param_00.classname,"low")) { param_00 maps\_utility::ent_flag_init("no_riders_until_unload"); } } //Function Number: 336 hovertank_combat_road_log_scene() { common_scripts\utility::flag_wait("hovertank_combat_road_log_scene"); maps\_utility::delaythread(5,::common_scripts\utility::flag_set,"flag_tank_road_log_enemies_dialogue"); if(!common_scripts\utility::flag("flag_log_pile_scripted_destroyed")) { maps\_utility::array_spawn_targetname("tank_road_log_enemy"); } } //Function Number: 337 hovertank_combat_clearing_choppers_1() { common_scripts\utility::flag_wait("flag_hovertank_combat_clearing_choppers_1"); common_scripts\utility::flag_set("flag_tank_field_lz_over_ridge_dialogue"); } //Function Number: 338 hovertank_combat_clearing_choppers_3() { common_scripts\utility::flag_wait("flag_hovertank_combat_clearing_choppers_3"); common_scripts\utility::flag_set("flag_tank_clearing_infantry_dialogue"); } //Function Number: 339 hovertank_ascent_final_enemies() { common_scripts\utility::flag_wait("flag_hovertank_ascent_final_enemies"); common_scripts\utility::flag_set("flag_tank_ascent_dialogue"); } //Function Number: 340 hovertank_monitor_status() { level endon("hovertank_end"); var_00 = self.trophyammomax; self.last_hit_callout_time = gettime(); var_01 = 100; for(;;) { self waittill("trophy_deployed",var_02); if(self.trophyammo / self.trophyammomax < 0.75 && var_01 > 75) { level maps\_utility::dialogue_queue("lab_sir_trophysystemat75"); var_01 = 75; } else if(self.trophyammo / self.trophyammomax < 0.5 && var_01 > 50) { level maps\_utility::dialogue_queue("lab_sir_trophysystemat50"); var_01 = 50; } else if(self.trophyammo / self.trophyammomax < 0.25 && var_01 > 25) { level maps\_utility::dialogue_queue("lab_sir_trophysystemat25"); var_01 = 25; } else if(self.trophyammo / self.trophyammomax <= 0.05 && var_01 > 0.05) { level maps\_utility::dialogue_queue("lab_sir_trophysystemcritical"); var_01 = 0.05; } if(self.trophyammo / self.trophyammomax < 0.8 && !isdefined(self.trophy80)) { self.trophy80 = 1; level.burke maps\_utility::dialogue_queue("lab_gdn_weregettingbeatenup"); continue; } if(self.trophyammo / self.trophyammomax < 0.6 && !isdefined(self.trophy60)) { self.trophy60 = 1; level.burke maps\_utility::dialogue_queue("lab_gdn_wecanttakeanotherhit"); continue; } if(self.trophyammo / self.trophyammomax == 0 && !isdefined(self.health0)) { self.trophy0 = 1; level.burke maps\_utility::dialogue_queue("lab_gdn_ourtrophysystemisempty"); return; } else if(gettime() - self.last_hit_callout_time > 10000) { if(randomfloat(1) < 0.25) { if(isdefined(var_02)) { var_03 = vectortoangles(var_02 - level.hovertank.turret.origin); var_04 = vectornormalize(var_02 - level.hovertank.turret.origin); var_05 = anglestoright(level.hovertank.turret gettagangles("tag_aim_animated")); var_06 = vectordot(var_05,var_04); if(var_06 > 0.5) { var_07 = common_scripts\utility::cointoss(); if(var_07) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_firefromtheright"); } else { level.cormack maps\lab_vo::important_dialogue_queue("lab_crk_takingfirefromtheright"); } } else if(var_06 < -0.5) { var_07 = common_scripts\utility::cointoss(); if(var_07) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_firefromtheleft"); } else { level.cormack maps\lab_vo::important_dialogue_queue("lab_crk_takingfirefromtheleft"); } } } } } } } //Function Number: 341 hovertank_combat_cleanup() { level waittill("hovertank_end"); } //Function Number: 342 ride_hovertank_ai() { self.no_friendly_fire_penalty = 1; self forceteleport(level.hovertank.origin,level.hovertank.angles); self linkto(level.hovertank); self.ignoreall = 1; self hideallparts(); common_scripts\utility::flag_wait("flag_se_hovertank_exit"); self showallparts(); self.ignoreall = 0; self unlink(); self.no_friendly_fire_penalty = undefined; } //Function Number: 343 setup_hovertank() { var_00 = getent("hovertank","targetname"); level.hovertank = var_00 maps\_utility::spawn_vehicle(); level.hovertank thread monitor_mobile_turret_health(); level.hovertank makeunusable(); level.hovertank.animname = "hovertank"; if(isdefined(level.start_point)) { switch(level.start_point) { case "tank_ascent": case "tank_field_right_fork": case "tank_field_left_fork": case "tank_field": case "tank_road": level.player maps\_player_stats::toggle_register_kills_for_vehicle_occupants(0); thread mount_hovertank(); break; default: level.player maps\_player_stats::toggle_register_kills_for_vehicle_occupants(1); break; } } } //Function Number: 344 tank_combat_vehicle_damage_feedback() { self endon("death"); thread maps\_utility::add_damagefeedback(); common_scripts\utility::waittill_any("end_damage_feedback","hovertank_end"); maps\_utility::remove_damagefeedback(); } //Function Number: 345 tank_combat_vrap() { thread maps\lab_utility::destroy_self_when_nuked(); thread maps\lab_utility::hovertank_enemy_outline(4); thread tank_combat_vehicle_damage_feedback(); if(!isdefined(self.damage_functions)) { self.damage_functions = []; } maps\_utility::add_damage_function(::enemy_vrap_damage_function); thread tank_combat_vrap_deactivate_on_unload(); maps\_vehicle::vehicle_set_health(2000); self waittill("death",var_00,var_01,var_02); var_03 = maps\lab_utility::hovertank_enemy_outline_offset() + self.origin; radiusdamage(var_03,400,150,150,level.player,"MOD_EXPLOSIVE"); physicsexplosionsphere(var_03,400,150,2,0); } //Function Number: 346 tank_combat_vrap_deactivate_on_unload() { self endon("death"); self endon("hovertank_end"); self waittill("unloaded"); self notify("end_damage_feedback"); self notify("end_highlight"); } //Function Number: 347 tank_combat_warbird_think() { self endon("death"); thread maps\_shg_utility::make_emp_vulnerable(); thread tank_combat_vehicle_damage_feedback(); maps\_utility::add_damage_function(::tank_combat_warbird_damage_function); thread warbird_death_function(); thread maps\lab_utility::warbird_heavy_shooting_think(1); thread maps\lab_utility::destroy_self_when_nuked(); thread maps\lab_utility::hovertank_enemy_outline(4); thread maps\lab_utility::hovertank_aimed_enemy_vehicle_weapon_hint(2,"emp"); maps\_vehicle::vehicle_set_health(1200); self sethoverparams(360,50); if(!isdefined(self.ent_flag["warbird_open_fire"])) { maps\_utility::ent_flag_init("warbird_open_fire"); } maps\_utility::ent_flag_wait("warbird_open_fire"); self notify("warbird_fire"); maps\_utility::ent_flag_waitopen("warbird_open_fire"); self notify("warbird_stop_firing"); } //Function Number: 348 tank_combat_warbird_damage_function(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09) { if(param_01 == level.player && param_04 != "MOD_ENERGY" && param_00 > 499) { if(!isdefined(level.hovertank.choppersniped)) { level.burke maps\_utility::delaythread(0.5,::maps\lab_vo::important_dialogue_queue,"lab_gdn_niceshot"); level.hovertank.choppersniped = 1; self.sniped = 1; } else if(randomfloat(1) < 0.5) { level.burke maps\_utility::delaythread(0.5,::maps\lab_vo::important_dialogue_queue,"lab_gdn_niceshot"); self.sniped = 1; } self kill(param_03,param_01); wait(0.05); if(isdefined(self)) { self notify("crash_done"); self notify("in_air_explosion"); return; } return; } if(param_01 == level.player && param_04 == "MOD_ENERGY") { self endon("death"); self endon("emp_death"); wait(0.5); if(isdefined(self.emp_crash) && self.emp_crash == 1) { return; } if(!isdefined(level.hovertank.empedwarbird)) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_fireagain"); level.hovertank.empedwarbird = 1; return; } if(randomfloat(1) < 0.5) { if(common_scripts\utility::cointoss()) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_hithimagain"); return; } level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_fireagain"); return; } return; } } //Function Number: 349 warbird_death_function() { level.hovertank endon("death"); self waittill("death"); if(isdefined(self) && isdefined(self.sniped)) { return; } wait(0.5); check_restricted_airspace_achievement(); if(!isdefined(level.hovertank.warbirdkilled)) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_warbirdsdown"); level.hovertank.warbirdkilled = 1; return; } if(randomfloat(1) < 0.25) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_warbirdsdown"); } } //Function Number: 350 check_restricted_airspace_achievement() { if(!isdefined(level.restricted_airspace)) { level.restricted_airspace = 0; } level.restricted_airspace++; if(level.restricted_airspace >= 10) { maps\_utility::giveachievement_wrapper("LEVEL_10A"); } } //Function Number: 351 tank_combat_littlebird_damage_function(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09) { if(param_01 == level.player && param_04 != "MOD_ENERGY" && param_00 > 499) { self kill(self.origin,param_01); wait(0.05); if(isdefined(self)) { self notify("crash_done"); self notify("in_air_explosion"); } } } //Function Number: 352 notify_warbird_when_killed(param_00) { param_00 endon("death"); self waittill("death"); param_00 notify("rpg_guy_killed"); } //Function Number: 353 tank_combat_warbird_kill_is_crew_killed(param_00) { self endon("death"); for(;;) { self waittill("rpg_guy_killed"); if(self.rpg_guys.size < 1) { self kill(); } } } //Function Number: 354 tank_combat_warbird_orient_to_open_fire() { level.hovertank endon("death"); if(!isdefined(self.lookatent)) { self.lookatent = spawn("script_origin",self.origin); thread common_scripts\utility::delete_on_death(self.lookatent); if(common_scripts\utility::cointoss()) { self.lookatent.origin = anglestoright(vectortoangles(self.origin - level.hovertank.origin)) * 1000 + self.origin; } else { self.lookatent.origin = anglestoright(vectortoangles(self.origin - level.hovertank.origin)) * -1000 + self.origin; } self setlookatent(self.lookatent); maps\_utility::ent_flag_waitopen("warbird_open_fire"); self.lookatent delete(); } } //Function Number: 355 tank_combat_warbird_liftoff_think() { self endon("death"); self vehicle_setspeed(15,60); maps\_utility::ent_flag_init("warbird_open_fire"); thread tank_combat_warbird_think(); maps\_utility::delaythread(3,::maps\_utility::ent_flag_set,"warbird_open_fire"); var_00 = common_scripts\utility::getstruct("warbird_liftoff_start_node","targetname"); self setlookatent(level.hovertank); maps\_utility::vehicle_liftoff(700); self clearlookatent(); thread maps\_vehicle::vehicle_paths(var_00); } //Function Number: 356 tank_combat_littlebird_think() { self endon("death"); thread maps\_shg_utility::make_emp_vulnerable(); thread maps\lab_utility::destroy_self_when_nuked(); thread maps\lab_utility::hovertank_enemy_outline(4); thread tank_combat_vehicle_damage_feedback(); thread maps\lab_utility::hovertank_aimed_enemy_vehicle_weapon_hint(2,"emp"); maps\_utility::add_damage_function(::tank_combat_littlebird_damage_function); self sethoverparams(360,50); if(!isdefined(self.ent_flag["littlebird_open_fire"])) { maps\_utility::ent_flag_init("littlebird_open_fire"); } maps\_utility::ent_flag_wait("littlebird_open_fire"); foreach(var_01 in self.riders) { if(isalive(var_01) && isdefined(var_01.script_startingposition) && var_01.script_startingposition > 1) { var_01 thread littlebird_rpg_rider_think("littlebird_open_fire"); } } } //Function Number: 357 littlebird_rpg_rider_think(param_00) { self endon("death"); self.ridingvehicle endon("emp_death"); if(isdefined(param_00)) { self.ridingvehicle endon(param_00); } if(isdefined(level.hovertank)) { level.hovertank endon("death"); self setentitytarget(level.hovertank.turret); } wait(randomfloatrange(1,5)); var_01 = 0.4; for(;;) { if(!isdefined(self.enemy) || !self.ridingvehicle maps\_utility::ent_flag("littlebird_open_fire")) { wait(0.5); continue; } if(!self canshoot(level.player.origin + (0,0,64))) { wait(0.5); continue; } var_02 = vectornormalize(self.enemy.origin - self.origin); var_03 = anglestoforward(self.angles); var_04 = vectordot(var_03,var_02); if(var_04 >= var_01) { playfxontag(common_scripts\utility::getfx("rpg_muzzle_flash"),self,"tag_flash"); magicbullet("rpg_straight",self gettagorigin("tag_flash") + anglestoforward(self gettagangles("tag_flash")) * 20,self.enemy.origin); wait(randomfloatrange(4,8)); continue; } wait(randomfloatrange(0.5,1.5)); } } //Function Number: 358 tank_battle_rpg_enemy_think() { level endon("hovertank_end"); self endon("death"); level.hovertank endon("death"); self.dropweapon = 0; self setentitytarget(level.hovertank); } //Function Number: 359 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: 360 btr_fire_at_target(param_00) { param_00 endon("death"); 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: 361 burst_fire_weapon() { for(var_00 = 0;var_00 < randomintrange(2,4);var_00++) { self fireweapon(); wait(0.2); } } //Function Number: 362 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: 363 enemy_tank_ai_think() { self endon("death"); level.hovertank endon("death"); thread maps\lab_utility::destroy_self_when_nuked(); thread maps\lab_utility::hovertank_enemy_outline(4); thread maps\lab_utility::hovertank_aimed_enemy_vehicle_weapon_hint(3,"cannon"); var_00 = 100; var_01 = 40; maps\_vehicle::vehicle_set_health(1000); maps\_utility::add_damage_function(::enemy_tank_damage_function); thread enemy_tank_death_function(); while(isdefined(self) && isalive(self)) { if(sighttracepassed(self.origin + (0,0,100),level.hovertank.origin + (0,0,var_00),0,self,level.hovertank)) { self.cur_tank_target = level.hovertank; enemy_tank_aim(var_00,1); if(isdefined(self.godmode) && self.godmode == 1) { maps\_vehicle::godoff(); } continue; } wait(0.1); } } //Function Number: 364 enemy_tank_damage_function(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09) { self endon("death"); level.hovertank endon("death"); if(param_01 == level.player && param_00 < 500) { self.health = self.currenthealth; if(param_00 < 50) { var_0A = 0; if(isdefined(level.emp_vulnerable_list)) { foreach(var_0C in level.emp_vulnerable_list) { if(distance(var_0C.origin,self.origin) < 1024) { var_0A = 1; } } } if(!var_0A) { if(!isdefined(level.hovertank.empedtank)) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_empsuselessagainstthosetanks"); level.hovertank.empedtank = 1; return; } return; } return; } return; } maps\_damagefeedback::damagefeedback_took_damage(param_01,param_02,param_03,param_04,param_05,param_06,param_07); wait(0.5); if(!isdefined(level.hovertank.hittankagain)) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_hithimagain"); level.hovertank.hittankagain = 1; return; } if(randomfloat(1) < 0.5) { if(common_scripts\utility::cointoss()) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_hithimagain"); return; } level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_fireagain"); return; } } //Function Number: 365 enemy_tank_aim(param_00,param_01) { self endon("death"); level endon("missionfailed"); var_02 = 100; var_03 = 100; var_04 = 100; self setturrettargetent(self.cur_tank_target,(randomintrange(-1 * var_02,var_02),randomintrange(-1 * var_03,var_03),randomintrange(-1 * var_04,var_04))); self waittill("turret_on_target"); wait(2); if(sighttracepassed(self.origin + (0,0,100),self.cur_tank_target.origin + (0,0,param_00),0,self,level.hovertank)) { if(param_01) { self fireweapon(); soundscripts\_audio::deprecated_aud_play_sound_at("ht_exfil_ft101_fire",self.origin); } wait(randomintrange(5,8)); return; } wait(1); } //Function Number: 366 enemy_tank_death_function() { level.hovertank endon("death"); self waittill("death"); wait(1); if(!isdefined(level.hovertank.tankkilled)) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_tanksdown"); level.hovertank.tankkilled = 1; return; } if(level.hovertank.tankkilled == 1) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_gothim"); } else if(level.hovertank.tankkilled == 2) { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_niceshot"); } else { level.burke maps\lab_vo::important_dialogue_queue("lab_gdn_tanksdown"); } level.hovertank.tankkilled++; if(level.hovertank.tankkilled > 3) { level.hovertank.tankkilled = 1; } } //Function Number: 367 enemy_vrap_damage_function(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09) { if(param_01 == level.player && param_00 >= 500) { self kill(); } } //Function Number: 368 tank_road_enemy_think() { self endon("death"); self.ignoreall = 1; self waittill("goal"); self.allowdeath = 1; maps\_anim::anim_generic_custom_animmode(self,"gravity","prone_dive"); thread maps\_anim::anim_generic_loop(self,"prone_idle","stop_loop"); self allowedstances("prone"); thread maps\_utility::ai_delete_when_out_of_sight([self],512); } //Function Number: 369 monitor_mobile_turret_health() { level.player endon("death"); var_00 = getent("trig_hover_tank_immobilize","targetname"); var_00 mobile_turret_health_think(self,::se_hovertank_exit); } //Function Number: 370 hover_tank_immobilize() { var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_immobilize_littlebird"); var_00 maps\_vehicle::godon(); var_00 hover_tank_immobilize_rockets(); var_00 maps\_vehicle::godoff(); playfxontag(common_scripts\utility::getfx("tank_immobilized"),level.hovertank.turret,"tag_light_main"); level.hovertank_turret notify("large_hit_react"); var_01 = 1; var_02 = common_scripts\utility::getstruct("hovertank_defend_loc","targetname"); level.hovertank vehicle_hovertanksethoverforcescale(0,0); var_03 = 0.5; maps\_utility::delaythread(var_03,::hovertank_defend_setup); thread vehicle_scripts\_hovertank::hoverscreen_turnoff(var_03); var_04 = maps\_utility::spawn_anim_model("hovertank_interior",level.hovertank.origin); var_04.angles = level.hovertank.turret.angles; var_04 linkto(level.hovertank); var_05 = [level.burke,level.knox,level.cormack,var_04]; level.hovertank common_scripts\utility::delaycall(var_03,::vehicle_teleport,var_02.origin,var_02.angles); wait(var_01); stopfxontag(common_scripts\utility::getfx("tank_immobilized"),level.hovertank.turret,"tag_light_main"); var_04 delete(); thread hoverscreen_restore(0.5); iprintln("defend starts"); thread hovertank_defend_combat(); level.hovertank.turret setbottomarc(25); common_scripts\utility::flag_wait("hovertank_defend_complete"); wait(5); se_hovertank_exit(); } //Function Number: 371 hover_tank_immobilize_rockets() { level.hovertank endon("damage"); level.hovertank endon("trophy_deployed"); var_00 = common_scripts\utility::getstruct("hovertank_immobilize_rocket_1","targetname"); var_01 = common_scripts\utility::getstruct("hovertank_immobilize_rocket_2","targetname"); var_02 = magicbullet("rpg_straight",var_00.origin,level.hovertank.origin + (0,0,64)); wait(0.5); var_03 = magicbullet("rpg_straight",var_01.origin,level.hovertank.origin + (0,0,64)); var_04 = 0; var_05 = "tag_guy1"; for(;;) { if(var_04) { var_05 = "tag_guy1"; } else { var_05 = "tag_guy3"; } var_04 = !var_04; var_06 = self gettagorigin(var_05) + anglestoup(self.angles) * 30 + anglestoforward(self.angles) * 30; magicbullet("rpg_straight",var_06,level.hovertank.origin + (0,0,64)); wait(randomfloatrange(0.25,0.75)); } } //Function Number: 372 hovertank_defend_setup() { foreach(var_01 in getentarray("script_vehicle","code_classname")) { if(var_01.health < 0) { var_01 delete(); } } var_03 = [getvehiclenode("ascent_tank_1_end_point","targetname"),getvehiclenode("ascent_tank_2_end_point","targetname")]; foreach(var_05 in var_03) { var_06 = spawn("script_model",var_05.origin); if(isdefined(var_05.angles)) { var_06.angles = var_05.angles; } var_06 setmodel("vehicle_ft101_tank_destroy"); } } //Function Number: 373 hovertank_defend_combat() { maps\_utility::array_spawn_targetname("tank_defend_wave_1"); maps\_utility::delaythread(30,::maps\_utility::array_spawn_targetname,"tank_defend_wave_2"); wait(60); common_scripts\utility::flag_set("hovertank_defend_complete"); } //Function Number: 374 se_hovertank_exit() { soundscripts\_snd::snd_message("tank_disabled"); level.hovertank vehicle_hovertanksethoverforcescale(0,0); common_scripts\utility::flag_set("flag_obj_hide_marker_during_tank_exit"); level.hovertank.godmode = 1; var_00 = 1.5; thread vehicle_scripts\_hovertank::hoverscreen_turnoff(var_00,1); wait(1); var_01 = getentarray("script_vehicle_vrap_physics","classname"); var_02 = getentarray("script_vehicle_littlebird_atlas_bench","classname"); var_03 = getentarray("script_vehicle_xh9_warbird_low_heavy_turret","classname"); var_04 = getentarray("script_vehicle_ft101_tank_physics","classname"); var_05 = getent("vol_exfil_cleanup_check","targetname"); var_06 = common_scripts\utility::getstruct("org_se_exfil","targetname"); var_07 = common_scripts\utility::array_combine(var_01,var_02); var_07 = common_scripts\utility::array_combine(var_07,var_03); var_07 = common_scripts\utility::array_combine(var_07,var_04); foreach(var_09 in var_07) { if(distancesquared(var_09.origin,level.player.origin) < 250000 || distancesquared(var_09.origin,var_06.origin) < 250000) { var_09 delete(); continue; } if(var_09.health > 0) { var_09 kill(); } } foreach(var_0C in getaiarray("axis")) { var_0C kill(); } level.player painvisionoff(); level.player maps\_utility::ent_flag_clear("player_has_red_flashing_overlay"); level.player.health = level.player.maxhealth; level.player maps\_utility::lerpfov_saved(65,0.1); thread maps\lab_lighting::tank_exit_dof_reset(); var_0E = common_scripts\utility::getstruct("hovertank_exit_org","targetname"); var_0F = spawnstruct(); var_0F.origin = var_0E.origin; if(isdefined(var_0E.angles)) { var_0F.angles = var_0E.angles; } level.player_rig = maps\lab_utility::spawn_player_rig(undefined,var_0E.origin); level.hovertank_exterior_model = maps\_utility::spawn_anim_model("hovertank",var_0E.origin); var_10 = maps\_utility::spawn_anim_model("hovertank_interior",var_0E.origin); var_10 hidepart("TAG_AIM_UNHIDE"); var_11 = "hovertank_exit"; var_0F maps\_anim::anim_first_frame_solo(level.player_rig,var_11); var_12 = level.player_rig gettagorigin("tag_player"); var_13 = level.player_rig gettagangles("tag_player"); level.hovertank_turret setturretdismountorg(var_12); var_14 = getent("tank_exit_viewmodel_origin","targetname"); var_15 = var_14 getorigin(); level.player_rig overridelightingorigin(var_15); if(level.nextgen) { setsaveddvar("r_subdiv","1"); } level.cormack dontcastshadows(); level.cormack thread se_hovertank_exit_cormack_shadow(); level.hovertank notify("hovertank_done"); common_scripts\utility::flag_set("flag_se_hovertank_exit"); common_scripts\utility::flag_set("flag_tank_exit_dialogue"); level maps\_utility::delaythread(9.25,::common_scripts\utility::flag_set,"flag_exfil_start_dialogue"); soundscripts\_snd::snd_message("tank_exit"); level.player_rig dontcastshadows(); level.player_rig defaultlightingorigin(); level.hovertank_exterior_model hide(); level.hovertank_turret hide(); level.player maps\_shg_utility::setup_player_for_scene(0); maps\_player_exo::player_exo_deactivate(); level.player setorigin(var_12); level.player setplayerangles(var_13); level.player playerlinktoabsolute(level.player_rig,"tag_player"); var_16 = [level.hovertank_exterior_model,var_10,level.burke,level.cormack,level.knox]; var_0E thread maps\_anim::anim_single_run(var_16,var_11); var_0F thread maps\_anim::anim_single_solo(level.player_rig,var_11); thread exit_hovertank_rumbles(); thread se_hovertank_exit_cover_fire(); level waittill("hovertank_show_exterior"); foreach(var_09 in var_07) { if(!isdefined(var_09)) { continue; } if(distancesquared(var_09.origin,level.player.origin) < 250000) { var_09 delete(); continue; } } level.hovertank_exterior_model show(); level waittill("hovertank_hide_interior"); var_10 hide(); level.player_rig waittillmatch("end","single anim"); thread se_hovertank_exit_cover_fire_cleanup(); level.player unlink(); maps\_player_exo::player_exo_activate(); level.player maps\_shg_utility::setup_player_for_gameplay(); common_scripts\utility::flag_set("flag_exfil_start"); level.hovertank delete(); level.player_rig delete(); var_10 delete(); maps\_utility::deletestruct_ref(var_0F); maps\_utility::autosave_by_name(); } //Function Number: 375 exit_hovertank_rumbles() { maps\lab_utility::setup_level_rumble_ent(); wait(7.25); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.9,0.2); wait(0.3); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.7,0.2); wait(0.4); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.9,0.1); wait(0.2); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.8,0.1); wait(0.2); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.6,0.1); wait(0.8); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.4,0.1); wait(0.2); thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.3,0.3); wait(2); maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.7,1); level notify("exfil_helo_overhead_rumble_complete"); } //Function Number: 376 handle_player_close_to_aircraft_rumbles() { level waittill("exfil_helo_overhead_rumble_complete"); maps\lab_utility::setup_level_rumble_ent(); for(;;) { var_00 = distance(level.player.origin,level.razorback.origin); var_01 = 1000 - var_00 / 4000; thread maps\lab_utility::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,var_01,0.2); wait(0.25); } } //Function Number: 377 se_hovertank_exit_cormack_shadow() { self waittillmatch("start_shadow","single anim"); self castshadows(); } //Function Number: 378 mobile_turret_health_think(param_00,param_01) { level.player endon("death"); param_00 endon("death"); for(;;) { self waittill("trigger",var_02); if(var_02 == level.player) { param_00 thread [[ param_01 ]](); break; } } } //Function Number: 379 mobile_turret_burning() { thread destroy_turret_when_player_leaves(); level.player endon("death"); self endon("dismount_vehicle_and_turret"); self notify("play_damage_warning"); } //Function Number: 380 destroy_turret_when_player_leaves() { level.player endon("death"); self waittill("player_exited_mobile_turret"); destroy_mobile_turret(); } //Function Number: 381 destroy_mobile_turret() { level.player endon("death"); common_scripts\utility::flag_wait("flag_burke_destroy_tank"); 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: 382 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: 383 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.pacifist = 1; self.pdrone.ignoreme = 1; } } } //Function Number: 384 cleanup_squad_drone() { if(level.nextgen) { level waittill("street_cleanup"); } else { level waittill("tff_transition_intro_to_middle"); } self delete(); } //Function Number: 385 se_hovertank_exit_cover_fire() { var_00 = 0; if(!var_00) { level.player common_scripts\utility::delaycall(1,::enableinvulnerability); } var_01 = maps\_utility::getent_or_struct("checkpoint_exfil_start","script_noteworthy"); level.cover_fire_missile_repulsor = missile_createrepulsororigin(var_01.origin,10000,300); thread spawn_exfil_enemies(); if(!var_00) { wait(6.5); } else { wait(0.1); } thread maps\lab_utility::named_magic_bullet_strafe("exfil_cover_fire_0",5,2,60,0.35,"rpg"); thread maps\lab_utility::named_magic_bullet_strafe("exfil_cover_fire_1",7,2,240,0.35,"rpg"); } //Function Number: 386 se_hovertank_exit_cover_fire_cleanup() { level.player disableinvulnerability(); missile_deleteattractor(level.cover_fire_missile_repulsor); } //Function Number: 387 spawn_exfil_enemies() { var_00 = 0; if(!var_00) { wait(6.4); } var_01 = []; var_02 = 2; var_03 = maps\_utility::getent_or_struct("exfil_cover_fire_0_source_start","targetname"); for(var_04 = 0;var_04 < var_02;var_04++) { var_01[var_04] = []; var_05 = getentarray("tank_exfil_enemy_" + var_04,"targetname"); foreach(var_07 in var_05) { var_01[var_04][var_01[var_04].size] = var_07 maps\_utility::spawn_ai(1,0); } var_09 = maps\_utility::getent_or_struct("tank_exfil_target_" + var_04,"targetname"); var_0A = var_09.origin; var_0A = (var_0A[0],var_0A[1],var_0A[2] + 240); var_0B = 0.1 + var_04 * 0.25; common_scripts\utility::delay_script_call(var_0B,::exfil_enemy_missile,var_03,var_09.origin,var_01[var_04]); } } //Function Number: 388 exfil_enemy_missile(param_00,param_01,param_02) { foreach(var_04 in param_02) { var_04.health = 1; } var_06 = magicbullet("rpg",param_00.origin,param_01); var_07 = missile_createattractororigin(param_01,50000,900,var_06,1); var_06 waittill("death"); wait 0.05; foreach(var_04 in param_02) { if(isdefined(var_04) && isai(var_04) && isalive(var_04)) { var_04 dodamage(var_04.health,param_01); } } missile_deleteattractor(var_07); }