mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
3887 lines
107 KiB
Plaintext
3887 lines
107 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: sanfran_b_code.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 209
|
|
* Decompile Time: 2975 ms
|
|
* Timestamp: 4/22/2024 2:35:26 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
spawn_allies()
|
|
{
|
|
level.burke = getent("burke","targetname") maps\_utility::spawn_ai(1);
|
|
level.cormack = getent("cormack","targetname") maps\_utility::spawn_ai(1);
|
|
level.maddox = getent("maddox","targetname") maps\_utility::spawn_ai(1);
|
|
level.burke setup_hero("burke");
|
|
level.cormack setup_hero("cormack");
|
|
level.maddox setup_hero("maddox");
|
|
}
|
|
|
|
//Function Number: 2
|
|
setup_hero(param_00)
|
|
{
|
|
maps\_utility::magic_bullet_shield();
|
|
self.animname = param_00;
|
|
if(!isdefined(level.heroes))
|
|
{
|
|
level.heroes = [];
|
|
}
|
|
|
|
level.heroes[level.heroes.size] = self;
|
|
}
|
|
|
|
//Function Number: 3
|
|
bridge_idle_anims()
|
|
{
|
|
var_00 = maps\_utility::spawn_anim_model("bridge_part_a");
|
|
var_01 = maps\_utility::spawn_anim_model("bridge_part_b");
|
|
var_02 = maps\_utility::spawn_anim_model("bridge_part_c");
|
|
var_03 = maps\_utility::spawn_anim_model("bridge_part_d");
|
|
var_04 = common_scripts\utility::getstruct("org_bridge_parts","targetname");
|
|
var_05 = [var_00,var_01,var_02,var_03];
|
|
var_04 thread maps\_anim::anim_loop(var_05,"bridge_parts_idle");
|
|
}
|
|
|
|
//Function Number: 4
|
|
tilt_boat(param_00)
|
|
{
|
|
common_scripts\utility::flag_wait("intro_anim_finished");
|
|
var_01 = common_scripts\utility::spawn_tag_origin();
|
|
if(!isdefined(param_00) || !param_00)
|
|
{
|
|
var_01.angles = (0,0,0);
|
|
var_01 rotateto((-5,0,5),2);
|
|
}
|
|
else
|
|
{
|
|
var_01.angles = (-5,0,5);
|
|
}
|
|
|
|
level.player playersetgroundreferenceent(var_01);
|
|
level.ground_ref_ent = var_01;
|
|
thread adjust_gravity();
|
|
level.waves = 0;
|
|
}
|
|
|
|
//Function Number: 5
|
|
adjust_gravity()
|
|
{
|
|
var_00 = level.ground_ref_ent.angles;
|
|
var_01 = -1 * anglestoup(level.ground_ref_ent.angles);
|
|
setphysicsgravitydir(var_01);
|
|
var_02 = var_01;
|
|
for(;;)
|
|
{
|
|
var_03 = -1 * anglestoup(var_00);
|
|
var_01 = -1 * anglestoup(level.ground_ref_ent.angles);
|
|
var_04 = vectornormalize(var_01 + var_01 - var_03 * 100);
|
|
if(var_04 != var_02)
|
|
{
|
|
setphysicsgravitydir(var_04);
|
|
var_02 = var_04;
|
|
}
|
|
|
|
level.physics_gravity_vector = var_01;
|
|
var_00 = level.ground_ref_ent.angles;
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
close_interior_door()
|
|
{
|
|
var_00 = getent("interior_exit_clip","targetname");
|
|
var_00 disconnectpaths();
|
|
level.interior_door = maps\_utility::spawn_anim_model("interior_bulkhead");
|
|
var_01 = common_scripts\utility::getstruct("org_squad_enter_mob","targetname");
|
|
var_01 maps\_anim::anim_first_frame_solo(level.interior_door,"ripopen_bulkhead");
|
|
}
|
|
|
|
//Function Number: 7
|
|
mob_enter_player_clip()
|
|
{
|
|
var_00 = getent("player_enter_mob_clip","targetname");
|
|
var_00.old_origin = var_00.origin;
|
|
var_00.origin = (0,0,0);
|
|
var_00 disconnectpaths();
|
|
common_scripts\utility::flag_wait("flag_obj_marker_enter_ship");
|
|
var_00.origin = var_00.old_origin;
|
|
common_scripts\utility::flag_wait("flag_player_entered_interior");
|
|
var_00 common_scripts\utility::delaycall(0.5,::delete);
|
|
var_00 common_scripts\utility::delaycall(0.55,::connectpaths);
|
|
}
|
|
|
|
//Function Number: 8
|
|
intro_scene()
|
|
{
|
|
soundscripts\_snd::snd_message("intro_scene");
|
|
thread maps\sanfran_b_lighting::play_flickering_fire_light();
|
|
if(level.nextgen)
|
|
{
|
|
thread maps\_utility::vision_set_fog_changes("sfb_neutral",0);
|
|
setsunlight(0,0,0);
|
|
maps\_lighting::set_spot_color("fire_rim",(1,0.8,0.83));
|
|
maps\_lighting::set_spot_intensity("fire_rim",300000);
|
|
}
|
|
else
|
|
{
|
|
thread maps\_utility::vision_set_fog_changes("sanfran_b_exterior_dark",0);
|
|
}
|
|
|
|
common_scripts\_exploder::exploder(4225);
|
|
if(level.nextgen)
|
|
{
|
|
maps\_utility::delaythread(2,::maps\_utility::fog_set_changes,"sanfran_b_exterior_dark_fog",2);
|
|
maps\_utility::delaythread(4,::maps\_utility::fog_set_changes,"sanfran_b_exterior_dark_nofog",1);
|
|
maps\_utility::delaythread(3.5,::maps\_lighting::set_spot_intensity,"fire_rim",0);
|
|
maps\_utility::delaythread(6,::maps\_utility::fog_set_changes,"sanfran_b_exterior_dark_fog",5);
|
|
maps\_utility::delaythread(6,::maps\_lighting::lerp_spot_intensity,"fire_rim",0.5,300000);
|
|
}
|
|
else
|
|
{
|
|
maps\_utility::delaythread(2,::maps\_utility::vision_set_fog_changes,"sanfran_b_exterior_dark_fog",2);
|
|
maps\_utility::delaythread(4,::maps\_utility::vision_set_fog_changes,"sanfran_b_exterior_dark_nofog",1);
|
|
maps\_utility::delaythread(6,::maps\_utility::vision_set_fog_changes,"sanfran_b_exterior_dark_fog",1);
|
|
}
|
|
|
|
level.player allowcrouch(0);
|
|
level.player allowprone(0);
|
|
level.player disableweapons();
|
|
soundscripts\_snd::snd_message("sfb_intro_burke_foley");
|
|
soundscripts\_snd::snd_message("sfb_intro_car_explode");
|
|
var_00 = maps\_utility::spawn_anim_model("player_arms");
|
|
level.player playerlinktodelta(var_00,"tag_player",1,8,8,4,4);
|
|
level.player common_scripts\utility::delaycall(0.1,::playerlinktodelta,var_00,"tag_player",1,12,12,10,4);
|
|
level.player enableslowaim();
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname("littlebird_intro");
|
|
var_01.animname = "littlebird";
|
|
if(level.nextgen)
|
|
{
|
|
setsaveddvar("r_dynamicSpotLightShadows",0);
|
|
}
|
|
|
|
maps\_utility::delaythread(8,::common_scripts\_exploder::exploder,4222);
|
|
maps\_utility::delaythread(8,::common_scripts\_exploder::exploder,1999);
|
|
maps\_utility::delaythread(11,::maps\_utility::stop_exploder,4223);
|
|
var_02 = maps\_utility::spawn_anim_model("pickup_truck");
|
|
var_03 = maps\_utility::spawn_anim_model("domestic_mini");
|
|
var_04 = [level.burke,level.cormack,level.maddox,var_00,var_01,var_02,var_03];
|
|
var_05 = common_scripts\utility::getstruct("org_intro_anim","targetname");
|
|
var_05 maps\_anim::anim_first_frame(var_04,"intro");
|
|
foreach(var_07 in level.heroes)
|
|
{
|
|
var_07 thread maps\sanfran_b_util::hide_friendname_until_flag_or_notify("player_control_enabled");
|
|
var_07 maps\sanfran_b_util::disable_awareness();
|
|
}
|
|
|
|
thread maps\_utility::flag_set_delayed("intro_dialogue",23);
|
|
maps\_utility::delaythread(22.5,::maps\_utility::stop_exploder,1999);
|
|
maps\_utility::delaythread(21,::common_scripts\_exploder::exploder,4443);
|
|
level.burke soundscripts\_snd::snd_message("pcap_vo_sf_b_intro","burke");
|
|
level.cormack soundscripts\_snd::snd_message("pcap_vo_sf_b_intro","cormack");
|
|
var_05 thread maps\_anim::anim_single(var_04,"intro");
|
|
level waittill("intro_scene_artillery_rumble");
|
|
level.player playrumbleonentity("artillery_rumble");
|
|
common_scripts\utility::flag_wait("intro_anim_finished");
|
|
soundscripts\_snd::snd_message("intro_scene_done");
|
|
level notify("player_control_enabled");
|
|
maps\_utility::battlechatter_on("allies");
|
|
maps\_utility::battlechatter_on("axis");
|
|
level.player unlink();
|
|
level.player allowcrouch(1);
|
|
level.player allowprone(1);
|
|
level.player disableslowaim();
|
|
setsaveddvar("ammoCounterHide","0");
|
|
if(level.currentgen)
|
|
{
|
|
maps\_utility::vision_set_fog_changes("sanfran_b_exterior_dark_fog",1);
|
|
}
|
|
|
|
if(level.nextgen)
|
|
{
|
|
maps\_utility::fog_set_changes("sanfran_b",4);
|
|
}
|
|
|
|
thread maps\sanfran_b_lighting::stop_flickering_fire_light();
|
|
thread maps\_shg_fx::vfx_sunflare("sanfran_sunflare_a");
|
|
common_scripts\_exploder::exploder(4444);
|
|
maps\_utility::pauseexploder(4445);
|
|
common_scripts\utility::flag_clear("msg_vfx_zone1000_disable");
|
|
var_00 delete();
|
|
var_01 delete();
|
|
maps\_utility::stop_exploder(4222);
|
|
maps\_utility::stop_exploder(4225);
|
|
setsaveddvar("r_dynamicSpotLightShadows",1);
|
|
setsaveddvar("r_fog_ev_adjust",1.5);
|
|
if(level.nextgen)
|
|
{
|
|
}
|
|
|
|
maps\_utility::autosave_by_name();
|
|
thread squad_becomes_aware_after_intro();
|
|
maps\_utility::activate_trigger_with_targetname("trig_squad_move_001");
|
|
}
|
|
|
|
//Function Number: 9
|
|
squad_becomes_aware_after_intro()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_heli_takeoff_pod_1");
|
|
foreach(var_01 in level.heroes)
|
|
{
|
|
var_01 maps\sanfran_b_util::enable_awareness();
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
ambient_deck()
|
|
{
|
|
level waittill("player_control_enabled");
|
|
thread warbird_strafe_run();
|
|
thread ambient_shrike_flyby();
|
|
var_00 = getent("refl_probe_heli_open","targetname");
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("ambient_warbird_1");
|
|
var_01 soundscripts\_snd::snd_message("warbird_circling_perimeter");
|
|
waittillframeend;
|
|
var_01 maps\_vehicle::godon();
|
|
var_01 overridereflectionprobe(var_00.origin);
|
|
var_01 thread maps\sanfran_b_util::ambient_warbird_shooting_think(0);
|
|
var_01 thread maps\sanfran_b_util::ambient_warbird_wait_to_fire();
|
|
var_01 thread delete_ambient();
|
|
var_01 setmaxpitchroll(10,60);
|
|
var_01.ignoreme = 1;
|
|
var_02 = getentarray("ambient_drone_swarm_1","script_noteworthy");
|
|
if(!isdefined(level.ambient_drones))
|
|
{
|
|
level.ambient_drones = [];
|
|
}
|
|
|
|
foreach(var_04 in var_02)
|
|
{
|
|
var_05 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(var_04.targetname);
|
|
var_05.ignoreme = 1;
|
|
var_05 maps\_utility::ent_flag_set("fire_disabled");
|
|
var_05 thread delete_ambient();
|
|
level.ambient_drones[level.ambient_drones.size] = var_05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
warbird_strafe_run()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_warbird_strafe");
|
|
var_00 = getent("refl_probe_heli_open","targetname");
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("warbird_strafe_1");
|
|
var_01 soundscripts\_snd::snd_message("warbird_strafe_01");
|
|
var_01 overridereflectionprobe(var_00.origin);
|
|
waittillframeend;
|
|
var_01 thread maps\sanfran_b_util::ambient_warbird_shooting_think(0);
|
|
var_01 thread maps\sanfran_b_util::ambient_warbird_wait_to_fire();
|
|
var_01 setmaxpitchroll(10,60);
|
|
}
|
|
|
|
//Function Number: 12
|
|
ambient_shrike_flyby()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_heli_takeoff_pod_1");
|
|
var_00 = getent("refl_probe_heli_open","targetname");
|
|
var_01 = maps\_utility::array_spawn_targetname("flyby_shrikes");
|
|
var_01 soundscripts\_snd::snd_message("shrike_flyby_pair_01");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 overridereflectionprobe(var_00.origin);
|
|
}
|
|
|
|
common_scripts\utility::array_thread(var_01,::maps\_vehicle::gopath);
|
|
}
|
|
|
|
//Function Number: 13
|
|
ambient_explosions()
|
|
{
|
|
level endon("jammer_2_deactivated");
|
|
maps\_utility::trigger_wait_targetname("trig_heli_takeoff_pod_1");
|
|
wait(5);
|
|
for(;;)
|
|
{
|
|
var_00 = anglestoforward(level.player.angles);
|
|
var_01 = randomintrange(512,800);
|
|
var_02 = anglestoright(level.player.angles);
|
|
var_03 = randomintrange(-400,400);
|
|
var_04 = level.player.origin + var_00 * var_01 + var_02 * var_03;
|
|
var_05 = var_04;
|
|
var_06 = var_04 - (0,0,150);
|
|
var_07 = bullettrace(var_05,var_06,0,undefined);
|
|
if(isdefined(var_07))
|
|
{
|
|
var_05 = var_07["position"];
|
|
var_08 = vectortoangles(var_07["normal"]);
|
|
var_08 = var_08 + (90,0,0);
|
|
var_00 = anglestoforward(var_08);
|
|
var_09 = anglestoup(var_08);
|
|
playfx(common_scripts\utility::getfx("ambient_explosion"),var_05,var_09,var_00);
|
|
radiusdamage(var_05,100,200,20);
|
|
physicsexplosionsphere(var_05,100,50,2);
|
|
}
|
|
|
|
wait(randomfloatrange(5,10));
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
enemy_reinforcements()
|
|
{
|
|
level endon("all_jammers_deactivated");
|
|
for(;;)
|
|
{
|
|
var_00 = getaiarray("axis");
|
|
if(var_00.size <= 2)
|
|
{
|
|
var_01 = enemy_reinforcements_think();
|
|
if(isdefined(var_01))
|
|
{
|
|
var_01 thread deck_reinforcement_modify_accuracy();
|
|
var_02 = randomint(100);
|
|
if(var_02 >= 0 && var_02 < 50)
|
|
{
|
|
var_01 maps\_utility::set_goal_entity(level.burke);
|
|
}
|
|
else
|
|
{
|
|
var_01 maps\_utility::set_goal_entity(level.cormack);
|
|
}
|
|
}
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
enemy_reinforcements_think()
|
|
{
|
|
var_00 = getent("enemy_reinforcement_spawner","targetname");
|
|
var_01 = common_scripts\utility::getstructarray("enemy_reinforce_loc","targetname");
|
|
var_02 = getdvarint("cg_fov");
|
|
var_03 = cos(var_02);
|
|
var_01 = sortbydistance(var_01,level.player.origin);
|
|
var_01 = common_scripts\utility::array_reverse(var_01);
|
|
foreach(var_05 in var_01)
|
|
{
|
|
var_06 = anglestoforward(level.player getplayerangles());
|
|
var_07 = vectornormalize(var_05.origin - level.player.origin);
|
|
if(vectordot(var_06,var_07) < var_03)
|
|
{
|
|
var_00.origin = var_05.origin;
|
|
var_00.count++;
|
|
var_08 = var_00 maps\_utility::spawn_ai();
|
|
return var_08;
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
deck_reinforcement_modify_accuracy()
|
|
{
|
|
self endon("death");
|
|
var_00 = getdvarint("cg_fov");
|
|
var_01 = cos(var_00);
|
|
thread maps\sanfran_b_util::equip_microwave_grenade();
|
|
createthreatbiasgroup("deck_reinforcements_behind_player");
|
|
createthreatbiasgroup("deck_reinforcements_in_front_of_player");
|
|
setthreatbias("player","deck_reinforcements_behind_player",-20000);
|
|
setthreatbias("player","deck_reinforcements_in_front_of_player",0);
|
|
self setthreatbiasgroup("deck_reinforcements_behind_player");
|
|
for(;;)
|
|
{
|
|
var_02 = anglestoforward(level.player.angles);
|
|
var_03 = vectornormalize(self.origin - level.player.origin);
|
|
if(vectordot(var_02,var_03) < var_01)
|
|
{
|
|
self setthreatbiasgroup("deck_reinforcements_behind_player");
|
|
}
|
|
else
|
|
{
|
|
self setthreatbiasgroup("deck_reinforcements_in_front_of_player");
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
delete_ambient()
|
|
{
|
|
self endon("death");
|
|
common_scripts\utility::flag_wait("flag_information_center");
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 18
|
|
cargo_ship_missiles()
|
|
{
|
|
level endon("jammer_2_deactivated");
|
|
maps\_utility::trigger_wait_targetname("trig_heli_takeoff_pod_1");
|
|
var_00 = common_scripts\utility::getstructarray("cargo_missile_orgs","targetname");
|
|
var_01 = getentarray("cargo_missile_targets","targetname");
|
|
for(;;)
|
|
{
|
|
var_02 = var_00[randomint(var_00.size)];
|
|
var_03 = var_01[randomint(var_01.size)];
|
|
var_04 = common_scripts\utility::getstruct(var_02.target,"targetname").origin;
|
|
var_05 = vectortoangles(var_03.origin - var_02.origin);
|
|
var_06 = magicbullet("cargo_ship_missile",var_02.origin,var_04);
|
|
var_06 missile_settargetent(var_03);
|
|
var_06 missile_setflightmodedirect();
|
|
playfx(common_scripts\utility::getfx("missile_launch_smoke"),var_02.origin,anglestoforward(var_05),anglestoup(var_05));
|
|
wait(randomfloatrange(5,10));
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
shrike_flyby()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_shrike_flyby_1");
|
|
if(level.nextgen)
|
|
{
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("shrike_flyby_1");
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("shrike_flyby_2");
|
|
soundscripts\_snd::snd_message("shrike_flyby_pair_02",var_00,var_01);
|
|
return;
|
|
}
|
|
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("shrike_flyby_2");
|
|
soundscripts\_snd::snd_message("shrike_flyby_pair_02",undefined,var_01);
|
|
}
|
|
|
|
//Function Number: 20
|
|
initial_combat()
|
|
{
|
|
level.deck_navy_guys = maps\_utility::array_spawn_noteworthy("navy_deck_guys_initial",1);
|
|
maps\_utility::trigger_wait_targetname("trig_heli_takeoff_pod_1");
|
|
level.enemy_deck_guys = maps\_utility::array_spawn_noteworthy("enemy_deck_guys_initial",1);
|
|
common_scripts\utility::array_thread(level.enemy_deck_guys,::maps\_utility::set_grenadeammo,0);
|
|
level notify("spawned_jammer_guards");
|
|
}
|
|
|
|
//Function Number: 21
|
|
shrike_takeoff()
|
|
{
|
|
level.player endon("death");
|
|
var_00 = getent("refl_probe_heli_open","targetname");
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname("heli_takeoff_pod_1");
|
|
var_01.animname = "shrike_1";
|
|
var_01 maps\_vehicle::godon();
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname("heli_takeoff_pod_2");
|
|
var_02.animname = "shrike_2";
|
|
var_02 maps\_vehicle::godon();
|
|
var_02 vehicle_removebrushmodelcollision();
|
|
var_03 = common_scripts\utility::getstruct("org_shrike_takeoff","targetname");
|
|
var_04 = [var_02,var_01];
|
|
var_03 thread maps\_anim::anim_first_frame(var_04,"shrike_takeoff");
|
|
maps\_utility::trigger_wait_targetname("trig_heli_takeoff_pod_1");
|
|
soundscripts\_snd::snd_message("shrike_takeoff",var_02,var_01);
|
|
var_03 maps\_anim::anim_single(var_04,"shrike_takeoff");
|
|
foreach(var_06 in var_04)
|
|
{
|
|
var_06 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 22
|
|
shrike_takeoff_cg()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_heli_takeoff_pod_1");
|
|
wait(5);
|
|
common_scripts\utility::flag_set("useyourboosters_vo");
|
|
}
|
|
|
|
//Function Number: 23
|
|
initial_deck_guys_invuln()
|
|
{
|
|
self endon("death");
|
|
maps\_utility::magic_bullet_shield();
|
|
thread maps\_utility::set_grenadeammo(0);
|
|
wait(randomfloatrange(1,3));
|
|
maps\_utility::stop_magic_bullet_shield();
|
|
self.noragdoll = undefined;
|
|
}
|
|
|
|
//Function Number: 24
|
|
move_initial_enemies()
|
|
{
|
|
var_00 = getent("trig_warbird_strafe","targetname");
|
|
for(;;)
|
|
{
|
|
var_00 waittill("trigger",var_01);
|
|
if(isdefined(var_01) && isplayer(var_01) || maps\_utility::is_in_array(level.heroes,var_01))
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_02 = getent("vol_first_helipad","targetname");
|
|
var_03 = getent("vol_second_helipad","targetname");
|
|
var_04 = getent("vol_tall_helipad","targetname");
|
|
var_05 = getaiarray("axis");
|
|
var_06 = var_03;
|
|
if(isdefined(var_05) && var_05.size > 0)
|
|
{
|
|
foreach(var_01 in var_05)
|
|
{
|
|
if(!var_01 istouching(var_02))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01 maps\sanfran_b_util::disable_awareness();
|
|
var_01 thread become_aware_on_goal();
|
|
var_01 thread become_aware_when_player_is_in_volume();
|
|
var_01 setgoalvolumeauto(var_06);
|
|
var_01 thread detect_when_player_is_in_volume(var_06);
|
|
if(var_06 == var_03)
|
|
{
|
|
var_06 = var_04;
|
|
continue;
|
|
}
|
|
|
|
var_06 = var_03;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 25
|
|
deck_reinforcement_ally_think()
|
|
{
|
|
maps\_utility::pathrandompercent_set(500);
|
|
}
|
|
|
|
//Function Number: 26
|
|
become_aware_on_goal()
|
|
{
|
|
self endon("death");
|
|
self endon("player_touching_volume");
|
|
self waittill("goal");
|
|
maps\sanfran_b_util::enable_awareness();
|
|
self cleargoalvolume();
|
|
self notify("guys_aware_on_goal");
|
|
}
|
|
|
|
//Function Number: 27
|
|
become_aware_when_player_is_in_volume()
|
|
{
|
|
self endon("death");
|
|
self endon("guys_aware_on_goal");
|
|
self waittill("player_touching_volume");
|
|
maps\sanfran_b_util::enable_awareness();
|
|
self cleargoalvolume();
|
|
}
|
|
|
|
//Function Number: 28
|
|
detect_when_player_is_in_volume(param_00)
|
|
{
|
|
level.player endon("death");
|
|
while(!level.player istouching(param_00))
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
self notify("player_touching_volume");
|
|
}
|
|
|
|
//Function Number: 29
|
|
manage_deck_combat()
|
|
{
|
|
level.player endon("death");
|
|
maps\_utility::trigger_wait_targetname("trig_deck_combat_first_wave");
|
|
level.burke maps\_utility::enable_careful();
|
|
level.cormack maps\_utility::enable_careful();
|
|
level.maddox maps\_utility::enable_careful();
|
|
resetsunlight();
|
|
maps\_lighting::set_spot_intensity("fire_rim",0);
|
|
thread thin_out_navy_guys(2);
|
|
thread deck_jammers();
|
|
if(level.currentgen)
|
|
{
|
|
var_00 = getentarray("deck_combat_first_wave_guys","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_03 = var_02 maps\_utility::spawn_ai();
|
|
wait 0.05;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
maps\_utility::array_spawn_targetname("deck_combat_first_wave_guys");
|
|
}
|
|
|
|
thread check_player_deck_position_1();
|
|
maps\_utility::trigger_wait_targetname("trig_shrike_flyby_1");
|
|
var_05 = maps\_utility::array_spawn_noteworthy("jammer_1_defenders",0,1);
|
|
common_scripts\utility::array_thread(var_05,::jammer_1_defenders_logic);
|
|
common_scripts\utility::array_thread(var_05,::deck_reinforcement_modify_accuracy);
|
|
maps\sanfran_b_util::wait_for_number_enemies_alive(5);
|
|
thread deck_drones("left");
|
|
common_scripts\utility::flag_wait("jammer_1_deactivated");
|
|
thread check_player_deck_position_2();
|
|
level.burke maps\_utility::disable_careful();
|
|
level.cormack maps\_utility::disable_careful();
|
|
level.maddox maps\_utility::disable_careful();
|
|
foreach(var_07 in level.deck_drones)
|
|
{
|
|
if(isdefined(var_07) && isalive(var_07))
|
|
{
|
|
var_07 maps\_vehicle::vehicle_set_health(1);
|
|
var_07 dodamage(9999,var_07.origin);
|
|
}
|
|
}
|
|
|
|
maps\_utility::autosave_by_name();
|
|
thread thin_out_navy_guys(1);
|
|
thread on_the_way_to_jammer_2();
|
|
maps\_utility::activate_trigger_with_targetname("trig_ally_move_jammer_2");
|
|
var_09 = getent("refl_probe_heli_open","targetname");
|
|
var_0A = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("heli_left_1");
|
|
var_0A soundscripts\_snd::snd_message("warbird_dropoff_01");
|
|
var_0A setmaxpitchroll(15,60);
|
|
var_0A thread setup_deck_deploy_warbird();
|
|
var_0A maps\_utility::ent_flag_init("dont_shoot_player");
|
|
var_0A maps\_utility::ent_flag_set("dont_shoot_player");
|
|
var_0A overridereflectionprobe(var_09.origin);
|
|
wait(1);
|
|
var_0B = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("heli_left_2");
|
|
var_0B soundscripts\_snd::snd_message("warbird_dropoff_02");
|
|
var_0B setmaxpitchroll(15,60);
|
|
var_0B thread setup_deck_deploy_warbird();
|
|
var_0B maps\_utility::ent_flag_init("dont_shoot_player");
|
|
var_0B maps\_utility::ent_flag_set("dont_shoot_player");
|
|
var_0B overridereflectionprobe(var_09.origin);
|
|
common_scripts\utility::flag_set("deck_warbird_vo");
|
|
maps\_utility::trigger_wait_targetname("trig_jammer_2_drones");
|
|
var_0C = deck_drones("right");
|
|
thread friendly_airstrike(var_0C);
|
|
maps\_utility::activate_trigger_with_targetname("trig_post_jammer_2_squad_move");
|
|
thread maps\_utility::flag_set_delayed("jammer_2_vo",3);
|
|
common_scripts\utility::flag_wait("jammer_2_deactivated");
|
|
common_scripts\utility::flag_set("flag_move_gideon_into_interior");
|
|
thread thin_out_navy_guys(0);
|
|
foreach(var_07 in level.deck_drones)
|
|
{
|
|
if(isdefined(var_07) && isalive(var_07))
|
|
{
|
|
var_07 maps\_vehicle::vehicle_set_health(1);
|
|
var_07 dodamage(9999,var_07.origin);
|
|
}
|
|
}
|
|
|
|
maps\_utility::autosave_by_name();
|
|
level.cormack maps\_utility::teleport_ai(getnode("cormack_deck_end_cover","targetname"));
|
|
level.maddox maps\_utility::teleport_ai(getnode("maddox_deck_end_cover","targetname"));
|
|
level.burke maps\_utility::teleport_ai(getnode("burke_deck_end_cover","targetname"));
|
|
maps\_utility::activate_trigger_with_targetname("trig_move_squad_to_pre_mob_enter");
|
|
thread move_squad_into_ship();
|
|
thread jammer_3_navy_drone_combat();
|
|
maps\_utility::delaythread(3,::deck_enemies_cleared);
|
|
var_0F = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("heli_back_2");
|
|
var_0F soundscripts\_snd::snd_message("warbird_dropoff_03");
|
|
var_0F setmaxpitchroll(10,60);
|
|
var_0F thread setup_deck_deploy_warbird();
|
|
var_0F overridereflectionprobe(var_09.origin);
|
|
var_10 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("heli_back_1");
|
|
var_10 soundscripts\_snd::snd_message("warbird_dropoff_04");
|
|
var_10 setmaxpitchroll(10,60);
|
|
var_10 thread setup_deck_deploy_warbird();
|
|
var_10 overridereflectionprobe(var_09.origin);
|
|
var_11 = getent("warbird_slide_trigger","targetname");
|
|
var_11 enablelinkto();
|
|
var_11 linkto(var_10);
|
|
thread wait_for_all_deck_warbirds_to_unload();
|
|
var_0F thread hangar_heli_wait_for_unload("deck_warbird_3_unloaded");
|
|
var_10 thread hangar_heli_wait_for_unload("deck_warbird_4_unloaded");
|
|
thread jammer_3_shrike_flyby(var_10);
|
|
common_scripts\utility::flag_wait("all_deck_warbirds_deployed");
|
|
var_12 = getaiarray("axis");
|
|
while(var_12.size > 2)
|
|
{
|
|
var_12 = maps\_utility::remove_dead_from_array(var_12);
|
|
wait(0.5);
|
|
}
|
|
|
|
if(common_scripts\utility::flag("player_near_mob_entrance") == 0)
|
|
{
|
|
common_scripts\utility::flag_set("rail_guns_secure_vo");
|
|
maps\_utility::activate_trigger_with_targetname("trig_squad_move_into_boat");
|
|
common_scripts\utility::flag_set("show_enter_ship_obj_marker");
|
|
foreach(var_03 in level.heroes)
|
|
{
|
|
var_03 cleargoalvolume();
|
|
var_03.fixednode = 1;
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("all_jammers_deactivated");
|
|
wait(0.25);
|
|
var_12 = getaiarray("axis");
|
|
if(var_12.size > 0)
|
|
{
|
|
foreach(var_03 in var_12)
|
|
{
|
|
var_03 thread maps\sanfran_b_util::bloody_death(randomfloatrange(0,2));
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_obj_marker_enter_ship");
|
|
common_scripts\utility::array_thread(level.heroes,::maps\_utility::set_ignoreme,1);
|
|
common_scripts\utility::array_thread(level.heroes,::maps\_utility::set_ignoreall,1);
|
|
common_scripts\utility::array_thread(level.heroes,::maps\_utility::disable_pain);
|
|
maps\_utility::autosave_by_name();
|
|
slow_player_inside();
|
|
}
|
|
}
|
|
|
|
//Function Number: 30
|
|
check_player_deck_position_1()
|
|
{
|
|
level endon("jammer_1_deactivated");
|
|
maps\_utility::array_spawn_function_targetname("deck_top_combat_first_wave_guys",::maps\sanfran_b_util::equip_microwave_grenade);
|
|
common_scripts\utility::flag_wait("flag_deck_top_combat_first_wave_guys");
|
|
maps\_utility::array_spawn_targetname("deck_top_combat_first_wave_guys");
|
|
}
|
|
|
|
//Function Number: 31
|
|
check_player_deck_position_2()
|
|
{
|
|
level endon("jammer_2_deactivated");
|
|
maps\_utility::array_spawn_function_targetname("deck_top_combat_second_wave_guys",::maps\sanfran_b_util::equip_microwave_grenade);
|
|
common_scripts\utility::flag_wait("flag_deck_top_combat_second_wave_guys");
|
|
maps\_utility::array_spawn_targetname("deck_top_combat_second_wave_guys");
|
|
}
|
|
|
|
//Function Number: 32
|
|
move_squad_into_ship()
|
|
{
|
|
common_scripts\utility::flag_wait("player_near_mob_entrance");
|
|
if(common_scripts\utility::flag("flag_obj_marker_enter_ship") == 0)
|
|
{
|
|
common_scripts\utility::flag_set("show_enter_ship_obj_marker");
|
|
common_scripts\utility::flag_set("flag_obj_marker_enter_ship");
|
|
common_scripts\utility::flag_set("rail_guns_secure_vo");
|
|
common_scripts\utility::array_thread(level.heroes,::maps\_utility::set_ignoreme,1);
|
|
common_scripts\utility::array_thread(level.heroes,::maps\_utility::set_ignoreall,1);
|
|
common_scripts\utility::array_thread(level.heroes,::maps\_utility::disable_pain);
|
|
var_00 = getaiarray("axis");
|
|
if(var_00.size > 0)
|
|
{
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 thread maps\sanfran_b_util::bloody_death(randomfloatrange(0,2));
|
|
}
|
|
}
|
|
|
|
maps\_utility::autosave_by_name();
|
|
slow_player_inside();
|
|
common_scripts\utility::flag_wait("boosters_off_anim_finished");
|
|
common_scripts\utility::array_thread(level.heroes,::maps\_utility::set_ignoreme,0);
|
|
common_scripts\utility::array_thread(level.heroes,::maps\_utility::set_ignoreall,0);
|
|
common_scripts\utility::array_thread(level.heroes,::maps\_utility::enable_pain);
|
|
}
|
|
}
|
|
|
|
//Function Number: 33
|
|
thin_out_navy_guys(param_00)
|
|
{
|
|
while(level.deck_navy_guys.size > param_00)
|
|
{
|
|
level.deck_navy_guys[randomint(level.deck_navy_guys.size)] maps\sanfran_b_util::bloody_death(randomfloatrange(0.5,2));
|
|
level.deck_navy_guys = maps\_utility::remove_dead_from_array(level.deck_navy_guys);
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 34
|
|
deck_jammers()
|
|
{
|
|
var_00 = getentarray("deck_jammers","script_noteworthy");
|
|
common_scripts\utility::array_call(var_00,::hide);
|
|
common_scripts\utility::array_thread(var_00,::turn_off_jammer_triggers);
|
|
common_scripts\utility::array_thread(var_00,::jammer_think);
|
|
}
|
|
|
|
//Function Number: 35
|
|
turn_off_jammer_triggers()
|
|
{
|
|
var_00 = getent(self.target,"targetname");
|
|
var_00 common_scripts\utility::trigger_off();
|
|
}
|
|
|
|
//Function Number: 36
|
|
jammer_enemies_hint()
|
|
{
|
|
level endon("jammer_guards_dead");
|
|
var_00 = getent(self.target,"targetname");
|
|
var_00 common_scripts\utility::trigger_on();
|
|
var_00 usetriggerrequirelookat();
|
|
var_00 sethintstring(&"SANFRAN_B_GUARD_HINT");
|
|
}
|
|
|
|
//Function Number: 37
|
|
jammer_enemies_spawn()
|
|
{
|
|
var_00 = getent("jammer_guard_1","targetname") maps\_utility::spawn_ai(1);
|
|
var_00 thread maps\sanfran_b_util::equip_microwave_grenade();
|
|
var_00 thread jammer_enemy_1_think();
|
|
var_01 = getent("jammer_guard_2","targetname") maps\_utility::spawn_ai(1);
|
|
var_01 thread maps\sanfran_b_util::equip_microwave_grenade();
|
|
var_01 thread jammer_enemy_2_think();
|
|
}
|
|
|
|
//Function Number: 38
|
|
jammer_enemy_1_think()
|
|
{
|
|
var_00 = getent("trigger_jammer_enemy_touch1","targetname");
|
|
while(isalive(self))
|
|
{
|
|
if(!self istouching(var_00))
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait(0.5);
|
|
}
|
|
|
|
level.jammer_guards = level.jammer_guards + 1;
|
|
}
|
|
|
|
//Function Number: 39
|
|
jammer_enemy_2_think()
|
|
{
|
|
var_00 = getent("trigger_jammer_enemy_touch2","targetname");
|
|
while(isalive(self))
|
|
{
|
|
if(!self istouching(var_00))
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait(0.5);
|
|
}
|
|
|
|
level.jammer_guards = level.jammer_guards + 1;
|
|
}
|
|
|
|
//Function Number: 40
|
|
jammer_think()
|
|
{
|
|
level.jammer_objective = self;
|
|
if(self.targetname == "jammer_1")
|
|
{
|
|
level.jammer_guards = 0;
|
|
thread jammer_enemies_hint();
|
|
thread jammer_enemies_spawn();
|
|
while(level.jammer_guards < 2)
|
|
{
|
|
wait(0.15);
|
|
}
|
|
|
|
level notify("jammer_guards_dead");
|
|
var_00 = getent(self.target,"targetname");
|
|
var_00 common_scripts\utility::trigger_on();
|
|
var_00 usetriggerrequirelookat();
|
|
var_00 sethintstring(&"SANFRAN_B_DEACTIVATE_JAMMER");
|
|
var_01 = var_00 maps\_shg_utility::hint_button_trigger("x",512);
|
|
self setmodel("vm_jamming_device_obj");
|
|
self show();
|
|
var_00 waittill("trigger");
|
|
var_00 common_scripts\utility::trigger_off();
|
|
var_01 maps\_shg_utility::hint_button_clear();
|
|
common_scripts\utility::flag_set("planting_jammer_1");
|
|
self hide();
|
|
play_jammer_1_anim();
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_wait("planting_jammer_1");
|
|
var_00 = getent(self.target,"targetname");
|
|
var_01 common_scripts\utility::trigger_on();
|
|
var_01 usetriggerrequirelookat();
|
|
var_01 sethintstring(&"SANFRAN_B_DEACTIVATE_JAMMER");
|
|
var_01 = var_01 maps\_shg_utility::hint_button_trigger("x",512);
|
|
self setmodel("vm_jamming_device_obj");
|
|
self show();
|
|
var_00 waittill("trigger");
|
|
var_00 common_scripts\utility::trigger_off();
|
|
var_01 maps\_shg_utility::hint_button_clear();
|
|
common_scripts\utility::flag_set("planting_jammer_2");
|
|
self hide();
|
|
play_jammer_2_anim();
|
|
}
|
|
|
|
var_02 = self.script_parameters + "_deactivated";
|
|
common_scripts\utility::flag_set(var_02);
|
|
}
|
|
|
|
//Function Number: 41
|
|
play_jammer_1_anim()
|
|
{
|
|
var_00 = common_scripts\utility::getstruct("org_jammer_1","targetname");
|
|
var_01 = getaiarray("axis");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 thread maps\sanfran_b_util::bloody_death();
|
|
}
|
|
|
|
level.player maps\_shg_utility::setup_player_for_scene(1);
|
|
var_05 = maps\_utility::spawn_anim_model("player_arms");
|
|
var_05 hide();
|
|
if(level.nextgen)
|
|
{
|
|
maps\_utility::delaythread(1.15,::player_jammer_movie);
|
|
}
|
|
|
|
var_00 maps\_anim::anim_first_frame_solo(var_05,"jammerplant_1");
|
|
var_06 = maps\_utility::spawn_anim_model("jammer");
|
|
var_06 soundscripts\_snd::snd_message("jammer_plant");
|
|
var_01 = [var_05,var_06];
|
|
level.player playerlinktoblend(var_05,"tag_player",0.4);
|
|
wait(0.4);
|
|
var_05 show();
|
|
level.player enableinvulnerability();
|
|
maps\_utility::delaythread(0.5,::common_scripts\utility::flag_set,"boost_incoming_vo");
|
|
thread deck_jammer_rumbles();
|
|
var_00 maps\_anim::anim_single(var_01,"jammerplant_1");
|
|
level.player disableinvulnerability();
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
var_05 delete();
|
|
level.player unlink();
|
|
}
|
|
|
|
//Function Number: 42
|
|
play_jammer_2_anim()
|
|
{
|
|
soundscripts\_snd::snd_message("jammer_plant");
|
|
var_00 = common_scripts\utility::getstruct("org_jammer_2","targetname");
|
|
var_01 = getaiarray("axis");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 thread maps\sanfran_b_util::bloody_death();
|
|
}
|
|
|
|
level.player maps\_shg_utility::setup_player_for_scene(1);
|
|
level notify("stop_jammer_movie");
|
|
var_05 = maps\_utility::spawn_anim_model("player_arms");
|
|
var_05 hide();
|
|
if(level.nextgen)
|
|
{
|
|
maps\_utility::delaythread(1.15,::player_jammer_movie);
|
|
}
|
|
|
|
var_00 maps\_anim::anim_first_frame_solo(var_05,"jammerplant_2");
|
|
var_06 = maps\_utility::spawn_anim_model("jammer");
|
|
var_01 = [var_05,var_06];
|
|
level.player playerlinktoblend(var_05,"tag_player",0.4);
|
|
wait(0.4);
|
|
var_05 show();
|
|
level.player enableinvulnerability();
|
|
thread deck_jammer_rumbles();
|
|
var_00 maps\_anim::anim_single(var_01,"jammerplant_2");
|
|
level.player disableinvulnerability();
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
var_05 delete();
|
|
level.player unlink();
|
|
}
|
|
|
|
//Function Number: 43
|
|
deck_jammer_rumbles()
|
|
{
|
|
maps\sanfran_b_util::setup_level_rumble_ent();
|
|
wait(0.5);
|
|
thread maps\sanfran_b_util::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.2,0.2);
|
|
wait(0.5);
|
|
thread maps\sanfran_b_util::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.2,0.3);
|
|
wait(0.5);
|
|
thread maps\sanfran_b_util::rumble_set_ent_rumble_intensity_for_time(level.rumble_ent,0.5,0.2);
|
|
}
|
|
|
|
//Function Number: 44
|
|
player_jammer_movie()
|
|
{
|
|
level endon("stop_jammer_movie");
|
|
level endon("boosters_off_anim_finished");
|
|
setsaveddvar("cg_cinematicFullScreen","0");
|
|
cinematicingame("jammer_UI_loop",0,1,1);
|
|
thread stop_jammer_movie();
|
|
}
|
|
|
|
//Function Number: 45
|
|
stop_jammer_movie()
|
|
{
|
|
level endon("boosters_off_anim_finished");
|
|
level waittill("stop_jammer_movie");
|
|
stopcinematicingame();
|
|
}
|
|
|
|
//Function Number: 46
|
|
jammer_1_defenders_logic()
|
|
{
|
|
maps\_utility::ent_flag_init("player_damaged_me");
|
|
maps\_utility::add_damage_function(::defender_damage_func);
|
|
thread track_player();
|
|
thread unlock_on_death();
|
|
thread maps\sanfran_b_util::equip_microwave_grenade();
|
|
}
|
|
|
|
//Function Number: 47
|
|
mob_entrance_defenders_logic()
|
|
{
|
|
maps\_utility::ent_flag_init("player_damaged_me");
|
|
maps\_utility::add_damage_function(::defender_damage_func);
|
|
}
|
|
|
|
//Function Number: 48
|
|
track_player()
|
|
{
|
|
self endon("death");
|
|
if(!isdefined(level.guy_tracking_player))
|
|
{
|
|
level.guy_tracking_player = 0;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
if(common_scripts\utility::cointoss() && !level.guy_tracking_player)
|
|
{
|
|
maps\_utility::set_goal_entity(level.player);
|
|
level.guy_tracking_player = 1;
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 49
|
|
unlock_on_death()
|
|
{
|
|
self waittill("death");
|
|
level.guy_tracking_player = 0;
|
|
}
|
|
|
|
//Function Number: 50
|
|
defender_damage_func(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
|
{
|
|
if(isdefined(param_01))
|
|
{
|
|
if(!isplayer(param_01))
|
|
{
|
|
if(!maps\_utility::ent_flag("player_damaged_me"))
|
|
{
|
|
return param_00 / 20;
|
|
}
|
|
|
|
return param_00;
|
|
}
|
|
|
|
if(!maps\_utility::ent_flag("player_damaged_me"))
|
|
{
|
|
maps\_utility::ent_flag_set("player_damaged_me");
|
|
}
|
|
|
|
return param_00;
|
|
}
|
|
}
|
|
|
|
//Function Number: 51
|
|
on_the_way_to_jammer_2()
|
|
{
|
|
var_00 = maps\_utility::array_spawn_noteworthy("jammer_2_enemies",1,1);
|
|
common_scripts\utility::array_thread(var_00,::track_player);
|
|
common_scripts\utility::array_thread(var_00,::unlock_on_death);
|
|
common_scripts\utility::array_thread(var_00,::deck_reinforcement_modify_accuracy);
|
|
maps\_utility::trigger_wait_targetname("trig_jammer_2_wave_2");
|
|
var_00 = maps\_utility::array_spawn_noteworthy("jammer_2_enemies_wave_2",1,1);
|
|
common_scripts\utility::array_thread(var_00,::track_player);
|
|
common_scripts\utility::array_thread(var_00,::unlock_on_death);
|
|
common_scripts\utility::array_thread(var_00,::deck_reinforcement_modify_accuracy);
|
|
}
|
|
|
|
//Function Number: 52
|
|
mobile_cover_anim()
|
|
{
|
|
var_00 = common_scripts\utility::getstruct("org_mobile_cover","targetname");
|
|
var_01 = getent("mobile_cover_guy1","targetname") maps\_utility::spawn_ai(1);
|
|
var_01.animname = "guy1";
|
|
var_01 maps\_utility::deletable_magic_bullet_shield();
|
|
var_02 = getent("mobile_cover_guy2","targetname") maps\_utility::spawn_ai(1);
|
|
var_02.animname = "guy2";
|
|
var_02 maps\_utility::deletable_magic_bullet_shield();
|
|
var_03 = spawn("script_model",var_00.origin);
|
|
var_03 setmodel("vehicle_mobile_cover");
|
|
var_03.animname = "mobile_cover";
|
|
var_03 maps\_utility::assign_animtree("mobile_cover");
|
|
var_03 thread mobile_cover_badplace();
|
|
var_04 = [var_01,var_02,var_03];
|
|
var_00 maps\_anim::anim_single_run(var_04,"deck_mobile_cover");
|
|
var_02 maps\_utility::stop_magic_bullet_shield();
|
|
var_02 kill();
|
|
var_02 startragdoll();
|
|
var_05 = spawn("script_origin",(0,0,0));
|
|
var_05.origin = var_03.origin;
|
|
var_06 = var_03.angles + (-90,90,0);
|
|
var_03 setmodel("vehicle_mobile_cover_dstrypv");
|
|
var_03 notify("stop_mobile_cover_badplace");
|
|
earthquake(1,1.6,var_05.origin,625);
|
|
radiusdamage(var_05.origin,200,200,100,undefined,"MOD_EXPLOSIVE");
|
|
physicsexplosionsphere(var_05.origin,200,10,1);
|
|
}
|
|
|
|
//Function Number: 53
|
|
mobile_cover_badplace()
|
|
{
|
|
self endon("stop_mobile_cover_badplace");
|
|
for(;;)
|
|
{
|
|
badplace_cylinder("mobile_cover_badplace",0.25,self.origin,96,96,"axis","allies");
|
|
wait(0.25);
|
|
}
|
|
}
|
|
|
|
//Function Number: 54
|
|
setup_deck_deploy_warbird()
|
|
{
|
|
maps\_vehicle::godon();
|
|
thread warbird_turret_off_after_deploy();
|
|
thread maps\sanfran_b_util::warbird_shooting_think(1);
|
|
waittillframeend;
|
|
self notify("warbird_fire");
|
|
var_00 = maps\sanfran_b_util::get_passengers();
|
|
var_00 thread maps\sanfran_b_util::ignore_until_unloaded();
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(var_02.vehicle_position == 0)
|
|
{
|
|
var_02 maps\_utility::gun_remove();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 55
|
|
warbird_turret_off_after_deploy()
|
|
{
|
|
self endon("death");
|
|
self waittill("unloaded");
|
|
self notify("warbird_stop_firing");
|
|
}
|
|
|
|
//Function Number: 56
|
|
friendly_airstrike(param_00)
|
|
{
|
|
level.airstrike_drones = param_00;
|
|
level.airstrike_drones common_scripts\utility::array_thread(param_00,::remove_from_array_when_dead);
|
|
maps\_utility::trigger_wait_targetname("trig_friendly_airstrike");
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname("friendly_air_strike");
|
|
var_01 soundscripts\_snd::snd_message("shrike_flyby_03");
|
|
var_01 maps\_utility::ent_flag_init("airstrike_fire");
|
|
var_01 thread maps\_vehicle::gopath();
|
|
var_01 maps\_utility::ent_flag_wait("airstrike_fire");
|
|
}
|
|
|
|
//Function Number: 57
|
|
remove_from_array_when_dead()
|
|
{
|
|
self waittill("death");
|
|
level.airstrike_drones = common_scripts\utility::array_remove(level.airstrike_drones,self);
|
|
}
|
|
|
|
//Function Number: 58
|
|
deck_drones(param_00)
|
|
{
|
|
var_01 = undefined;
|
|
thread vehicle_scripts\_pdrone_tactical_picker::main();
|
|
if(param_00 == "left")
|
|
{
|
|
var_01 = vehicle_scripts\_pdrone::start_flying_attack_drones("deck_reinforcement_drones_left");
|
|
}
|
|
|
|
if(param_00 == "right")
|
|
{
|
|
var_01 = vehicle_scripts\_pdrone::start_flying_attack_drones("deck_reinforcement_drones_right");
|
|
}
|
|
|
|
if(isdefined(var_01))
|
|
{
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_b_util::setup_atlas_drone,"flag_cleanup_deck_drones");
|
|
return var_01;
|
|
}
|
|
}
|
|
|
|
//Function Number: 59
|
|
jammer_3_navy_drone_combat()
|
|
{
|
|
var_00 = maps\_utility::array_spawn_noteworthy("jammer_3_navy_drone_guys",0,1);
|
|
level.jammer_3_navy_guys = [];
|
|
level.jammer_3_navy_guys = var_00;
|
|
common_scripts\utility::array_thread(var_00,::jammer_3_navy_drone_guy_setup);
|
|
common_scripts\utility::array_thread(var_00,::jammer_3_remove_from_array_when_dead,"navy");
|
|
maps\_utility::activate_trigger_with_targetname("trig_jammer_3_navy_drone_movement");
|
|
thread vehicle_scripts\_pdrone_tactical_picker::main();
|
|
var_01 = vehicle_scripts\_pdrone::start_flying_attack_drones("jammer_3_navy_drone_drones");
|
|
level.jammer_3_drones = [];
|
|
level.jammer_3_drones = var_01;
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_b_util::setup_atlas_drone,"flag_cleanup_deck_drones");
|
|
common_scripts\utility::array_thread(var_01,::jammer_3_remove_from_array_when_dead,"drones");
|
|
common_scripts\utility::array_thread(var_01,::jammer_3_navy_drone_drones_setup);
|
|
}
|
|
|
|
//Function Number: 60
|
|
jammer_3_remove_from_array_when_dead(param_00)
|
|
{
|
|
var_01 = undefined;
|
|
self waittill("death");
|
|
if(param_00 == "navy")
|
|
{
|
|
var_01 = level.jammer_3_navy_guys;
|
|
}
|
|
else
|
|
{
|
|
var_01 = level.jammer_3_drones;
|
|
}
|
|
|
|
var_01 = common_scripts\utility::array_remove(var_01,self);
|
|
}
|
|
|
|
//Function Number: 61
|
|
jammer_3_navy_drone_guy_setup()
|
|
{
|
|
self endon("death");
|
|
maps\_utility::add_damage_function(::navy_drone_guys_damage_func);
|
|
}
|
|
|
|
//Function Number: 62
|
|
deck_enemies_cleared()
|
|
{
|
|
for(;;)
|
|
{
|
|
var_00 = getaiarray("axis");
|
|
level.deck_drones = maps\_utility::array_removedead(level.deck_drones);
|
|
if(var_00.size == 0 && level.deck_drones.size == 0)
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
var_00 = getaiarray("allies");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(var_02 == level.cormack || var_02 == level.burke || var_02 == level.maddox)
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
var_02 thread maps\_utility::set_fixednode_true();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 63
|
|
navy_drone_guys_damage_func(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
|
{
|
|
if(isdefined(param_01) && param_01.classname == "script_vehicle_pdrone_atlas")
|
|
{
|
|
return param_00 * 2;
|
|
}
|
|
}
|
|
|
|
//Function Number: 64
|
|
jammer_3_navy_drone_drones_setup()
|
|
{
|
|
maps\_utility::add_damage_function(::navy_drone_drones_damage_func);
|
|
}
|
|
|
|
//Function Number: 65
|
|
navy_drone_drones_damage_func(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
|
{
|
|
if(isdefined(param_01) && maps\_utility::is_in_array(level.jammer_3_navy_guys,param_01))
|
|
{
|
|
return param_00 / 4;
|
|
}
|
|
}
|
|
|
|
//Function Number: 66
|
|
jammer_3_shrike_flyby(param_00)
|
|
{
|
|
param_00 waittill("unloaded");
|
|
wait(3);
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("jammer_3_shrike_1");
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("jammer_3_shrike_2");
|
|
soundscripts\_snd::snd_message("shrike_flyby_pair_04",var_01,var_02);
|
|
}
|
|
|
|
//Function Number: 67
|
|
wait_for_all_deck_warbirds_to_unload()
|
|
{
|
|
common_scripts\utility::flag_wait_all("deck_warbird_3_unloaded","deck_warbird_4_unloaded");
|
|
common_scripts\utility::flag_set("all_deck_warbirds_deployed");
|
|
}
|
|
|
|
//Function Number: 68
|
|
missile_turrets_on()
|
|
{
|
|
common_scripts\utility::flag_wait("all_deck_warbirds_deployed");
|
|
wait(3);
|
|
var_00 = getentarray("missile_launcher_1","targetname");
|
|
if(!isdefined(var_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02.missile_starts = getentarray(var_02.target,"targetname");
|
|
if(!isdefined(var_02.missile_starts))
|
|
{
|
|
return;
|
|
}
|
|
|
|
foreach(var_04 in var_02.missile_starts)
|
|
{
|
|
var_04 linkto(var_02);
|
|
}
|
|
|
|
var_02 thread missile_turret_think();
|
|
}
|
|
}
|
|
|
|
//Function Number: 69
|
|
missile_turret_think()
|
|
{
|
|
level endon("stop_ship_weapons");
|
|
for(;;)
|
|
{
|
|
self rotateto((0,randomintrange(180,360),0),1.5,0.25,0.25);
|
|
wait(1.5);
|
|
foreach(var_01 in self.missile_starts)
|
|
{
|
|
var_02 = anglestoforward(var_01.angles);
|
|
var_02 = var_02 * 5000;
|
|
var_02 = var_02 + (randomintrange(500,1000),randomintrange(500,1000),randomintrange(1000,2000));
|
|
magicbullet("mob_missile",var_01.origin,var_01.origin + var_02);
|
|
if(distance(self.origin,level.player.origin) <= 512)
|
|
{
|
|
earthquake(0.3,1,self.origin,1024);
|
|
level.player playrumbleonentity("heavy_1s");
|
|
}
|
|
}
|
|
|
|
wait(randomfloatrange(10,20));
|
|
}
|
|
}
|
|
|
|
//Function Number: 70
|
|
boosters_off_anim(param_00)
|
|
{
|
|
common_scripts\utility::flag_wait("flag_move_gideon_into_interior");
|
|
var_01 = common_scripts\utility::getstruct("org_squad_enter_mob","targetname");
|
|
level.burke maps\_utility::ent_flag_init("at_boosters_off");
|
|
if(!isdefined(param_00) || !param_00)
|
|
{
|
|
level.burke thread go_to_boosters_off_and_first_frame(var_01);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_obj_marker_enter_ship");
|
|
level.cormack maps\_utility::ent_flag_init("at_boosters_off");
|
|
level.maddox maps\_utility::ent_flag_init("at_boosters_off");
|
|
var_02 = [level.cormack,level.burke,level.maddox];
|
|
if(!isdefined(param_00) || !param_00)
|
|
{
|
|
level.cormack thread go_to_boosters_off_and_first_frame(var_01);
|
|
level.maddox thread go_to_boosters_off_and_first_frame(var_01);
|
|
}
|
|
else
|
|
{
|
|
level.cormack maps\_utility::ent_flag_set("at_boosters_off");
|
|
level.burke maps\_utility::ent_flag_set("at_boosters_off");
|
|
level.maddox maps\_utility::ent_flag_set("at_boosters_off");
|
|
var_01 maps\_anim::anim_first_frame(var_02,"boosters_off");
|
|
}
|
|
|
|
level.cormack maps\_utility::ent_flag_wait("at_boosters_off");
|
|
level.burke maps\_utility::ent_flag_wait("at_boosters_off");
|
|
level.maddox maps\_utility::ent_flag_wait("at_boosters_off");
|
|
common_scripts\utility::flag_wait("flag_player_entered_interior");
|
|
common_scripts\utility::flag_set("flag_cleanup_deck_drones");
|
|
var_02 = getaiarray("axis");
|
|
if(var_02.size > 0)
|
|
{
|
|
foreach(var_04 in var_02)
|
|
{
|
|
var_04 thread maps\sanfran_b_util::bloody_death(randomfloatrange(0,2));
|
|
}
|
|
}
|
|
|
|
soundscripts\_snd::snd_message("enter_ship");
|
|
common_scripts\utility::flag_set("boosters_off_anim_started");
|
|
level.idle_org = var_01;
|
|
var_01 notify("stop_wait_idle");
|
|
level.burke thread play_boosters_off_anim(var_01);
|
|
level.maddox thread play_boosters_off_anim(var_01);
|
|
var_01 maps\_anim::anim_single_solo(level.cormack,"boosters_off");
|
|
common_scripts\utility::flag_set("boosters_off_anim_finished");
|
|
foreach(var_04 in var_02)
|
|
{
|
|
var_04 maps\_utility::enable_cqbwalk();
|
|
var_04 maps\_utility::enable_ai_color();
|
|
var_04.ignoreall = 0;
|
|
}
|
|
|
|
thread squad_move_interior();
|
|
maps\_utility::battlechatter_off("allies");
|
|
maps\_utility::battlechatter_off("axis");
|
|
}
|
|
|
|
//Function Number: 71
|
|
play_boosters_off_anim(param_00)
|
|
{
|
|
param_00 maps\_anim::anim_single_solo(self,"boosters_off");
|
|
param_00 thread maps\_anim::anim_loop_solo(self,"boosters_off_idle","stop_idle");
|
|
}
|
|
|
|
//Function Number: 72
|
|
go_to_boosters_off_and_first_frame(param_00)
|
|
{
|
|
param_00 maps\_anim::anim_reach_solo(self,"boosters_off");
|
|
maps\_utility::ent_flag_set("at_boosters_off");
|
|
param_00 maps\_anim::anim_first_frame_solo(self,"boosters_off");
|
|
param_00 maps\_anim::anim_loop_solo(self,"boosters_off_wait_idle","stop_wait_idle");
|
|
}
|
|
|
|
//Function Number: 73
|
|
squad_move_interior()
|
|
{
|
|
foreach(var_01 in level.heroes)
|
|
{
|
|
var_01 maps\_utility::enable_ai_color_dontmove();
|
|
var_01.fixednode = 1;
|
|
}
|
|
}
|
|
|
|
//Function Number: 74
|
|
crouch_until_door_open()
|
|
{
|
|
self waittill("goal");
|
|
self allowedstances("crouch");
|
|
self waittill("door_open");
|
|
self allowedstances("stand","crouch","prone");
|
|
}
|
|
|
|
//Function Number: 75
|
|
crouch_until_path_to_door(param_00)
|
|
{
|
|
param_00 waittill("boosters_off");
|
|
self allowedstances("crouch");
|
|
self waittill("path_to_door");
|
|
self allowedstances("stand","crouch","prone");
|
|
}
|
|
|
|
//Function Number: 76
|
|
cqb_test()
|
|
{
|
|
level.player endon("end_cqb");
|
|
level.player giveweapon("iw5_m160cqb_sp_cqbreddot");
|
|
level.player giveweapon("iw5_m160_sp_deam160_variablereddot");
|
|
level.player switchtoweaponimmediate("iw5_m160cqb_sp_cqbreddot");
|
|
level.player setstance("crouch");
|
|
thread player_cqb_on();
|
|
level.player notifyonplayercommand("stance_switched","+stance");
|
|
for(;;)
|
|
{
|
|
level.player waittill("stance_switched");
|
|
wait(0.5);
|
|
if(level.player getstance() == "crouch")
|
|
{
|
|
thread player_cqb_on();
|
|
continue;
|
|
}
|
|
|
|
thread player_cqb_off();
|
|
}
|
|
}
|
|
|
|
//Function Number: 77
|
|
rock_the_boat()
|
|
{
|
|
thread boat_rock_check_triggers();
|
|
var_00 = 3;
|
|
for(;;)
|
|
{
|
|
while(level.waves == 1)
|
|
{
|
|
var_01 = getdvar("phys_gravityChangeWakeupRadius");
|
|
setsaveddvar("phys_gravityChangeWakeupRadius",2000);
|
|
level.ground_ref_ent rotateto((-1,0,0),var_00,1,1);
|
|
soundscripts\_snd::snd_message("if_the_boat_is_a_rockin_dont_come_a_knockin","interior");
|
|
wait(3.1);
|
|
level.ground_ref_ent rotateto((-5,0,5),var_00,1,1);
|
|
soundscripts\_snd::snd_message("if_the_boat_is_a_rockin_dont_come_a_knockin","interior");
|
|
wait(3.3);
|
|
setsaveddvar("phys_gravityChangeWakeupRadius",var_01);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 78
|
|
boat_rock_check_triggers()
|
|
{
|
|
thread wait_for_true();
|
|
thread wait_for_true2();
|
|
thread wait_for_true3();
|
|
thread wait_for_true4();
|
|
thread wait_for_true5();
|
|
thread wait_for_false();
|
|
thread wait_for_false2();
|
|
thread wait_for_false3();
|
|
thread wait_for_false4();
|
|
thread wait_for_false5();
|
|
thread wait_for_false6();
|
|
}
|
|
|
|
//Function Number: 79
|
|
wait_for_false()
|
|
{
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("waves_off");
|
|
level.waves = 0;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 80
|
|
wait_for_false2()
|
|
{
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("waves_off2");
|
|
level.waves = 0;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 81
|
|
wait_for_false3()
|
|
{
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("waves_off3");
|
|
level.waves = 0;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 82
|
|
wait_for_false4()
|
|
{
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("waves_off4");
|
|
level.waves = 0;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 83
|
|
wait_for_false5()
|
|
{
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("waves_off5");
|
|
level.waves = 0;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 84
|
|
wait_for_false6()
|
|
{
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("waves_off6");
|
|
level.waves = 0;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 85
|
|
wait_for_true()
|
|
{
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("waves_on");
|
|
level.waves = 1;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 86
|
|
wait_for_true2()
|
|
{
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("waves_on2");
|
|
level.waves = 1;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 87
|
|
wait_for_true3()
|
|
{
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("waves_on3");
|
|
level.waves = 1;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 88
|
|
wait_for_true4()
|
|
{
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("waves_on4");
|
|
level.waves = 1;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 89
|
|
wait_for_true5()
|
|
{
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("waves_on5");
|
|
level.waves = 1;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 90
|
|
end_cqb()
|
|
{
|
|
level.player endon("death");
|
|
maps\_utility::trigger_wait_targetname("trig_spawn_navy_allies_hangar");
|
|
thread player_cqb_off();
|
|
level.player notify("end_cqb");
|
|
level.player takeweapon("iw5_m160cqb_sp_cqbreddot");
|
|
level.player switchtoweaponimmediate("iw5_m160_sp_deam160_variablereddot");
|
|
}
|
|
|
|
//Function Number: 91
|
|
player_cqb_on()
|
|
{
|
|
level.player notify("cqb_mode_toggled");
|
|
level.player.cqb_mode = 1;
|
|
level.player setmovespeedscale(1.25);
|
|
thread maps\_utility::lerp_fov_overtime(0.15,60);
|
|
if(level.nextgen)
|
|
{
|
|
thread cqb_dof_on();
|
|
}
|
|
}
|
|
|
|
//Function Number: 92
|
|
player_cqb_off()
|
|
{
|
|
level.player notify("cqb_mode_toggled");
|
|
level.player.cqb_mode = undefined;
|
|
level.player setmovespeedscale(1);
|
|
thread maps\_utility::lerp_fov_overtime(0.15,65);
|
|
if(level.nextgen)
|
|
{
|
|
thread cqb_dof_off();
|
|
}
|
|
}
|
|
|
|
//Function Number: 93
|
|
cqb_dof_on()
|
|
{
|
|
if(level.nextgen)
|
|
{
|
|
maps\_lighting::create_dof_preset("cqb_dof",10,250,10,3000,9000,3,0.5);
|
|
}
|
|
}
|
|
|
|
//Function Number: 94
|
|
cqb_dof_off()
|
|
{
|
|
if(level.nextgen)
|
|
{
|
|
}
|
|
}
|
|
|
|
//Function Number: 95
|
|
handle_enemy_when_player_is_in_cqb()
|
|
{
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
level.player waittill("cqb_mode_toggled");
|
|
if(isdefined(level.player.cqb_mode) && level.player.cqb_mode)
|
|
{
|
|
self.moveplaybackrate = 0.8;
|
|
continue;
|
|
}
|
|
|
|
self.moveplaybackrate = 1;
|
|
}
|
|
}
|
|
|
|
//Function Number: 96
|
|
open_door_anim()
|
|
{
|
|
level.player endon("death");
|
|
common_scripts\utility::flag_wait("boosters_off_anim_finished");
|
|
var_00 = common_scripts\utility::getstruct("org_squad_enter_mob","targetname");
|
|
var_00 thread maps\_anim::anim_loop_solo(level.cormack,"boosters_off_idle","stop_loop");
|
|
maps\_utility::trigger_wait_targetname("trig_open_initial_door_anim");
|
|
if(level.currentgen)
|
|
{
|
|
thread transient_intro_to_middle();
|
|
}
|
|
|
|
var_01 = [level.interior_door,level.cormack];
|
|
level.cormack notify("path_to_door");
|
|
var_00 notify("stop_loop");
|
|
var_00 maps\_anim::anim_reach_solo(level.cormack,"ripopen_bulkhead");
|
|
level.cormack soundscripts\_snd::snd_message("aud_burke_open_door");
|
|
var_02 = getent("door_open_clip","targetname");
|
|
var_02 linkto(level.interior_door,"doorhinge");
|
|
var_00 thread maps\_anim::anim_single_solo_run(level.cormack,"ripopen_bulkhead");
|
|
maps\_utility::activate_trigger_with_targetname("trig_cormack_move_interior_post_door");
|
|
if(level.currentgen)
|
|
{
|
|
thread maps\_utility::tff_sync(11);
|
|
}
|
|
|
|
var_00 maps\_anim::anim_single_solo(level.interior_door,"ripopen_bulkhead");
|
|
soundscripts\_snd::snd_message("interior_door1_done");
|
|
var_03 = getent("interior_exit_clip","targetname");
|
|
var_03 connectpaths();
|
|
var_03 delete();
|
|
var_02 connectpaths();
|
|
maps\_utility::autosave_by_name();
|
|
}
|
|
|
|
//Function Number: 97
|
|
transient_intro_to_middle()
|
|
{
|
|
level notify("tff_pre_transition_intro_to_outro");
|
|
loadtransient("sanfran_b_outro_tr");
|
|
while(!istransientloaded("sanfran_b_outro_tr"))
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
level notify("tff_post_transition_intro_to_outro");
|
|
maps\_utility::trigger_wait_targetname("unload_intro_transient");
|
|
unloadtransient("sanfran_b_intro_tr");
|
|
level.interior_door clearanim(level.interior_door maps\_utility::getanim("ripopen_bulkhead"),1);
|
|
}
|
|
|
|
//Function Number: 98
|
|
exo_takedown()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_squad_move_interior_post_door");
|
|
level.idle_org notify("stop_idle");
|
|
level.burke maps\_utility::anim_stopanimscripted();
|
|
level.maddox maps\_utility::anim_stopanimscripted();
|
|
level.burke notify("door_open");
|
|
level.maddox notify("door_open");
|
|
level.cormack notify("door_open");
|
|
var_00 = common_scripts\utility::getstruct("org_exo_takedown","targetname");
|
|
var_01 = getent("exo_takedown_guy2","targetname");
|
|
var_00 maps\_anim::anim_reach_solo(level.cormack,"exo_takedown");
|
|
var_02 = var_01 maps\_utility::spawn_ai();
|
|
if(isdefined(var_02))
|
|
{
|
|
level.takedownenemy1 = var_02;
|
|
var_02.animname = "guy2";
|
|
var_02.ignoreme = 1;
|
|
var_02.ignoreall = 1;
|
|
var_02.ignoresonicaoe = 1;
|
|
var_02 soundscripts\_snd::snd_message("aud_burke_takedown");
|
|
var_03 = [level.cormack,var_02];
|
|
common_scripts\utility::flag_set("exo_takedown_started");
|
|
var_00 maps\_anim::anim_single_run(var_03,"exo_takedown");
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_set("exo_takedown_started");
|
|
level.cormack maps\_utility::enable_ai_color_dontmove();
|
|
maps\_utility::activate_trigger_with_targetname("trig_post_exo_takedown_move");
|
|
}
|
|
|
|
level.cormack thread hand_signal_to_cafeteria();
|
|
var_03 = getaiarray("allies");
|
|
foreach(var_05 in var_03)
|
|
{
|
|
if(maps\_utility::is_in_array(level.heroes,var_05))
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
var_05 delete();
|
|
}
|
|
}
|
|
|
|
maps\_utility::battlechatter_on("allies");
|
|
maps\_utility::battlechatter_on("axis");
|
|
thread rock_the_boat();
|
|
}
|
|
|
|
//Function Number: 99
|
|
interior_shake_1()
|
|
{
|
|
var_00 = getdvar("phys_gravityChangeWakeupRadius");
|
|
setsaveddvar("phys_gravityChangeWakeupRadius",2000);
|
|
maps\_utility::trigger_wait_targetname("trig_interior_shake_1");
|
|
soundscripts\_snd::snd_message("if_the_boat_is_a_rockin_dont_come_a_knockin","interior");
|
|
soundscripts\_snd::snd_message("power_outage_audio");
|
|
level.player playrumbleonentity("heavy_2s");
|
|
earthquake(0.3,2,level.player.origin,1024);
|
|
wait(2.5);
|
|
soundscripts\_snd::snd_message("if_the_boat_is_a_rockin_dont_come_a_knockin","interior");
|
|
level.player playrumbleonentity("heavy_2s");
|
|
earthquake(0.3,2,level.player.origin,1024);
|
|
wait(3);
|
|
setsaveddvar("phys_gravityChangeWakeupRadius",var_00);
|
|
}
|
|
|
|
//Function Number: 100
|
|
hangar_jet_flyby()
|
|
{
|
|
level.player endon("death");
|
|
maps\_utility::trigger_wait_targetname("trig_hangar_jet_flyby");
|
|
level notify("stop_ship_weapons");
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("hangar_jet_flyby_1");
|
|
wait(0.5);
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("hangar_jet_flyby_2");
|
|
}
|
|
|
|
//Function Number: 101
|
|
give_night_vision()
|
|
{
|
|
level endon("flag_end_sonar_vision");
|
|
level.player setweaponhudiconoverride("actionslot1","dpad_icon_nvg");
|
|
level.player notifyonplayercommand("sonar_vision","+actionslot 1");
|
|
level.player thread thermal_with_nvg();
|
|
}
|
|
|
|
//Function Number: 102
|
|
hand_signal_to_cafeteria()
|
|
{
|
|
self endon("end_hand_signal_to_caf");
|
|
thread end_hand_signal_to_caf();
|
|
self waittill("goal");
|
|
maps\_utility::trigger_wait_targetname("trig_burke_hand_signal_to_caf");
|
|
maps\_anim::anim_single_solo(self,"signal_moveout_coverL");
|
|
maps\_utility::activate_trigger_with_targetname("trig_move_maddox_past_hand_signal");
|
|
self notify("hand_signal_to_caf_finished");
|
|
}
|
|
|
|
//Function Number: 103
|
|
end_hand_signal_to_caf()
|
|
{
|
|
self endon("hand_signal_to_caf_finished");
|
|
maps\_utility::trigger_wait_targetname("trig_interior_vo_1");
|
|
self notify("end_hand_signal_to_caf");
|
|
maps\_utility::activate_trigger_with_targetname("trig_move_maddox_past_hand_signal");
|
|
}
|
|
|
|
//Function Number: 104
|
|
table_pulldown()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_spawn_table_guy");
|
|
var_00 = getent("table_pulldown_guy","targetname");
|
|
var_01 = var_00 maps\_utility::spawn_ai(1);
|
|
var_01.animname = "guy";
|
|
var_01.allowdeath = 1;
|
|
var_01 endon("death");
|
|
var_02 = maps\_utility::spawn_anim_model("cafeteria_table");
|
|
var_03 = [var_01,var_02];
|
|
var_04 = common_scripts\utility::getstruct("org_table_pulldown","targetname");
|
|
if(isdefined(var_01) && isalive(var_01))
|
|
{
|
|
var_04 maps\_anim::anim_first_frame(var_03,"table_pulldown");
|
|
common_scripts\utility::flag_wait("start_table_anim");
|
|
if(isdefined(var_01) && isalive(var_01))
|
|
{
|
|
var_01.allowdeath = 0;
|
|
var_02 soundscripts\_snd::snd_message("aud_table_pulldown");
|
|
var_04 maps\_anim::anim_single(var_03,"table_pulldown");
|
|
var_01.allowdeath = 1;
|
|
var_04 thread maps\_anim::anim_loop_solo(var_01,"table_pulldown_fire_loop");
|
|
var_01 thread table_pulldown_distance_check();
|
|
var_01 maps\_utility::set_deathanim("table_pullddown_death");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 105
|
|
table_pulldown_distance_check()
|
|
{
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
if(distancesquared(self.origin,level.player.origin) < 250000)
|
|
{
|
|
self kill();
|
|
return;
|
|
}
|
|
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 106
|
|
cafeteria_reinforcements()
|
|
{
|
|
level endon("cafeteria_reinforcement_spawn");
|
|
common_scripts\utility::flag_wait("start_table_anim");
|
|
disable_cormack_obj();
|
|
for(;;)
|
|
{
|
|
var_00 = getaicount("axis");
|
|
if(var_00 > 4)
|
|
{
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
maps\_utility::array_spawn_targetname("cafeteria_reinforcements",0,1);
|
|
break;
|
|
}
|
|
|
|
thread cafeteria_squad_pressure();
|
|
}
|
|
|
|
//Function Number: 107
|
|
cafeteria_squad_pressure()
|
|
{
|
|
var_00 = getaicount("axis");
|
|
var_01 = 0;
|
|
while(var_01 == 0)
|
|
{
|
|
var_02 = getaicount("axis");
|
|
var_03 = getnode("red6ix","targetname");
|
|
var_04 = getnode("macros","targetname");
|
|
var_05 = level.cormack;
|
|
if(var_00 <= 4)
|
|
{
|
|
level.burke maps\_utility::set_goal_node(var_04);
|
|
level.cormack maps\_utility::set_goal_node(var_03);
|
|
var_01 = 1;
|
|
break;
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 108
|
|
end_squad_cqb()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_interior_vo_1");
|
|
thread maps\_utility::blend_movespeedscale(1,3);
|
|
foreach(var_01 in level.heroes)
|
|
{
|
|
var_01 maps\_utility::disable_cqbwalk();
|
|
}
|
|
}
|
|
|
|
//Function Number: 109
|
|
move_to_hangar()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_interior_vo_3");
|
|
common_scripts\utility::flag_set("player_exit_cafeteria");
|
|
maps\_utility::trigger_wait_targetname("trig_cleanup_cafe");
|
|
var_00 = getaiarray("axis");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\sanfran_b_util::bloody_death();
|
|
wait(0.4);
|
|
}
|
|
}
|
|
|
|
//Function Number: 110
|
|
hand_signal_to_hangar()
|
|
{
|
|
level.cormack endon("end_hand_signal_to_hangar");
|
|
level.cormack thread end_hand_signal_to_hangar();
|
|
maps\_utility::trigger_wait_targetname("trig_interior_vo_2");
|
|
thread enable_cormack_obj();
|
|
level.cormack waittill("goal");
|
|
maps\_utility::trigger_wait_targetname("trig_interior_vo_3");
|
|
thread maps\sanfran_b_util::hanger_bad_path();
|
|
level.cormack maps\_anim::anim_single_solo(level.cormack,"signal_moveout_coverL");
|
|
level.cormack notify("hand_signal_to_hangar_finished");
|
|
maps\_utility::activate_trigger_with_targetname("trig_caf_to_hangar");
|
|
common_scripts\utility::flag_set("flag_obj_leave_cafeteria");
|
|
}
|
|
|
|
//Function Number: 111
|
|
end_hand_signal_to_hangar()
|
|
{
|
|
level.cormack endon("hand_signal_to_hangar_finished");
|
|
maps\_utility::trigger_wait_targetname("trig_initial_hangar_fight");
|
|
level.cormack notify("end_hand_signal_to_hangar");
|
|
maps\_utility::activate_trigger_with_targetname("trig_caf_to_hangar");
|
|
common_scripts\utility::flag_set("flag_obj_leave_cafeteria");
|
|
}
|
|
|
|
//Function Number: 112
|
|
get_fov_for_player(param_00)
|
|
{
|
|
var_01 = getdvarint("cg_fov");
|
|
var_02 = getdvarfloat("cg_playerFovScale0");
|
|
if(isdefined(level.player2) && param_00 == level.player2)
|
|
{
|
|
var_02 = getdvarfloat("cg_playerFovScale1");
|
|
}
|
|
|
|
return var_01 * var_02;
|
|
}
|
|
|
|
//Function Number: 113
|
|
mark_enemies()
|
|
{
|
|
level.player endon("sonar_vision_off");
|
|
for(;;)
|
|
{
|
|
foreach(var_01 in getaiarray("axis"))
|
|
{
|
|
var_01 hudoutlineenable(1,1,0);
|
|
var_01.hudoutlineenabledbysonarvision = 1;
|
|
}
|
|
|
|
foreach(var_04 in getaiarray("allies"))
|
|
{
|
|
var_04 hudoutlineenable(2,1,0);
|
|
var_04.hudoutlineenabledbysonarvision = 1;
|
|
}
|
|
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 114
|
|
is_sonar_vision_allowed()
|
|
{
|
|
var_00 = level.player getcurrentweapon();
|
|
if(weaponhasthermalscope(var_00) && level.player playerads() > 0)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 115
|
|
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: 116
|
|
thermal_with_nvg()
|
|
{
|
|
level endon("flag_end_sonar_vision");
|
|
var_00 = undefined;
|
|
var_01 = undefined;
|
|
var_02 = undefined;
|
|
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: 117
|
|
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: 118
|
|
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: 119
|
|
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;
|
|
}
|
|
|
|
level.player lightsetoverrideenableforplayer("sanfran_b_sonar_vision",var_00);
|
|
level.player setclutoverrideenableforplayer("clut_sonar",var_00);
|
|
soundscripts\_snd::snd_message("aud_sonar_vision_on");
|
|
level.player.sonar_vision = 1;
|
|
level notify("sonar_update");
|
|
}
|
|
|
|
//Function Number: 120
|
|
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: 121
|
|
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: 122
|
|
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: 123
|
|
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;
|
|
}
|
|
|
|
//Function Number: 124
|
|
boat_rocking_hangar()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_boat_rock_to_hangar");
|
|
thread maps\sanfran_b_lighting::lerp_sun_01();
|
|
var_00 = getdvar("phys_gravityChangeWakeupRadius");
|
|
setsaveddvar("phys_gravityChangeWakeupRadius",2000);
|
|
level.player playrumbleonentity("heavy_2s");
|
|
earthquake(0.3,2,level.player.origin,1024);
|
|
soundscripts\_snd::snd_message("pre_hangar_hall_explosion");
|
|
wait(2.5);
|
|
level.player playrumbleonentity("heavy_2s");
|
|
earthquake(0.3,2,level.player.origin,1024);
|
|
soundscripts\_snd::snd_message("pre_hangar_hall_explosion");
|
|
wait(3);
|
|
setsaveddvar("phys_gravityChangeWakeupRadius",var_00);
|
|
}
|
|
|
|
//Function Number: 125
|
|
boat_rocking_jet_moment()
|
|
{
|
|
}
|
|
|
|
//Function Number: 126
|
|
jet_moment(param_00,param_01,param_02)
|
|
{
|
|
param_01 thread jet_badplace();
|
|
param_00 maps\_anim::anim_single_solo(param_01,"shrike_slide");
|
|
param_02 connectpaths();
|
|
param_02 delete();
|
|
}
|
|
|
|
//Function Number: 127
|
|
jet_badplace()
|
|
{
|
|
thread maps\_vehicle_code::disconnect_paths_whenstopped();
|
|
}
|
|
|
|
//Function Number: 128
|
|
ambient_hangar()
|
|
{
|
|
common_scripts\utility::flag_wait("trig_hangar_vo_1");
|
|
wait(3);
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("hangar_ambient_shrike");
|
|
var_00 soundscripts\_snd::snd_message("shrike_hanger_flyby");
|
|
wait(1);
|
|
var_01 = getentarray("hangar_ambient_drone_swarm","script_noteworthy");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_04 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(var_03.targetname);
|
|
var_04 maps\_utility::ent_flag_set("fire_disabled");
|
|
}
|
|
}
|
|
|
|
//Function Number: 129
|
|
initial_hangar_setup()
|
|
{
|
|
level.player endon("death");
|
|
maps\_utility::trigger_wait_targetname("trig_initial_hangar_fight");
|
|
maps\_utility::array_spawn_noteworthy("initial_hangar_enemies");
|
|
maps\_utility::disable_trigger_with_targetname("cine_copter_trigger");
|
|
}
|
|
|
|
//Function Number: 130
|
|
initial_hangar_guys_invuln()
|
|
{
|
|
self endon("death");
|
|
maps\_utility::magic_bullet_shield();
|
|
maps\_utility::trigger_wait_targetname("trig_spawn_navy_allies_hangar");
|
|
wait(randomfloatrange(0.5,1.5));
|
|
maps\_utility::stop_magic_bullet_shield();
|
|
if(self.team == "allies")
|
|
{
|
|
wait(randomfloatrange(2,7));
|
|
maps\sanfran_b_util::bloody_death();
|
|
}
|
|
}
|
|
|
|
//Function Number: 131
|
|
hangar_combat()
|
|
{
|
|
level.player endon("death");
|
|
maps\_utility::trigger_wait_targetname("trig_spawn_navy_allies_hangar");
|
|
level.burke maps\_utility::disable_cqbwalk();
|
|
level.cormack maps\_utility::disable_cqbwalk();
|
|
level.maddox maps\_utility::disable_cqbwalk();
|
|
var_00 = getent("refl_probe_heli_open","targetname");
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("mi17_hangar_1");
|
|
var_01 soundscripts\_snd::snd_message("warbird_hanger_dropoff");
|
|
var_01 setmaxpitchroll(25,60);
|
|
var_01 overridereflectionprobe(var_00.origin);
|
|
var_01 thread maps\sanfran_b_util::warbird_shooting_think(1);
|
|
var_01 maps\_vehicle::godon();
|
|
var_01 thread hangar_heli_wait_for_unload("hangar_fastzip_1");
|
|
var_01 thread hangar_heli_wait_for_death("hangar_fastzip_1");
|
|
thread hanger_warbird_clip_think("hangar_fastzip_1");
|
|
waittillframeend;
|
|
var_01 thread hanger_warbird_think();
|
|
var_01 notify("warbird_fire");
|
|
var_01 vehicle_removebrushmodelcollision();
|
|
common_scripts\utility::flag_wait("hangar_fastzip_1");
|
|
var_01 notify("warbird_stop_firing");
|
|
maps\_utility::trigger_wait_targetname("trig_move_to_hangar_exit_door");
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("littlebird_overwatch");
|
|
var_02 soundscripts\_snd::snd_message("littlebird_hanger_flyby");
|
|
var_02.ignoreme = 1;
|
|
var_02 maps\_vehicle::godon();
|
|
foreach(var_04 in var_02.riders)
|
|
{
|
|
var_04.ignoreme = 1;
|
|
if(isalive(var_04))
|
|
{
|
|
var_04 maps\_utility::deletable_magic_bullet_shield();
|
|
}
|
|
|
|
if(var_04.vehicle_position == 6 || var_04.vehicle_position == 5)
|
|
{
|
|
var_04 laseron();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 132
|
|
hanger_warbird_clip_think(param_00)
|
|
{
|
|
var_01 = getent("hanger_warbird_clip","targetname");
|
|
common_scripts\utility::flag_wait(param_00);
|
|
wait(2);
|
|
var_01 notsolid();
|
|
}
|
|
|
|
//Function Number: 133
|
|
hanger_warbird_think()
|
|
{
|
|
foreach(var_01 in self.riders)
|
|
{
|
|
if(var_01.vehicle_position == 0)
|
|
{
|
|
var_01 maps\_utility::gun_remove();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 134
|
|
hangar_heli_wait_for_unload(param_00)
|
|
{
|
|
self endon("death");
|
|
self waittill("unloaded");
|
|
if(isdefined(param_00))
|
|
{
|
|
common_scripts\utility::flag_set(param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 135
|
|
hangar_heli_wait_for_death(param_00)
|
|
{
|
|
self endon("unloaded");
|
|
self waittill("death");
|
|
if(isdefined(param_00))
|
|
{
|
|
common_scripts\utility::flag_set(param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 136
|
|
hangar_combat_reinforcements()
|
|
{
|
|
level.player endon("death");
|
|
common_scripts\utility::flag_wait("hangar_fastzip_1");
|
|
maps\sanfran_b_util::wait_for_number_enemies_alive(3);
|
|
common_scripts\utility::flag_set("hangar_reinforcements");
|
|
var_00 = getent("hangar_door_left","targetname");
|
|
var_01 = getent("clip_hangar_door_left","targetname");
|
|
var_02 = common_scripts\utility::getstruct("org_hangar_door_close_left","targetname");
|
|
var_03 = getent("hangar_door_right","targetname");
|
|
var_04 = getent("clip_hangar_door_right","targetname");
|
|
var_05 = common_scripts\utility::getstruct("org_hangar_door_close_right","targetname");
|
|
var_06 = 4;
|
|
var_07 = [var_00,var_03];
|
|
var_08 = var_03.origin;
|
|
soundscripts\_snd::snd_message("hangar_doors_open",var_07,var_06,var_08);
|
|
var_00 moveto(var_02.origin,var_06,0.05,0.15);
|
|
var_01 moveto(var_02.origin,var_06,0.05,0.15);
|
|
var_03 moveto(var_05.origin,var_06,0.05,0.15);
|
|
var_04 moveto(var_05.origin,var_06,0.05,0.15);
|
|
maps\_utility::activate_trigger_with_targetname("trig_move_allies_for_hangar_reinforcements");
|
|
maps\_utility::array_spawn_noteworthy("hangar_enemy_reinforcements_1",1,1);
|
|
var_09 = getent("hangar_enemy_reinforcements_1_mech","script_noteworthy") maps\_utility::spawn_ai(1);
|
|
var_09 thread hanger_mech_think();
|
|
level notify("hangar_reinforcements_spawned");
|
|
maps\_utility::enable_trigger_with_targetname("cine_copter_trigger");
|
|
wait(2);
|
|
var_01 connectpaths();
|
|
var_04 connectpaths();
|
|
wait(5);
|
|
common_scripts\utility::flag_set("ast_vo");
|
|
}
|
|
|
|
//Function Number: 137
|
|
hanger_mech_think()
|
|
{
|
|
self endon("death");
|
|
maps\_mech::mech_start_reduced_nonplayer_damage();
|
|
self setgoalentity(level.player);
|
|
self.favoriteenemy = level.player;
|
|
createthreatbiasgroup("player");
|
|
createthreatbiasgroup("mech");
|
|
level.player setthreatbiasgroup("player");
|
|
self setthreatbiasgroup("mech");
|
|
setthreatbias("player","mech",900000);
|
|
maps\_mech::mech_start_rockets();
|
|
maps\_mech::mech_start_hunting();
|
|
}
|
|
|
|
//Function Number: 138
|
|
wait_for_mech_distance()
|
|
{
|
|
self endon("death");
|
|
var_00 = getent("obj_defend_01","targetname");
|
|
var_01 = 600;
|
|
var_02 = var_01 * var_01;
|
|
while(distancesquared(self.origin,var_00.origin) < var_02)
|
|
{
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 139
|
|
hangar_exit_door()
|
|
{
|
|
level.player endon("death");
|
|
var_00 = common_scripts\utility::getstruct("org_hangar_exit_door","targetname");
|
|
var_01 = maps\_utility::spawn_anim_model("hangar_exit_door");
|
|
var_00 maps\_anim::anim_first_frame_solo(var_01,"hangar_exit");
|
|
level waittill("hangar_reinforcements_spawned");
|
|
maps\sanfran_b_util::wait_for_number_enemies_alive(2);
|
|
var_02 = getaiarray("axis");
|
|
foreach(var_04 in var_02)
|
|
{
|
|
wait(randomfloatrange(0.25,1.25));
|
|
var_04 thread maps\_utility::player_seek_enable();
|
|
}
|
|
|
|
maps\sanfran_b_util::wait_for_number_enemies_alive(0);
|
|
maps\_utility::activate_trigger_with_targetname("trig_move_to_hangar_exit_door");
|
|
common_scripts\utility::flag_set("flag_obj_leave_hanger");
|
|
maps\_utility::trigger_wait_targetname("trig_cormack_to_hangar_door");
|
|
var_02 = [var_01,level.burke];
|
|
var_00 maps\_anim::anim_reach_solo(level.burke,"hangar_exit");
|
|
var_01 soundscripts\_snd::snd_message("aud_hangar_door_exit");
|
|
thread send_cormack();
|
|
var_00 maps\_anim::anim_single(var_02,"hangar_exit");
|
|
level.cormack maps\_utility::enable_ai_color_dontmove();
|
|
level.cormack maps\_utility::enable_sprint();
|
|
maps\_utility::activate_trigger_with_targetname("trig_post_hangar_move");
|
|
maps\_utility::battlechatter_off("allies");
|
|
maps\_utility::battlechatter_off("axis");
|
|
}
|
|
|
|
//Function Number: 140
|
|
send_cormack()
|
|
{
|
|
wait(3.24);
|
|
var_00 = getent("hangar_door_clip","targetname");
|
|
var_00 connectpaths();
|
|
var_00 delete();
|
|
maps\_utility::activate_trigger_with_targetname("cormack_move_fast");
|
|
common_scripts\utility::flag_set("through_door_vo");
|
|
}
|
|
|
|
//Function Number: 141
|
|
hand_signal_after_hangar()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("cormack_move_fast");
|
|
wait(1.5);
|
|
level.maddox.goalradius = 8;
|
|
var_00 = getnode("maddoxnode","targetname");
|
|
level.maddox maps\_utility::set_goal_node(var_00);
|
|
level.maddox waittill("goal");
|
|
wait(2.4);
|
|
level.maddox maps\_anim::anim_single_solo(level.maddox,"signal_moveout_coverL");
|
|
wait(0.1);
|
|
level.maddox.goalradius = 1024;
|
|
level.maddox maps\_utility::enable_ai_color_dontmove();
|
|
maps\_utility::activate_trigger_with_targetname("maddox_move");
|
|
}
|
|
|
|
//Function Number: 142
|
|
sf_b_videolog()
|
|
{
|
|
common_scripts\utility::flag_wait("trig_hangar_ambient_naval_combat");
|
|
maps\_shg_utility::play_videolog("sanfran_b_videolog","screen_add");
|
|
}
|
|
|
|
//Function Number: 143
|
|
door_takedown_door()
|
|
{
|
|
var_00 = maps\_utility::spawn_anim_model("takedown_door");
|
|
var_01 = common_scripts\utility::getstruct("org_bulkhead_takedown","targetname");
|
|
level.takedown_door = var_00;
|
|
var_01 maps\_anim::anim_first_frame_solo(var_00,"door_takedown");
|
|
}
|
|
|
|
//Function Number: 144
|
|
ambient_combat()
|
|
{
|
|
level.player endon("death");
|
|
thread maps\sanfran_b_lighting::play_flickering_info_hallway_light();
|
|
common_scripts\utility::flag_wait("trig_hangar_ambient_naval_combat");
|
|
}
|
|
|
|
//Function Number: 145
|
|
delete_hangar_allies_on_goal()
|
|
{
|
|
if(!isdefined(self.script_parameters))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(self.script_parameters == "delete_on_goal")
|
|
{
|
|
self endon("death");
|
|
self waittill("goal");
|
|
self delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 146
|
|
destroy_cine_helicopter()
|
|
{
|
|
var_00 = getent("missile_launcher_special","targetname");
|
|
var_00.missle_starts = getentarray(var_00.target,"targetname");
|
|
foreach(var_02 in var_00.missle_starts)
|
|
{
|
|
var_02 linkto(var_00);
|
|
}
|
|
|
|
thread beginning_idle_cine_turret();
|
|
common_scripts\utility::flag_wait("DestroyCineCopter");
|
|
level.spawncopter = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("CineWarbird");
|
|
level.spawncopter soundscripts\_snd::snd_message("warbird_flyover_shootdown");
|
|
wait(2);
|
|
var_00 thread turret_targeting();
|
|
wait(1.5);
|
|
shootcineturrets();
|
|
}
|
|
|
|
//Function Number: 147
|
|
turret_targeting()
|
|
{
|
|
level endon("stop_ship_weapons");
|
|
while(isdefined(level.spawncopter))
|
|
{
|
|
var_00 = vectornormalize(level.spawncopter.origin - self.origin);
|
|
var_01 = anglestoforward(self.angles);
|
|
var_02 = vectortoangles(var_00);
|
|
var_03 = vectortoangles(var_01);
|
|
if(var_03[1] > var_02[1])
|
|
{
|
|
var_04 = var_03[1] - var_02[1];
|
|
maps\_utility::_rotateyaw(var_03[1] - var_02[1] * -1,0.5,0.05,0.05);
|
|
continue;
|
|
}
|
|
|
|
if(var_03[1] < var_02[1])
|
|
{
|
|
var_04 = var_02[1] - var_03[1];
|
|
maps\_utility::_rotateyaw(var_02[1] - var_03[1],0.5,0.05,0.05);
|
|
continue;
|
|
}
|
|
|
|
wait(0.05);
|
|
wait(0.05);
|
|
}
|
|
|
|
var_05 = common_scripts\utility::getstruct("helicopter_crash_location","targetname");
|
|
earthquake(0.5,1.5,level.player.origin,1024);
|
|
level.player playrumbleonentity("heavy_2s");
|
|
start_idle_shooting();
|
|
}
|
|
|
|
//Function Number: 148
|
|
shootcineturrets()
|
|
{
|
|
var_00 = getent("missile_launcher_special","targetname");
|
|
var_00.missle_starts = getentarray(var_00.target,"targetname");
|
|
foreach(var_02 in var_00.missle_starts)
|
|
{
|
|
var_03 = magicbullet("mob_missile",var_02.origin,level.spawncopter.origin);
|
|
var_03 missile_settargetent(level.spawncopter);
|
|
wait(0.05);
|
|
}
|
|
|
|
earthquake(0.3,1.5,level.player.origin,1024);
|
|
level.player playrumbleonentity("heavy_2s");
|
|
}
|
|
|
|
//Function Number: 149
|
|
start_idle_shooting()
|
|
{
|
|
level endon("stop_ship_weapons");
|
|
var_00 = getent("missile_launcher_special","targetname");
|
|
var_00.missle_starts = getentarray(var_00.target,"targetname");
|
|
for(;;)
|
|
{
|
|
var_00 rotateto((0,randomintrange(180,360),0),1.5,0.25,0.25);
|
|
wait(1.5);
|
|
foreach(var_02 in var_00.missle_starts)
|
|
{
|
|
var_03 = anglestoforward(var_02.angles);
|
|
var_03 = var_03 * 5000;
|
|
var_03 = var_03 + (randomintrange(500,1000),randomintrange(500,1000),randomintrange(1000,2000));
|
|
magicbullet("mob_missile",var_02.origin,var_02.origin + var_03);
|
|
}
|
|
|
|
wait(randomfloatrange(10,20));
|
|
}
|
|
}
|
|
|
|
//Function Number: 150
|
|
beginning_idle_cine_turret()
|
|
{
|
|
level endon("DestroyCineCopter");
|
|
var_00 = getent("missile_launcher_special","targetname");
|
|
var_00.missle_starts = getentarray(var_00.target,"targetname");
|
|
for(;;)
|
|
{
|
|
var_00 rotateto((0,randomintrange(180,360),0),1.5,0.25,0.25);
|
|
wait(1.5);
|
|
foreach(var_02 in var_00.missle_starts)
|
|
{
|
|
var_03 = anglestoforward(var_02.angles);
|
|
var_03 = var_03 * 5000;
|
|
var_03 = var_03 + (randomintrange(500,1000),randomintrange(500,1000),randomintrange(1000,2000));
|
|
magicbullet("mob_missile",var_02.origin,var_02.origin + var_03);
|
|
}
|
|
|
|
wait(randomfloatrange(10,20));
|
|
}
|
|
}
|
|
|
|
//Function Number: 151
|
|
door_takedown()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_door_takedown");
|
|
var_00 = getent("door_takedown_corner_clip","targetname");
|
|
var_01 = getent("door_takedown_initial_clip","targetname");
|
|
var_01 linkto(level.takedown_door,"doorhinge");
|
|
var_02 = common_scripts\utility::getstruct("org_bulkhead_takedown","targetname");
|
|
var_03 = getent("door_takedown_guy2","targetname");
|
|
if(level.currentgen)
|
|
{
|
|
loadtransient("sanfran_b_intro_tr");
|
|
}
|
|
|
|
if(common_scripts\utility::flag("flag_door_takedown_cormack_ahead") == 1)
|
|
{
|
|
level.cormack maps\_utility::disable_sprint();
|
|
level.cormack.moveplaybackrate = 1.1;
|
|
level.cormack maps\_utility::place_weapon_on(level.cormack.primaryweapon,"chest");
|
|
var_02 maps\_anim::anim_reach_solo(level.cormack,"door_takedown");
|
|
level.cormack soundscripts\_snd::snd_message("aud_door_takedown_mix_handler");
|
|
var_04 = var_03 maps\_utility::spawn_ai(1);
|
|
var_04 thread maps\_utility::deletable_magic_bullet_shield();
|
|
var_04.animname = "guy";
|
|
var_04.ignoreme = 1;
|
|
var_04.ignoreall = 1;
|
|
var_04.ignoresonicaoe = 1;
|
|
var_04 disableaimassist();
|
|
var_04 soundscripts\_snd::snd_message("aud_door_takedown_scream");
|
|
var_05 = [level.takedown_door,var_04];
|
|
var_02 thread maps\_anim::anim_single_solo_run(level.cormack,"door_takedown");
|
|
maps\_utility::activate_trigger_with_targetname("trig_move_cormack_after_takedown");
|
|
var_02 maps\_anim::anim_single(var_05,"door_takedown");
|
|
var_04 maps\_utility::stop_magic_bullet_shield();
|
|
var_04 kill();
|
|
var_04 startragdoll();
|
|
var_01 connectpaths();
|
|
var_00 connectpaths();
|
|
var_00 delete();
|
|
level.cormack thread maps\_utility::place_weapon_on(level.cormack.primaryweapon,"right");
|
|
level.cormack.moveplaybackrate = 1;
|
|
level.cormack maps\sanfran_b_util::disable_awareness();
|
|
maps\_utility::activate_trigger_with_targetname("trig_information_center_vo_1");
|
|
common_scripts\utility::flag_set("flag_information_center_vo_1");
|
|
common_scripts\utility::flag_wait("CormackSafe");
|
|
level.cormack maps\sanfran_b_util::enable_awareness();
|
|
maps\_utility::battlechatter_on("allies");
|
|
maps\_utility::battlechatter_on("axis");
|
|
return;
|
|
}
|
|
|
|
var_04 = var_05 maps\_utility::spawn_ai(1);
|
|
var_05.animname = "guy";
|
|
var_05.ignoreme = 1;
|
|
var_05.ignoresonicaoe = 1;
|
|
var_05 thread enemy_door_ambush_monitor_health();
|
|
var_05 = [level.takedown_door,var_05];
|
|
var_02 maps\_anim::anim_single(var_05,"door_ambush");
|
|
var_04.ignoreme = 0;
|
|
var_01 connectpaths();
|
|
var_00 connectpaths();
|
|
var_00 delete();
|
|
level waittill("surprise_enemy_dead");
|
|
maps\_utility::activate_trigger_with_targetname("trig_move_cormack_after_takedown");
|
|
maps\_utility::activate_trigger_with_targetname("trig_information_center_vo_1");
|
|
common_scripts\utility::flag_set("flag_information_center_vo_1");
|
|
maps\_utility::battlechatter_on("allies");
|
|
maps\_utility::battlechatter_on("axis");
|
|
}
|
|
|
|
//Function Number: 152
|
|
enemy_door_ambush_monitor_health()
|
|
{
|
|
self waittill("death");
|
|
level notify("surprise_enemy_dead");
|
|
}
|
|
|
|
//Function Number: 153
|
|
player_entering_server_room()
|
|
{
|
|
common_scripts\utility::flag_wait("entering_server_room");
|
|
common_scripts\utility::flag_clear("sonar_threat_detection_off");
|
|
soundscripts\_snd::snd_message("enter_server_room");
|
|
}
|
|
|
|
//Function Number: 154
|
|
information_center_combat()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_initial_information_center_combat");
|
|
level.burke maps\_utility::disable_cqbwalk();
|
|
level.cormack maps\_utility::disable_cqbwalk();
|
|
level.maddox maps\_utility::disable_cqbwalk();
|
|
common_scripts\utility::flag_wait("BeginCheckingForLos");
|
|
var_00 = getentarray("toplevelambush_ai","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 thread player_los_check();
|
|
}
|
|
|
|
thread information_center_enemies_charge();
|
|
common_scripts\utility::flag_wait_either("information_center_cleared","information_center_enemies_killed");
|
|
common_scripts\utility::flag_set("flag_bridge");
|
|
soundscripts\_snd::snd_message("enter_bridge");
|
|
thread maps\sanfran_b_lighting::play_flickering_info_light();
|
|
thread maps\sanfran_b_lighting::play_flickering_info_hallway_light();
|
|
thread maps\sanfran_b_lighting::lerp_sun_02();
|
|
}
|
|
|
|
//Function Number: 155
|
|
information_center_enemies_charge()
|
|
{
|
|
level endon("information_center_cleared");
|
|
var_00 = getaiarray("axis");
|
|
var_00 = maps\_utility::remove_dead_from_array(var_00);
|
|
while(var_00.size > 2)
|
|
{
|
|
var_00 = maps\_utility::remove_dead_from_array(var_00);
|
|
wait 0.05;
|
|
}
|
|
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(isalive(var_02))
|
|
{
|
|
var_02 thread maps\_utility::player_seek_enable();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 156
|
|
spawn_last_two_guys()
|
|
{
|
|
level endon("dontspawntroops");
|
|
common_scripts\utility::flag_wait("information_center_enemies_killed");
|
|
common_scripts\utility::flag_wait("toptouched");
|
|
var_00 = getent("lasttroop1","targetname") maps\_utility::spawn_ai();
|
|
var_01 = getent("lasttroop2","targetname") maps\_utility::spawn_ai();
|
|
}
|
|
|
|
//Function Number: 157
|
|
player_los_check()
|
|
{
|
|
self endon("Death");
|
|
for(;;)
|
|
{
|
|
if(self cansee(level.player))
|
|
{
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
self findshufflecovernode();
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 158
|
|
straighten_ship()
|
|
{
|
|
level.ground_ref_ent rotatepitch(5,2);
|
|
soundscripts\_snd::snd_message("if_the_boat_is_a_rockin_dont_come_a_knockin","interior");
|
|
wait(2);
|
|
level.ground_ref_ent rotateroll(-7,2);
|
|
soundscripts\_snd::snd_message("if_the_boat_is_a_rockin_dont_come_a_knockin","interior");
|
|
}
|
|
|
|
//Function Number: 159
|
|
delete_specific_navy_ships()
|
|
{
|
|
var_00 = getentarray("navy_ship","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(isdefined(var_02.script_parameters) && var_02.script_parameters == "delete_on_bridge")
|
|
{
|
|
var_02 delete();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 160
|
|
move_squad_to_bridge()
|
|
{
|
|
maps\_utility::activate_trigger_with_targetname("trig_move_squad_to_bridge");
|
|
wait(0.05);
|
|
maps\_utility::autosave_by_name();
|
|
foreach(var_01 in level.heroes)
|
|
{
|
|
var_01.baseaccuracy = var_01.baseaccuracy * 10;
|
|
}
|
|
}
|
|
|
|
//Function Number: 161
|
|
console_guy()
|
|
{
|
|
soundscripts\_snd::snd_message("cormack_shoots_bridge_guy");
|
|
maps\_utility::trigger_wait_targetname("trig_spawn_console_guy");
|
|
common_scripts\_exploder::exploder(5234);
|
|
thread maps\_shg_fx::vfx_sunflare("sanfran_sunflare_a");
|
|
foreach(var_01 in level.heroes)
|
|
{
|
|
var_01 maps\sanfran_b_util::disable_awareness_limited();
|
|
}
|
|
|
|
level notify("console_guy_spawn");
|
|
var_01 = getent("console_guy","targetname") maps\_utility::spawn_ai(1);
|
|
var_01.animname = "guy";
|
|
var_01 maps\_utility::battlechatter_off();
|
|
var_01.allowdeath = 0;
|
|
var_01 thread maps\_utility::deletable_magic_bullet_shield();
|
|
var_01.ignoresonicaoe = 1;
|
|
level.console_guy = var_01;
|
|
var_03 = common_scripts\utility::getstruct("org_burke_control_room","targetname");
|
|
var_03 thread maps\_anim::anim_loop_solo(var_01,"guy_control_idle","stop_console_loop");
|
|
maps\_utility::trigger_wait_targetname("trig_console_guy_react");
|
|
var_03 notify("stop_console_loop");
|
|
var_01 maps\_utility::anim_stopanimscripted();
|
|
var_01 thread play_blood_fx_when_shot();
|
|
var_03 maps\_anim::anim_single_solo(var_01,"guy_control_to_fire");
|
|
var_01 allowedstances("stand");
|
|
var_01.goalradius = 4;
|
|
var_01 maps\_utility::set_goal_pos(var_01.origin);
|
|
var_01.dontmelee = 1;
|
|
var_01.ignoresuppression = 1;
|
|
var_01.suppressionwait_old = self.suppressionwait;
|
|
var_01.suppressionwait = 0;
|
|
var_01 maps\_utility::disable_surprise();
|
|
var_01.ignorerandombulletdamage = 1;
|
|
var_01 maps\_utility::disable_bulletwhizbyreaction();
|
|
var_01 maps\_utility::disable_pain();
|
|
var_01.grenadeawareness = 0;
|
|
var_01.disablefriendlyfirereaction = 1;
|
|
var_01.dodangerreact = 0;
|
|
var_01 waittill("damage");
|
|
var_01 notify("stop_console_guy_impact_fx");
|
|
var_01.ignoreme = 1;
|
|
var_01.ignoreall = 1;
|
|
var_01 disableaimassist();
|
|
var_01 maps\_utility::pretend_to_be_dead();
|
|
var_03 maps\_anim::anim_single_solo(var_01,"guy_control_react");
|
|
level notify("console_guy_dead");
|
|
var_03 thread maps\_anim::anim_loop_solo(var_01,"guy_control_shot_idle","stop_shot_idle_loop");
|
|
var_04 = var_01 setcontents(0);
|
|
maps\_utility::activate_trigger_with_targetname("trig_control_room_anims");
|
|
common_scripts\utility::flag_set("bridge_drones_dead");
|
|
level.consoleguy = var_01;
|
|
}
|
|
|
|
//Function Number: 162
|
|
play_blood_fx_when_shot()
|
|
{
|
|
self endon("stop_console_guy_impact_fx");
|
|
for(;;)
|
|
{
|
|
self waittill("damage",var_00,var_01,var_02,var_03,var_04);
|
|
playfx(common_scripts\utility::getfx("flesh_hit"),var_03);
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(2);
|
|
}
|
|
|
|
//Function Number: 163
|
|
control_room_anims()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_control_room_anims");
|
|
foreach(var_01 in level.heroes)
|
|
{
|
|
var_01 thread maps\sanfran_b_util::hide_friendname_until_flag_or_notify("forever");
|
|
}
|
|
|
|
var_03 = common_scripts\utility::getstruct("org_burke_control_room","targetname");
|
|
var_03 maps\_anim::anim_reach_solo(level.cormack,"control_room_pulloff");
|
|
var_03 notify("stop_shot_idle_loop");
|
|
level.console_guy maps\_utility::anim_stopanimscripted();
|
|
var_04 = [level.cormack,level.console_guy];
|
|
common_scripts\utility::flag_set("pulloff_anim_started");
|
|
thread maps\_utility::flag_set_delayed("target_vo",4);
|
|
var_03 maps\_anim::anim_single(var_04,"control_room_pulloff");
|
|
common_scripts\utility::flag_set("cormack_on_console");
|
|
soundscripts\_snd::snd_message("objective_complete");
|
|
var_05 = getent("objective_console","targetname");
|
|
var_06 = getent("console_04a","targetname");
|
|
var_07 = spawn("script_model",var_05.origin);
|
|
var_07.angles = var_05.angles;
|
|
var_07 setmodel("mob_bridge_console_04b_obj");
|
|
var_08 = spawn("script_model",var_06.origin);
|
|
var_08.angles = var_06.angles;
|
|
var_08 setmodel("mob_bridge_console_04a_obj");
|
|
var_03 thread maps\_anim::anim_loop_solo(level.console_guy,"guy_control_dead_idle","never");
|
|
var_03 thread maps\_anim::anim_loop_solo(level.cormack,"console_idle","stop_operate_loop");
|
|
level.player waittill("laser_off");
|
|
clearallcorpses();
|
|
level.consoleguy delete();
|
|
foreach(var_0A in level.heroes)
|
|
{
|
|
var_0A maps\_utility::enable_dontevershoot();
|
|
}
|
|
|
|
var_04 = getaiarray("axis");
|
|
foreach(var_0D in var_04)
|
|
{
|
|
if(!isdefined(var_0D.magic_bullet_shield))
|
|
{
|
|
var_0D.diequietly = 1;
|
|
var_0D kill();
|
|
}
|
|
}
|
|
|
|
if(isdefined(level.ambient_drones))
|
|
{
|
|
foreach(var_10 in level.ambient_drones)
|
|
{
|
|
if(isdefined(var_10) && isalive(var_10))
|
|
{
|
|
var_10 maps\_vehicle::vehicle_set_health(1);
|
|
var_10 dodamage(99999,var_10.origin);
|
|
}
|
|
}
|
|
}
|
|
|
|
soundscripts\_snd::snd_message("rail_gun_done");
|
|
thread maps\_sonicaoe::enablesonicaoe();
|
|
common_scripts\utility::flag_clear("flag_end_sonar_vision");
|
|
give_night_vision();
|
|
var_07 delete();
|
|
var_08 delete();
|
|
var_03 notify("stop_operate_loop");
|
|
level.burke maps\_utility::anim_stopanimscripted();
|
|
var_12 = maps\_utility::spawn_anim_model("player_rig");
|
|
var_03 maps\_anim::anim_first_frame_solo(var_12,"sf_b_bridge_dialog");
|
|
level.player playerlinktodelta(var_12,"tag_player",1,0,0,0,0);
|
|
var_04 = [var_12,level.burke,level.cormack,level.maddox];
|
|
var_03 thread maps\_anim::anim_single(var_04,"sf_b_bridge_dialog");
|
|
var_12 common_scripts\utility::delaycall(1,::hide);
|
|
common_scripts\utility::flag_wait("outro_dialogue_finished");
|
|
}
|
|
|
|
//Function Number: 164
|
|
play_cinematic(param_00,param_01,param_02)
|
|
{
|
|
if(isdefined(level.current_cinematic))
|
|
{
|
|
pausecinematicingame(0);
|
|
setsaveddvar("cg_cinematicFullScreen","1");
|
|
level.current_cinematic = undefined;
|
|
}
|
|
else
|
|
{
|
|
cinematicingame(param_00);
|
|
}
|
|
|
|
if(!isdefined(param_02) || !param_02)
|
|
{
|
|
setsaveddvar("cg_cinematicCanPause","1");
|
|
}
|
|
|
|
wait(1);
|
|
while(iscinematicplaying())
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
if(!isdefined(param_02) || !param_02)
|
|
{
|
|
setsaveddvar("cg_cinematicCanPause","0");
|
|
}
|
|
}
|
|
|
|
//Function Number: 165
|
|
setup_mob_turret_targets()
|
|
{
|
|
common_scripts\utility::flag_wait("player_using_mob_turret");
|
|
common_scripts\_exploder::exploder(3600);
|
|
var_00 = getent("cargo_ship","targetname");
|
|
var_01 = getent("cargo_ship_2","targetname");
|
|
var_02 = var_00 setcontents(0);
|
|
var_00 setcontents(var_02 | 1);
|
|
var_03 = var_01 setcontents(0);
|
|
var_01 setcontents(var_03 | 1);
|
|
level.mob_turret_targets = [var_00,var_01];
|
|
common_scripts\utility::array_thread(level.mob_turret_targets,::detect_cargo_ship_damage);
|
|
common_scripts\utility::array_thread(level.mob_turret_targets,::detect_cargo_ship_death);
|
|
foreach(var_05 in level.mob_turret_targets)
|
|
{
|
|
var_05 thread remove_from_target_array_on_death();
|
|
}
|
|
|
|
thread wait_for_mob_turret_targets_to_be_destroyed();
|
|
}
|
|
|
|
//Function Number: 166
|
|
cargo_ship_fights_back()
|
|
{
|
|
common_scripts\utility::flag_wait("first_cargo_ship_destroyed");
|
|
wait(2);
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("cargo2_to_player_1");
|
|
wait(randomfloatrange(0.3,1.3));
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("cargo2_to_player_2");
|
|
wait(randomfloatrange(0.3,1.3));
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("cargo2_to_player_3");
|
|
wait(randomfloatrange(0.3,1.3));
|
|
var_03 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("cargo2_to_player_4");
|
|
}
|
|
|
|
//Function Number: 167
|
|
detect_cargo_ship_damage()
|
|
{
|
|
self endon("death");
|
|
self setcandamage(1);
|
|
var_00 = undefined;
|
|
var_01 = undefined;
|
|
var_02 = 2000;
|
|
var_03 = 3000;
|
|
if(level.currentgen)
|
|
{
|
|
var_02 = var_02 * 0.5;
|
|
var_03 = var_03 * 0.5;
|
|
}
|
|
|
|
if(isdefined(self.script_parameters))
|
|
{
|
|
if(self.script_parameters == "1")
|
|
{
|
|
var_00 = 1;
|
|
self.animname = "cargo_ship_1";
|
|
self useanimtree(#animtree);
|
|
thread maps\_anim::anim_loop_solo(self,"cargo_ship_idle_large");
|
|
}
|
|
|
|
if(self.script_parameters == "2")
|
|
{
|
|
var_00 = 2;
|
|
self.animname = "cargo_ship_2";
|
|
self useanimtree(#animtree);
|
|
thread maps\_anim::anim_loop_solo(self,"cargo_ship_idle_large");
|
|
}
|
|
}
|
|
|
|
var_04 = 0;
|
|
var_05 = undefined;
|
|
while(var_04 < 2)
|
|
{
|
|
self.health = 99999;
|
|
self waittill("damage",var_06,var_07,var_08,var_09,var_0A);
|
|
if((isdefined(var_07) && var_07 == level.player && isdefined(var_09) && isdefined(var_0A)) || var_0A == "projectile")
|
|
{
|
|
physicsexplosionsphere(var_09,2048,1024,var_02);
|
|
wakeupphysicssphere(var_09,8000);
|
|
var_04++;
|
|
if(var_00 == 1)
|
|
{
|
|
var_0B = common_scripts\utility::spawn_tag_origin();
|
|
var_0C = level.mob_turret_right gettagorigin("tag_flash");
|
|
var_0D = level.mob_turret_right gettagorigin("tag_flash1");
|
|
var_0E = anglestoforward(level.mob_turret_right gettagangles("tag_flash"));
|
|
var_0F = anglestoforward(level.mob_turret_right gettagangles("tag_flash1"));
|
|
var_10 = var_0C + var_0E * 20000;
|
|
var_11 = var_0C + var_0F * 20000;
|
|
var_12 = bullettrace(var_0C,var_10,0,level.mob_turret_right,1);
|
|
if(var_12["fraction"] == 1)
|
|
{
|
|
var_12 = bullettrace(var_0D,var_11,0,level.mob_turret_right,1);
|
|
}
|
|
|
|
if(isdefined(var_12["entity"]) && var_12["entity"] == self)
|
|
{
|
|
if(isdefined(var_12["position"]))
|
|
{
|
|
var_0B.origin = var_12["position"];
|
|
common_scripts\utility::noself_delaycall(0.6,::physicsexplosionsphere,var_0B.origin,1500,1000,var_03);
|
|
}
|
|
|
|
if(isdefined(var_12["normal"]))
|
|
{
|
|
var_13 = vectornormalize(var_12["normal"]);
|
|
var_0B.angles = vectortoangles(var_13);
|
|
playfx(common_scripts\utility::getfx("sfb_cargoship_impact_explosion"),var_0B.origin,var_13 + (180,0,0));
|
|
}
|
|
|
|
var_14 = getent("vol_crater_1","targetname");
|
|
if(var_0B istouching(var_14))
|
|
{
|
|
var_0B thread spawn_cargo_crater(self,1);
|
|
}
|
|
}
|
|
|
|
thread maps\_anim::anim_single_solo(self,"cargo_ship_hit_react");
|
|
soundscripts\_snd::snd_message("cargo_ship_hit_react",1);
|
|
if(var_04 == 1)
|
|
{
|
|
common_scripts\_exploder::exploder(3200);
|
|
}
|
|
|
|
common_scripts\utility::flag_set("first_cargo_ship_damaged");
|
|
continue;
|
|
}
|
|
|
|
var_0B = common_scripts\utility::spawn_tag_origin();
|
|
var_0C = level.mob_turret_left gettagorigin("tag_flash");
|
|
var_0D = level.mob_turret_left gettagorigin("tag_flash1");
|
|
var_0E = anglestoforward(level.mob_turret_left gettagangles("tag_flash"));
|
|
var_0F = anglestoforward(level.mob_turret_left gettagangles("tag_flash1"));
|
|
var_10 = var_0F + var_11 * 20000;
|
|
var_11 = var_0E + var_11 * 20000;
|
|
var_12 = bullettrace(var_0D,var_11,0,level.mob_turret_left,1);
|
|
if(var_12["fraction"] == 1)
|
|
{
|
|
var_12 = bullettrace(var_0D,var_11,0,level.mob_turret_left,1);
|
|
}
|
|
|
|
if(isdefined(var_12["entity"]) && var_12["entity"] == self)
|
|
{
|
|
if(isdefined(var_12["position"]))
|
|
{
|
|
var_0B.origin = var_12["position"];
|
|
common_scripts\utility::noself_delaycall(0.6,::physicsexplosionsphere,var_0B.origin,1500,1000,var_03);
|
|
}
|
|
|
|
if(isdefined(var_12["normal"]))
|
|
{
|
|
var_13 = vectornormalize(var_12["normal"]);
|
|
var_0B.angles = vectortoangles(var_13);
|
|
playfx(common_scripts\utility::getfx("sfb_cargoship_impact_explosion"),var_0B.origin,var_13 - (180,0,0));
|
|
}
|
|
|
|
var_14 = getent("vol_crater_2","targetname");
|
|
if(var_0B istouching(var_14))
|
|
{
|
|
var_0B thread spawn_cargo_crater(self,0);
|
|
}
|
|
}
|
|
|
|
thread maps\_anim::anim_single_solo(self,"cargo_ship_hit_react");
|
|
soundscripts\_snd::snd_message("cargo_ship_hit_react",2);
|
|
common_scripts\utility::flag_set("second_cargo_ship_damaged");
|
|
if(var_04 == 1)
|
|
{
|
|
common_scripts\_exploder::exploder(3300);
|
|
}
|
|
}
|
|
}
|
|
|
|
if(var_00 == 1)
|
|
{
|
|
self notify("ship_destroyed");
|
|
thread cargo_ship_death_fx("cargo_ship_1_death");
|
|
common_scripts\utility::flag_set("first_cargo_ship_destroyed");
|
|
}
|
|
|
|
if(var_00 == 2)
|
|
{
|
|
self notify("ship_destroyed");
|
|
thread cargo_ship_death_fx("cargo_ship_2_death");
|
|
common_scripts\utility::flag_set("second_cargo_ship_destroyed");
|
|
}
|
|
|
|
thread deleteboat();
|
|
}
|
|
|
|
//Function Number: 168
|
|
deleteboat()
|
|
{
|
|
wait(16);
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 169
|
|
spawn_cargo_crater(param_00,param_01)
|
|
{
|
|
var_02 = spawn("script_model",self.origin);
|
|
var_02 setmodel("vehicle_atlas_cargo_container_dmg_k");
|
|
var_02 linkto(param_00);
|
|
var_02.angles = self.angles;
|
|
if(isdefined(param_01) && param_01)
|
|
{
|
|
self.angles = (0,180,0);
|
|
}
|
|
|
|
self linkto(param_00);
|
|
playfxontag(common_scripts\utility::getfx("fire_lp_l_blacksmk_thick_nonlit"),self,"tag_origin");
|
|
param_00 waittill("ship_destroyed");
|
|
wait(2);
|
|
var_02 delete();
|
|
stopfxontag(common_scripts\utility::getfx("fire_lp_l_blacksmk_thick_nonlit"),self,"tag_origin");
|
|
}
|
|
|
|
//Function Number: 170
|
|
cargo_ship_rocking(param_00,param_01)
|
|
{
|
|
if(isdefined(self.rocking) && self.rocking)
|
|
{
|
|
return;
|
|
}
|
|
|
|
self endon("death");
|
|
var_02 = 0;
|
|
if(isdefined(param_01) && param_01)
|
|
{
|
|
self moveto(self.origin + (0,0,-256),2);
|
|
}
|
|
|
|
var_03 = 3;
|
|
while(isdefined(self))
|
|
{
|
|
self rotateroll(param_00,var_03,0.05,0.05);
|
|
wait(var_03);
|
|
self rotateroll(param_00 * -1,var_03,0.15,1.5);
|
|
if(isdefined(param_01) && param_01 && !var_02)
|
|
{
|
|
self moveto(self.origin + (0,0,256),4);
|
|
var_02 = 1;
|
|
}
|
|
|
|
wait(var_03);
|
|
}
|
|
}
|
|
|
|
//Function Number: 171
|
|
cargo_ship_death_fx(param_00)
|
|
{
|
|
maps\_utility::delaythread(2.15,::ship_explosion_rumble,0.35);
|
|
maps\_utility::delaythread(2.15,::ship_explosion_screenblur);
|
|
maps\_utility::delaythread(2.4,::ship_explosion_rumble,0.35);
|
|
maps\_utility::delaythread(2.9,::ship_explosion_rumble,0.35);
|
|
maps\_utility::delaythread(4.25,::ship_explosion_rumble,0.2);
|
|
maps\_utility::delaythread(4.9,::ship_explosion_rumble,0.3);
|
|
}
|
|
|
|
//Function Number: 172
|
|
ship_explosion_rumble(param_00)
|
|
{
|
|
level.player playrumbleonentity("heavy_2s");
|
|
earthquake(param_00,1.75,level.player.origin,1024);
|
|
}
|
|
|
|
//Function Number: 173
|
|
ship_explosion_screenblur()
|
|
{
|
|
wait(0.15);
|
|
setblur(1,0.01);
|
|
wait(0.05);
|
|
setblur(0,0.05);
|
|
}
|
|
|
|
//Function Number: 174
|
|
detect_cargo_ship_death()
|
|
{
|
|
self waittill("death");
|
|
if(isdefined(self))
|
|
{
|
|
self delete();
|
|
}
|
|
|
|
common_scripts\utility::flag_set("cargo_ship_destroyed");
|
|
}
|
|
|
|
//Function Number: 175
|
|
remove_from_target_array_on_death()
|
|
{
|
|
level.player endon("death");
|
|
self waittill("death");
|
|
level.mob_turret_targets = common_scripts\utility::array_remove(level.mob_turret_targets,self);
|
|
}
|
|
|
|
//Function Number: 176
|
|
update_trigger_pos(param_00,param_01)
|
|
{
|
|
param_00 endon("death");
|
|
level.player endon("death");
|
|
param_01 endon("death");
|
|
var_02 = transformmove((0,0,0),(0,0,0),param_00.origin,param_00.angles,param_01.origin,param_01.angles);
|
|
for(;;)
|
|
{
|
|
var_03 = transformmove(param_00.origin,param_00.angles,(0,0,0),(0,0,0),var_02["origin"],var_02["angles"]);
|
|
param_01.origin = var_03["origin"];
|
|
param_01.angles = var_03["angles"];
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 177
|
|
wait_for_mob_turret_targets_to_be_destroyed()
|
|
{
|
|
level.player endon("death");
|
|
while(level.mob_turret_targets.size > 0)
|
|
{
|
|
wait(0.2);
|
|
}
|
|
|
|
common_scripts\utility::flag_set("laser_targets_destroyed");
|
|
}
|
|
|
|
//Function Number: 178
|
|
handle_mob_turret()
|
|
{
|
|
common_scripts\utility::flag_wait("obj_console");
|
|
level.player endon("death");
|
|
var_00 = getent("trig_use_console","targetname") maps\_shg_utility::hint_button_trigger("use",200);
|
|
maps\_utility::trigger_wait_targetname("trig_use_console");
|
|
level.player maps\_shg_utility::setup_player_for_scene(1);
|
|
var_00 maps\_shg_utility::hint_button_clear();
|
|
thread maps\_sonicaoe::disablesonicaoe();
|
|
maps\sanfran_b_sonar_vision::sonar_vision_off();
|
|
sonar_off();
|
|
common_scripts\utility::flag_set("flag_end_sonar_vision");
|
|
common_scripts\utility::flag_set("player_using_mob_turret");
|
|
soundscripts\_snd::snd_message("rail_gun_start");
|
|
level.burke.ignoreme = 1;
|
|
level.cormack.ignoreme = 1;
|
|
level.maddox.ignoreme = 1;
|
|
thread railgun_cargo_ship_missiles();
|
|
thread railgun_minigun_1();
|
|
level.player enableinvulnerability();
|
|
maps\_utility::delaythread(0.5,::maps\_utility::autosave_by_name);
|
|
thread maps\sanfran_b_mob_turret::setup_mob_turret();
|
|
var_01 = getent("trig_use_console","targetname");
|
|
var_01 common_scripts\utility::trigger_off();
|
|
thread water_explosions();
|
|
thread railgun_ambient_air();
|
|
thread railgun_enemies();
|
|
thread static_overlay();
|
|
wait(0.5);
|
|
setsaveddvar("cg_fov","75");
|
|
setsaveddvar("r_hudoutlineenable",1);
|
|
setsaveddvar("r_hudoutlinewidth",1);
|
|
setsaveddvar("r_hudoutlinepostmode",2);
|
|
setsaveddvar("r_hudoutlinehalolumscale",0.75);
|
|
setsaveddvar("r_hudoutlinehaloblurradius",0.35);
|
|
}
|
|
|
|
//Function Number: 179
|
|
railgun_cargo_ship_missiles()
|
|
{
|
|
while(!common_scripts\utility::flag("laser_targets_destroyed"))
|
|
{
|
|
if(common_scripts\utility::flag("cargo_ship_destroyed"))
|
|
{
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
var_00 = [];
|
|
var_01 = getent("cargo_ship","targetname");
|
|
if(!common_scripts\utility::flag("switching_cargo_ships"))
|
|
{
|
|
var_00[0] = getent("railgun_cargo_ship_missiles_1","targetname");
|
|
if(isdefined(var_01))
|
|
{
|
|
var_00[0] linkto(var_01);
|
|
}
|
|
|
|
var_02 = getentarray("railgun_cargo_missile_targets_1","targetname");
|
|
var_00[1] = getent("railgun_cargo_ship_missiles_2","targetname");
|
|
if(isdefined(var_01))
|
|
{
|
|
var_00[1] linkto(var_01);
|
|
}
|
|
|
|
var_02 = getentarray("railgun_cargo_missile_targets_2","targetname");
|
|
}
|
|
else
|
|
{
|
|
var_00[1] = getent("railgun_cargo_ship_missiles_2","targetname");
|
|
if(isdefined(var_01))
|
|
{
|
|
var_00[1] linkto(var_01);
|
|
}
|
|
|
|
var_02 = getentarray("railgun_cargo_missile_targets_2","targetname");
|
|
}
|
|
|
|
var_03 = var_00[randomint(var_00.size)];
|
|
var_04 = var_02[randomint(var_02.size)];
|
|
var_05 = vectortoangles(var_04.origin - var_03.origin);
|
|
var_06 = magicbullet("cargo_ship_missile_railgun",var_03.origin,var_04.origin);
|
|
var_06 missile_settargetent(var_04);
|
|
var_06 missile_setflightmodedirect();
|
|
var_06 thread railgun_missile_impact();
|
|
playfx(common_scripts\utility::getfx("missile_launch_smoke"),var_03.origin,anglestoforward(var_05),anglestoup(var_05));
|
|
wait(randomfloatrange(4,8));
|
|
}
|
|
|
|
level notify("stop_cargo_ship_missiles");
|
|
}
|
|
|
|
//Function Number: 180
|
|
railgun_missile_impact()
|
|
{
|
|
self waittill("death");
|
|
level endon("stop_cargo_ship_missiles");
|
|
if(distance(level.player.origin,self.origin) <= 2048)
|
|
{
|
|
earthquake(0.4,1,self.origin,2048);
|
|
playrumbleonposition("heavy_1s",self.origin);
|
|
}
|
|
}
|
|
|
|
//Function Number: 181
|
|
water_explosions()
|
|
{
|
|
level.player endon("laser_off");
|
|
common_scripts\utility::flag_wait("player_on_turret_1");
|
|
var_00 = randomfloatrange(3,6);
|
|
var_01 = getent("water_clip","targetname");
|
|
for(;;)
|
|
{
|
|
var_02 = anglestoforward(level.player.angles) * randomintrange(2048,7000);
|
|
var_03 = anglestoup(level.player.angles) * -1;
|
|
var_04 = anglestoright(level.player.angles) * randomintrange(-2048,2048);
|
|
var_05 = level.player.origin + var_02 + var_04;
|
|
var_06 = var_05;
|
|
var_07 = var_05 + var_03 * 20000;
|
|
var_08 = bullettrace(var_06,var_07,0);
|
|
if(var_08["fraction"] == 1)
|
|
{
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
if((isdefined(var_08["surfacetype"]) && var_08["surfacetype"] == "water" && isdefined(var_08["position"])) || isdefined(var_01) && isdefined(var_08["position"]) && isdefined(var_08["entity"]) && var_08["entity"] == var_01)
|
|
{
|
|
playfx(common_scripts\utility::getfx("water_impact"),var_08["position"]);
|
|
}
|
|
|
|
wait(var_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 182
|
|
railgun_ambient_air()
|
|
{
|
|
level.player endon("laser_off");
|
|
common_scripts\utility::flag_wait("player_on_turret_1");
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("railgun_jet_flyby_1");
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("railgun_jet_flyby_2");
|
|
soundscripts\_snd::snd_message("shrike_railgun_flyby_01",var_00,var_01);
|
|
common_scripts\utility::flag_wait("first_cargo_ship_damaged");
|
|
wait(1);
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("railgun_jet_flyby_3");
|
|
var_03 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("railgun_jet_flyby_4");
|
|
soundscripts\_snd::snd_message("shrike_railgun_flyby_02",var_02,var_03);
|
|
common_scripts\utility::flag_wait("player_on_turret_2");
|
|
var_04 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("railgun_jet_flyby_5");
|
|
var_05 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("railgun_jet_flyby_6");
|
|
soundscripts\_snd::snd_message("shrike_railgun_flyby_03",var_04,var_05);
|
|
}
|
|
|
|
//Function Number: 183
|
|
railgun_minigun_1()
|
|
{
|
|
var_00 = getentarray("org_cargo_ship_minigun_1","targetname");
|
|
common_scripts\utility::array_thread(var_00,::railgun_minigun_fire,1);
|
|
common_scripts\utility::flag_wait("player_on_turret_2");
|
|
var_00 = getentarray("org_cargo_ship_minigun_2","targetname");
|
|
common_scripts\utility::array_thread(var_00,::railgun_minigun_fire,2);
|
|
}
|
|
|
|
//Function Number: 184
|
|
railgun_enemies()
|
|
{
|
|
maps\_utility::array_spawn_function_noteworthy("rail_gun_warbird",::railgun_warbird_think);
|
|
var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("rail_gun_1_warbird");
|
|
common_scripts\utility::flag_wait("player_switching_to_turret_2");
|
|
var_00 = maps\_utility::array_removedead(var_00);
|
|
common_scripts\utility::array_call(var_00,::delete);
|
|
var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("rail_gun_2_warbird");
|
|
common_scripts\utility::flag_wait("second_cargo_ship_destroyed");
|
|
wait(7.75);
|
|
var_00 = maps\_utility::array_removedead(var_00);
|
|
common_scripts\utility::array_call(var_00,::delete);
|
|
}
|
|
|
|
//Function Number: 185
|
|
railgun_warbird_think()
|
|
{
|
|
self setmaxpitchroll(20,40);
|
|
self.emp_hits = 1;
|
|
maps\_utility::add_damage_function(::rail_gun_warbird_damage_function);
|
|
thread maps\sanfran_b_util::warbird_heavy_shooting_think(1);
|
|
self sethoverparams(1000,45,45);
|
|
self hudoutlineenable(1,1);
|
|
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: 186
|
|
rail_gun_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_PROJECTILE")
|
|
{
|
|
self kill();
|
|
wait(0.05);
|
|
if(isdefined(self))
|
|
{
|
|
self notify("crash_done");
|
|
self notify("in_air_explosion");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 187
|
|
railgun_minigun_fire(param_00)
|
|
{
|
|
var_01 = undefined;
|
|
if(param_00 == 1)
|
|
{
|
|
level endon("first_cargo_ship_destroyed");
|
|
}
|
|
|
|
if(param_00 == 2)
|
|
{
|
|
level endon("second_cargo_ship_destroyed");
|
|
}
|
|
|
|
if(param_00 == 1)
|
|
{
|
|
var_01 = getent("cargo_ship","targetname");
|
|
}
|
|
|
|
if(param_00 == 2)
|
|
{
|
|
var_01 = getent("cargo_ship_2","targetname");
|
|
}
|
|
|
|
self linkto(var_01);
|
|
for(;;)
|
|
{
|
|
var_02 = randomfloatrange(1.5,3);
|
|
var_03 = randomfloatrange(1,2);
|
|
var_04 = 0;
|
|
while(var_04 < var_02)
|
|
{
|
|
var_05 = randomintrange(-64,64);
|
|
var_06 = level.player.origin + (0,0,-120) + (var_05,var_05,var_05);
|
|
magicbullet("cargoship_turret",self.origin,var_06);
|
|
var_07 = var_06 - self.origin;
|
|
playfx(common_scripts\utility::getfx("cargoship_turret"),self.origin,var_07);
|
|
var_04 = var_04 + 0.05;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(var_03);
|
|
}
|
|
}
|
|
|
|
//Function Number: 188
|
|
draw_crosshair()
|
|
{
|
|
var_00 = create_hud_laser_crosshair();
|
|
self waittill("laser_off");
|
|
var_00 destroy();
|
|
}
|
|
|
|
//Function Number: 189
|
|
create_hud_laser_crosshair()
|
|
{
|
|
var_00 = newclienthudelem(self);
|
|
var_00.x = 0;
|
|
var_00.y = 0;
|
|
var_00.sort = -5;
|
|
var_00.horzalign = "center";
|
|
var_00.vertalign = "middle";
|
|
var_00 setshader("reticle_center_cross",32,32);
|
|
var_00.alpha = 1;
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 190
|
|
static_overlay(param_00)
|
|
{
|
|
create_hud_static_overlay();
|
|
soundscripts\_snd::snd_message("start_camera_static");
|
|
}
|
|
|
|
//Function Number: 191
|
|
create_hud_static_overlay()
|
|
{
|
|
setsaveddvar("cg_cinematicFullScreen","1");
|
|
cinematicingame("glitch_short");
|
|
}
|
|
|
|
//Function Number: 192
|
|
dismount_console()
|
|
{
|
|
static_overlay(1);
|
|
var_00 = getent("trig_use_console","targetname");
|
|
var_00 common_scripts\utility::trigger_off();
|
|
setsaveddvar("cg_fov","65");
|
|
level.player unlink();
|
|
level.player notify("laser_off");
|
|
}
|
|
|
|
//Function Number: 193
|
|
drone_combat()
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_spawn_bridge_drones");
|
|
wait(2);
|
|
level.burke maps\_utility::set_grenadeammo(0);
|
|
level.cormack maps\_utility::set_grenadeammo(0);
|
|
level.maddox maps\_utility::set_grenadeammo(0);
|
|
var_00 = maps\_utility::array_spawn_noteworthy("bridge_drones");
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_b_util::setup_atlas_drone,"flag_cleanup_deck_drones");
|
|
disable_cormack_obj();
|
|
wait(0.05);
|
|
common_scripts\utility::flag_wait("bridge_drones_dead");
|
|
maps\_utility::activate_trigger_with_targetname("trig_control_room_anims");
|
|
}
|
|
|
|
//Function Number: 194
|
|
disable_cormack_obj()
|
|
{
|
|
objective_position(maps\_utility::obj("obj_bridge"),(0,0,0));
|
|
}
|
|
|
|
//Function Number: 195
|
|
enable_cormack_obj()
|
|
{
|
|
objective_onentity(maps\_utility::obj("obj_bridge"),level.cormack);
|
|
}
|
|
|
|
//Function Number: 196
|
|
track_bridge_drone_deaths()
|
|
{
|
|
if(!isdefined(level.num_bridge_drones_destroyed))
|
|
{
|
|
level.num_bridge_drones_destroyed = 0;
|
|
}
|
|
|
|
self waittill("death");
|
|
level.num_bridge_drones_destroyed++;
|
|
}
|
|
|
|
//Function Number: 197
|
|
should_end_sonar_hint()
|
|
{
|
|
return isdefined(level.player.sonar_vision) && level.player.sonar_vision;
|
|
}
|
|
|
|
//Function Number: 198
|
|
should_end_laser_hint()
|
|
{
|
|
return maps\sanfran_b_laser::is_player_using_laser();
|
|
}
|
|
|
|
//Function Number: 199
|
|
should_end_align_hint()
|
|
{
|
|
return level.player attackbuttonpressed();
|
|
}
|
|
|
|
//Function Number: 200
|
|
align_hint_think()
|
|
{
|
|
level.player endon("death");
|
|
level.player waittill("use_laser");
|
|
maps\_utility::display_hint("hint_align_laser");
|
|
}
|
|
|
|
//Function Number: 201
|
|
enable_jump_jet_pathing()
|
|
{
|
|
if(issubstr(self.classname,"jump"))
|
|
{
|
|
self.canjumppath = 1;
|
|
}
|
|
}
|
|
|
|
//Function Number: 202
|
|
handle_sonar_hint()
|
|
{
|
|
level.player endon("death");
|
|
maps\_utility::trigger_wait_targetname("trig_display_sonar_hint");
|
|
common_scripts\utility::flag_wait("flag_allow_night_vision_hint");
|
|
wait(0.75);
|
|
maps\_utility::display_hint_timeout("hint_use_sonar",5);
|
|
}
|
|
|
|
//Function Number: 203
|
|
sonar_hint_2()
|
|
{
|
|
level.player endon("death");
|
|
common_scripts\utility::flag_wait("flag_information_center_vo_2");
|
|
if(!maps\_nightvision::nightvision_check(level.player))
|
|
{
|
|
maps\_utility::display_hint_timeout("hint_use_sonar",3);
|
|
}
|
|
}
|
|
|
|
//Function Number: 204
|
|
disable_ir_in_nightvision()
|
|
{
|
|
self.has_no_ir = 1;
|
|
}
|
|
|
|
//Function Number: 205
|
|
server_room_lasers()
|
|
{
|
|
self laseron();
|
|
}
|
|
|
|
//Function Number: 206
|
|
enable_my_thermal()
|
|
{
|
|
self thermaldrawenable();
|
|
}
|
|
|
|
//Function Number: 207
|
|
disable_my_thermal()
|
|
{
|
|
self thermaldrawdisable();
|
|
}
|
|
|
|
//Function Number: 208
|
|
slow_player_inside()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_player_entered_interior");
|
|
thread maps\_utility::blend_movespeedscale(0.85,3);
|
|
}
|
|
|
|
//Function Number: 209
|
|
missile_test()
|
|
{
|
|
for(;;)
|
|
{
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("cargo_to_player_1");
|
|
wait(3);
|
|
}
|
|
|
|
wait(0.05);
|
|
} |