/******************************************************************* * Decompiled By: Bog * Decompiled File: crash_utility.gsc * Game: Call of Duty: Advanced Warfare * Platform: PC * Function Count: 65 * Decompile Time: 978 ms * Timestamp: 4/22/2024 2:27:23 AM *******************************************************************/ //Function Number: 1 setup_player() { var_00 = level.start_point + "_player_start"; var_01 = common_scripts\utility::getstruct(var_00,"targetname"); if(isdefined(var_01)) { level.player setorigin(var_01.origin); if(isdefined(var_01.angles)) { level.player setplayerangles(var_01.angles); return; } iprintlnbold("Your script_struct " + level.start_point + "_start has no angles! Set some."); return; } } //Function Number: 2 setup_allies() { level.cormack = spawn_ally("cormack"); level.cormack.canjumppath = 1; if(level.start_point == "skyjack" || level.start_point == "crash_site") { level.cormack setmodel("body_hero_cormack_sentinel_halo_jetpack"); } if(level.start_point != "skyjack" && level.start_point != "crash_site") { level.ilana = spawn_ally("ilana"); level.ilana.canjumppath = 1; level.ilana.animname = "ilana"; } if(level.start_point == "vtol_takedown" || level.start_point == "avalanche") { level.gideon = spawn_ally("gideon"); level.gideon.canjumppath = 1; level.gideon.animname = "gideon"; } } //Function Number: 3 spawn_ally(param_00,param_01) { if(isdefined(param_01)) { var_02 = param_01; } else { var_02 = level.start_point + "_" + param_01; } var_03 = spawn_ally_at_struct(param_00,var_02); if(!isdefined(var_03)) { return undefined; } var_03 maps\_utility::make_hero(); if(!isdefined(var_03.magic_bullet_shield)) { var_03 thread maps\_utility::magic_bullet_shield(); } var_03.animname = param_00; if(param_00 != "cormack") { var_03 thread maps\crash_fx::cold_breath(); } return var_03; } //Function Number: 4 spawn_ally_at_struct(param_00,param_01) { var_02 = getent(param_00,"targetname"); var_03 = common_scripts\utility::getstruct(param_01,"targetname"); if(isdefined(var_02) && isdefined(var_03)) { var_02.origin = var_03.origin; if(isdefined(var_03.angles)) { var_02.angles = var_03.angles; } var_04 = var_02 maps\_utility::spawn_ai(1); return var_04; } if(isdefined(var_03)) { var_04 = var_03 maps\_utility::spawn_ai(1); iprintlnbold("Add a script struct called: " + param_01 + " to spawn ally in the correct location."); var_04 teleport(level.player.origin,level.player.angles); return var_04; } iprintlnbold("Failed to spawn " + param_01 + ". No spawner exists."); return undefined; } //Function Number: 5 spawn_enemy_array_at_structs(param_00,param_01) { var_02 = getentarray(param_00,"targetname"); var_03 = common_scripts\utility::getstructarray(param_01,"targetname"); var_04 = []; if(isdefined(var_02[0]) && isdefined(var_03[0])) { for(var_05 = 0;var_05 < var_02.size;var_05++) { var_02[var_05].origin = var_03[var_05].origin; if(isdefined(var_03[var_05].angles)) { var_02[var_05].angles = var_03[var_05].angles; } var_04[var_05] = var_02[var_05] maps\_utility::spawn_ai(1); common_scripts\utility::add_to_array(var_04,var_04[var_05]); } return var_04; } if(isdefined(var_03[0])) { iprintlnbold("Failed to spawn " + param_01 + ". A spawner exists but there is no struct."); return undefined; } iprintlnbold("Failed to spawn " + param_01 + ". No spawners or structs exists."); return undefined; } //Function Number: 6 _hint_stick_update_string(param_00,param_01) { var_02 = param_01 + param_00; var_03 = level.trigger_hint_func[var_02]; level.hint_breakfunc = var_03; } //Function Number: 7 _hint_stick_update_breakfunc(param_00,param_01) { var_02 = param_01 + param_00; var_03 = level.trigger_hint_string[var_02]; level.current_hint settext(var_03); } //Function Number: 8 hint_update_config_change(param_00) { level notify("hint_change_config"); level endon("hint_change_config"); var_01 = undefined; if(level.player common_scripts\utility::is_player_gamepad_enabled()) { var_01 = "_gamepad"; } else { var_01 = "_keyboard"; } while(isdefined(level.current_hint)) { if(level.player common_scripts\utility::is_player_gamepad_enabled()) { var_02 = "_gamepad"; } else { var_02 = "_keyboard"; } if(var_02 != var_01) { var_01 = var_02; _hint_stick_update_string(var_01,param_00); _hint_stick_update_breakfunc(var_01,param_00); } wait 0.05; } } //Function Number: 9 ai_array_killcount_flag_set(param_00,param_01,param_02,param_03) { maps\_utility::waittill_dead_or_dying(param_00,param_01,param_03); common_scripts\utility::flag_set(param_02); } //Function Number: 10 temp_dialogue(param_00,param_01,param_02) { level notify("temp_dialogue",param_00,param_01,param_02); level endon("temp_dialogue"); if(!isdefined(param_02)) { param_02 = 4; } if(isdefined(level.tmp_subtitle)) { level.tmp_subtitle destroy(); level.tmp_subtitle = undefined; } level.tmp_subtitle = newhudelem(); level.tmp_subtitle.x = 0; level.tmp_subtitle.y = -64; level.tmp_subtitle settext("^2" + param_00 + ": ^7" + param_01); level.tmp_subtitle.fontscale = 1.46; level.tmp_subtitle.alignx = "center"; level.tmp_subtitle.aligny = "middle"; level.tmp_subtitle.horzalign = "center"; level.tmp_subtitle.vertalign = "bottom"; level.tmp_subtitle.sort = 1; wait(param_02); thread temp_dialogue_fade(); } //Function Number: 11 temp_dialogue_fade() { level endon("temp_dialogue"); var_00 = 1; while(var_00 > 0) { level.tmp_subtitle.alpha = var_00; wait(0.05); var_00 = var_00 - 0.1; } level.tmp_subtitle destroy(); } //Function Number: 12 disable_awareness() { self.ignoreall = 1; self.dontmelee = 1; self.ignoresuppression = 1; self.suppressionwait_old = self.suppressionwait; self.suppressionwait = 0; maps\_utility::disable_surprise(); self.ignorerandombulletdamage = 1; maps\_utility::disable_bulletwhizbyreaction(); maps\_utility::disable_pain(); self.grenadeawareness = 0; self.ignoreme = 1; maps\_utility::enable_dontevershoot(); self.disablefriendlyfirereaction = 1; self.dodangerreact = 0; } //Function Number: 13 enable_awareness() { self.ignoreall = 0; self.dontmelee = undefined; self.ignoresuppression = 0; self.suppressionwait = self.suppressionwait_old; self.suppressionwait_old = undefined; maps\_utility::enable_surprise(); self.ignorerandombulletdamage = 0; maps\_utility::enable_bulletwhizbyreaction(); maps\_utility::enable_pain(); self.grenadeawareness = 1; self.ignoreme = 0; maps\_utility::disable_dontevershoot(); self.disablefriendlyfirereaction = undefined; self.dodangerreact = 1; } //Function Number: 14 equip_microwave_grenade() { self.grenadeweapon = "microwave_grenade"; self.grenadeammo = 2; } //Function Number: 15 cormack_helmet_open(param_00) { param_00 thread set_helmet_open(); param_00 notify("stop personal effect"); param_00 thread maps\crash_fx::cold_breath(); } //Function Number: 16 cormack_helmet_close(param_00) { param_00 thread set_helmet_closed(); param_00 notify("stop personal effect"); } //Function Number: 17 set_helmet_open(param_00) { if(!isdefined(param_00)) { param_00 = 0.2; } self setanimknobrestart(%sentinel_halo_helmet_open,1,param_00); self.helmet_open = 1; wait(0.25); } //Function Number: 18 set_helmet_closed(param_00) { if(!isdefined(param_00)) { param_00 = 0.2; } self setanimrestart(%sentinel_halo_helmet_close,1,param_00); self.helmet_open = 0; wait(0.75); } //Function Number: 19 clear_additive_helmet_anim(param_00) { if(!isdefined(param_00)) { param_00 = 0.5; } self clearanim(%s1_halo_helmet,0); } //Function Number: 20 player_exo_enable() { level.player thread maps\_player_exo::player_exo_activate(); } //Function Number: 21 player_exo_disable() { level.player thread maps\_player_exo::player_exo_deactivate(); } //Function Number: 22 exo_temp_high_altitude() { level endon("skyjack_done"); wait(1); var_00 = 19.5; var_01 = 10; for(;;) { var_02 = 0; level.player thread maps\crash_exo_temperature::set_exo_temperature_over_time(level.exo_reheat,var_00); while(var_02 <= var_00) { wait(0.05); var_02 = var_02 + 0.05; } level.player thread maps\crash_exo_temperature::set_exo_temperature_over_time(level.exo_max,var_01); level.player thread maps\crash_exo_temperature::activate_heater(); var_02 = 0; while(var_02 <= var_01) { wait(0.05); var_02 = var_02 + 0.05; } level.player thread maps\crash_exo_temperature::deactivate_heater(); } } //Function Number: 23 exo_temp_outdoor() { level endon("moved_indoors"); var_00 = 39; var_01 = 10; for(;;) { var_02 = 0; level.player thread maps\crash_exo_temperature::set_exo_temperature_over_time(level.exo_reheat,var_00); while(var_02 <= var_00) { wait(0.05); var_02 = var_02 + 0.05; } level.player thread maps\crash_exo_temperature::set_exo_temperature_over_time(level.exo_max,var_01); level.player thread maps\crash_exo_temperature::activate_heater(); var_02 = 0; while(var_02 <= var_01) { wait(0.05); var_02 = var_02 + 0.05; } level.player thread maps\crash_exo_temperature::deactivate_heater(); } } //Function Number: 24 exo_temp_narrow_cave() { level endon("player_starting_uw_breach"); level endon("combat_cave_done"); level.player thread maps\crash_exo_temperature::set_external_temperature_over_time(-3.2,90); for(;;) { while(!isdefined(level.player.swimming)) { if(common_scripts\utility::flag("narrow_cave_underwater")) { level.player thread maps\crash_exo_temperature::set_exo_temperature_over_time(85,2); level.player thread maps\crash_exo_temperature::set_operator_temperature_over_time(98.6,2); common_scripts\utility::flag_clear("narrow_cave_underwater"); } wait(0.05); } while(isdefined(level.player.swimming)) { if(level.player.swimming == "underwater") { if(!common_scripts\utility::flag("narrow_cave_underwater")) { level.player thread maps\crash_exo_temperature::set_exo_temperature_over_time(65,8); level.player thread maps\crash_exo_temperature::set_operator_temperature_over_time(92.5,8); common_scripts\utility::flag_set("narrow_cave_underwater"); } } wait(0.05); } } } //Function Number: 25 handle_objective_marker_skyjack(param_00,param_01,param_02) { var_03 = 1; if(!isdefined(param_02)) { param_02 = 200; } var_04 = getent("skyjack_charge_trigger","targetname"); var_05 = param_00 maps\_shg_utility::hint_button_position("x",param_00.origin,undefined,param_02,undefined,var_04); common_scripts\utility::flag_wait(param_01); var_05 maps\_shg_utility::hint_button_clear(); } //Function Number: 26 handle_objective_marker(param_00,param_01,param_02,param_03) { var_04 = 1; if(!isdefined(param_02)) { param_02 = 200; } if(isdefined(param_03)) { var_05 = getent(param_03,"targetname"); var_06 = param_00 maps\_shg_utility::hint_button_position("x",param_00.origin,undefined,param_02,undefined,var_05); } else { var_06 = param_01 maps\_shg_utility::hint_button_trigger("x",param_03); } common_scripts\utility::flag_wait(param_01); var_06 maps\_shg_utility::hint_button_clear(); } //Function Number: 27 handle_objective_marker_movable(param_00,param_01,param_02) { var_03 = 1; if(!isdefined(param_02)) { param_02 = 200; } var_04 = getent("end_cargo_trigger","targetname"); var_05 = param_00 maps\_shg_utility::hint_button_tag("x","tag_origin",undefined,param_02,undefined,var_04); common_scripts\utility::flag_wait(param_01); if(isdefined(var_05)) { var_05 maps\_shg_utility::hint_button_clear(); } } //Function Number: 28 nag_until_flag(param_00,param_01,param_02,param_03,param_04) { if(common_scripts\utility::flag(param_01)) { return; } var_05 = -1; var_06 = param_02; var_07 = param_03; while(!common_scripts\utility::flag(param_01)) { var_08 = randomfloatrange(param_02,param_03); wait(var_08); var_09 = randomint(param_00.size); if(var_09 == var_05) { var_09++; if(var_09 >= param_00.size) { var_09 = 0; } } var_0A = param_00[var_09]; if(common_scripts\utility::flag(param_01)) { break; } thread maps\_utility::smart_radio_dialogue(var_0A); var_05 = var_09; param_02 = param_02 + param_04; param_02 = clamp(param_02,var_06,var_06 + param_04 * 3); param_03 = param_03 + param_04; param_03 = clamp(param_03,var_07,var_07 + param_04 * 3); } } //Function Number: 29 stop_walk_and_clear_dialogue() { level.cormack maps\_utility::clear_run_anim(); level.ilana maps\_utility::clear_run_anim(); level notify("temp_dialogue"); if(isdefined(level.tmp_subtitle)) { temp_dialogue_fade(); } } //Function Number: 30 temp_friendly_squad_casual_walk() { iprintln("casual walk on"); level.cormack.animname = "cormack"; level.ilana.animname = "ilana"; level.cormack maps\_utility::set_run_anim("casual_walk"); level.cormack maps\_utility::disable_arrivals(); level.cormack maps\_utility::disable_exits(); level.ilana maps\_utility::set_run_anim("casual_walk"); level.ilana maps\_utility::disable_arrivals(); level.ilana maps\_utility::disable_exits(); } //Function Number: 31 set_main_vol_and_retreat_vol(param_00,param_01,param_02,param_03) { move_wave(param_00,param_01); thread retreat_volume(param_00,param_02,param_03); } //Function Number: 32 retreat_volume(param_00,param_01,param_02) { var_03 = maps\_utility::get_living_ai_array(param_00,"script_noteworthy"); maps\_utility::waittill_dead_or_dying(var_03,param_02); var_03 = maps\_utility::get_living_ai_array(param_00,"script_noteworthy"); if(isstring(param_01)) { param_01 = getent(param_01,"targetname"); } for(var_04 = 0;var_04 < var_03.size;var_04++) { var_03[var_04] setgoalvolumeauto(param_01); } } //Function Number: 33 retreat_volume_and_set_flag(param_00,param_01,param_02,param_03) { retreat_volume(param_00,param_01,param_02); if(!isdefined(param_03)) { return; } if(common_scripts\utility::flag_exist(param_03)) { common_scripts\utility::flag_set(param_03); } } //Function Number: 34 move_wave(param_00,param_01) { var_02 = maps\_utility::get_living_ai_array(param_00,"script_noteworthy"); var_03 = getent(param_01,"targetname"); for(var_04 = 0;var_04 < var_02.size;var_04++) { var_02[var_04] setgoalvolumeauto(var_03); } } //Function Number: 35 move_wave_random(param_00,param_01) { var_02 = maps\_utility::get_living_ai_array(param_00,"script_noteworthy"); var_03 = getent(param_01,"targetname"); for(var_04 = 0;var_04 < var_02.size;var_04++) { var_02[var_04] setgoalvolumeauto(var_03); var_02[var_04].pathrandompercent = 100; } } //Function Number: 36 enemy_drop_traversal(param_00,param_01) { var_02 = getent(param_00,"targetname"); var_03 = var_02 maps\_utility::spawn_ai(1); var_04 = common_scripts\utility::getstruct(param_01,"targetname"); var_03.animname = "enemy_drop"; var_03.canjumppath = 1; var_03.ignoresuppression = 1; var_03 maps\_utility::set_allowdeath(1); var_04 thread maps\_anim::anim_single_solo(var_03,"drop_512"); var_03 thread enemy_drop_fx(); return var_03; } //Function Number: 37 enemy_drop_fx() { self endon("death"); wait(1.16); playfxontag(level._effect["crash_goliath_foot"],self,"tag_origin"); } //Function Number: 38 cleanup_enemies(param_00,param_01) { var_02 = maps\_utility::get_living_ai_array(param_00,"script_noteworthy"); if(!isdefined(param_01)) { param_01 = 0; } foreach(var_04 in var_02) { if(maps\_utility::player_can_see_ai(var_04)) { if(param_01) { var_04 delete(); } continue; } var_04 delete(); } } //Function Number: 39 cleanupweaponsonground() { var_00 = getentarray(); foreach(var_02 in var_00) { if(isdefined(var_02.classname) && issubstr(var_02.classname,"weapon_")) { var_02 delete(); } } } //Function Number: 40 ally_advance_ahead_upon_killing_group(param_00,param_01,param_02,param_03,param_04) { maps\_utility::waittill_dead(param_00,param_01); iprintln("dead moving up"); var_05 = undefined; if(isdefined(param_02)) { var_05 = getent(param_02,"targetname"); if(isdefined(var_05)) { maps\_utility::activate_trigger_with_targetname(param_02); return; } else { iprintln("trig not available"); } } if(isdefined(param_03)) { var_05 = getent(param_02,"targetname"); if(isdefined(var_05)) { maps\_utility::activate_trigger_with_targetname(param_02); return; } } if(isdefined(param_04)) { var_05 = getent(param_02,"targetname"); if(isdefined(var_05)) { maps\_utility::activate_trigger_with_targetname(param_02); return; } } } //Function Number: 41 kill_enemies(param_00) { var_01 = maps\_utility::get_living_ai_array(param_00,"script_noteworthy"); foreach(var_03 in var_01) { var_03 kill(); } } //Function Number: 42 spawn_wave_stagger(param_00,param_01,param_02) { if(!isdefined(param_01)) { param_01 = 1; } var_03 = []; var_04 = getentarray(param_00,"targetname"); for(var_05 = 0;var_05 < var_04.size;var_05++) { var_03[var_05] = var_04[var_05] maps\_utility::spawn_ai(1); wait(param_01); } return var_03; } //Function Number: 43 warbird_shooting_think(param_00,param_01,param_02,param_03,param_04,param_05) { level.player endon("death"); self endon("death"); self.mgturret[0] setmode("manual"); self.mgturret[1] setmode("manual"); if(!maps\_utility::ent_flag_exist("fire_turrets")) { maps\_utility::ent_flag_init("fire_turrets"); } maps\_utility::ent_flag_set("fire_turrets"); thread warbird_fire_init_monitor(); for(;;) { self waittill("warbird_fire"); if(!isdefined(param_03)) { thread warbird_fire_init(param_00,param_01,param_02); continue; } if(!isdefined(param_04)) { thread warbird_ground_fire_init(param_00,param_01,param_02); continue; } thread warbird_ground_fire_no_enemy_init(param_00,param_01,param_02,param_05); } } //Function Number: 44 warbird_fire_init(param_00,param_01,param_02) { self endon("death"); var_03 = self.mgturret[0]; var_04 = self.mgturret[1]; if(!isdefined(param_02)) { param_02 = 1.25; } while(maps\_utility::ent_flag("fire_turrets")) { var_05 = getaiarray("allies"); if(!maps\_utility::ent_flag_exist("dont_shoot_player") || !maps\_utility::ent_flag("dont_shoot_player")) { var_06 = 90; if(randomint(100) <= var_06) { var_05 = common_scripts\utility::array_add(var_05,level.player); } } var_07 = []; foreach(var_09 in var_05) { if(isdefined(var_09.ignoreme) && var_09.ignoreme) { continue; } else { var_07[var_07.size] = var_09; } } var_07 = sortbydistance(var_07,self.origin); var_0B = undefined; foreach(var_09 in var_07) { if(!isdefined(var_09)) { continue; } if(!isalive(var_09)) { continue; } if(isdefined(param_00) && param_00) { var_0D = self.mgturret[0] gettagorigin("tag_flash"); var_0E = var_09 geteye(); var_0F = vectornormalize(var_0E - var_0D); var_10 = var_0E + var_0F * 20; if(!sighttracepassed(var_10,var_0E,0,var_09,self.mgturret[0])) { continue; } } var_0B = var_09; break; } if(isdefined(var_0B)) { var_03 settargetentity(var_0B); var_04 settargetentity(var_0B); var_03 turretfireenable(); var_04 turretfireenable(); var_03 startfiring(); var_04 startfiring(); warbird_wait_for_fire_target_done(var_0B,param_00,param_01); var_03 cleartargetentity(); var_04 cleartargetentity(); var_03 turretfiredisable(); var_04 turretfiredisable(); } wait(param_02); } var_03 turretfiredisable(); var_04 turretfiredisable(); } //Function Number: 45 warbird_ground_fire_init(param_00,param_01,param_02) { self endon("death"); var_03 = self.mgturret[0]; var_04 = self.mgturret[1]; if(!isdefined(param_02)) { param_02 = 1.25; } while(maps\_utility::ent_flag("fire_turrets")) { var_05 = common_scripts\utility::getstructarray("warbird_fire_targets","targetname"); var_05 = sortbydistance(var_05,self.origin); var_06 = getaiarray("allies"); if(!maps\_utility::ent_flag_exist("dont_shoot_player") || !maps\_utility::ent_flag("dont_shoot_player")) { var_07 = 90; if(randomint(100) <= var_07) { var_06 = common_scripts\utility::array_add(var_06,level.player); } } var_08 = []; foreach(var_0A in var_06) { if(isdefined(var_0A.ignoreme) && var_0A.ignoreme) { continue; } else { var_08[var_08.size] = var_0A; } } var_08 = sortbydistance(var_08,self.origin); var_0C = undefined; foreach(var_0A in var_08) { if(!isdefined(var_0A)) { continue; } if(!isalive(var_0A)) { continue; } if(isdefined(param_00) && param_00) { var_0E = self.mgturret[0] gettagorigin("tag_flash"); var_0F = var_0A geteye(); var_10 = vectornormalize(var_0F - var_0E); var_11 = var_0F + var_10 * 20; if(!sighttracepassed(var_11,var_0F,0,var_0A,self.mgturret[0])) { continue; } } var_0C = var_0A; break; } if(isdefined(var_0C)) { var_13 = var_05[0] common_scripts\utility::spawn_tag_origin(); var_03 settargetentity(var_13); var_04 settargetentity(var_13); var_03 turretfireenable(); var_04 turretfireenable(); var_03 startfiring(); var_04 startfiring(); var_14 = distance2d(var_13.origin,var_0C.origin); var_15 = var_14 / 275; var_15 = maps\_utility::round_float(var_15,2); var_16 = 0; while(var_16 < var_15) { var_13 moveto(var_0C.origin + (0,0,16),var_15 - var_16); var_16 = var_16 + 0.05; wait(0.05); } var_03 settargetentity(var_0C); var_04 settargetentity(var_0C); warbird_wait_for_fire_target_done(var_0C,param_00,param_01); var_03 cleartargetentity(); var_04 cleartargetentity(); var_03 turretfiredisable(); var_04 turretfiredisable(); var_13 delete(); } wait(param_02); } var_03 turretfiredisable(); var_04 turretfiredisable(); } //Function Number: 46 warbird_ground_fire_no_enemy_init(param_00,param_01,param_02,param_03) { self endon("death"); var_04 = self.mgturret[0]; var_05 = self.mgturret[1]; if(!isdefined(param_02)) { param_02 = 1.25; } var_06 = common_scripts\utility::getstructarray("warbird_fire_targets","targetname"); var_06 = sortbydistance(var_06,self.origin); var_07 = var_06[0] common_scripts\utility::spawn_tag_origin(); if(isdefined(var_06[0].target)) { var_08 = common_scripts\utility::getstruct(var_06[0].target,"targetname"); } else { var_08 = var_07[0] common_scripts\utility::spawn_tag_origin(); var_09 = anglestoforward(self.angles); var_08.origin = var_08.origin + (var_09[0] * 500,var_09[1] * 500,0); } var_04 settargetentity(var_07); var_05 settargetentity(var_07); var_04 turretfireenable(); var_05 turretfireenable(); var_04 startfiring(); var_05 startfiring(); if(!isdefined(param_03)) { param_03 = 275; } var_0A = distance2d(var_07.origin,var_08.origin); var_0B = var_0A / param_03; var_0B = maps\_utility::round_float(var_0B,2); var_0C = 0; while(var_0C < var_0B) { var_07 moveto(var_08.origin,var_0B - var_0C); var_0C = var_0C + 0.05; wait(0.05); } if(!maps\_utility::ent_flag_exist("turret_hit_target")) { maps\_utility::ent_flag_init("turret_hit_target"); } maps\_utility::ent_flag_set("turret_hit_target"); var_04 cleartargetentity(); var_05 cleartargetentity(); var_04 turretfiredisable(); var_05 turretfiredisable(); var_07 delete(); } //Function Number: 47 warbird_fire_init_monitor() { self endon("death"); self waittill("warbird_stop_firing"); maps\_utility::ent_flag_clear("fire_turrets"); } //Function Number: 48 warbird_wait_for_fire_target_done(param_00,param_01,param_02) { param_00 endon("death"); if(!maps\_utility::ent_flag("fire_turrets")) { return; } self endon("fire_turrets"); if(!isdefined(param_02)) { if(param_00 == level.player) { param_02 = 0.6; } else { param_02 = 3; } } var_03 = 0; while(var_03 < param_02) { if(isdefined(param_01) && param_01) { var_04 = self.mgturret[0] gettagorigin("tag_flash"); var_05 = param_00 geteye(); var_06 = vectornormalize(var_05 - var_04); var_07 = var_04 + var_06 * 20; if(!sighttracepassed(var_07,var_05,0,param_00,self.mgturret[0])) { return; } } var_03 = var_03 + 0.3; wait(0.3); } } //Function Number: 49 disable_exo_melee() { maps\_player_exo::player_exo_remove_single("exo_melee"); } //Function Number: 50 enable_exo_melee() { maps\_player_exo::player_exo_add_single("exo_melee"); } //Function Number: 51 mech_fire_rockets_special(param_00) { self endon("death"); var_01 = 48; var_02 = 64; var_03 = 3; var_04 = 6; var_05 = 100; var_06 = 24; var_07 = 0.1; var_08 = 0.4; var_09 = 12; var_0A = "tag_rocket"; var_0B = 0.2; var_0C = randomintrange(var_03 + 1,var_04 + 1); var_0D = 20; var_0E = 20; var_0F = 16; for(var_10 = 1;var_10 < var_0C;var_10++) { var_11 = var_0A + var_10; var_12 = self gettagorigin(var_11); var_13 = self gettagangles(var_11); var_14 = anglestoforward(var_13); var_14 = vectornormalize(var_14); var_15 = randomintrange(-1 * var_0D,var_0D); var_16 = randomintrange(-1 * var_0E,var_0E); var_17 = randomintrange(-1 * var_0F,var_0F); var_18 = var_12 + var_14 * var_06; var_19 = var_12 + var_14 * var_05 + (var_15,var_16,var_17); var_1A = magicbullet("mech_rocket_deploy",var_18,var_19); playfx(level.mech_fx["rocket_muzzle_flash"],var_12,var_14,(0,0,1)); if(isdefined(var_1A)) { var_1B = randomfloatrange(var_07,var_08); var_1A thread maps\_mech::mech_rocket_deploy_projectile_think(self,param_00,var_1B); } wait(0.05); } wait(0.25); } //Function Number: 52 fly_in_hud() { setsaveddvar("cg_cinematicfullscreen","1"); setsaveddvar("cg_cinematicCanPause","1"); level.player thread fly_in_hud_overlay(undefined,undefined,undefined,1,0,0); cinematicingameloopresident("crash_jumpHUD_loop"); common_scripts\utility::flag_wait("start_hud"); cinematicingame("crash_jumpHUD",0,1,1); wait(1); level.player thread thermal_with_nvg(); level.player setclutforplayer("clut_crash_hud",0); level.player lightsetforplayer("crash_skyjack"); maps\_utility::vision_set_fog_changes("crash_skyjack",0); wait 0.05; if(level.nextgen) { level.player notify("sonar_vision"); } wait(29.5); level.player notify("sonar_vision"); killfxontag(level._effect["fx_crash_hud_flare"],level.crashing_plane,"body_animate_jnt"); level.crashing_plane hudoutlinedisable(); level.player setclutforplayer("clut_crash_crash_site",0); maps\_utility::vision_set_fog_changes("crash_crash_site_cinematic",0); level.player lightsetforplayer("crash_crash_site"); wait 0.05; level.player notify("flag_end_sonar_vision"); wait(1.25); setsaveddvar("cg_cinematicfullscreen","0"); setsaveddvar("cg_cinematicCanPause","0"); } //Function Number: 53 fly_in_hud_overlay(param_00,param_01,param_02,param_03,param_04,param_05) { var_06 = newclienthudelem(self); var_06.x = param_04; var_06.y = param_05; var_06 setshader("jump_hud_vignette",640,480); var_06.alignx = "left"; var_06.aligny = "top"; var_06.sort = 1; var_06.foreground = 0; var_06.horzalign = "fullscreen"; var_06.vertalign = "fullscreen"; var_06.alpha = 1; var_07 = 0; level.player waittill("flag_end_sonar_vision"); var_06.alpha = 0; var_06 destroy(); } //Function Number: 54 mark_enemies() { level.player endon("sonar_vision_off"); common_scripts\utility::flag_wait("begin_crash_site_lighting"); wait(3); for(;;) { if(isdefined(level.crashing_plane)) { level.crashing_plane hudoutlineenable(4,0,0); } wait(0.1); } } //Function Number: 55 give_night_vision() { level endon("flag_end_sonar_vision"); level.player setweaponhudiconoverride("actionslot4","dpad_icon_nvg"); level.player notifyonplayercommand("sonar_vision","+actionslot 4"); level.player thread thermal_with_nvg(); } //Function Number: 56 is_sonar_vision_allowed() { var_00 = level.player getcurrentweapon(); if(weaponhasthermalscope(var_00) && level.player playerads() > 0) { return 0; } return 1; } //Function Number: 57 disable_sonar_when_not_allowed() { level.player endon("sonar_vision_off"); for(;;) { if(!is_sonar_vision_allowed()) { break; } wait 0.05; } sonar_off(); } //Function Number: 58 thermal_with_nvg() { level endon("flag_end_sonar_vision"); var_00 = undefined; var_01 = undefined; var_02 = undefined; if(level.nextgen) { for(;;) { self waittill("sonar_vision"); if(!is_sonar_vision_allowed()) { continue; } if(!isdefined(level.player.sonar_vision) || !level.player.sonar_vision) { sonar_on(); childthread disable_sonar_when_not_allowed(); continue; } sonar_off(); } } } //Function Number: 59 sonar_save_and_set_dvars() { if(!isdefined(level.player.sonarvisionsaveddvars)) { level.player.sonarvisionsaveddvars = []; } level.player.sonarvisionsaveddvars["r_hudoutlineenable"] = getdvarint("r_hudoutlineenable",1); level.player.sonarvisionsaveddvars["r_hudoutlinepostmode"] = getdvar("r_hudoutlinepostmode",0); level.player.sonarvisionsaveddvars["r_hudoutlinehaloblurradius"] = getdvarfloat("r_hudoutlinehaloblurradius",1); level.player.sonarvisionsaveddvars["r_hudoutlinehalolumscale"] = getdvarfloat("r_hudoutlinehalolumscale",1); level.player.sonarvisionsaveddvars["r_hudoutlinehalowhen"] = getdvar("r_hudoutlinehalowhen",1); setsaveddvar("r_hudoutlineenable",1); setsaveddvar("r_hudoutlinepostmode",2); setsaveddvar("r_hudoutlinehaloblurradius",0.7); setsaveddvar("r_hudoutlinehalolumscale",2); setsaveddvar("r_hudoutlinehalowhen",0); level.player.sonarvisionsaveddvars["r_ssrBlendScale"] = getdvarfloat("r_ssrBlendScale",1); setsaveddvar("r_ssrBlendScale",0); } //Function Number: 60 sonar_reset_dvars() { if(isdefined(level.player.sonarvisionsaveddvars)) { setsaveddvar("r_hudoutlineenable",level.player.sonarvisionsaveddvars["r_hudoutlineenable"]); setsaveddvar("r_hudoutlinepostmode",level.player.sonarvisionsaveddvars["r_hudoutlinepostmode"]); setsaveddvar("r_hudoutlinehaloblurradius",level.player.sonarvisionsaveddvars["r_hudoutlinehaloblurradius"]); setsaveddvar("r_hudoutlinehalolumscale",level.player.sonarvisionsaveddvars["r_hudoutlinehalolumscale"]); setsaveddvar("r_hudoutlinehalowhen",level.player.sonarvisionsaveddvars["r_hudoutlinehalowhen"]); setsaveddvar("r_ssrBlendScale",level.player.sonarvisionsaveddvars["r_ssrBlendScale"]); } } //Function Number: 61 sonar_on() { level.overlaysonar = create_hud_sonar_overlay(0,1); sonar_save_and_set_dvars(); thread mark_enemies(); var_00 = 0.05; if(level.currentgen) { var_00 = 0; } soundscripts\_snd::snd_message("aud_sonar_vision_on"); level.player.sonar_vision = 1; level notify("sonar_update"); } //Function Number: 62 sonar_off() { var_00 = 0.05; if(level.currentgen) { var_00 = 0; } level.player lightsetoverrideenableforplayer(var_00); level.player setclutoverridedisableforplayer(var_00); soundscripts\_snd::snd_message("aud_sonar_vision_off"); level.player.sonar_vision = 0; level notify("sonar_update"); if(isdefined(level.overlay)) { level.overlay destroy(); } if(isdefined(level.overlaythreat)) { level.overlaythreat destroy(); } if(isdefined(level.overlaysonar)) { level.overlaysonar destroy(); } sonar_reset_dvars(); foreach(var_02 in getaiarray("axis","allies")) { if(isdefined(var_02.hudoutlineenabledbysonarvision)) { var_02 hudoutlinedisable(); var_02.hudoutlineenabledbysonarvision = undefined; } } level.player notify("sonar_vision_off"); } //Function Number: 63 create_hud_nvg_overlay(param_00,param_01,param_02) { var_03 = newhudelem(); var_03.x = 0; var_03.y = 0; var_03.sort = param_01; var_03.horzalign = "fullscreen"; var_03.vertalign = "fullscreen"; var_03.alpha = param_02; var_03 setshader(param_00,640,480); return var_03; } //Function Number: 64 create_hud_sonar_overlay(param_00,param_01) { var_02 = newhudelem(); var_02.x = 0; var_02.y = 0; if(level.currentgen) { var_02.color = (1,0.6,0.2); } else { var_02.color = (0.1,0.1,1); } var_02.sort = param_00; var_02.horzalign = "fullscreen"; var_02.vertalign = "fullscreen"; var_02.alpha = param_01; var_02 setsonarvision(10); return var_02; } //Function Number: 65 create_hud_threat_overlay(param_00,param_01) { var_02 = newhudelem(); var_02.x = 0; var_02.y = 0; var_02.color = (1,0.1,0.1); var_02.sort = param_00; var_02.horzalign = "fullscreen"; var_02.vertalign = "fullscreen"; var_02.alpha = param_01; var_02 setradarhighlight(-1); return var_02; }