IL-GSC/AW/PC/maps/lab_code.gsc
InfinityLoader b2389dbcb9 Full AW Dump
2024-04-22 02:38:24 -04:00

8990 lines
285 KiB
Plaintext

/*******************************************************************
* 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);
}