mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-07-02 12:27:51 -05:00
3867 lines
128 KiB
Plaintext
3867 lines
128 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: sanfran_code.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 157
|
|
* Decompile Time: 2339 ms
|
|
* Timestamp: 4/22/2024 2:35:45 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
handle_drone_opening(param_00)
|
|
{
|
|
maps\sanfran_util::setup_intro();
|
|
level.player maps\_shg_utility::setup_player_for_scene();
|
|
wait(1);
|
|
maps\sanfran_util::show_water_intro();
|
|
level thread intro_moving_ships();
|
|
maps\sanfran_util::delete_roadsurface_bridge();
|
|
level.player unlink();
|
|
level.player disableslowaim();
|
|
common_scripts\utility::flag_set("msg_vfx_zone2_driving_chase");
|
|
level thread handle_driving_section();
|
|
level thread vehicle_scripts\_sentinel_survey_drone_hud::hud_end();
|
|
}
|
|
|
|
//Function Number: 2
|
|
helicopter_view_intro(param_00)
|
|
{
|
|
var_01 = getent("intro_drone_position_01","targetname");
|
|
var_02 = getent(var_01.target,"targetname");
|
|
level.player playerlinktodelta(var_01,undefined,1,0,0,0,0);
|
|
level.player playerlinktodelta(var_01,undefined,1,8,8,4,4);
|
|
level.player enableslowaim();
|
|
level.player maps\_shg_utility::setup_player_for_scene();
|
|
level.player lightsetforplayer("helicopter_view_intro_0");
|
|
level thread vehicle_scripts\_sentinel_survey_drone_hud::hud_start(level.player,0.5,1);
|
|
soundscripts\_snd::snd_message("aud_drone_view_intro_start");
|
|
wait(0.05);
|
|
thread maps\sanfran_util::drone_view_shake(0.05);
|
|
var_01 thread maps\sanfran_util::drone_moveto_ent(var_01.target,40);
|
|
wait(2);
|
|
if(!isdefined(param_00))
|
|
{
|
|
common_scripts\utility::flag_set("flag_dialog_start_intro");
|
|
}
|
|
|
|
var_01 thread maps\sanfran_util::drone_lookat_ent("fake_mob",0,1);
|
|
wait(0.5);
|
|
if(!isdefined(param_00))
|
|
{
|
|
common_scripts\utility::flag_set("flag_dialog_intro_fleet");
|
|
}
|
|
|
|
wait(8);
|
|
thread intro_ship_icons();
|
|
common_scripts\utility::flag_set("flag_zoom_in_fleet");
|
|
level notify("aud_drone_view_intro_zoom_in_fleet");
|
|
level.player lerpfov(27,0.25);
|
|
wait(0.25);
|
|
level.player lerpfov(30,0.25);
|
|
wait(3.25);
|
|
common_scripts\utility::flag_set("flag_zoom_out_fleet");
|
|
level notify("aud_drone_view_intro_zoom_out_fleet");
|
|
level.player lerpfov(67,0.25);
|
|
wait(0.25);
|
|
level.player lerpfov(65,0.25);
|
|
thread vehicle_scripts\_sentinel_survey_drone_hud::remove_hud_drone_target();
|
|
wait(2.75);
|
|
if(!isdefined(param_00))
|
|
{
|
|
common_scripts\utility::flag_set("flag_dialog_intro_cargo");
|
|
}
|
|
|
|
wait(1);
|
|
vehicle_scripts\_sentinel_survey_drone_hud::destroy_sentinel_drone_hud();
|
|
level notify("aud_drone_view_intro_switch_to_camera_2");
|
|
thread showstatic(0.1);
|
|
var_01 = getent("intro_drone_position_02","targetname");
|
|
var_01 thread maps\sanfran_util::drone_lookat_ent("cargo_ship_2");
|
|
level.player playerlinktodelta(var_01,undefined,1,0,0,0,0);
|
|
level.player playerlinktodelta(var_01,undefined,1,8,8,4,4);
|
|
common_scripts\utility::flag_set("flag_cargo_ship");
|
|
vehicle_scripts\_sentinel_survey_drone_hud::hud_start(level.player,1,2);
|
|
var_01 thread maps\sanfran_util::drone_moveto_ent(var_01.target,40);
|
|
wait(1.25);
|
|
var_01 thread maps\sanfran_util::drone_lookat_ent("cargo_ship_2",0.5,0,(-6,-10,0));
|
|
common_scripts\utility::flag_set("flag_zoom_in_cargo");
|
|
level notify("aud_drone_view_intro_zoom_in_cargo");
|
|
level.player lerpfov(43,0.5);
|
|
wait(0.5);
|
|
level.player lerpfov(45,0.5);
|
|
level thread narrow_in_camera_play(var_01);
|
|
wait(0.5);
|
|
wait(2);
|
|
level notify("stop_narrow_play");
|
|
if(!isdefined(param_00))
|
|
{
|
|
wait(1.5);
|
|
common_scripts\utility::flag_set("flag_intro_transition_to_driving");
|
|
level notify("aud_drone_view_intro_transition_to_tunnel");
|
|
}
|
|
|
|
if(level.currentgen)
|
|
{
|
|
if(!istransientloaded("sanfran_intro_tr"))
|
|
{
|
|
level waittill("tff_transition_outro_to_intro");
|
|
}
|
|
}
|
|
|
|
vehicle_scripts\_sentinel_survey_drone_hud::destroy_sentinel_drone_hud();
|
|
level.player lightsetforplayer("helicopter_view_intro_1");
|
|
}
|
|
|
|
//Function Number: 3
|
|
narrow_in_camera_play(param_00)
|
|
{
|
|
level endon("stop_narrow_play");
|
|
var_01 = 8;
|
|
var_02 = 4;
|
|
for(;;)
|
|
{
|
|
level.player playerlinktodelta(param_00,undefined,1,var_01,var_01,var_02,var_02);
|
|
wait(0.05);
|
|
var_01 = clamp(var_01 - 0.08,4,8);
|
|
var_02 = clamp(var_02 - 0.04,2,4);
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
fadeupstatic(param_00)
|
|
{
|
|
level.overlaystatic = newhudelem(level.player);
|
|
level.overlaystatic.x = 0;
|
|
level.overlaystatic.y = 0;
|
|
level.overlaystatic.alpha = 0;
|
|
level.overlaystatic.horzalign = "fullscreen";
|
|
level.overlaystatic.vertalign = "fullscreen";
|
|
level.overlaystatic.sort = 4;
|
|
level.overlaystatic setshader("overlay_static_digital",640,480);
|
|
level.overlaystatic2 = newhudelem(level.player);
|
|
level.overlaystatic2.x = 0;
|
|
level.overlaystatic2.y = 0;
|
|
level.overlaystatic2.alpha = 0;
|
|
level.overlaystatic2.color = (0.1,0.1,0.1);
|
|
level.overlaystatic2.horzalign = "fullscreen";
|
|
level.overlaystatic2.vertalign = "fullscreen";
|
|
level.overlaystatic2.sort = 5;
|
|
level.overlaystatic2 setshader("sentinel_drone_overlay",640,480);
|
|
var_01 = 0.05 / param_00;
|
|
while(level.overlaystatic.alpha < 1)
|
|
{
|
|
level.overlaystatic.alpha = level.overlaystatic.alpha + var_01;
|
|
level.overlaystatic2.alpha = level.overlaystatic.alpha;
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
fadedownstatic(param_00)
|
|
{
|
|
var_01 = 0.05 / param_00;
|
|
while(level.overlaystatic.alpha >= 0)
|
|
{
|
|
level.overlaystatic.alpha = level.overlaystatic.alpha - var_01;
|
|
level.overlaystatic2.alpha = level.overlaystatic.alpha;
|
|
wait(0.05);
|
|
}
|
|
|
|
level.overlaystatic destroy();
|
|
level.overlaystatic2 destroy();
|
|
}
|
|
|
|
//Function Number: 6
|
|
showstatic(param_00)
|
|
{
|
|
level.overlaystatic = newhudelem(level.player);
|
|
level.overlaystatic.x = 0;
|
|
level.overlaystatic.y = 0;
|
|
level.overlaystatic.alpha = 1;
|
|
level.overlaystatic.horzalign = "fullscreen";
|
|
level.overlaystatic.vertalign = "fullscreen";
|
|
level.overlaystatic.sort = 4;
|
|
level.overlaystatic setshader("overlay_static_digital",640,480);
|
|
wait(param_00);
|
|
level.overlaystatic destroy();
|
|
}
|
|
|
|
//Function Number: 7
|
|
intro_moving_ships()
|
|
{
|
|
maps\sanfran_util::toggle_off_real_mob();
|
|
var_00 = [];
|
|
var_01 = [];
|
|
var_00[var_00.size] = getent("fake_mob","targetname");
|
|
var_00[var_00.size] = getent("cargo_ship","targetname");
|
|
var_00[var_00.size] = getent("cargo_ship_2","targetname");
|
|
var_02 = getentarray("navy_ship","targetname");
|
|
var_00 = common_scripts\utility::array_combine(var_00,var_02);
|
|
var_02 = getentarray("navy_ship_right","targetname");
|
|
var_00 = common_scripts\utility::array_combine(var_00,var_02);
|
|
foreach(var_04 in var_00)
|
|
{
|
|
var_04 thread moveboat();
|
|
}
|
|
|
|
if(level.nextgen)
|
|
{
|
|
wait(60);
|
|
}
|
|
else if(!istransientloaded("sanfran_outro_tr"))
|
|
{
|
|
level waittill("tff_transition_intro_to_outro");
|
|
}
|
|
|
|
foreach(var_04 in var_00)
|
|
{
|
|
var_04 notify("stop_ship_moving");
|
|
var_04 maps\sanfran_fx::stop_wakefx();
|
|
var_04.origin = var_04.original_org;
|
|
var_04.angles = var_04.original_ang;
|
|
}
|
|
|
|
thread maps\sanfran_util::init_bobbing_boats();
|
|
}
|
|
|
|
//Function Number: 8
|
|
moveboat()
|
|
{
|
|
maps\sanfran_fx::attach_wakefx();
|
|
position_for_movement();
|
|
if(self.model == "vehicle_atlas_decoy_cargo_ship")
|
|
{
|
|
thread start_moving_with_bob();
|
|
return;
|
|
}
|
|
|
|
self moveto(self.original_org,120,0,0);
|
|
}
|
|
|
|
//Function Number: 9
|
|
start_moving_with_bob()
|
|
{
|
|
self endon("stop_ship_moving");
|
|
var_00 = 1;
|
|
var_01 = 120;
|
|
for(;;)
|
|
{
|
|
var_02 = randomfloatrange(3,5);
|
|
var_03 = self.original_org - self.origin;
|
|
var_04 = var_03 / var_01 * var_02;
|
|
var_05 = self.origin + var_04;
|
|
var_06 = var_00 * randomfloatrange(125,175);
|
|
self moveto(var_05 + (0,0,var_06),var_02,0,0);
|
|
wait(var_02);
|
|
var_00 = var_00 * -1;
|
|
var_01 = var_01 - var_02;
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
intro_ship_icons()
|
|
{
|
|
level endon("remove_hud_drone_target");
|
|
var_00 = [];
|
|
var_00[var_00.size] = getent("cargo_ship","targetname");
|
|
var_00[var_00.size] = getent("cargo_ship_2","targetname");
|
|
var_01 = getentarray("navy_ship","targetname");
|
|
var_00 = common_scripts\utility::array_combine(var_00,var_01);
|
|
var_02 = getent("fake_mob","targetname");
|
|
var_02 vehicle_scripts\_sentinel_survey_drone_hud::create_hud_drone_target(1);
|
|
foreach(var_04 in var_00)
|
|
{
|
|
var_04 vehicle_scripts\_sentinel_survey_drone_hud::create_hud_drone_target(0);
|
|
soundscripts\_snd::snd_message("aud_drone_view_intro_target");
|
|
wait(0.25);
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
position_for_movement()
|
|
{
|
|
self.original_org = self.origin;
|
|
self.original_ang = self.angles;
|
|
var_00 = 0.35;
|
|
if(self.model == "vehicle_cvn_carrier")
|
|
{
|
|
var_00 = 0.75;
|
|
}
|
|
|
|
if(self.model == "vehicle_atlas_decoy_cargo_ship")
|
|
{
|
|
var_00 = 0.65;
|
|
}
|
|
|
|
if(self.model == "vehicle_naval_littoral")
|
|
{
|
|
var_00 = 0.3;
|
|
}
|
|
|
|
var_01 = getent(self.target,"targetname");
|
|
var_02 = self.origin - var_01.origin;
|
|
var_03 = var_01.origin - var_00 * var_02;
|
|
var_04 = vectortoangles(var_02);
|
|
self.origin = var_03;
|
|
self.angles = var_04;
|
|
self moveto(var_01.origin,0.5,0,0);
|
|
wait(0.5);
|
|
}
|
|
|
|
//Function Number: 12
|
|
handle_driving_section(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
maps\_utility::autosave_by_name();
|
|
}
|
|
|
|
var_01 = !isdefined(param_00);
|
|
common_scripts\utility::flag_set("flag_dialog_start_tunnel");
|
|
soundscripts\_snd::snd_message("setup_audio_zone_tunnel");
|
|
setup_player_pitbull(var_01);
|
|
level thread handle_chase_van();
|
|
level thread handle_friendly_pitbull();
|
|
if(!isdefined(param_00) || param_00 == "tunnel")
|
|
{
|
|
level.player thread flag_construction_enable_pitbull_shooting();
|
|
if(level.nextgen)
|
|
{
|
|
setsaveddvar("r_umbraAccurateOcclusionThreshold","400");
|
|
}
|
|
|
|
thread umbra_override_tunnel();
|
|
}
|
|
|
|
level thread start_vehicle_traffic();
|
|
level thread pitbull_update_hud_brightness();
|
|
if(var_01)
|
|
{
|
|
maps\sanfran_util::make_bridge_big();
|
|
common_scripts\utility::flag_set("flag_dialog_tunnel_chase");
|
|
thread maps\sanfran_util::intro_drive_hint();
|
|
thread pitbull_intro_animation();
|
|
common_scripts\utility::flag_set("start_tunnel_lighting");
|
|
wait(0.05);
|
|
level.player lerpfov(65,0.1);
|
|
}
|
|
else if(param_00 == "oncoming")
|
|
{
|
|
common_scripts\utility::flag_set("flag_hud_brighten");
|
|
maps\sanfran_util::make_bridge_big();
|
|
}
|
|
else if(param_00 == "bridge")
|
|
{
|
|
common_scripts\utility::flag_set("flag_hud_brighten");
|
|
}
|
|
|
|
maps\sanfran_util::toggle_all_boats_off();
|
|
maps\sanfran_util::show_water_final();
|
|
thread maps\_player_exo::player_exo_deactivate();
|
|
level thread handle_atlas_intercepts();
|
|
common_scripts\utility::run_thread_on_targetname("trigger_driving_save",::driving_section_save);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_start_crash_bus",::start_crash_bus);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_start_construction_heli",::start_construction_heli);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_open_gate",::crash_open_gate);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_start_tanker",::start_tanker_explosion);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_start_blocking_police",::start_blocking_police);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_start_knocked_to_oncoming",::start_knocked_to_oncoming);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_start_bridge_helicopter",::start_bridge_heli);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_start_player_crash",::player_crash);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_make_bridge_small",::maps\sanfran_util::trigger_bridge_small);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_toggle_on_boats",::maps\sanfran_util::toggle_all_boats_on_trigger);
|
|
if(!isdefined(param_00))
|
|
{
|
|
common_scripts\utility::flag_wait("flag_pitbull_allow_shooting");
|
|
while(!isdefined(level.atlas_intercepts))
|
|
{
|
|
wait(0.5);
|
|
}
|
|
|
|
maps\sanfran_util::enable_pitbull_shooting();
|
|
level.player_pitbull waittill("set_new_target");
|
|
wait(1);
|
|
level thread maps\sanfran_util::intro_shoot_hint();
|
|
common_scripts\utility::flag_set("flag_player_can_fire");
|
|
common_scripts\utility::flag_wait("flag_player_has_shot_pitbull");
|
|
wait(1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
pitbull_update_hud_brightness()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_hud_brighten");
|
|
level.player_pitbull.fake_vehicle_model setmaterialscriptparam(0.25,0.5);
|
|
level.friendly_pitbull thread maps\_vehicle::vehicle_lights_off("brakelights");
|
|
level.chase_van thread maps\_vehicle::vehicle_lights_off("brakelights");
|
|
}
|
|
|
|
//Function Number: 14
|
|
pitbull_play_lui_cinematic()
|
|
{
|
|
setsaveddvar("cg_cinematicFullScreen","0");
|
|
cinematicingame("sanfran_dronefeed",0,1,1);
|
|
}
|
|
|
|
//Function Number: 15
|
|
pitbull_intro_animation()
|
|
{
|
|
waittillframeend;
|
|
thread pitbull_play_lui_cinematic();
|
|
level thread intro_view_traffic();
|
|
maps\sanfran_util::setup_squad_for_scene();
|
|
thread pitbull_intro_control_rumble();
|
|
level.player_pitbull maps\_utility::ent_flag_set("pitbull_scripted_anim");
|
|
level.player_pitbull maps\sanfran_pitbull_drive_anim::clear_anims();
|
|
level.player_pitbull maps\sanfran_pitbull::disconnect_fake_pitbull();
|
|
var_00 = level.player_pitbull.player_rig;
|
|
var_01 = level.player_pitbull.fake_vehicle_model;
|
|
var_02 = [];
|
|
var_02[0] = var_00;
|
|
var_02[1] = level.burke;
|
|
level.burke notify("animontagdone","end");
|
|
level.burke notify("pitbull_get_out");
|
|
level.burke maps\_utility::anim_stopanimscripted();
|
|
var_01 maps\_anim::anim_first_frame_solo(var_01,"pitbull_intro");
|
|
var_01 maps\_anim::anim_first_frame_solo(var_00,"pitbull_intro","tag_body");
|
|
var_00 linkto(var_01,"tag_body");
|
|
thread maps\sanfran_pitbull::show_video_on_driverside();
|
|
level.player dontinterpolate();
|
|
level.player playerlinktodelta(var_00,"tag_player",1,10,10,5,5,1);
|
|
level.player enableslowaim();
|
|
level.player thread remove_camera_view_angles(var_00 maps\_utility::getanim("pitbull_intro"),0.5,0.1);
|
|
level thread anim_van_intro(var_01);
|
|
var_01 thread maps\_anim::anim_single_solo(var_01,"pitbull_intro");
|
|
var_01 maps\_anim::anim_single(var_02,"pitbull_intro","tag_body");
|
|
var_03 = maps\_vehicle_aianim::anim_pos(level.player_pitbull,1);
|
|
var_01 thread maps\sanfran_pitbull::passenger_idle(level.burke,var_03);
|
|
level.player disableslowaim();
|
|
level.player_pitbull maps\sanfran_pitbull::reconnect_fake_pitbull();
|
|
level.chase_van.lead_pos = "far";
|
|
level.player_pitbull.attachedpath = undefined;
|
|
level.player_pitbull notify("newpath");
|
|
level.player_pitbull returnplayercontrol();
|
|
level.player playerlinkedvehicleanglesenable();
|
|
common_scripts\utility::flag_set("flag_intro_give_player_driving");
|
|
soundscripts\_snd::snd_message("intro_give_player_driving");
|
|
level.player_pitbull maps\_utility::ent_flag_clear("pitbull_scripted_anim");
|
|
maps\sanfran_util::setup_squad_for_gameplay();
|
|
if(level.nextgen)
|
|
{
|
|
maps\_utility::autosave_by_name();
|
|
}
|
|
else
|
|
{
|
|
maps\_utility::autosave_now();
|
|
}
|
|
|
|
thread start_reverse_hint();
|
|
thread vehicle_blocked_check();
|
|
}
|
|
|
|
//Function Number: 16
|
|
pitbull_intro_control_rumble()
|
|
{
|
|
level endon("flag_intro_give_player_driving");
|
|
var_00 = maps\_utility::get_rumble_ent("steady_rumble");
|
|
var_00.intensity = 0.09;
|
|
var_00 common_scripts\utility::delaycall(11.25,::stoprumble,"steady_rumble");
|
|
level.player common_scripts\utility::delaycall(11.75,::playrumbleonentity,"heavy_1s");
|
|
wait(13);
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 17
|
|
remove_camera_view_angles(param_00,param_01,param_02)
|
|
{
|
|
self endon("death");
|
|
var_03 = getanimlength(param_00);
|
|
var_04 = var_03 - param_01 + param_02;
|
|
if(var_04 > 0)
|
|
{
|
|
wait(var_04);
|
|
}
|
|
|
|
self lerpviewangleclamp(param_01,0.2,0.2,0,0,0,0);
|
|
}
|
|
|
|
//Function Number: 18
|
|
intro_view_traffic()
|
|
{
|
|
level endon("flag_intro_give_player_driving");
|
|
wait(2);
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("fake_traffic_intro_truck");
|
|
level thread maps\_vehicle_traffic::add_script_car(var_00);
|
|
var_00 thread delete_vehicle_outof_view();
|
|
var_00 thread maps\_vehicle::vehicle_lights_on("brakelights");
|
|
var_00 thread maps\sanfran_lighting::setup_car_passing_lights();
|
|
wait(4);
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("fake_traffic_intro_bus");
|
|
var_00 thread maps\_vehicle::vehicle_lights_on("brakelights");
|
|
var_00 thread maps\sanfran_lighting::setup_car_passing_lights();
|
|
level thread maps\_vehicle_traffic::add_script_car(var_00);
|
|
var_00 thread delete_vehicle_outof_view();
|
|
wait(4);
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("fake_traffic_intro_van");
|
|
var_00 thread maps\_vehicle::vehicle_lights_on("brakelights");
|
|
var_00 thread maps\sanfran_lighting::setup_car_passing_lights();
|
|
level thread maps\_vehicle_traffic::add_script_car(var_00);
|
|
var_00 thread delete_vehicle_outof_view();
|
|
}
|
|
|
|
//Function Number: 19
|
|
umbra_override_tunnel()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_hud_brighten");
|
|
if(level.nextgen)
|
|
{
|
|
setsaveddvar("r_umbraAccurateOcclusionThreshold","256");
|
|
}
|
|
}
|
|
|
|
//Function Number: 20
|
|
use_turn_signal(param_00,param_01)
|
|
{
|
|
self endon("death");
|
|
var_02 = [];
|
|
if(param_00 == "left")
|
|
{
|
|
var_02 = ["taillight_left","mirrorlight_left","frontsignal_left"];
|
|
}
|
|
else if(param_00 == "right")
|
|
{
|
|
var_02 = ["taillight_right","mirrorlight_right","frontsignal_right"];
|
|
}
|
|
|
|
while(param_01 > 0)
|
|
{
|
|
foreach(var_04 in var_02)
|
|
{
|
|
maps\_vehicle::vehicle_single_light_on(var_04);
|
|
}
|
|
|
|
wait(0.35);
|
|
param_01 = param_01 - 0.35;
|
|
foreach(var_04 in var_02)
|
|
{
|
|
maps\_vehicle::vehicle_single_light_off(var_04);
|
|
}
|
|
|
|
wait(0.5);
|
|
param_01 = param_01 - 0.5;
|
|
}
|
|
}
|
|
|
|
//Function Number: 21
|
|
delete_vehicle_outof_view()
|
|
{
|
|
level waittill("flag_intro_give_player_driving");
|
|
for(;;)
|
|
{
|
|
if(!maps\sanfran_util::player_can_see(self.origin,125))
|
|
{
|
|
self delete();
|
|
break;
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 22
|
|
anim_van_intro(param_00)
|
|
{
|
|
var_01 = spawn("script_model",level.chase_van.origin);
|
|
var_01 setmodel("vehicle_ind_van_utility_ai");
|
|
var_01.animname = "atlas_van";
|
|
var_01 useanimtree(#animtree);
|
|
var_01 thread wakeup_physics_sphere_on_ent(195);
|
|
var_01 thread maps\sanfran_lighting::setup_car_passing_lights();
|
|
param_00 maps\_anim::anim_first_frame_solo(var_01,"pitbull_intro","tag_turret");
|
|
var_01 linkto(param_00,"tag_turret");
|
|
param_00 soundscripts\_snd::snd_message("chase_van_rabbiting_anim");
|
|
param_00 maps\_anim::anim_single_solo(var_01,"pitbull_intro","tag_turret");
|
|
level.chase_van vehicle_teleport(var_01.origin,level.chase_van.angles);
|
|
var_02 = getvehiclenode("van_anim_start_drive","targetname");
|
|
level.chase_van thread maps\_vehicle_code::_vehicle_paths(var_02);
|
|
level.chase_van startpath(var_02);
|
|
var_01 unlink();
|
|
var_01 delete();
|
|
common_scripts\utility::flag_set("flag_intro_van_anim_finished");
|
|
}
|
|
|
|
//Function Number: 23
|
|
wakeup_physics_sphere_on_ent(param_00)
|
|
{
|
|
self endon("death");
|
|
if(self.code_classname == "script_model")
|
|
{
|
|
var_01 = 1;
|
|
var_02 = self setcontents(0);
|
|
self setcontents(var_02 | var_01);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
wakeupphysicssphere(self.origin,param_00);
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 24
|
|
start_vehicle_traffic()
|
|
{
|
|
wait(0.25);
|
|
var_00 = getent("player_start_pos","targetname");
|
|
thread maps\_vehicle_traffic::setup_traffic_path("road_path","bridge_damageable_vehicle_spawner",1,var_00);
|
|
thread maps\_vehicle_traffic::setup_traffic_path("road_path_flood","bridge_damageable_vehicle_spawner",1,var_00);
|
|
thread maps\_vehicle_traffic::setup_traffic_path("bridge_path","bridge_damageable_vehicle_spawner",1,var_00);
|
|
thread maps\_vehicle_traffic::setup_traffic_path("bridge_path_split","bridge_damageable_vehicle_spawner",1,var_00);
|
|
thread maps\_vehicle_traffic::setup_traffic_path("road_onramp","bridge_damageable_vehicle_spawner",1,var_00);
|
|
}
|
|
|
|
//Function Number: 25
|
|
setup_player_pitbull(param_00)
|
|
{
|
|
if(!isdefined(level.player_pitbull))
|
|
{
|
|
level.player_pitbull = maps\_vehicle::spawn_vehicle_from_targetname("player_pitbull");
|
|
thread maps\_vehicle_traffic::add_script_car(level.player_pitbull);
|
|
}
|
|
|
|
level.player_pitbull soundscripts\_snd::snd_message("pc_pitbull_spawn");
|
|
level.player unlink();
|
|
level.player_pitbull thread maps\sanfran_aud::player_pitbull_woosh_sounds();
|
|
level.player_pitbull thread maps\sanfran_pitbull::handle_player_pitbull("player_rig");
|
|
level.player_pitbull thread mount_pitbull(param_00);
|
|
level.player_pitbull thread pitbull_flipped_failsafe();
|
|
level.player_pitbull maps\_utility::ent_flag_clear("pitbull_allow_shooting");
|
|
setsaveddvar("bg_viewBobMax",0);
|
|
maps\sanfran_util::spawn_squad();
|
|
level.player_pitbull maps\sanfran_pitbull::add_passenger_to_player_pitbull(level.burke,1);
|
|
level.player_pitbull maps\sanfran_pitbull::add_passenger_to_player_pitbull(level.saint,2);
|
|
level.player_pitbull thread maps\sanfran_fx::vfx_car_radial_damage();
|
|
}
|
|
|
|
//Function Number: 26
|
|
flag_construction_enable_pitbull_shooting()
|
|
{
|
|
self endon("death");
|
|
self endon("flag_pitbull_allow_shooting");
|
|
common_scripts\utility::flag_wait("flag_pitbull_allow_firing");
|
|
common_scripts\utility::flag_set("flag_pitbull_allow_shooting");
|
|
}
|
|
|
|
//Function Number: 27
|
|
disable_pitbull_use()
|
|
{
|
|
wait(0.25);
|
|
level.player_pitbull makeunusable();
|
|
}
|
|
|
|
//Function Number: 28
|
|
mount_pitbull(param_00)
|
|
{
|
|
waittillframeend;
|
|
self notify("mount_pitbull",param_00);
|
|
}
|
|
|
|
//Function Number: 29
|
|
pitbull_flipped_failsafe()
|
|
{
|
|
self endon("death");
|
|
self endon("dismount_pitbull");
|
|
var_00 = 0;
|
|
for(;;)
|
|
{
|
|
if(!isdefined(level.player.drivingvehicle) || level.player.drivingvehicle != self)
|
|
{
|
|
var_00 = 0;
|
|
wait(0.2);
|
|
continue;
|
|
}
|
|
|
|
if(maps\_utility::ent_flag("pitbull_scripted_anim"))
|
|
{
|
|
var_00 = 0;
|
|
maps\_utility::ent_flag_waitopen("pitbull_scripted_anim");
|
|
wait(0.2);
|
|
continue;
|
|
}
|
|
|
|
var_01 = anglestoup(self.angles);
|
|
var_02 = vectordot(var_01,(0,0,1));
|
|
if(var_02 < 0.1)
|
|
{
|
|
var_00 = var_00 + 0.2;
|
|
}
|
|
else
|
|
{
|
|
var_00 = 0;
|
|
}
|
|
|
|
if(var_00 >= 2)
|
|
{
|
|
setdvar("ui_deadquote",&"SANFRAN_FAIL_CHASE");
|
|
maps\_utility::missionfailedwrapper();
|
|
}
|
|
|
|
wait(0.2);
|
|
}
|
|
}
|
|
|
|
//Function Number: 30
|
|
handle_chase_van()
|
|
{
|
|
var_00 = 0;
|
|
if(!isdefined(level.chase_van))
|
|
{
|
|
level.chase_van = maps\_vehicle::spawn_vehicle_from_targetname("chase_van");
|
|
thread maps\_vehicle_traffic::add_script_car(level.chase_van);
|
|
level.chase_van thread maps\_vehicle::vehicle_lights_on("brakelights");
|
|
var_00 = 1;
|
|
}
|
|
|
|
level.chase_van endon("death");
|
|
level.chase_van maps\_vehicle::godon();
|
|
level.chase_van vehphys_disablecrashing();
|
|
if(var_00 == 1)
|
|
{
|
|
common_scripts\utility::flag_wait("flag_intro_van_anim_finished");
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_obj_van_intercept");
|
|
level.chase_van thread fail_chase_van();
|
|
if(!isdefined(level.chase_van.lead_pos))
|
|
{
|
|
level.chase_van.lead_pos = "far";
|
|
}
|
|
|
|
var_01 = undefined;
|
|
common_scripts\utility::run_thread_on_targetname("trigger_chase_van_set_far",::maps\sanfran_util::chase_van_set_far);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_chase_van_set_medium",::maps\sanfran_util::chase_van_set_medium);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_chase_van_set_close",::maps\sanfran_util::chase_van_set_close);
|
|
if(!common_scripts\utility::flag("flag_intro_give_player_driving"))
|
|
{
|
|
common_scripts\utility::flag_wait("flag_intro_give_player_driving");
|
|
level.chase_van vehicle_setspeed(55,100,100);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
if(common_scripts\utility::flag("flag_player_crashed"))
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(!isdefined(var_01) || var_01 != level.chase_van.lead_pos)
|
|
{
|
|
var_01 = level.chase_van.lead_pos;
|
|
if(var_01 == "close")
|
|
{
|
|
level.chase_van thread maps\sanfran_util::vehicle_chase_target(level.player_pitbull,1280,1536,5,5,1,0,0,0,35);
|
|
}
|
|
else if(var_01 == "medium")
|
|
{
|
|
level.chase_van thread maps\sanfran_util::vehicle_chase_target(level.player_pitbull,2176,2688,5,5,1,0,0,0,35);
|
|
}
|
|
else if(var_01 == "far")
|
|
{
|
|
level.chase_van thread maps\sanfran_util::vehicle_chase_target(level.player_pitbull,3328,3584,5,5,1,0,0,0,35);
|
|
}
|
|
else
|
|
{
|
|
}
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
level.chase_van notify("stop_chase_target");
|
|
level.chase_van resumespeed(30);
|
|
}
|
|
|
|
//Function Number: 31
|
|
start_reverse_hint()
|
|
{
|
|
level endon("player_crash_scene");
|
|
level endon("display_reverse_tutorial");
|
|
for(;;)
|
|
{
|
|
if((isdefined(level.chase_van) && !common_scripts\utility::flag("flag_oncoming_scene_playing") && !common_scripts\utility::flag("flag_final_crash_scene_playing")) || !common_scripts\utility::flag("missionfailed"))
|
|
{
|
|
var_00 = level.player maps\_utility::player_looking_at(level.chase_van.origin,0.4,1);
|
|
if(!var_00)
|
|
{
|
|
thread show_reverse_tutorial();
|
|
break;
|
|
}
|
|
}
|
|
|
|
wait(0.15);
|
|
}
|
|
}
|
|
|
|
//Function Number: 32
|
|
show_reverse_tutorial()
|
|
{
|
|
level notify("display_reverse_tutorial");
|
|
while(level.player_pitbull.veh_speed > 10)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_reverse_hint_displayed");
|
|
thread maps\_utility::hintdisplayhandler("reverse_hint",5);
|
|
}
|
|
|
|
//Function Number: 33
|
|
show_reverse_tutorial_check()
|
|
{
|
|
if(!isdefined(level.player_pitbull))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(level.player_pitbull.veh_speed > 30 || common_scripts\utility::flag("flag_oncoming_scene_playing") || common_scripts\utility::flag("flag_final_crash_scene_playing"))
|
|
{
|
|
common_scripts\utility::flag_clear("flag_reverse_hint_displayed");
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 34
|
|
vehicle_blocked_check()
|
|
{
|
|
level endon("player_crash_scene");
|
|
level endon("display_reverse_tutorial");
|
|
for(;;)
|
|
{
|
|
var_00 = level.player_pitbull vehicle_getspeed();
|
|
if(var_00 < 2)
|
|
{
|
|
wait(0.8);
|
|
if(!common_scripts\utility::flag("flag_oncoming_scene_playing") || !common_scripts\utility::flag("flag_final_crash_scene_playing") || !common_scripts\utility::flag("missionfailed"))
|
|
{
|
|
var_01 = 250;
|
|
var_02 = level.player_pitbull gettagorigin("left_wheel_01_jnt");
|
|
var_03 = common_scripts\utility::flat_angle(level.player_pitbull gettagangles("left_wheel_01_jnt"));
|
|
var_02 = var_02 + anglestoforward(var_03) * 30;
|
|
var_02 = (var_02[0],var_02[1] + 45,var_02[2] + 25);
|
|
var_04 = var_02 + anglestoforward(var_03) * var_01;
|
|
var_05 = bullettrace(var_02,var_04,0,0,0,0,1);
|
|
if(isdefined(var_05["surfacetype"]) && var_05["surfacetype"] != "none")
|
|
{
|
|
thread show_reverse_tutorial();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 35
|
|
driving_section_save()
|
|
{
|
|
self waittill("trigger");
|
|
var_00 = 0;
|
|
while(var_00 < 5)
|
|
{
|
|
var_01 = level.player maps\_utility::player_looking_at(level.chase_van.origin,0.15,1);
|
|
if(level.player_close_to_fail_dist == 0 && var_01 == 1)
|
|
{
|
|
for(var_02 = 0;var_02 < level.players.size;var_02++)
|
|
{
|
|
var_03 = level.players[var_02];
|
|
if(!var_03 maps\_autosave::autosavehealthcheck())
|
|
{
|
|
break;
|
|
}
|
|
|
|
maps\_utility::autosave_now();
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
wait(0.15);
|
|
var_00 = var_00 + 0.15;
|
|
}
|
|
}
|
|
|
|
//Function Number: 36
|
|
fail_chase_van()
|
|
{
|
|
level endon("flag_player_crashed");
|
|
common_scripts\utility::run_thread_on_targetname("trigger_leaving_driving_section",::fail_leaving_area);
|
|
level.player_close_to_fail_dist = 0;
|
|
wait(1);
|
|
for(;;)
|
|
{
|
|
var_00 = distance(level.player.origin,self.origin);
|
|
if(var_00 > 6000)
|
|
{
|
|
setdvar("ui_deadquote",&"SANFRAN_FAIL_CHASE");
|
|
maps\_utility::missionfailedwrapper();
|
|
}
|
|
else if(var_00 > 4500 && !common_scripts\utility::flag("flag_reverse_hint_displayed"))
|
|
{
|
|
maps\sanfran_util::player_too_far_hint();
|
|
level.player_close_to_fail_dist = 1;
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_clear("flag_hint_player_too_far");
|
|
level.player_close_to_fail_dist = 0;
|
|
}
|
|
|
|
wait(0.15);
|
|
}
|
|
}
|
|
|
|
//Function Number: 37
|
|
fail_leaving_area()
|
|
{
|
|
if(!isdefined(level.player_out_of_bounds_count))
|
|
{
|
|
level.player_out_of_bounds_count = 0;
|
|
}
|
|
|
|
level endon("flag_player_crashed");
|
|
for(;;)
|
|
{
|
|
self waittill("trigger");
|
|
level.player_out_of_bounds_count++;
|
|
if(level.player_out_of_bounds_count == 1)
|
|
{
|
|
level.fail_start_time = gettime();
|
|
}
|
|
|
|
maps\sanfran_util::player_left_road_hint();
|
|
while(level.player istouching(self))
|
|
{
|
|
var_00 = gettime();
|
|
var_01 = var_00 - level.fail_start_time;
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
level.player_out_of_bounds_count--;
|
|
if(level.player_out_of_bounds_count == 0)
|
|
{
|
|
common_scripts\utility::flag_clear("flag_hint_player_left_road");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 38
|
|
handle_friendly_pitbull()
|
|
{
|
|
var_00 = 0;
|
|
if(!isdefined(level.friendly_pitbull))
|
|
{
|
|
level.friendly_pitbull = maps\_vehicle::spawn_vehicle_from_targetname("friendly_pitbull");
|
|
thread maps\_vehicle_traffic::add_script_car(level.friendly_pitbull);
|
|
level.friendly_pitbull thread maps\_vehicle::vehicle_lights_on("brakelights");
|
|
var_00 = 1;
|
|
}
|
|
|
|
level.friendly_pitbull endon("death");
|
|
level.friendly_pitbull maps\_vehicle::godon();
|
|
level.friendly_pitbull vehphys_disablecrashing();
|
|
if(var_00 == 1)
|
|
{
|
|
common_scripts\utility::flag_wait("flag_intro_van_anim_finished");
|
|
level.friendly_pitbull startpath();
|
|
}
|
|
|
|
if(!isdefined(level.friendly_pitbull.shadow_pos))
|
|
{
|
|
level.friendly_pitbull.shadow_pos = "player";
|
|
}
|
|
|
|
var_01 = undefined;
|
|
common_scripts\utility::run_thread_on_targetname("trigger_pitbull_shadow_chase_van",::maps\sanfran_util::friendly_pitbull_shadow_chase_van);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_pitbull_shadow_player",::maps\sanfran_util::friendly_pitbull_shadow_player);
|
|
level.friendly_pitbull thread maps\sanfran_pitbull::handle_friendly_pitbull_shooting();
|
|
level.friendly_pitbull thread maps\sanfran_util::vehicle_oscillate_location(1024,3);
|
|
for(;;)
|
|
{
|
|
if(common_scripts\utility::flag("flag_player_crashed"))
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(!isdefined(var_01) || var_01 != level.friendly_pitbull.shadow_pos)
|
|
{
|
|
var_01 = level.friendly_pitbull.shadow_pos;
|
|
if(var_01 == "van")
|
|
{
|
|
level.friendly_pitbull thread maps\sanfran_util::vehicle_chase_target(level.chase_van,768,1024,5,5,0,1,1,0);
|
|
}
|
|
else if(var_01 == "player")
|
|
{
|
|
level.friendly_pitbull thread maps\sanfran_util::vehicle_chase_target(level.player_pitbull,768,1024,5,5,1,0,1,0);
|
|
}
|
|
else
|
|
{
|
|
}
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
level.friendly_pitbull notify("stop_chase_target");
|
|
level.friendly_pitbull resumespeed(30);
|
|
}
|
|
|
|
//Function Number: 39
|
|
handle_atlas_intercepts()
|
|
{
|
|
level endon("flag_player_crashed");
|
|
common_scripts\utility::run_thread_on_targetname("trigger_spawn_atlas_intercept",::spawn_atlas_intercept);
|
|
if(!isdefined(level.atlas_intercepts))
|
|
{
|
|
level.atlas_intercepts = [];
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
level.atlas_intercepts = maps\_utility::array_removedead(level.atlas_intercepts);
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 40
|
|
delete_atlas_intercepts()
|
|
{
|
|
foreach(var_01 in level.atlas_intercepts)
|
|
{
|
|
var_01 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 41
|
|
spawn_atlas_intercept()
|
|
{
|
|
level endon("flag_player_crashed");
|
|
self waittill("trigger");
|
|
for(var_00 = 0;var_00 < level.atlas_intercepts.size;var_00++)
|
|
{
|
|
if(level.atlas_intercepts[var_00].targetname == self.script_noteworthy)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
var_01 = getent(self.target,"targetname");
|
|
if(maps\sanfran_util::player_can_see(var_01.origin,45))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(var_01.targetname);
|
|
thread maps\_vehicle_traffic::add_script_car(var_02);
|
|
var_02.script_noteworthy = "target_vehicle";
|
|
var_02.targetname = self.script_noteworthy;
|
|
foreach(var_04 in var_02.riders)
|
|
{
|
|
var_04.accuracy = 200;
|
|
}
|
|
|
|
var_02 thread cleanup_atlas_on_death();
|
|
level.atlas_intercepts[level.atlas_intercepts.size] = var_02;
|
|
var_06 = randomint(100);
|
|
if(var_02.targetname == "right_atlas_intercept")
|
|
{
|
|
if(var_06 < 50)
|
|
{
|
|
var_02 thread maps\sanfran_util::vehicle_chase_target(level.chase_van,512,768,5,5,0,1,1,1);
|
|
}
|
|
else
|
|
{
|
|
var_02 thread maps\sanfran_util::vehicle_chase_target(level.friendly_pitbull,256,384,5,5,0,1,1,1);
|
|
}
|
|
}
|
|
else if(level.chase_van.lead_pos == "close")
|
|
{
|
|
if(var_06 < 10)
|
|
{
|
|
var_02 thread maps\sanfran_util::vehicle_chase_target(level.chase_van,512,768,5,5,0,1,1,1);
|
|
}
|
|
else if(var_06 < 55)
|
|
{
|
|
var_02 thread maps\sanfran_util::vehicle_chase_target(level.friendly_pitbull,256,384,5,5,0,1,1,1);
|
|
}
|
|
else
|
|
{
|
|
var_02 thread maps\sanfran_util::vehicle_chase_target(level.player_pitbull,1024,1280,5,5,1,0,1,1);
|
|
}
|
|
}
|
|
else if(var_06 < 50)
|
|
{
|
|
var_02 thread maps\sanfran_util::vehicle_chase_target(level.friendly_pitbull,256,384,5,5,0,1,1,1);
|
|
}
|
|
else
|
|
{
|
|
var_02 thread maps\sanfran_util::vehicle_chase_target(level.player_pitbull,1024,1280,5,5,1,0,1,1);
|
|
}
|
|
|
|
var_02 thread maps\_vehicle_traffic::detect_being_pushed(::delete_atlas_intercept);
|
|
if(isdefined(var_01.script_noteworthy) && var_01.script_noteworthy == "crash_at_end")
|
|
{
|
|
wakeupphysicssphere(var_01.origin,195);
|
|
var_02 thread maps\sanfran_util::wait_for_crash_at_end();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_player_crashed");
|
|
self notify("stop_chase_target");
|
|
self resumespeed(30);
|
|
}
|
|
|
|
//Function Number: 42
|
|
delete_atlas_intercept()
|
|
{
|
|
self dodamage(1000000000,self.origin);
|
|
}
|
|
|
|
//Function Number: 43
|
|
cleanup_atlas_on_death()
|
|
{
|
|
self waittill("death",var_00,var_01,var_02);
|
|
if(isdefined(var_02) && var_02 == "pitbull_turret" && isdefined(level.player_pitbull))
|
|
{
|
|
level.player maps\_upgrade_challenge::give_player_challenge_kill(1);
|
|
}
|
|
|
|
common_scripts\utility::array_remove(level.atlas_intercepts,self);
|
|
wait(5);
|
|
if(isdefined(self))
|
|
{
|
|
self delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 44
|
|
start_crash_bus()
|
|
{
|
|
self waittill("trigger");
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("veh_crash_bus");
|
|
var_00 maps\_vehicle::godon();
|
|
thread maps\_vehicle_traffic::add_script_car(var_00);
|
|
thread maps\_vehicle_traffic::clear_cars_around_pos(var_00.origin,2000);
|
|
var_00 vehphys_disablecrashing();
|
|
var_00 thread bus_crash_at_end();
|
|
level thread maps\sanfran_util::get_vehicles_to_point_at_same_time(level.chase_van,"bus_crash_location",var_00,undefined,"stop_bus_syncup");
|
|
}
|
|
|
|
//Function Number: 45
|
|
bus_crash_at_end()
|
|
{
|
|
self waittill("reached_end_node");
|
|
level notify("stop_bus_syncup");
|
|
self vehphys_setspeed(0,10000,10000);
|
|
self.animname = "bus";
|
|
self useanimtree(#animtree);
|
|
maps\_utility::anim_stopanimscripted();
|
|
soundscripts\_snd::snd_message("bus_crash_start");
|
|
common_scripts\utility::flag_set("flag_dialog_tunnel_bus");
|
|
thread bus_crash_setup_backup_collision();
|
|
thread bus_crash_hold_on_last_frame();
|
|
var_00 = getent("bus_crash_origin","targetname");
|
|
var_00 maps\_anim::anim_single_solo(self,"bus_crash");
|
|
thread maps\_vehicle_traffic::remove_script_car(self);
|
|
maps\_vehicle::godoff();
|
|
}
|
|
|
|
//Function Number: 46
|
|
bus_crash_setup_backup_collision()
|
|
{
|
|
var_00 = getanimlength(maps\_utility::getanim("bus_crash")) - 1;
|
|
wait(var_00);
|
|
maps\sanfran_util::show_ents_by_targetname("bus_crash_final_pos_col");
|
|
maps\sanfran_util::solid_ents_by_targetname("bus_crash_final_pos_col");
|
|
}
|
|
|
|
//Function Number: 47
|
|
bus_crash_hold_on_last_frame()
|
|
{
|
|
wait(getanimlength(maps\_utility::getanim("bus_crash")) - 0.1);
|
|
self setanimrate(maps\_utility::getanim("bus_crash"),0);
|
|
}
|
|
|
|
//Function Number: 48
|
|
start_construction_heli()
|
|
{
|
|
self waittill("trigger");
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("construction_heli");
|
|
var_00 waittill("heli_at_construction");
|
|
var_00 thread maps\sanfran_util::vehicle_chase_target(level.player_pitbull,2800,3000,0,0,1,0,0,0);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_heli_start_shooting",::construction_heli_shoot,var_00);
|
|
var_00 waittill("heli_at_tanker");
|
|
var_00 notify("stop_chase_target");
|
|
var_00 resumespeed(80);
|
|
}
|
|
|
|
//Function Number: 49
|
|
construction_heli_shoot(param_00)
|
|
{
|
|
self waittill("trigger");
|
|
var_01 = [];
|
|
var_02 = 1;
|
|
for(;;)
|
|
{
|
|
var_03 = getent("heli_construction_target_" + var_02,"targetname");
|
|
if(!isdefined(var_03))
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_01[var_01.size] = var_03;
|
|
var_02++;
|
|
}
|
|
|
|
var_04 = magicbullet("pitbull_magicbullet",param_00.origin + (0,0,-150),var_01[0].origin);
|
|
var_04 soundscripts\_snd::snd_message("npc_heli_shot",param_00);
|
|
wait(1);
|
|
var_04 = magicbullet("pitbull_magicbullet",param_00.origin + (0,0,-150),var_01[1].origin);
|
|
var_04 soundscripts\_snd::snd_message("npc_heli_shot",param_00);
|
|
wait(1);
|
|
var_04 = magicbullet("pitbull_magicbullet",param_00.origin + (0,0,-150),var_01[2].origin);
|
|
var_04 soundscripts\_snd::snd_message("npc_heli_shot",param_00);
|
|
}
|
|
|
|
//Function Number: 50
|
|
crash_open_gate()
|
|
{
|
|
self waittill("trigger",var_00);
|
|
soundscripts\_snd::snd_message("gate_crash");
|
|
common_scripts\utility::run_thread_on_targetname("construction_gate_left",::crash_open_left_gate);
|
|
common_scripts\utility::run_thread_on_targetname("construction_gate_right",::crash_open_right_gate);
|
|
thread maps\sanfran_fx::vfx_gate_crash_open();
|
|
common_scripts\utility::run_thread_on_targetname("trigger_water_splash",::water_splash);
|
|
}
|
|
|
|
//Function Number: 51
|
|
crash_open_left_gate()
|
|
{
|
|
var_00 = self.angles;
|
|
var_01 = (var_00[0],var_00[1] + 80,var_00[2]);
|
|
self rotateto(var_01,0.4,0,0.1);
|
|
}
|
|
|
|
//Function Number: 52
|
|
crash_open_right_gate()
|
|
{
|
|
var_00 = self.angles;
|
|
var_01 = (var_00[0],var_00[1] - 100,var_00[2]);
|
|
self rotateto(var_01,0.4,0,0.1);
|
|
}
|
|
|
|
//Function Number: 53
|
|
water_splash()
|
|
{
|
|
for(;;)
|
|
{
|
|
self waittill("trigger",var_00);
|
|
if(!isdefined(var_00.splashing_water))
|
|
{
|
|
var_00.splashing_water = 0;
|
|
}
|
|
|
|
if(var_00.splashing_water == 0)
|
|
{
|
|
var_00 thread vehicle_splash_water(self);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 54
|
|
vehicle_splash_water(param_00)
|
|
{
|
|
self endon("death");
|
|
self.splashing_water = 1;
|
|
var_01 = common_scripts\utility::spawn_tag_origin();
|
|
var_01 thread splash_pos_for_speed(self);
|
|
for(;;)
|
|
{
|
|
wait(0.25);
|
|
if(!var_01 istouching(param_00))
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
self.splashing_water = 0;
|
|
var_01 unlink();
|
|
var_01 delete();
|
|
}
|
|
|
|
//Function Number: 55
|
|
splash_pos_for_speed(param_00)
|
|
{
|
|
self endon("death");
|
|
param_00 endon("death");
|
|
for(;;)
|
|
{
|
|
self unlink();
|
|
var_01 = vectornormalize(param_00 vehicle_getvelocity());
|
|
var_02 = vectornormalize(anglestoforward(param_00.angles));
|
|
var_03 = vectordot(var_01,var_02);
|
|
var_04 = param_00 vehicle_getspeed();
|
|
var_05 = var_04 / 70 * 450 + 200;
|
|
if(var_05 > 0.2)
|
|
{
|
|
if(var_03 > 0)
|
|
{
|
|
var_06 = param_00.origin + var_05 * anglestoforward(self.angles);
|
|
}
|
|
else
|
|
{
|
|
var_06 = param_00.origin - var_05 * anglestoforward(self.angles);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_06 = param_00.origin + (0,0,-1000);
|
|
}
|
|
|
|
self.origin = var_06;
|
|
self linkto(param_00);
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 56
|
|
start_tanker_explosion()
|
|
{
|
|
self waittill("trigger");
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(self.target);
|
|
var_01 = getent("crash_truck_cab_brushmodel","targetname");
|
|
var_02 = getent("crash_truck_tank_brushmodel","targetname");
|
|
var_01 store_offsets_for_link(var_00,"tag_headlight_right");
|
|
var_02 store_offsets_for_link(var_00,"tag_brakelight_right");
|
|
var_01 link_with_stored_offsets(var_00);
|
|
var_02 link_with_stored_offsets(var_00);
|
|
level thread start_tanker_on_ramp_traffic();
|
|
level thread handle_tanker_missiles(var_00);
|
|
level thread maps\sanfran_util::get_vehicles_to_point_at_same_time(level.chase_van,"tanker_missile_location",var_00,"tanker_missile_location");
|
|
if(level.currentgen)
|
|
{
|
|
level waittill("tff_pre_transition_intro_to_outro");
|
|
var_02 delete();
|
|
var_01 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 57
|
|
store_offsets_for_link(param_00,param_01)
|
|
{
|
|
self.link_tag = param_01;
|
|
self.link_offset = transformmove((0,0,0),(0,0,0),param_00 gettagorigin(param_01),param_00 gettagangles(param_01),self.origin,self.angles);
|
|
}
|
|
|
|
//Function Number: 58
|
|
link_with_stored_offsets(param_00)
|
|
{
|
|
self linkto(param_00,self.link_tag,self.link_offset["origin"],self.link_offset["angles"]);
|
|
}
|
|
|
|
//Function Number: 59
|
|
handle_tanker_missiles(param_00)
|
|
{
|
|
level.chase_van thread fire_first_tanker_missile(param_00);
|
|
param_00 thread wait_for_missile();
|
|
}
|
|
|
|
//Function Number: 60
|
|
fire_first_tanker_missile(param_00)
|
|
{
|
|
self waittill("tanker_first_missile_location");
|
|
var_01 = self.origin + (0,0,100) + 100 * anglestoright(self.angles);
|
|
var_02 = param_00.origin + (0,0,100) + -300 * anglestoforward(param_00.angles);
|
|
magicbullet("rpg_nodamage",var_01,var_02);
|
|
}
|
|
|
|
//Function Number: 61
|
|
wait_for_missile()
|
|
{
|
|
self waittill("tanker_missile_location");
|
|
wait(0.05);
|
|
self resumespeed(20);
|
|
var_00 = 50;
|
|
for(;;)
|
|
{
|
|
var_01 = level.chase_van.origin + (0,0,var_00) + 100 * anglestoright(level.chase_van.angles);
|
|
var_02 = self.origin + (0,0,64) + 400 * anglestoforward(self.angles);
|
|
var_03 = bullettrace(var_01,var_02,1);
|
|
if(!isdefined(var_03["entity"]) && var_03["fraction"] > 0.9)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_00 = var_00 + 5;
|
|
if(var_00 > 100)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
magicbullet("rpg_nodamage",var_01,var_02);
|
|
wait(1);
|
|
level thread tanker_roll_explosion(self);
|
|
}
|
|
|
|
//Function Number: 62
|
|
tanker_roll_explosion(param_00)
|
|
{
|
|
common_scripts\utility::flag_set("flag_dialog_tunnel_tanker");
|
|
var_01 = getent("tanker_crash_origin","targetname");
|
|
var_02 = distance(param_00.origin,var_01.origin);
|
|
for(;;)
|
|
{
|
|
wait(0.05);
|
|
var_03 = distance(param_00.origin,var_01.origin);
|
|
if(var_03 > var_02)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_02 = var_03;
|
|
}
|
|
|
|
var_04 = spawn("script_model",(0,0,0));
|
|
var_04 setmodel("vehicle_ind_semi_truck_fuel_tanker");
|
|
var_04.animname = "tanker";
|
|
var_04 useanimtree(#animtree);
|
|
var_04.origin = param_00.origin;
|
|
var_04.angles = param_00.angles;
|
|
var_05 = getent("crash_truck_cab_brushmodel","targetname");
|
|
var_06 = getent("crash_truck_tank_brushmodel","targetname");
|
|
var_05 link_with_stored_offsets(var_04);
|
|
var_06 link_with_stored_offsets(var_04);
|
|
param_00 delete();
|
|
var_04 soundscripts\_snd::snd_message("aud_tanker_crash");
|
|
var_04 thread maps\sanfran_fx::oil_tanker_crash_fx();
|
|
var_01 maps\_anim::anim_single_solo(var_04,"tanker_crash");
|
|
}
|
|
|
|
//Function Number: 63
|
|
start_tanker_on_ramp_traffic()
|
|
{
|
|
wait(3);
|
|
maps\_vehicle_traffic::spawn_single_vehicle_for_lane("road_onramp_1","bridge_damageable_vehicle_spawner");
|
|
wait(3);
|
|
maps\_vehicle_traffic::spawn_single_vehicle_for_lane("road_onramp_1","bridge_damageable_vehicle_spawner");
|
|
wait(3);
|
|
maps\_vehicle_traffic::spawn_single_vehicle_for_lane("road_onramp_1","bridge_damageable_vehicle_spawner");
|
|
}
|
|
|
|
//Function Number: 64
|
|
start_blocking_police()
|
|
{
|
|
self waittill("trigger");
|
|
var_00 = getent("police_blocking_collision","targetname");
|
|
var_00 notsolid();
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(self.target);
|
|
var_01 waittill("reached_end_node");
|
|
var_01 vehphys_setspeed(0);
|
|
var_02 = spawn("script_model",var_01.origin);
|
|
var_02 setmodel(var_01.model);
|
|
var_02.origin = var_01.origin;
|
|
var_02.angles = var_01.angles;
|
|
var_02 soundscripts\_snd::snd_message("spawn_driving_police_car");
|
|
var_01 delete();
|
|
var_00 solid();
|
|
}
|
|
|
|
//Function Number: 65
|
|
start_knocked_to_oncoming()
|
|
{
|
|
self waittill("trigger");
|
|
common_scripts\utility::flag_set("flag_dialog_pre_oncoming_knocked");
|
|
wait(0.4);
|
|
level.player_pitbull maps\_utility::ent_flag_set("pitbull_scripted_anim");
|
|
level.player_pitbull maps\_utility::ent_flag_clear("pitbull_allow_shooting");
|
|
level.player_pitbull maps\sanfran_pitbull_drive_anim::clear_anims();
|
|
level.player enabledeathshield(1);
|
|
var_00 = getent("knocked_to_oncoming_origin","targetname");
|
|
thread knocked_to_oncoming_rumble();
|
|
var_01 = level.player_pitbull.player_rig;
|
|
var_02 = level.player_pitbull.fake_vehicle_model;
|
|
var_03 = [];
|
|
var_03[0] = var_01;
|
|
soundscripts\_snd::snd_message("van_cuts_off_player");
|
|
thread maps\_vehicle_traffic::clear_cars_around_pos(var_00.origin,200);
|
|
foreach(var_05 in level.atlas_intercepts)
|
|
{
|
|
if(distance(level.player_pitbull.origin,var_05.origin) < 200)
|
|
{
|
|
var_05 delete();
|
|
}
|
|
}
|
|
|
|
level.player_pitbull vehicle_teleport(var_00.origin,level.player_pitbull.angles);
|
|
var_02 = level.player_pitbull maps\sanfran_pitbull::disconnect_fake_pitbull();
|
|
var_07 = maps\_vehicle::spawn_vehicle_from_targetname("atlas_van_knock_to_oncoming");
|
|
var_07.animname = "atlas_suv";
|
|
var_07 useanimtree(#animtree);
|
|
var_03 = [];
|
|
var_03[0] = var_02;
|
|
var_03[1] = var_07;
|
|
level.player dontinterpolate();
|
|
var_02 maps\_anim::anim_first_frame_solo(var_02,"oncoming_crash");
|
|
var_02 maps\_anim::anim_first_frame_solo(var_01,"oncoming_crash","tag_driver");
|
|
var_01 linkto(var_02,"tag_driver");
|
|
common_scripts\utility::flag_set("flag_dialog_start_oncoming");
|
|
common_scripts\utility::flag_set("flag_dialog_oncoming_knocked");
|
|
common_scripts\utility::flag_set("flag_oncoming_scene_playing");
|
|
if(level.currentgen)
|
|
{
|
|
level.player_pitbull notify("oncoming_scene_pitbull_monitor_start");
|
|
thread oncoming_scene_pitbull_speed_monitor();
|
|
}
|
|
|
|
var_02 thread maps\_anim::anim_single_solo(var_01,"oncoming_crash","tag_driver");
|
|
var_00 maps\_anim::anim_single(var_03,"oncoming_crash");
|
|
common_scripts\utility::flag_clear("flag_oncoming_scene_playing");
|
|
level.player_pitbull maps\sanfran_pitbull::reconnect_fake_pitbull();
|
|
level.player_pitbull vehicle_setspeedimmediate(55,100,60);
|
|
level.player enabledeathshield(0);
|
|
if(level.currentgen)
|
|
{
|
|
level notify("oncoming_scene_pitbull_monitor_stop");
|
|
level.player_pitbull thread maps\sanfran_pitbull::handle_player_pitbull_hud();
|
|
}
|
|
|
|
level.player_pitbull maps\_utility::ent_flag_clear("pitbull_scripted_anim");
|
|
level.player_pitbull maps\_utility::ent_flag_set("pitbull_allow_shooting");
|
|
soundscripts\_snd::snd_message("monitor_pitbull_oncoming");
|
|
level thread pitbull_back_to_speed();
|
|
var_07 thread cleanup_oncoming_suv();
|
|
soundscripts\_snd::snd_message("player_in_oncoming");
|
|
}
|
|
|
|
//Function Number: 66
|
|
oncoming_scene_pitbull_speed_monitor()
|
|
{
|
|
level endon("oncoming_scene_pitbull_monitor_stop");
|
|
var_00 = 0;
|
|
for(;;)
|
|
{
|
|
luinotifyevent(&"pitbull_update_speed",1,level.oncoming_pitbull_speed);
|
|
if(var_00 > 10)
|
|
{
|
|
level.oncoming_pitbull_speed--;
|
|
var_00 = 0;
|
|
}
|
|
|
|
wait 0.05;
|
|
var_00++;
|
|
}
|
|
}
|
|
|
|
//Function Number: 67
|
|
knocked_to_oncoming_rumble()
|
|
{
|
|
level.player common_scripts\utility::delaycall(0.1,::playrumbleonentity,"heavy_3s");
|
|
level.player common_scripts\utility::delaycall(2.2,::playrumbleonentity,"light_1s");
|
|
}
|
|
|
|
//Function Number: 68
|
|
pitbull_back_to_speed()
|
|
{
|
|
var_00 = gettime();
|
|
level.player_pitbull vehphys_setspeed(55);
|
|
while(gettime() < var_00 + 4000)
|
|
{
|
|
if(level.player attackbuttonpressed())
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(level.player buttonpressed("BUTTON_B"))
|
|
{
|
|
break;
|
|
}
|
|
|
|
level.player_pitbull vehphys_setspeed(55);
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 69
|
|
cleanup_oncoming_suv()
|
|
{
|
|
self endon("death");
|
|
wait(20);
|
|
for(;;)
|
|
{
|
|
if(!maps\sanfran_util::player_can_see(self.origin,45))
|
|
{
|
|
self delete();
|
|
return;
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 70
|
|
start_bridge_heli()
|
|
{
|
|
self waittill("trigger");
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("bridge_heli");
|
|
for(;;)
|
|
{
|
|
if(!isdefined(level.chase_van))
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_01 = anglestoforward(var_00.angles);
|
|
var_02 = vectornormalize(level.chase_van.origin - var_00.origin);
|
|
var_03 = vectordot(var_01,var_02);
|
|
if(var_03 < 0)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_04 = distance(var_00.origin,level.chase_van.origin);
|
|
if(var_04 < 5000)
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
for(var_05 = 0;var_05 < 3;var_05++)
|
|
{
|
|
var_06 = maps\sanfran_util::get_single_living_ent("right_atlas_intercept","targetname");
|
|
var_07 = (0,0,0);
|
|
var_08 = (0,0,0);
|
|
if(isdefined(var_06) && var_05 == 0 && distance(var_00.origin,var_06.origin) < 6000)
|
|
{
|
|
var_07 = 700 * anglestoforward(var_06.angles);
|
|
magicbullet("pitbull_magicbullet",var_00.origin + (0,0,-100),var_06.origin + var_07);
|
|
}
|
|
else
|
|
{
|
|
if(!isdefined(level.chase_van))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_07 = randomfloatrange(800,1200) * anglestoforward(level.chase_van.angles);
|
|
var_08 = randomfloatrange(200,400) * anglestoright(level.chase_van.angles);
|
|
if(randomint(100) < 50)
|
|
{
|
|
var_08 = -1 * var_08;
|
|
}
|
|
|
|
magicbullet("pitbull_magicbullet",var_00.origin + (0,0,-100),level.chase_van.origin + var_07 + var_08);
|
|
}
|
|
|
|
if(var_05 == 0)
|
|
{
|
|
var_09 = common_scripts\utility::getstruct("bridge_heli_fly_off","targetname");
|
|
var_00 thread maps\_vehicle_code::_vehicle_paths(var_09);
|
|
}
|
|
|
|
wait(1.5);
|
|
}
|
|
}
|
|
|
|
//Function Number: 71
|
|
player_crash()
|
|
{
|
|
self waittill("trigger");
|
|
level notify("player_crash_scene");
|
|
maps\sanfran_util::setup_squad_for_scene();
|
|
level.player_pitbull maps\_utility::ent_flag_set("pitbull_scripted_anim");
|
|
level.player_pitbull maps\_utility::ent_flag_clear("pitbull_allow_shooting");
|
|
level.player_pitbull maps\sanfran_pitbull_drive_anim::clear_anims();
|
|
level.player enabledeathshield(1);
|
|
var_00 = getent("org_player_crash_start","targetname");
|
|
var_01 = level.player_pitbull.player_rig;
|
|
var_02 = level.player_pitbull.fake_vehicle_model;
|
|
thread crash_rumble();
|
|
level.player playerlinktodelta(var_01,"tag_player",1,10,10,5,5,1);
|
|
level.player enableslowaim();
|
|
soundscripts\_snd::snd_message("pitbull_crash_sound_design");
|
|
level.player_pitbull vehicle_teleport(var_00.origin,level.player_pitbull.angles);
|
|
maps\_vehicle_traffic::clear_cars_around_pos(level.player_pitbull.origin,600,1);
|
|
var_02 = level.player_pitbull maps\sanfran_pitbull::disconnect_fake_pitbull();
|
|
var_03 = maps\_vehicle::spawn_vehicle_from_targetname("player_crash_van");
|
|
var_03 maps\_vehicle::godon();
|
|
var_03.animname = "work_van";
|
|
var_03 useanimtree(#animtree);
|
|
var_04 = maps\_vehicle::spawn_vehicle_from_targetname("player_crash_suburban");
|
|
var_04 maps\_vehicle::godon();
|
|
var_04.animname = "atlas_suv";
|
|
var_04 useanimtree(#animtree);
|
|
var_04 hidepart("TAG_DOOR_GLASS_RIGHT_BACK");
|
|
var_00 maps\_anim::anim_first_frame_solo(var_04,"pitbull_crash");
|
|
var_05 = maps\_utility::array_spawn_targetname("player_crash_atlas_guy");
|
|
for(var_06 = 0;var_06 < var_05.size;var_06++)
|
|
{
|
|
var_05[var_06].animname = "atlas_" + var_06 + 1;
|
|
}
|
|
|
|
var_01 unlink();
|
|
level.player_pitbull maps\sanfran_pitbull::remove_passenger_from_player_pitbull(level.burke);
|
|
level.burke hide();
|
|
var_07 = [];
|
|
var_07[0] = var_01;
|
|
var_07[1] = var_02;
|
|
var_07[2] = level.burke;
|
|
var_07[3] = var_03;
|
|
var_07[4] = var_04;
|
|
var_07[5] = var_05[0];
|
|
var_07[6] = var_05[1];
|
|
var_07[7] = var_05[2];
|
|
foreach(var_09 in var_07)
|
|
{
|
|
var_09 dontinterpolate();
|
|
}
|
|
|
|
level.player_pitbull thread destroy_windshield();
|
|
var_0B = getent("brush_crash_scene_player_pitbull_collision","targetname");
|
|
var_0B.origin = level.player.origin;
|
|
var_0B thread update_bumper_think();
|
|
common_scripts\utility::flag_set("flag_dialog_bridge_crash");
|
|
common_scripts\utility::flag_set("flag_final_crash_scene_playing");
|
|
soundscripts\_snd::snd_message("pc_pitbull_crash");
|
|
var_00 maps\_anim::anim_single(var_07,"pitbull_crash");
|
|
var_07 = [];
|
|
var_07[0] = var_01;
|
|
var_07[1] = var_02;
|
|
common_scripts\utility::flag_set("flag_player_crashed");
|
|
level.chase_van delete();
|
|
delete_atlas_intercepts();
|
|
maps\sanfran_util::show_crash_traffic();
|
|
level.friendly_pitbull delete();
|
|
level notify("stop_traffic");
|
|
level thread start_after_crash_traffic();
|
|
var_03 delete();
|
|
var_04 delete();
|
|
foreach(var_0D in var_05)
|
|
{
|
|
var_0D delete();
|
|
}
|
|
|
|
var_01 maps\_utility::attach_player_current_weapon_to_anim_tag("tag_weapon");
|
|
if(level.currentgen)
|
|
{
|
|
loadtransient("sanfran_outro_tr");
|
|
}
|
|
|
|
level.player playerlinktodelta(var_01,"tag_player",1,10,10,5,5,1);
|
|
common_scripts\utility::flag_set("flag_dialog_bridge_crawl");
|
|
level.burke show();
|
|
level thread anim_burke_crawl(var_00);
|
|
var_0B delete();
|
|
var_00 maps\_anim::anim_single(var_07,"pitbull_crawl");
|
|
common_scripts\utility::flag_clear("flag_final_crash_scene_playing");
|
|
level.player_pitbull notify("dismount_pitbull");
|
|
get_squad_out_of_pitbull();
|
|
level.player_pitbull delete();
|
|
level.player disableslowaim();
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
level.player enablehybridsight("iw5_bal27_sp_variablereddot",1);
|
|
level.player enabledeathshield(0);
|
|
maps\sanfran_util::setup_squad_for_gameplay();
|
|
setsaveddvar("bg_viewBobMax",8);
|
|
if(level.currentgen)
|
|
{
|
|
level notify("tff_pre_transition_intro_to_outro");
|
|
unloadtransient("sanfran_intro_tr");
|
|
while(!istransientloaded("sanfran_outro_tr"))
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
level notify("tff_transition_intro_to_outro");
|
|
}
|
|
|
|
thread handle_fight_section();
|
|
maps\sanfran_util::toggle_all_boats_on();
|
|
level notify("vfx_pitball_crash_end");
|
|
}
|
|
|
|
//Function Number: 72
|
|
update_bumper_think()
|
|
{
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
var_00 = level.player screenpostoworldpoint((0,0,0),65,100);
|
|
self moveto(var_00,0.05);
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 73
|
|
crash_rumble()
|
|
{
|
|
level.player common_scripts\utility::delaycall(0.1,::playrumbleonentity,"heavy_1s");
|
|
level.player common_scripts\utility::delaycall(2.2,::playrumbleonentity,"heavy_2s");
|
|
level.player common_scripts\utility::delaycall(4,::playrumbleonentity,"light_2s");
|
|
level.player common_scripts\utility::delaycall(6,::playrumbleonentity,"heavy_3s");
|
|
level.player common_scripts\utility::delaycall(8.8,::playrumbleonentity,"heavy_1s");
|
|
}
|
|
|
|
//Function Number: 74
|
|
destroy_windshield()
|
|
{
|
|
wait(6.05);
|
|
self notify("windshield_state",4);
|
|
wait(0.05);
|
|
self notify("stop_player_pitbull_damage");
|
|
}
|
|
|
|
//Function Number: 75
|
|
pitbull_crash_swap_to_real_model(param_00)
|
|
{
|
|
level.player_pitbull.fake_vehicle_model hide();
|
|
maps\sanfran_util::show_ents_by_targetname("pitbull_crash_collision");
|
|
maps\sanfran_util::solid_ents_by_targetname("pitbull_crash_collision");
|
|
var_01 = getent("org_player_crash_start","targetname");
|
|
var_02 = getentarray("pitbull_crash_collision","targetname");
|
|
var_03 = undefined;
|
|
foreach(var_05 in var_02)
|
|
{
|
|
if(var_05.classname == "script_model")
|
|
{
|
|
var_03 = var_05;
|
|
}
|
|
}
|
|
|
|
var_03.animname = "after_pitbull";
|
|
var_03 useanimtree(#animtree);
|
|
var_01 maps\_anim::anim_single_solo(var_03,"pitbull_wreck");
|
|
}
|
|
|
|
//Function Number: 76
|
|
anim_burke_crawl(param_00)
|
|
{
|
|
maps\_utility::activate_trigger_with_targetname("trigger_move_from_crash");
|
|
level thread maps\sanfran_fx::burke_spit_blood();
|
|
param_00 maps\_anim::anim_single_solo_run(level.burke,"pitbull_crawl");
|
|
common_scripts\utility::flag_set("flag_player_crash_complete");
|
|
}
|
|
|
|
//Function Number: 77
|
|
crash_blackout(param_00)
|
|
{
|
|
level.crash_overlay = maps\sanfran_util::get_white_overlay();
|
|
level.crash_overlay thread maps\sanfran_util::blackout(0.01,2);
|
|
soundscripts\_snd::snd_message("aud_pitbull_crash_concussion");
|
|
}
|
|
|
|
//Function Number: 78
|
|
crash_wakeup(param_00)
|
|
{
|
|
level.crash_overlay thread maps\sanfran_util::restorevision(2,0);
|
|
level.player shellshock("default",14);
|
|
}
|
|
|
|
//Function Number: 79
|
|
start_after_crash_traffic(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
wait(10.5);
|
|
}
|
|
else
|
|
{
|
|
wait(param_00);
|
|
}
|
|
|
|
maps\_vehicle::spawn_vehicles_from_targetname_and_drive("bridge_crash_traffic");
|
|
clean_up_traffic_drivers();
|
|
}
|
|
|
|
//Function Number: 80
|
|
clean_up_traffic_drivers()
|
|
{
|
|
var_00 = getentarray("crash_traffic_driver","script_noteworthy");
|
|
var_01 = [];
|
|
foreach(var_03 in var_00)
|
|
{
|
|
if(isai(var_03))
|
|
{
|
|
var_01[var_01.size] = var_03;
|
|
var_03.ignoresonicaoe = 1;
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_police_battle);
|
|
}
|
|
|
|
//Function Number: 81
|
|
get_squad_out_of_pitbull()
|
|
{
|
|
level.player_pitbull maps\sanfran_pitbull::remove_passenger_from_player_pitbull(level.saint);
|
|
var_00 = getent("crash_point_saint","targetname");
|
|
level.saint forceteleport(var_00.origin,var_00.angles);
|
|
}
|
|
|
|
//Function Number: 82
|
|
handle_fight_section(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
maps\_utility::autosave_by_name();
|
|
}
|
|
else if(!isdefined(level.start_point) || level.start_point != "street")
|
|
{
|
|
maps\_utility::autosave_now();
|
|
}
|
|
|
|
soundscripts\_snd::snd_message("bridge_street_fight");
|
|
setsaveddvar("fx_draw_omnilight",0);
|
|
common_scripts\utility::flag_set("flag_obj_van_meetup");
|
|
common_scripts\utility::flag_set("flag_dialog_start_street");
|
|
common_scripts\utility::flag_set("flag_enable_battle_chatter");
|
|
common_scripts\utility::run_thread_on_targetname("trigger_fall_fail",::maps\sanfran_util::fall_fail);
|
|
common_scripts\utility::run_thread_on_targetname("trigger_fall_fail_remove",::maps\sanfran_util::fall_fail);
|
|
level thread maps\sanfran_util::fail_player_for_abandon();
|
|
level thread maps\sanfran_util::player_abandon_squad_distance_think();
|
|
common_scripts\utility::run_thread_on_targetname("trigger_no_long_death",::no_long_death);
|
|
thread railing_dangerzone_think();
|
|
level thread maps\sanfran_util::toggle_boat_visibility();
|
|
maps\_player_exo::player_exo_activate();
|
|
level thread maps\sanfran_util::give_boost_jump();
|
|
if(!isdefined(param_00))
|
|
{
|
|
common_scripts\utility::flag_set("flag_dialog_street_foot");
|
|
level thread fight_section_crash_encounter();
|
|
level thread fight_section_boost_encounter();
|
|
level thread fight_section_police_encounter();
|
|
level thread fight_section_tanker_encouter();
|
|
level thread fight_section_ambient_encounter();
|
|
level thread fight_section_pitbull_encounter();
|
|
level thread fight_section_escape_encounter();
|
|
level thread fight_section_standoff_encounter();
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "police")
|
|
{
|
|
common_scripts\utility::flag_set("flag_fight_start_boost_encounter");
|
|
common_scripts\utility::flag_set("flag_fight_start_police_encounter");
|
|
maps\sanfran_util::connectpaths_ents_by_targetname("boost_path_blocker");
|
|
maps\sanfran_util::delete_ents_by_targetname("boost_path_blocker");
|
|
maps\_utility::activate_trigger_with_targetname("trigger_move_first_boost");
|
|
level thread fight_section_police_encounter();
|
|
level thread fight_section_tanker_encouter();
|
|
level thread fight_section_ambient_encounter();
|
|
level thread fight_section_pitbull_encounter();
|
|
level thread fight_section_escape_encounter();
|
|
level thread fight_section_standoff_encounter();
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "pitbull")
|
|
{
|
|
level thread fight_section_ambient_encounter();
|
|
level thread fight_section_pitbull_encounter();
|
|
level thread fight_section_escape_encounter();
|
|
level thread fight_section_standoff_encounter();
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 83
|
|
play_van_videolog_pip()
|
|
{
|
|
level.player endon("death");
|
|
common_scripts\utility::flag_wait("flag_play_van_videolog_pip");
|
|
maps\_shg_utility::play_videolog("sanfran_videolog","screen_add");
|
|
}
|
|
|
|
//Function Number: 84
|
|
no_long_death()
|
|
{
|
|
for(;;)
|
|
{
|
|
self waittill("trigger",var_00);
|
|
if(isalive(var_00) && var_00.team == "axis" && var_00.a.disablelongdeath != 1)
|
|
{
|
|
var_00 maps\_utility::disable_long_death();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 85
|
|
fight_section_crash_encounter()
|
|
{
|
|
common_scripts\utility::run_thread_on_targetname("trigger_start_crash_suvs",::start_crash_suvs);
|
|
level thread maps\sanfran_util::start_civilian_group("crash_civilian_spawner");
|
|
maps\sanfran_util::civilian_get_out_of_car_setup("crash_scene_escape_car_1","crash_scene_escape_spawner_1","flag_crash_scene_get_out",1);
|
|
maps\sanfran_util::civilian_get_out_of_car_setup("crash_scene_escape_car_2","crash_scene_escape_spawner_2","flag_crash_scene_get_out",1);
|
|
maps\sanfran_util::civilian_get_out_of_car_setup("crash_scene_escape_car_3","crash_scene_escape_spawner_3","flag_crash_scene_get_out",1);
|
|
maps\sanfran_util::civilian_get_out_of_car_setup("crash_scene_escape_car_4","crash_scene_escape_spawner_4","flag_crash_scene_get_out",1);
|
|
maps\sanfran_util::civilian_get_out_of_car_setup("crash_scene_escape_car_5","crash_scene_escape_spawner_5","flag_crash_scene_get_out",1,4);
|
|
maps\sanfran_util::civilian_loop_setup("crash_civ_seat",undefined,"flag_player_at_tanker_battle");
|
|
common_scripts\utility::flag_wait("flag_player_crash_complete");
|
|
maps\_utility::activate_trigger_with_targetname("trigger_move_from_crash");
|
|
maps\_utility::waittill_aigroupcount("atlas_suv_guys",2);
|
|
common_scripts\utility::flag_set("flag_crash_retreat_01");
|
|
wait(4);
|
|
common_scripts\utility::flag_set("flag_fight_start_boost_encounter");
|
|
}
|
|
|
|
//Function Number: 86
|
|
start_crash_suvs()
|
|
{
|
|
self waittill("trigger");
|
|
maps\sanfran_util::squad_ignore_all_start();
|
|
common_scripts\utility::run_thread_on_targetname("trigger_crash_squad_cover",::crash_squad_take_cover);
|
|
}
|
|
|
|
//Function Number: 87
|
|
clean_up_suv_drivers()
|
|
{
|
|
var_00 = getentarray("atlas_ai_suv_drivers","script_noteworthy");
|
|
var_01 = [];
|
|
foreach(var_03 in var_00)
|
|
{
|
|
if(isai(var_03))
|
|
{
|
|
var_01[var_01.size] = var_03;
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_tanker_battle);
|
|
}
|
|
|
|
//Function Number: 88
|
|
crash_squad_take_cover()
|
|
{
|
|
self waittill("trigger");
|
|
maps\sanfran_util::connectpaths_ents_by_targetname("crash_path_blocker");
|
|
maps\sanfran_util::delete_ents_by_targetname("crash_path_blocker");
|
|
maps\sanfran_util::squad_ignore_all_stop();
|
|
soundscripts\_snd::snd_message("bridge_post_crash");
|
|
}
|
|
|
|
//Function Number: 89
|
|
drive_crash_suv()
|
|
{
|
|
self vehphys_disablecrashing();
|
|
maps\_vehicle::vehicle_set_health(3000);
|
|
self waittill("reached_end_node");
|
|
self disconnectpaths();
|
|
}
|
|
|
|
//Function Number: 90
|
|
fight_section_boost_encounter()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_fight_start_boost_encounter");
|
|
thread maps\sanfran_util::street_civilian_clean_up();
|
|
maps\sanfran_util::connectpaths_ents_by_targetname("boost_path_blocker");
|
|
maps\sanfran_util::delete_ents_by_targetname("boost_path_blocker");
|
|
var_00 = getentarray("spawner_atlas_boost","targetname");
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_start_ignore_all,::maps\sanfran_util::ai_end_ignore_all,::maps\sanfran_util::ai_cond_reached_goal);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_start_ignore_me,::maps\sanfran_util::ai_end_ignore_me,::maps\sanfran_util::ai_cond_reached_goal);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_tanker_battle);
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::spawn_ai,1,0);
|
|
common_scripts\utility::flag_set("flag_dialog_street_boost_incoming");
|
|
maps\_utility::activate_trigger_with_targetname("trigger_move_to_first_jump");
|
|
maps\_utility::waittill_aigroupcount("atlas_first_jump",1);
|
|
common_scripts\utility::flag_set("flag_boost_retreat_01");
|
|
wait(4);
|
|
common_scripts\utility::flag_set("flag_dialog_street_boosters");
|
|
maps\_utility::activate_trigger_with_targetname("trigger_move_first_boost");
|
|
maps\_utility::autosave_by_name();
|
|
common_scripts\utility::flag_set("flag_fight_start_police_encounter");
|
|
}
|
|
|
|
//Function Number: 91
|
|
wait_to_give_boost_to_player()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_enable_boost_jump");
|
|
maps\_utility::display_hint("boost_hint");
|
|
level thread maps\sanfran_util::give_boost_jump();
|
|
}
|
|
|
|
//Function Number: 92
|
|
fight_section_police_encounter()
|
|
{
|
|
level thread set_up_police_battle();
|
|
maps\sanfran_util::civilian_loop_setup("police_civ_seat",undefined,"flag_player_at_ambient_battle");
|
|
maps\sanfran_util::civilian_loop_setup("police_civ_seat_2",undefined,"flag_player_at_ambient_battle");
|
|
maps\sanfran_util::civilian_loop_setup("police_civ_paired_a","police_civ_paired_b","flag_player_at_ambient_battle");
|
|
maps\sanfran_util::civilian_loop_setup("police_civ_paired_2_a","police_civ_paired_2_b","flag_player_at_ambient_battle");
|
|
common_scripts\utility::flag_wait("flag_player_at_police_battle");
|
|
level thread start_street_heli();
|
|
maps\sanfran_util::waittill_aigroupcount_or_flag("atlas_police_fight",11,"flag_force_police_battle_atlas_second_group");
|
|
common_scripts\utility::flag_set("flag_police_retreat_01");
|
|
var_00 = getentarray("police_battle_atlas_second_group","targetname");
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::add_spawn_function,::maps\_utility::add_damage_function,::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_ambient_battle);
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::spawn_ai,1,0);
|
|
wait(3);
|
|
maps\_utility::activate_trigger_with_targetname("trigger_police_persue_01");
|
|
common_scripts\utility::flag_set("flag_dialog_street_sitrep");
|
|
maps\sanfran_util::waittill_aigroupcount_or_flag("atlas_police_fight",6,"flag_force_police_battle_atlas_third_group");
|
|
common_scripts\utility::flag_set("flag_police_retreat_02");
|
|
var_01 = getentarray("police_battle_atlas_third_group","targetname");
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::add_spawn_function,::maps\_utility::add_damage_function,::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_ambient_battle);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::spawn_ai,1,0);
|
|
wait(3);
|
|
maps\_utility::activate_trigger_with_targetname("trigger_police_persue_02");
|
|
maps\sanfran_util::waittill_aigroupcount_or_flag("atlas_police_fight",2,"flag_force_police_battle_final_fallback");
|
|
maps\_utility::activate_trigger_with_targetname("trigger_police_fight_fallback");
|
|
maps\_utility::autosave_by_name();
|
|
wait(1);
|
|
common_scripts\utility::flag_set("flag_fight_start_tanker_encounter");
|
|
}
|
|
|
|
//Function Number: 93
|
|
set_up_police_battle()
|
|
{
|
|
setthreatbias("police","atlas",10000);
|
|
setthreatbias("atlas","police",10000);
|
|
setthreatbias("sentinel","atlas",-10000);
|
|
setthreatbias("atlas","sentinel",-10000);
|
|
setthreatbias("police","atlas_attack",-10000);
|
|
setthreatbias("atlas_attack","police",-10000);
|
|
setthreatbias("sentinel","atlas_attack",10000);
|
|
setthreatbias("atlas_attack","sentinel",10000);
|
|
var_00 = getentarray("tanker_battle_police","targetname");
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_start_magic_bullet_shield,::maps\sanfran_util::ai_end_magic_bullet_shield,::maps\sanfran_util::ai_cond_player_at_police_battle);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_ambient_battle);
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::spawn_ai,1,0);
|
|
var_01 = getentarray("police_battle_atlas_first_group","targetname");
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_end_fixed_node,::maps\sanfran_util::ai_cond_player_at_police_battle);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::add_spawn_function,::maps\sanfran_util::ai_shot_by_player_team_notify);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::add_spawn_function,::maps\_utility::add_damage_function,::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_ambient_battle);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::spawn_ai,1,0);
|
|
var_02 = getent("trigger_tanker_fire_damage","targetname");
|
|
var_02 common_scripts\utility::trigger_off_proc();
|
|
level waittill("ai_shot_by_player_team");
|
|
setthreatbias("police","atlas",0);
|
|
setthreatbias("atlas","police",0);
|
|
setthreatbias("sentinel","atlas",100);
|
|
setthreatbias("atlas","sentinel",100);
|
|
setthreatbias("police","atlas_attack",0);
|
|
setthreatbias("atlas_attack","police",0);
|
|
setthreatbias("sentinel","atlas_attack",100);
|
|
setthreatbias("atlas_attack","sentinel",100);
|
|
}
|
|
|
|
//Function Number: 94
|
|
start_street_heli()
|
|
{
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("street_fight_heli");
|
|
var_00 maps\_utility::ent_flag_init("heli_can_shoot");
|
|
var_00 maps\_vehicle::godon();
|
|
var_00 maps\sanfran_util::riders_no_damage();
|
|
var_00 thread maps\sanfran_util::heli_shoot_enemies();
|
|
var_00 thread maps\sanfran_util::heli_toggle_shoot();
|
|
common_scripts\utility::flag_set("flag_dialog_street_helo_intro");
|
|
common_scripts\utility::flag_wait("flag_police_retreat_02");
|
|
var_01 = common_scripts\utility::getstruct("start_bridge_heli_swap_sides","targetname");
|
|
var_00 thread maps\_vehicle_code::_vehicle_paths(var_01);
|
|
var_00 maps\_utility::ent_flag_clear("heli_can_shoot");
|
|
common_scripts\utility::flag_set("flag_dialog_street_helo_change");
|
|
common_scripts\utility::flag_wait("flag_player_at_tanker_battle");
|
|
var_01 = common_scripts\utility::getstruct("start_bridge_heli_move_tanker","targetname");
|
|
var_00 thread maps\_vehicle_code::_vehicle_paths(var_01);
|
|
common_scripts\utility::flag_wait("flag_tanker_exploded");
|
|
common_scripts\utility::flag_set("flag_dialog_street_helo_die");
|
|
var_00 soundscripts\_snd::snd_message("aud_little_bird_hit");
|
|
var_00 maps\_vehicle::godoff();
|
|
var_00 dodamage(var_00.health + 10000,var_00.origin);
|
|
}
|
|
|
|
//Function Number: 95
|
|
fight_section_tanker_encouter()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_fight_start_tanker_encounter");
|
|
level thread start_tanker_fire();
|
|
var_00 = getentarray("tanker_battle_atlas_group","targetname");
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\_utility::add_damage_function,::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_start_balcony_death,::maps\sanfran_util::ai_cond_player_at_tanker_battle);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_pitbull_battle);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::player_damage_atlas_flag_set,"flag_player_at_tanker_battle");
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::spawn_ai,1,0);
|
|
wait(2);
|
|
maps\_utility::activate_trigger_with_targetname("trigger_tanker_move_up");
|
|
common_scripts\utility::flag_wait("flag_player_at_tanker_battle");
|
|
setthreatbias("police","atlas",1000);
|
|
setthreatbias("atlas","police",1000);
|
|
setthreatbias("sentinel","atlas",-100);
|
|
setthreatbias("atlas","sentinel",-100);
|
|
setthreatbias("police","atlas_attack",-1000);
|
|
setthreatbias("atlas_attack","police",-1000);
|
|
setthreatbias("sentinel","atlas_attack",1000);
|
|
setthreatbias("atlas_attack","sentinel",1000);
|
|
tanker_drone_flood();
|
|
maps\sanfran_util::waittill_aigroupcount_or_flag("atlas_tanker_fight",6,"flag_force_tanker_battle_atlas_second_group");
|
|
var_00 = getentarray("tanker_battle_atlas_second_group","targetname");
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::add_spawn_function,::maps\_utility::add_damage_function,::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::add_spawn_function,::maps\sanfran_util::balcony_death_anims);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_pitbull_battle);
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::spawn_ai,1,0);
|
|
common_scripts\utility::flag_set("flag_dialog_street_helo_warn");
|
|
maps\sanfran_util::waittill_aigroupcount_or_flag("atlas_tanker_fight",4,"flag_force_tanker_ignite_second");
|
|
level thread maps\sanfran_fx::ignite_tanker_spurt();
|
|
common_scripts\utility::flag_set("flag_tanker_retreat_01");
|
|
wait(3);
|
|
level thread explode_tanker();
|
|
common_scripts\utility::flag_wait("flag_tanker_exploded");
|
|
maps\sanfran_util::connectpaths_ents_by_targetname("tanker_fire_path_blocker");
|
|
maps\sanfran_util::delete_ents_by_targetname("tanker_fire_path_blocker");
|
|
var_01 = getaiarray("axis");
|
|
var_02 = getent("trigger_tanker_explosion_ragdoll","targetname");
|
|
var_03 = getent("tanker_explosion_org","targetname");
|
|
foreach(var_05 in var_01)
|
|
{
|
|
if(var_05 istouching(var_02))
|
|
{
|
|
var_06 = vectornormalize(var_05.origin - var_03.origin);
|
|
var_07 = distance(var_05.origin,var_03.origin);
|
|
var_08 = 800 - var_07 / 800;
|
|
var_09 = var_06 * var_08 * 400;
|
|
var_05 kill();
|
|
var_05 startragdollfromimpact(var_05.origin,var_09);
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_fight_start_ambient_encounter");
|
|
maps\_utility::waittill_aigroupcleared("atlas_tanker_fight");
|
|
maps\_utility::autosave_by_name();
|
|
wait(2);
|
|
maps\_utility::activate_trigger_with_targetname("trigger_tanker_move_past_fire");
|
|
}
|
|
|
|
//Function Number: 96
|
|
tanker_drone_flood()
|
|
{
|
|
var_00 = getentarray("atlas_tanker_drone","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 thread drone_respawn();
|
|
}
|
|
}
|
|
|
|
//Function Number: 97
|
|
drone_respawn()
|
|
{
|
|
level endon("flag_tanker_exploded");
|
|
for(;;)
|
|
{
|
|
var_00 = maps\_vehicle::spawn_vehicle_and_gopath();
|
|
var_00 thread maps\_shg_utility::make_emp_vulnerable();
|
|
var_00 maps\_utility::add_damage_function(::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
var_00 laseron();
|
|
var_00 thread explode_drones_at_tanker();
|
|
var_00 waittill("death");
|
|
wait(randomfloatrange(3,5));
|
|
}
|
|
}
|
|
|
|
//Function Number: 98
|
|
explode_drones_at_tanker()
|
|
{
|
|
self endon("death");
|
|
level waittill("flag_tanker_exploded");
|
|
var_00 = randomfloatrange(0.1,0.8);
|
|
wait(var_00);
|
|
self kill();
|
|
}
|
|
|
|
//Function Number: 99
|
|
start_tanker_fire()
|
|
{
|
|
thread maps\sanfran_fx::oil_tanker_bridge_fire();
|
|
soundscripts\_snd::snd_message("tanker_fireball");
|
|
var_00 = getent("trigger_tanker_fire_damage","targetname");
|
|
var_00 common_scripts\utility::trigger_on_proc();
|
|
common_scripts\utility::flag_wait("flag_tanker_exploded");
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 100
|
|
explode_tanker()
|
|
{
|
|
var_00 = [];
|
|
var_01 = 1;
|
|
for(;;)
|
|
{
|
|
var_02 = getentarray("tanker_explosion_car_" + var_01,"script_noteworthy");
|
|
if(var_02.size == 0)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_00[var_00.size] = var_02;
|
|
var_01++;
|
|
}
|
|
|
|
var_00 = common_scripts\utility::array_randomize(var_00);
|
|
foreach(var_02 in var_00)
|
|
{
|
|
for(var_01 = 0;var_01 < var_02.size;var_01++)
|
|
{
|
|
if(var_02[var_01].classname != "script_model")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02[var_01] useanimtree(#animtree);
|
|
var_04 = var_02[var_01].model;
|
|
if(issubstr(var_04,"vehicle_civ_domestic_economy"))
|
|
{
|
|
var_02[var_01] setmodel("vehicle_civ_domestic_economy_destroy_static");
|
|
var_02[var_01] setanimknob(%civ_domestic_sedan_police_destroy,1,0,1);
|
|
}
|
|
else if(issubstr(var_04,"vehicle_civ_smartcar_02_blue"))
|
|
{
|
|
var_02[var_01].newmodel = spawn("script_model",var_02[var_01].origin);
|
|
var_02[var_01].newmodel.angles = var_02[var_01].angles;
|
|
var_02[var_01].newmodel setmodel("vehicle_civ_smartcar_static_dstry");
|
|
var_02[var_01].newmodel linkto(var_02[var_01],"body_animate_jnt");
|
|
var_02[var_01] hide();
|
|
var_02[var_01] setanimknob(%civ_domestic_sedan_police_destroy,1,0,1);
|
|
}
|
|
|
|
playfx(level._effect["tanker_explosion"],var_02[var_01].origin);
|
|
var_02[var_01] soundscripts\_snd::snd_message("bridge_car_explode");
|
|
earthquake(0.4,0.5,var_02[var_01].origin,2000);
|
|
radiusdamage(var_02[var_01].origin,400,50,10);
|
|
break;
|
|
}
|
|
|
|
wait(randomfloatrange(0.5,2));
|
|
}
|
|
|
|
wait(randomfloatrange(1,2));
|
|
common_scripts\utility::flag_set("kill_oil_puddle_flames");
|
|
wait(1);
|
|
level thread maps\sanfran_fx::oil_tanker_bridge_explosion();
|
|
var_06 = getent("tanker_explosion_org","targetname");
|
|
var_07 = getentarray("tanker_explosion_tanker","script_noteworthy");
|
|
foreach(var_09 in var_07)
|
|
{
|
|
if(var_09.classname == "script_model")
|
|
{
|
|
var_09 setmodel("ind_semi_truck_fuel_tank_destroy");
|
|
}
|
|
}
|
|
|
|
var_0B = getentarray("tanker_explosion_cab","script_noteworthy");
|
|
foreach(var_09 in var_0B)
|
|
{
|
|
if(var_09.classname == "script_model")
|
|
{
|
|
var_09 setmodel("ind_semi_truck_03_destroy");
|
|
}
|
|
}
|
|
|
|
earthquake(0.6,0.5,var_06.origin,2000);
|
|
radiusdamage(var_06.origin,400,50,10);
|
|
common_scripts\utility::flag_set("flag_tanker_exploded");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_0F = vectornormalize(var_02[0].origin - var_06.origin);
|
|
var_10 = distance(var_02[0].origin,var_06.origin);
|
|
var_11 = 800 - var_10 / 800;
|
|
var_12 = var_0F * var_11 * 300;
|
|
var_13 = (var_12[0],var_12[1],0);
|
|
var_14 = randomfloatrange(50,70);
|
|
if(randomint(100) > 50)
|
|
{
|
|
var_14 = var_14 * -1;
|
|
}
|
|
|
|
foreach(var_16 in var_02)
|
|
{
|
|
var_16 thread shift_car(var_13,var_14);
|
|
}
|
|
}
|
|
|
|
maps\_utility::delaythread(5,::maps\_utility::pauseexploder,2200);
|
|
}
|
|
|
|
//Function Number: 101
|
|
shift_car(param_00,param_01)
|
|
{
|
|
if(self.classname != "script_model")
|
|
{
|
|
self connectpaths();
|
|
}
|
|
else
|
|
{
|
|
self clearanim(%civ_domestic_sedan_police_destroy,0);
|
|
}
|
|
|
|
self moveto(self.origin + param_00,0.2,0,0.1);
|
|
self rotateto(self.angles + (0,param_01,0),0.2,0,0.1);
|
|
wait(0.2);
|
|
if(self.classname != "script_model")
|
|
{
|
|
self disconnectpaths();
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::delaycall(randomfloat(0.15),::setanimknob,%civ_domestic_sedan_police_destroy,1,0,1);
|
|
}
|
|
|
|
//Function Number: 102
|
|
fight_section_ambient_encounter()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_fight_start_ambient_encounter");
|
|
common_scripts\utility::run_thread_on_targetname("start_bridge_helis",::start_bridge_helis);
|
|
level thread set_up_ambient_battle();
|
|
maps\sanfran_util::civilian_loop_setup("ambient_civ_seat_1",undefined,"flag_player_at_escape_battle");
|
|
maps\sanfran_util::civilian_loop_setup("ambient_civ_seat_2",undefined,"flag_player_at_escape_battle");
|
|
maps\sanfran_util::civilian_loop_setup("ambient_civ_paired_1","ambient_civ_paired_2","flag_player_at_escape_battle");
|
|
common_scripts\utility::flag_wait("flag_player_at_ambient_battle");
|
|
level thread maps\sanfran_util::start_civilian_group("spawner_ambient_spawner_wave01");
|
|
maps\_utility::autosave_by_name();
|
|
maps\_utility::activate_trigger_with_targetname("trigger_move_to_ambient_battle");
|
|
common_scripts\utility::flag_set("flag_start_jerk_driver");
|
|
wait(5);
|
|
common_scripts\utility::flag_set("flag_fight_start_pitbull_encounter");
|
|
maps\_utility::autosave_by_name();
|
|
wait(4);
|
|
maps\_utility::activate_trigger_with_targetname("trigger_move_to_pitbull_encounter");
|
|
common_scripts\utility::run_thread_on_targetname("trigger_start_ambient_kick_pair",::start_ambient_pair_kick);
|
|
}
|
|
|
|
//Function Number: 103
|
|
start_ambient_pair_kick()
|
|
{
|
|
for(;;)
|
|
{
|
|
self waittill("trigger",var_00);
|
|
if(var_00 == level.burke)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_01 = getent("spawner_atlas_ambient_kick_pair","targetname");
|
|
var_02 = var_01 maps\_utility::spawn_ai(1,0);
|
|
soundscripts\_snd::snd_message("start_burke_boost_kick");
|
|
maps\sanfran_util::lunging_take_down("takedown_ambient",level.burke,var_02);
|
|
var_03 = getnode("node_burke_lunge_cover","targetname");
|
|
level.burke thread maps\_spawner::go_to_node(var_03);
|
|
level.burke maps\_utility::enable_ai_color_dontmove();
|
|
}
|
|
|
|
//Function Number: 104
|
|
start_bridge_helis()
|
|
{
|
|
self waittill("trigger");
|
|
var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("bridge_helis");
|
|
soundscripts\_snd::snd_message("start_bridge_helis",var_00);
|
|
common_scripts\utility::flag_set("flag_dialog_street_van_stop");
|
|
}
|
|
|
|
//Function Number: 105
|
|
set_up_ambient_battle()
|
|
{
|
|
var_00 = getentarray("spawner_police_ambient","targetname");
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_start_magic_bullet_shield,::maps\sanfran_util::ai_end_magic_bullet_shield,::maps\sanfran_util::ai_cond_player_at_ambient_battle);
|
|
var_01 = getent("spawner_police_ambient_animated","targetname");
|
|
var_01 maps\_utility::add_spawn_function(::ambient_battle_deployable_cover);
|
|
var_00 = common_scripts\utility::array_add(var_00,var_01);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_escape_battle);
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::spawn_ai,1,0);
|
|
var_02 = getentarray("spawner_atlas_ambient","targetname");
|
|
common_scripts\utility::array_thread(var_02,::maps\_utility::add_spawn_function,::maps\sanfran_util::ai_shot_by_player_team_notify);
|
|
common_scripts\utility::array_thread(var_02,::maps\sanfran_util::add_spawn_behavior,::maps\_utility::add_damage_function,::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
common_scripts\utility::array_thread(var_02,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_start_respawn_death,::maps\sanfran_util::ai_stop_death_function,::maps\sanfran_util::ai_cond_player_at_ambient_battle);
|
|
common_scripts\utility::array_thread(var_02,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_escape_battle);
|
|
level waittill("ai_shot_by_player_team");
|
|
setthreatbias("police","atlas",0);
|
|
setthreatbias("atlas","police",0);
|
|
setthreatbias("sentinel","atlas",100);
|
|
setthreatbias("atlas","sentinel",100);
|
|
setthreatbias("police","atlas_attack",0);
|
|
setthreatbias("atlas_attack","police",0);
|
|
setthreatbias("sentinel","atlas_attack",100);
|
|
setthreatbias("atlas_attack","sentinel",100);
|
|
}
|
|
|
|
//Function Number: 106
|
|
ambient_battle_deployable_cover()
|
|
{
|
|
var_00 = getent("deployable_cover_final_model","targetname");
|
|
var_00.contents = var_00 setcontents(0);
|
|
var_00 hide();
|
|
maps\_utility::magic_bullet_shield();
|
|
thread deployable_cover_think();
|
|
common_scripts\utility::flag_wait("flag_place_deployable_cover");
|
|
self.animname = "generic";
|
|
var_01 = common_scripts\utility::getstruct("deployable_cover_animnode","targetname");
|
|
var_02 = "deployable_cover_deploy";
|
|
var_01 maps\_anim::anim_reach_solo(self,var_02);
|
|
level notify("police_placing_deployable_cover");
|
|
var_03 = maps\_utility::spawn_anim_model("deployable_cover",(0,0,0));
|
|
var_04 = [self,var_03];
|
|
var_01 thread maps\_anim::anim_single(var_04,"deployable_cover_deploy");
|
|
var_05 = 5.4;
|
|
var_00 common_scripts\utility::delaycall(var_05,::setcontents,var_00.contents);
|
|
var_00 common_scripts\utility::delaycall(var_05,::show);
|
|
var_03 common_scripts\utility::delaycall(var_05,::delete);
|
|
}
|
|
|
|
//Function Number: 107
|
|
deployable_cover_think()
|
|
{
|
|
var_00 = spawn("script_model",self gettagorigin("j_SpineUpper") + (0,0,0));
|
|
var_00.angles = self gettagangles("j_SpineUpper") + (0,0,0);
|
|
var_00.animname = "deployable_cover";
|
|
var_00 setmodel("deployable_cover");
|
|
var_00 maps\_anim::setanimtree();
|
|
var_00 maps\_anim::anim_first_frame_solo(var_00,"deployable_cover_closed_idle");
|
|
var_00 linkto(self,"j_SpineUpper");
|
|
level waittill("police_placing_deployable_cover");
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 108
|
|
start_jerk_driver()
|
|
{
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname("jerk_driver_car");
|
|
var_00 maps\_vehicle::godon();
|
|
var_00 soundscripts\_snd::snd_message("start_jerk_driver_car");
|
|
common_scripts\utility::flag_wait("flag_start_jerk_driver");
|
|
var_00 startpath();
|
|
var_00 waittill("reached_end_node");
|
|
var_01 = getvehiclenode("start_jerk_back_up","targetname");
|
|
var_00 thread maps\_vehicle_code::_vehicle_paths(var_01);
|
|
var_00 startpath(var_01);
|
|
var_00 waittill("reached_end_node");
|
|
var_01 = getvehiclenode("start_jerk_go_forward","targetname");
|
|
var_00 thread maps\_vehicle_code::_vehicle_paths(var_01);
|
|
var_00 startpath(var_01);
|
|
var_00 waittill("reached_end_node");
|
|
for(;;)
|
|
{
|
|
if(!maps\sanfran_util::player_can_see(var_00.origin,45))
|
|
{
|
|
var_00 maps\_vehicle::godoff();
|
|
var_00 delete();
|
|
return;
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 109
|
|
fight_section_pitbull_encounter()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_fight_start_pitbull_encounter");
|
|
level thread start_pitbull_skirmish();
|
|
maps\sanfran_util::civilian_loop_setup("pitbull_civ_seat",undefined,"flag_player_at_standoff_battle");
|
|
common_scripts\utility::flag_wait("flag_player_at_pitbull_battle");
|
|
maps\_utility::autosave_by_name();
|
|
common_scripts\utility::flag_set("flag_dialog_street_pitbull");
|
|
maps\sanfran_util::waittill_aigroupcount_or_flag("atlas_pitbull",9,"flag_force_atlas_pitbull_second");
|
|
var_00 = getentarray("spawner_atlas_pitbull_second","targetname");
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_start_ignore_all,::maps\sanfran_util::ai_end_ignore_all,::maps\sanfran_util::ai_cond_reached_goal);
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::add_spawn_function,::maps\_utility::add_damage_function,::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::add_spawn_function,::maps\sanfran_util::balcony_death_anims);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_standoff_battle);
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::spawn_ai,1);
|
|
common_scripts\utility::flag_set("flag_dialog_street_cover");
|
|
maps\_utility::waittill_aigroupcleared("atlas_pitbull");
|
|
common_scripts\utility::flag_set("flag_fight_start_escape_encounter");
|
|
maps\_utility::autosave_by_name();
|
|
wait(2);
|
|
maps\_utility::activate_trigger_with_targetname("trigger_move_past_pitbull");
|
|
}
|
|
|
|
//Function Number: 110
|
|
start_pitbull_skirmish()
|
|
{
|
|
var_00 = getentarray("spawner_atlas_pitbull","targetname");
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\_utility::add_damage_function,::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_start_respawn_death,::maps\sanfran_util::ai_start_balcony_death,::maps\sanfran_util::ai_cond_player_at_pitbull_battle);
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::add_spawn_function,::maps\sanfran_util::container_death_anims);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_standoff_battle);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::player_damage_atlas_flag_set,"flag_player_at_pitbull_battle");
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::spawn_ai,1,0);
|
|
var_01 = getentarray("spawner_sentinel_pitbull","targetname");
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_start_magic_bullet_shield,::maps\sanfran_util::ai_end_magic_bullet_shield,::maps\sanfran_util::ai_cond_player_at_pitbull_battle);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::add_spawn_function,::maps\_utility::add_damage_function,::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::add_spawn_function,::bravo_leader);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::spawn_ai,1,0);
|
|
}
|
|
|
|
//Function Number: 111
|
|
bravo_leader()
|
|
{
|
|
if(isdefined(self.script_noteworthy) && self.script_noteworthy == "bravo_leader")
|
|
{
|
|
self.animname = "Bravo";
|
|
level.bravo = self;
|
|
}
|
|
}
|
|
|
|
//Function Number: 112
|
|
fight_section_escape_encounter()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_fight_start_escape_encounter");
|
|
if(level.currentgen)
|
|
{
|
|
if(!istransientloaded("sanfran_bigm_tr"))
|
|
{
|
|
level waittill("tff_transition_outro_to_bigm");
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::run_thread_on_targetname("setup_explosion_scene",::setup_bridge_explosion_trigger);
|
|
maps\sanfran_util::civilian_loop_setup("escape_civ_seat",undefined,"flag_van_explosion_deploy");
|
|
maps\sanfran_util::civilian_loop_setup("escape_civ_lay",undefined,"flag_van_explosion_deploy");
|
|
common_scripts\utility::flag_wait("flag_player_at_escape_battle");
|
|
setthreatbias("police","atlas",0);
|
|
setthreatbias("atlas","police",0);
|
|
setthreatbias("sentinel","atlas",100);
|
|
setthreatbias("atlas","sentinel",100);
|
|
setthreatbias("police","atlas_attack",-1000);
|
|
setthreatbias("atlas_attack","police",-1000);
|
|
setthreatbias("sentinel","atlas_attack",1000);
|
|
setthreatbias("atlas_attack","sentinel",1000);
|
|
level thread escape_fight_wave("spawner_atlas_escape");
|
|
wait(4);
|
|
level thread escape_fight_wave("spawner_atlas_escape_second");
|
|
wait(6);
|
|
level thread escape_fight_wave("spawner_atlas_escape_third");
|
|
maps\sanfran_util::waittill_aigroupcount_or_flag("atlas_escape",4,"flag_atlas_escape_fight_skip");
|
|
maps\_utility::autosave_by_name();
|
|
common_scripts\utility::flag_set("flag_dialog_street_hurry");
|
|
maps\_utility::activate_trigger_with_targetname("trigger_move_to_standoff");
|
|
common_scripts\utility::flag_set("flag_fight_start_standoff_encounter");
|
|
}
|
|
|
|
//Function Number: 113
|
|
escape_fight_wave(param_00)
|
|
{
|
|
var_01 = getentarray(param_00,"targetname");
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::add_spawn_function,::maps\_utility::add_damage_function,::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_van);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::spawn_ai,1,0);
|
|
}
|
|
|
|
//Function Number: 114
|
|
fight_section_standoff_encounter()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_fight_start_standoff_encounter");
|
|
level thread change_music_to_standoff();
|
|
level thread start_police_standoff();
|
|
common_scripts\utility::run_thread_on_targetname("trigger_player_at_van",::handle_bridge_collapse);
|
|
if(!level.nextgen)
|
|
{
|
|
maps\sanfran_util::civilian_loop_setup("standoff_civ_lay_1",undefined,"flag_van_explosion_deploy");
|
|
maps\sanfran_util::civilian_loop_setup("standoff_civ_lay_2",undefined,"flag_van_explosion_deploy");
|
|
maps\sanfran_util::civilian_loop_setup("standoff_civ_seat_1",undefined,"flag_van_explosion_deploy");
|
|
maps\sanfran_util::civilian_loop_setup("standoff_civ_seat_2",undefined,"flag_van_explosion_deploy");
|
|
}
|
|
|
|
maps\sanfran_util::civilian_loop_setup("standoff_civ_seat_3",undefined,"flag_van_explosion_deploy");
|
|
if(!level.nextgen)
|
|
{
|
|
maps\sanfran_util::civilian_loop_setup("standoff_civ_paired_1","standoff_civ_paired_2","flag_van_explosion_deploy");
|
|
maps\sanfran_util::civilian_loop_setup("standoff_civ_paired_b_1","standoff_civ_paired_b_2","flag_van_explosion_deploy");
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_player_at_standoff_battle");
|
|
thread at_van_enemy_cleanup();
|
|
common_scripts\utility::flag_set("flag_dialog_street_friendlies");
|
|
maps\_utility::waittill_aigroupcleared("atlas_standoff");
|
|
maps\_utility::activate_trigger_with_targetname("trigger_move_past_standoff");
|
|
level thread maps\sanfran_util::remove_boost_jump();
|
|
if(level.currentgen)
|
|
{
|
|
maps\_utility::vision_set_fog_changes("sanfran_cops_end_cg",1);
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_player_at_van_standoff");
|
|
}
|
|
|
|
//Function Number: 115
|
|
change_music_to_standoff()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_player_at_van_standoff");
|
|
soundscripts\_snd::snd_music_message("approaching_standoff");
|
|
common_scripts\utility::flag_set("flag_dialog_street_assist");
|
|
}
|
|
|
|
//Function Number: 116
|
|
start_police_standoff()
|
|
{
|
|
var_00 = getentarray("spawner_police_standoff","targetname");
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_start_magic_bullet_shield,::maps\sanfran_util::ai_end_magic_bullet_shield,::maps\sanfran_util::ai_cond_player_at_standoff_battle_or_danger_zone);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_end_fixed_node,::maps\sanfran_util::ai_cond_player_at_standoff_battle_or_danger_zone);
|
|
common_scripts\utility::array_thread(var_00,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_van);
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::spawn_ai,1,0);
|
|
var_01 = getentarray("spawner_atlas_standoff","targetname");
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_start_magic_bullet_shield,::maps\sanfran_util::ai_end_magic_bullet_shield,::maps\sanfran_util::ai_cond_player_at_standoff_battle_or_danger_zone);
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_end_fixed_node,::maps\sanfran_util::ai_cond_player_at_standoff_battle_or_danger_zone);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::add_spawn_function,::maps\sanfran_util::ai_shot_by_player_team_notify);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::add_spawn_function,::maps\_utility::add_damage_function,::maps\sanfran_util::ai_twenty_percent_damage_func);
|
|
common_scripts\utility::array_thread(var_01,::maps\sanfran_util::add_spawn_behavior,::maps\sanfran_util::ai_run_behavior_until_condition,::maps\sanfran_util::ai_empty,::maps\sanfran_util::ai_delete_self,::maps\sanfran_util::ai_cond_player_at_van);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::spawn_ai,1,0);
|
|
level waittill("ai_shot_by_player_team");
|
|
setthreatbias("police","atlas",0);
|
|
setthreatbias("atlas","police",0);
|
|
setthreatbias("sentinel","atlas",100);
|
|
setthreatbias("atlas","sentinel",100);
|
|
setthreatbias("police","atlas_attack",0);
|
|
setthreatbias("atlas_attack","police",0);
|
|
setthreatbias("sentinel","atlas_attack",100);
|
|
setthreatbias("atlas_attack","sentinel",100);
|
|
}
|
|
|
|
//Function Number: 117
|
|
setup_bridge_explosion_trigger()
|
|
{
|
|
self waittill("trigger");
|
|
setup_bridge_explosion_anim_sequence();
|
|
}
|
|
|
|
//Function Number: 118
|
|
setup_helicopter_blades_damage()
|
|
{
|
|
level endon("van_door_interact");
|
|
var_00 = getent("helicopter_blades_damage","targetname");
|
|
var_01 = undefined;
|
|
for(;;)
|
|
{
|
|
var_00 waittill("trigger",var_01);
|
|
var_01 dodamage(60,var_00.origin);
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 119
|
|
handle_bridge_collapse()
|
|
{
|
|
common_scripts\utility::run_thread_on_targetname("trigger_player_approaching_van",::handle_early_approach);
|
|
self waittill("trigger");
|
|
level notify("kill_bridge_copcar_lights");
|
|
setsaveddvar("fx_draw_omnilight",1);
|
|
level notify("stop_toggle_boat_visibility");
|
|
common_scripts\utility::flag_set("flag_obj_player_at_van");
|
|
common_scripts\utility::flag_set("flag_dialog_start_van");
|
|
common_scripts\utility::flag_set("flag_dialog_van_arrest");
|
|
soundscripts\_snd::snd_music_message("pre_bridge_collapse_scene");
|
|
common_scripts\utility::flag_clear("flag_enable_battle_chatter");
|
|
level.explosion_scene_org notify("stop_barrier_loop");
|
|
foreach(var_01 in level.barrier_scene_ents)
|
|
{
|
|
var_01 maps\_utility::anim_stopanimscripted();
|
|
}
|
|
|
|
level.explosion_scene_org maps\_anim::anim_single(level.approach_scene_ents,"approach_scene");
|
|
common_scripts\utility::flag_set("flag_approach_scene_begin");
|
|
common_scripts\utility::flag_set("flag_obj_player_use_van");
|
|
common_scripts\utility::flag_set("flag_dialog_van_check");
|
|
foreach(var_04 in level.approach_idle_ents)
|
|
{
|
|
level.explosion_scene_org thread maps\_anim::anim_loop_solo(var_04,"approach_idle","stop_approach_loop");
|
|
}
|
|
|
|
level.explosion_van show_glowy_handles();
|
|
var_06 = getent("trigger_player_used_van","targetname");
|
|
var_06 usetriggerrequirelookat();
|
|
var_06 sethintstring(&"SANFRAN_OPEN_VAN");
|
|
var_07 = var_06 maps\_shg_utility::hint_button_trigger("activate",1024);
|
|
var_06 waittill("trigger");
|
|
var_07 maps\_shg_utility::hint_button_clear();
|
|
var_06 delete();
|
|
soundscripts\_snd::snd_message("gg_start_bridge_collapse");
|
|
level notify("van_door_interact");
|
|
maps\_player_exo::player_exo_deactivate();
|
|
thread bridge_collapse_rumble();
|
|
common_scripts\utility::flag_set("portal_on_collapse");
|
|
wait(0.05);
|
|
common_scripts\utility::flag_clear("portal_on_collapse");
|
|
thread maps\sanfran_lighting::van_open_bridge_collapse_dof();
|
|
level.explosion_van show_normal_handles();
|
|
foreach(var_09 in level.explosion_scene_bridge)
|
|
{
|
|
var_09 show();
|
|
}
|
|
|
|
maps\sanfran_util::hide_intact_bridge();
|
|
maps\sanfran_util::toggle_on_real_mob();
|
|
maps\sanfran_util::solid_ents_by_targetname("collapse_clip");
|
|
maps\sanfran_util::delete_ents_by_targetname("collapse_fake_collision");
|
|
maps\sanfran_util::delete_ents_by_targetname("trigger_fall_fail_remove");
|
|
common_scripts\utility::flag_set("flag_dialog_van_deploy");
|
|
common_scripts\utility::flag_set("flag_obj_player_used_van");
|
|
level.explosion_scene_org notify("stop_approach_loop");
|
|
foreach(var_01 in level.approach_idle_ents)
|
|
{
|
|
var_01 maps\_utility::anim_stopanimscripted();
|
|
}
|
|
|
|
var_0D = 0.5;
|
|
level.player playerlinktoblend(level.player_rig,"tag_player",var_0D);
|
|
level.player common_scripts\utility::delaycall(var_0D,::playerlinktodelta,level.player_rig,"tag_player",1,7,7,5,5,1);
|
|
level.player enableslowaim();
|
|
level.player take_car_door_shields();
|
|
level.player maps\_shg_utility::setup_player_for_scene();
|
|
maps\sanfran_util::setup_squad_for_scene();
|
|
foreach(var_04 in level.deploy_scene_ents)
|
|
{
|
|
if(var_04 == level.player_rig)
|
|
{
|
|
var_04 common_scripts\utility::delaycall(var_0D,::show);
|
|
continue;
|
|
}
|
|
|
|
var_04 show();
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_van_explosion_deploy");
|
|
thread play_deploy_scene_handcuff_ents();
|
|
level.explosion_scene_org maps\_anim::anim_single(level.deploy_scene_ents,"deploy_scene");
|
|
maps\sanfran_util::remove_intact_bridge();
|
|
thread rock_mob();
|
|
thread maps\sanfran_lighting::bridge_collapse_screen_effects();
|
|
cleanup_explosion_ents();
|
|
common_scripts\utility::flag_set("flag_dialog_van_collapse");
|
|
foreach(var_04 in level.collapse_scene_ents)
|
|
{
|
|
var_04 show();
|
|
var_04 thread animate_collapse_ent(level.explosion_scene_org);
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_van_explosion_start");
|
|
level.explosion_scene_org maps\_anim::anim_single(level.collapse_scene_ents_long,"collapse_scene");
|
|
soundscripts\_snd::snd_music_message("starting_bridge_collapse");
|
|
soundscripts\_snd::snd_message("bridge_collapsed");
|
|
level.player unlink();
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
level.player disableslowaim();
|
|
level.player_rig hide();
|
|
maps\sanfran_util::setup_squad_for_gameplay();
|
|
foreach(var_04 in level.collapse_scene_ents)
|
|
{
|
|
delete_collapse_ent(var_04);
|
|
}
|
|
|
|
level thread start_bridge_after_loop(level.explosion_scene_org);
|
|
cleanup_road_flares();
|
|
var_14 = getent("saint_boost_teleport","targetname");
|
|
level.saint forceteleport(var_14.origin,var_14.angles);
|
|
common_scripts\utility::flag_set("flag_enable_battle_chatter");
|
|
level thread handle_boost_jump();
|
|
}
|
|
|
|
//Function Number: 120
|
|
handle_player_exo_punch()
|
|
{
|
|
self waittill("trigger");
|
|
level.player allowmelee(0);
|
|
level.player maps\_utility::playerallowalternatemelee(0);
|
|
}
|
|
|
|
//Function Number: 121
|
|
play_deploy_scene_handcuff_ents()
|
|
{
|
|
var_00 = level.deploy_scene_handcuff_ents;
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(!isalive(var_02) || isdefined(self.delayeddeath) && self.delayeddeath)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_02.magic_bullet_shield) && var_02.magic_bullet_shield == 1)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02.allowdeath = 0;
|
|
maps\sanfran_util::ai_start_magic_bullet_shield(var_02);
|
|
}
|
|
|
|
if(isdefined(var_00[0]) && isalive(var_00[0]))
|
|
{
|
|
level.explosion_scene_org thread maps\_anim::anim_single_solo(var_00[0],"deploy_scene");
|
|
level.explosion_scene_org thread maps\_anim::anim_single_solo(var_00[3],"deploy_scene");
|
|
}
|
|
|
|
if(isdefined(var_00[1]) && isalive(var_00[1]))
|
|
{
|
|
level.explosion_scene_org thread maps\_anim::anim_single_solo(var_00[1],"deploy_scene");
|
|
level.explosion_scene_org thread maps\_anim::anim_single_solo(var_00[2],"deploy_scene");
|
|
}
|
|
}
|
|
|
|
//Function Number: 122
|
|
delete_atlas_van_driver(param_00)
|
|
{
|
|
level waittill("van_door_interact");
|
|
maps\sanfran_util::ai_end_magic_bullet_shield(param_00);
|
|
param_00 maps\sanfran_util::kill_no_react();
|
|
}
|
|
|
|
//Function Number: 123
|
|
disable_threat_atlas_van_driver(param_00)
|
|
{
|
|
common_scripts\utility::flag_wait("flag_approach_scene_begin");
|
|
var_01 = getanimlength(param_00 maps\_utility::getanim("approach_scene"));
|
|
wait(var_01);
|
|
param_00 maps\_variable_grenade::clear_guy_fx();
|
|
param_00 maps\_utility::pretend_to_be_dead();
|
|
}
|
|
|
|
//Function Number: 124
|
|
bridge_collapse_rumble()
|
|
{
|
|
level endon("flag_obj_player_on_MOB");
|
|
thread bridge_collapse_rumble_steady();
|
|
thread bridge_collapse_rumble_timed();
|
|
level.player common_scripts\utility::delaycall(11.75,::playrumbleonentity,"heavy_1s");
|
|
}
|
|
|
|
//Function Number: 125
|
|
bridge_collapse_rumble_steady()
|
|
{
|
|
wait(12);
|
|
var_00 = maps\_utility::get_rumble_ent("steady_rumble");
|
|
var_00.intensity = 0.1;
|
|
wait 0.05;
|
|
var_00 maps\_utility::delaythread(0.5,::maps\_utility::rumble_ramp_to,0.3,1.5);
|
|
var_00 maps\_utility::delaythread(8,::maps\_utility::rumble_ramp_to,0,1);
|
|
var_00 maps\_utility::delaythread(13.5,::maps\_utility::rumble_ramp_to,0.3,0.5);
|
|
var_00 maps\_utility::delaythread(16,::maps\_utility::rumble_ramp_to,0,0.1);
|
|
var_00 maps\_utility::delaythread(26.5,::maps\_utility::rumble_ramp_to,0.3,0.9);
|
|
var_00 maps\_utility::delaythread(29,::maps\_utility::rumble_ramp_to,2,0.1);
|
|
var_00 maps\_utility::delaythread(29.5,::maps\_utility::rumble_ramp_to,0.3,0.1);
|
|
var_00 maps\_utility::delaythread(33,::maps\_utility::rumble_ramp_to,0.7,3);
|
|
var_00 maps\_utility::delaythread(37,::maps\_utility::rumble_ramp_to,0,1);
|
|
var_00 common_scripts\utility::delaycall(42,::stoprumble,"steady_rumble");
|
|
wait(44);
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 126
|
|
bridge_collapse_rumble_timed()
|
|
{
|
|
level.player common_scripts\utility::delaycall(8,::playrumbleonentity,"heavy_1s");
|
|
level.player common_scripts\utility::delaycall(9,::playrumbleonentity,"riotshield_impact");
|
|
level.player common_scripts\utility::delaycall(23,::playrumbleonentity,"light_1s");
|
|
level.player common_scripts\utility::delaycall(23.2,::playrumbleonentity,"light_1s");
|
|
level.player common_scripts\utility::delaycall(23.8,::playrumbleonentity,"light_1s");
|
|
level.player common_scripts\utility::delaycall(24.2,::playrumbleonentity,"light_1s");
|
|
level.player common_scripts\utility::delaycall(26,::playrumbleonentity,"heavy_1s");
|
|
level.player common_scripts\utility::delaycall(27.5,::playrumbleonentity,"heavy_2s");
|
|
level.player common_scripts\utility::delaycall(30.5,::playrumbleonentity,"light_1s");
|
|
level.player common_scripts\utility::delaycall(40.5,::playrumbleonentity,"heavy_1s");
|
|
level.player common_scripts\utility::delaycall(50,::playrumbleonentity,"riotshield_impact");
|
|
level.player common_scripts\utility::delaycall(51.5,::playrumbleonentity,"light_1s");
|
|
level.player common_scripts\utility::delaycall(67.8,::playrumbleonentity,"heavy_1s");
|
|
level.player common_scripts\utility::delaycall(70,::playrumbleonentity,"light_1s");
|
|
level.player common_scripts\utility::delaycall(70.4,::playrumbleonentity,"light_1s");
|
|
level.player common_scripts\utility::delaycall(72.65,::playrumbleonentity,"riotshield_impact");
|
|
level.player common_scripts\utility::delaycall(78.4,::playrumbleonentity,"light_1s");
|
|
}
|
|
|
|
//Function Number: 127
|
|
debug_timer()
|
|
{
|
|
var_00 = 0;
|
|
for(;;)
|
|
{
|
|
iprintlnbold("Seconds: " + var_00);
|
|
var_00 = var_00 + 1;
|
|
wait(1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 128
|
|
take_car_door_shields()
|
|
{
|
|
self notify("remove_car_doors");
|
|
}
|
|
|
|
//Function Number: 129
|
|
cleanup_road_flares()
|
|
{
|
|
var_00 = getentarray("bridge_collapse_road_flare","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(var_02.classname == "script_model")
|
|
{
|
|
var_02 delete();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 130
|
|
handle_early_approach()
|
|
{
|
|
self waittill("trigger");
|
|
level.explosion_scene_org notify("stop_early_barrier_loop");
|
|
level.early_approach_guy maps\_utility::anim_stopanimscripted();
|
|
level.explosion_scene_org maps\_anim::anim_single_solo(level.early_approach_guy,"approach_scene");
|
|
common_scripts\utility::flag_set("flag_approach_scene_begin");
|
|
level.explosion_scene_org thread maps\_anim::anim_loop_solo(level.early_approach_guy,"approach_idle","stop_approach_loop");
|
|
}
|
|
|
|
//Function Number: 131
|
|
animate_collapse_ent(param_00)
|
|
{
|
|
if(isai(self))
|
|
{
|
|
if(self.animname != "human_sentinel_2")
|
|
{
|
|
maps\_utility::gun_remove();
|
|
}
|
|
|
|
self.name = " ";
|
|
}
|
|
|
|
param_00 maps\_anim::anim_single_solo(self,"collapse_scene");
|
|
delete_collapse_ent(self);
|
|
}
|
|
|
|
//Function Number: 132
|
|
show_normal_handles()
|
|
{
|
|
self hidepart("rear_handle_obj_left_jnt");
|
|
self hidepart("rear_handle_obj_right_jnt");
|
|
}
|
|
|
|
//Function Number: 133
|
|
show_glowy_handles()
|
|
{
|
|
self showpart("rear_handle_obj_left_jnt");
|
|
self showpart("rear_handle_obj_right_jnt");
|
|
}
|
|
|
|
//Function Number: 134
|
|
delete_collapse_ent(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(maps\_utility::is_in_array(level.heroes,param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(maps\_utility::is_in_array(level.after_collpase_ents,param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isai(param_00))
|
|
{
|
|
param_00 maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
param_00 delete();
|
|
}
|
|
|
|
//Function Number: 135
|
|
swap_brigde_anim_to_real(param_00)
|
|
{
|
|
foreach(var_02 in level.explosion_scene_bridge)
|
|
{
|
|
if(common_scripts\utility::array_contains(level.after_collpase_ents,var_02))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_02.model == "ggb_collapse_03_chunkg")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 hide();
|
|
}
|
|
|
|
maps\sanfran_util::show_fallen_bridge();
|
|
}
|
|
|
|
//Function Number: 136
|
|
swap_brigde_anim_to_real_far(param_00)
|
|
{
|
|
foreach(var_02 in level.explosion_scene_bridge)
|
|
{
|
|
if(common_scripts\utility::array_contains(level.after_collpase_ents,var_02))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 hide();
|
|
}
|
|
|
|
maps\sanfran_util::show_far_bridge();
|
|
maps\sanfran_util::connectpaths_ents_by_targetname("collapse_clip");
|
|
maps\sanfran_util::delete_ents_by_targetname("collapse_clip");
|
|
}
|
|
|
|
//Function Number: 137
|
|
start_bridge_after_loop(param_00)
|
|
{
|
|
param_00 maps\_anim::anim_loop(level.after_collpase_ents,"after_collapse_idle");
|
|
}
|
|
|
|
//Function Number: 138
|
|
start_slow_mo(param_00)
|
|
{
|
|
setslowmotion(1,0.2,0.1);
|
|
}
|
|
|
|
//Function Number: 139
|
|
stop_slow_mo(param_00)
|
|
{
|
|
setslowmotion(0.2,1,0.9);
|
|
}
|
|
|
|
//Function Number: 140
|
|
cracked_windshield_swap(param_00)
|
|
{
|
|
var_01 = spawn("script_model",param_00.origin);
|
|
var_01.origin = param_00.origin;
|
|
var_01.angles = param_00.angles;
|
|
var_01 linkto(param_00);
|
|
var_01 setmodel("vehicle_civ_domestic_sedan_police_static_dstry02");
|
|
param_00 hide();
|
|
thread maps\sanfran_lighting::attach_light_to_police_car(var_01);
|
|
param_00 waittill("death");
|
|
var_01 delete();
|
|
}
|
|
|
|
//Function Number: 141
|
|
cleanup_explosion_ents()
|
|
{
|
|
level.explosion_scene_org notify("stop_always_loop");
|
|
var_00 = [];
|
|
var_00 = common_scripts\utility::array_combine(var_00,level.idle_scene_ents);
|
|
var_00 = common_scripts\utility::array_combine(var_00,level.barrier_scene_ents);
|
|
var_00 = common_scripts\utility::array_combine(var_00,level.approach_scene_ents);
|
|
var_00 = common_scripts\utility::array_combine(var_00,level.approach_idle_ents);
|
|
var_00 = common_scripts\utility::array_combine(var_00,level.deploy_scene_ents);
|
|
var_00 = common_scripts\utility::array_combine(var_00,level.always_loop_ents);
|
|
clearallcorpses();
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(!isdefined(var_02))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(maps\_utility::is_in_array(level.collapse_scene_ents,var_02))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(maps\_utility::is_in_array(level.collapse_scene_ents_long,var_02))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(maps\_utility::is_in_array(level.after_collpase_ents,var_02))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isai(var_02))
|
|
{
|
|
var_02 maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
var_02 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 142
|
|
rock_mob()
|
|
{
|
|
var_00 = getent("mob_rocking_origin","targetname");
|
|
var_01 = getent("mob_rocking_attachment_ent","targetname");
|
|
var_01.animname = "MOB";
|
|
var_01 useanimtree(#animtree);
|
|
var_02 = getentarray("mob_brushmodel","targetname");
|
|
foreach(var_04 in var_02)
|
|
{
|
|
var_04 linkto(var_01,"jnt_boat");
|
|
}
|
|
|
|
var_06 = getentarray("mob_models","targetname");
|
|
foreach(var_08 in var_06)
|
|
{
|
|
var_08 linkto(var_02[0]);
|
|
}
|
|
|
|
while(!common_scripts\utility::flag("flag_stop_mob_rocking"))
|
|
{
|
|
var_00 maps\_anim::anim_single_solo(var_01,"mob_sway");
|
|
}
|
|
|
|
var_00 maps\_anim::anim_single_solo(var_01,"mob_sway_stop");
|
|
}
|
|
|
|
//Function Number: 143
|
|
setup_bridge_explosion_anim_sequence()
|
|
{
|
|
if(level.currentgen)
|
|
{
|
|
while(!istransientloaded("sanfran_bigm_tr"))
|
|
{
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
level.idle_scene_ents = [];
|
|
level.barrier_scene_ents = [];
|
|
level.approach_scene_ents = [];
|
|
level.approach_idle_ents = [];
|
|
level.deploy_scene_ents = [];
|
|
level.collapse_scene_ents = [];
|
|
level.collapse_scene_ents_long = [];
|
|
level.after_collpase_ents = [];
|
|
level.deploy_scene_handcuff_ents = [];
|
|
level.animated_gun = [];
|
|
level.always_loop_ents = [];
|
|
level.player_rig = maps\_utility::spawn_anim_model("player_rig");
|
|
level.player_rig hide();
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = level.player_rig;
|
|
level.collapse_scene_ents_long[level.collapse_scene_ents_long.size] = level.player_rig;
|
|
level.collapse_scene_ents_long[level.collapse_scene_ents_long.size] = level.burke;
|
|
level.explosion_scene_org = getent("bridge_explosion_origin","targetname");
|
|
setup_bridge_explosion_anim_sequence_vehicles();
|
|
setup_bridge_explosion_anim_sequence_humans();
|
|
setup_bridge_explosion_anim_sequence_bridge();
|
|
level.explosion_scene_org maps\_anim::anim_first_frame(level.collapse_scene_ents,"collapse_scene");
|
|
level.explosion_scene_org maps\_anim::anim_first_frame(level.deploy_scene_ents,"deploy_scene");
|
|
level.explosion_scene_org maps\_anim::anim_first_frame(level.deploy_scene_handcuff_ents,"deploy_scene");
|
|
level.explosion_scene_org maps\_anim::anim_first_frame(level.approach_scene_ents,"approach_scene");
|
|
foreach(var_01 in level.barrier_scene_ents)
|
|
{
|
|
if(var_01.animname == "human_sentinel_7")
|
|
{
|
|
level.explosion_scene_org thread maps\_anim::anim_loop_solo(var_01,"barrier_scene","stop_early_barrier_loop");
|
|
continue;
|
|
}
|
|
|
|
level.explosion_scene_org thread maps\_anim::anim_loop_solo(var_01,"barrier_scene","stop_barrier_loop");
|
|
}
|
|
|
|
foreach(var_01 in level.idle_scene_ents)
|
|
{
|
|
level.explosion_scene_org thread maps\_anim::anim_loop_solo(var_01,"idle_scene","stop_idle_loop");
|
|
}
|
|
|
|
foreach(var_01 in level.always_loop_ents)
|
|
{
|
|
level.explosion_scene_org thread maps\_anim::anim_loop_solo(var_01,"always_loop_scene","stop_always_loop");
|
|
}
|
|
|
|
level thread start_bridge_overwatch_heli();
|
|
maps\sanfran_util::notsolid_ents_by_targetname("collapse_clip");
|
|
}
|
|
|
|
//Function Number: 144
|
|
start_bridge_overwatch_heli()
|
|
{
|
|
level.overwatch_heli = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("explosion_overwatch_heli");
|
|
level.overwatch_heli maps\_vehicle::godon();
|
|
level.overwatch_heli maps\sanfran_util::riders_no_damage();
|
|
var_00 = level.overwatch_heli maps\sanfran_util::heli_get_shooters();
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02.ignoreall = 1;
|
|
var_02 laseron();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_van_explosion_start");
|
|
var_04 = common_scripts\utility::getstruct("overwatch_heli_peel_off","targetname");
|
|
level.overwatch_heli thread maps\_vehicle_code::_vehicle_paths(var_04);
|
|
}
|
|
|
|
//Function Number: 145
|
|
at_van_enemy_cleanup()
|
|
{
|
|
level endon("elevator_ascend");
|
|
self endon("van_cleanup_complete");
|
|
var_00 = getent("at_van_enemy_cleanup","targetname");
|
|
for(;;)
|
|
{
|
|
common_scripts\utility::flag_wait("flag_at_van_enemy_cleanup");
|
|
var_01 = getaiarray("axis");
|
|
var_02 = [];
|
|
foreach(var_04 in var_01)
|
|
{
|
|
if(isdefined(var_04.van_scene_axis) && var_04.van_scene_axis == 1)
|
|
{
|
|
var_02 = common_scripts\utility::array_add(var_02,var_04);
|
|
}
|
|
}
|
|
|
|
var_01 = common_scripts\utility::array_remove_array(var_01,var_02);
|
|
foreach(var_04 in var_01)
|
|
{
|
|
if(isdefined(var_04) && !maps\_utility::player_can_see_ai(var_04))
|
|
{
|
|
var_04 kill();
|
|
}
|
|
|
|
var_07 = randomfloatrange(0.05,0.2);
|
|
wait(var_07);
|
|
}
|
|
|
|
if(isdefined(var_01) && var_01.size < 1)
|
|
{
|
|
var_00 delete();
|
|
common_scripts\utility::flag_set("van_cleanup_complete");
|
|
}
|
|
|
|
wait(0.5);
|
|
}
|
|
}
|
|
|
|
//Function Number: 146
|
|
setup_bridge_explosion_anim_sequence_vehicles()
|
|
{
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname("van_scene_vehicle_chopper");
|
|
var_00 soundscripts\_snd::snd_message("pre_bridge_collapse_helo_idle");
|
|
var_00 maps\_utility::delaythread(0.2,::soundscripts\_snd::snd_message,"snd_stop_vehicle");
|
|
var_00.animname = "chopper_1";
|
|
var_00 useanimtree(#animtree);
|
|
var_00 maps\_vehicle::godon();
|
|
if(level.nextgen)
|
|
{
|
|
var_00 vehicle_scripts\_littlebird::show_static_rotors();
|
|
}
|
|
|
|
level.idle_scene_ents[level.idle_scene_ents.size] = var_00;
|
|
thread setup_helicopter_blades_damage();
|
|
var_01 = spawn("script_model",(0,0,-1000));
|
|
var_01 setmodel("vehicle_sentinel_littlebird_dstrypv");
|
|
var_01 hide();
|
|
var_01.animname = "broken_helo";
|
|
var_01 useanimtree(#animtree);
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_01;
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname("van_scene_vehicle_van");
|
|
var_02 maps\_vehicle::godon();
|
|
var_02.animname = "van";
|
|
var_02 useanimtree(#animtree);
|
|
level.approach_scene_ents[level.approach_scene_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
level.explosion_van = var_02;
|
|
level.explosion_scene_drones = [];
|
|
for(var_03 = 0;var_03 < 12;var_03++)
|
|
{
|
|
var_04 = spawn("script_model",var_02.origin);
|
|
var_04 setmodel("vehicle_atlas_assault_drone");
|
|
var_04.animname = "drone_" + var_03 + 1;
|
|
var_04 useanimtree(#animtree);
|
|
var_04 hide();
|
|
level.explosion_scene_drones[level.explosion_scene_drones.size] = var_04;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_04;
|
|
}
|
|
|
|
var_05 = spawn("script_model",var_02.origin);
|
|
var_05 setmodel("vehicle_atlas_assault_drone_large");
|
|
var_05.animname = "large_drone";
|
|
var_05 useanimtree(#animtree);
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_05;
|
|
level.explosion_scene_drone_large = var_05;
|
|
var_06 = maps\_vehicle::spawn_vehicle_from_targetname("van_scene_truck01");
|
|
var_06.animname = "truck01";
|
|
var_06 useanimtree(#animtree);
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_06;
|
|
var_06 = maps\_vehicle::spawn_vehicle_from_targetname("van_scene_truck02");
|
|
var_06.animname = "truck02";
|
|
var_06 useanimtree(#animtree);
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_06;
|
|
var_07 = maps\_vehicle::spawn_vehicles_from_targetname("van_scene_vehicle_copcar");
|
|
soundscripts\_snd::snd_message("spawn_parked_police_car",var_07);
|
|
for(var_03 = 0;var_03 < var_07.size;var_03++)
|
|
{
|
|
var_07[var_03].animname = "copcar_" + var_03 + 1;
|
|
var_07[var_03] useanimtree(#animtree);
|
|
var_07[var_03] thread maps\sanfran_fx::cop_car_lights_on_barricade();
|
|
if(var_07[var_03].animname != "copcar_11")
|
|
{
|
|
level.approach_scene_ents[level.approach_scene_ents.size] = var_07[var_03];
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_07[var_03];
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_07[var_03];
|
|
continue;
|
|
}
|
|
|
|
level.approach_scene_ents[level.approach_scene_ents.size] = var_07[var_03];
|
|
}
|
|
|
|
var_08 = maps\_vehicle::spawn_vehicle_from_targetname("van_scene_atlas_suv");
|
|
var_08 maps\_vehicle::godon();
|
|
var_08.animname = "atlas_suv";
|
|
var_08 useanimtree(#animtree);
|
|
level.approach_scene_ents[level.approach_scene_ents.size] = var_08;
|
|
var_09 = maps\_vehicle::spawn_vehicle_from_targetname("van_scene_vehicle_bus");
|
|
var_09.animname = "bus";
|
|
var_09 useanimtree(#animtree);
|
|
var_09 hide();
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_09;
|
|
var_0A = maps\_vehicle::spawn_vehicle_from_targetname("van_scene_vehicle_compact");
|
|
var_0A.animname = "compact";
|
|
var_0A useanimtree(#animtree);
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_0A;
|
|
}
|
|
|
|
//Function Number: 147
|
|
setup_bridge_explosion_anim_sequence_humans()
|
|
{
|
|
var_00 = getentarray("van_scene_spawner_atlas","targetname");
|
|
for(var_01 = 0;var_01 < var_00.size;var_01++)
|
|
{
|
|
if(var_01 == 2 || var_01 == 3)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 = var_00[var_01] maps\_utility::spawn_ai(1,1);
|
|
var_02.ignoreme = 1;
|
|
var_02.ignoreall = 1;
|
|
var_02.animname = "human_atlas_" + var_01 + 1;
|
|
var_02.ignoresonicaoe = 1;
|
|
var_02.van_scene_axis = 1;
|
|
if(var_02.animname == "human_atlas_1")
|
|
{
|
|
var_02 maps\_utility::gun_remove();
|
|
var_03 = 1;
|
|
var_02.allowdeath = 1;
|
|
var_02.health = 1;
|
|
var_02 maps\_utility::stop_magic_bullet_shield();
|
|
var_02 thread remove_from_idle_array_on_death(var_03);
|
|
var_02.noragdoll = undefined;
|
|
level.approach_scene_ents[level.approach_scene_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
level.deploy_scene_handcuff_ents[level.deploy_scene_handcuff_ents.size] = var_02;
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_atlas_2")
|
|
{
|
|
var_03 = 0;
|
|
var_02.allowdeath = 1;
|
|
var_02.health = 1;
|
|
var_02 maps\_utility::stop_magic_bullet_shield();
|
|
var_02 thread remove_from_idle_array_on_death(var_03);
|
|
var_02.noragdoll = undefined;
|
|
level.barrier_scene_ents[level.barrier_scene_ents.size] = var_02;
|
|
level.approach_scene_ents[level.approach_scene_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
level.deploy_scene_handcuff_ents[level.deploy_scene_handcuff_ents.size] = var_02;
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_atlas_3")
|
|
{
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_atlas_4")
|
|
{
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_atlas_5")
|
|
{
|
|
var_02 maps\_utility::gun_remove();
|
|
level.approach_scene_ents[level.approach_scene_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
thread delete_atlas_van_driver(var_02);
|
|
thread disable_threat_atlas_van_driver(var_02);
|
|
}
|
|
}
|
|
|
|
var_00 = getentarray("van_scene_spawner_sentinel","targetname");
|
|
for(var_01 = 0;var_01 < var_00.size;var_01++)
|
|
{
|
|
if(var_01 == 11 || var_01 == 13)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 = var_00[var_01] maps\_utility::spawn_ai(1,1);
|
|
var_02.ignoreme = 1;
|
|
var_02.ignoreall = 1;
|
|
var_02.animname = "human_sentinel_" + var_01 + 1;
|
|
level.approach_scene_ents[level.approach_scene_ents.size] = var_02;
|
|
if(var_02.animname == "human_sentinel_1")
|
|
{
|
|
level.barrier_scene_ents[level.barrier_scene_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
level.sentinel_op1 = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_sentinel_2")
|
|
{
|
|
level.barrier_scene_ents[level.barrier_scene_ents.size] = var_02;
|
|
level.deploy_scene_handcuff_ents[level.deploy_scene_handcuff_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
level.sentinel_op2 = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_sentinel_3")
|
|
{
|
|
level.barrier_scene_ents[level.barrier_scene_ents.size] = var_02;
|
|
level.deploy_scene_handcuff_ents[level.deploy_scene_handcuff_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_sentinel_4")
|
|
{
|
|
level.barrier_scene_ents[level.barrier_scene_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
level.sentinel_op4 = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_sentinel_5")
|
|
{
|
|
level.barrier_scene_ents[level.barrier_scene_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_sentinel_6")
|
|
{
|
|
level.barrier_scene_ents[level.barrier_scene_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_sentinel_7")
|
|
{
|
|
level.barrier_scene_ents[level.barrier_scene_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
level.approach_scene_ents = common_scripts\utility::array_remove(level.approach_scene_ents,var_02);
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
level.early_approach_guy = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_sentinel_8")
|
|
{
|
|
level.barrier_scene_ents[level.barrier_scene_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_sentinel_9")
|
|
{
|
|
level.barrier_scene_ents[level.barrier_scene_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_sentinel_10")
|
|
{
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
}
|
|
|
|
if(var_02.animname == "human_sentinel_11")
|
|
{
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
}
|
|
}
|
|
|
|
var_04 = getent("van_scene_spawner_police_special","targetname");
|
|
var_02 = var_04 maps\_utility::spawn_ai(1,1);
|
|
var_02.ignoreme = 1;
|
|
var_02.ignoreall = 1;
|
|
var_02.animname = "human_police_1";
|
|
level.collapse_cop = var_02;
|
|
level.barrier_scene_ents[level.barrier_scene_ents.size] = var_02;
|
|
level.approach_scene_ents[level.approach_scene_ents.size] = var_02;
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_02;
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
var_04 = getent("van_scene_spawner_police","targetname");
|
|
var_02 = var_04 maps\_utility::spawn_ai(1,1);
|
|
var_02.ignoreme = 1;
|
|
var_02.ignoreall = 1;
|
|
var_02.animname = "human_police_2";
|
|
level.always_loop_ents[level.always_loop_ents.size] = var_02;
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
var_00 = getentarray("van_scene_spawner_civilian","targetname");
|
|
for(var_01 = 0;var_01 < var_00.size;var_01++)
|
|
{
|
|
var_02 = var_00[var_01] maps\_utility::spawn_ai(1,1);
|
|
var_02.ignoreme = 1;
|
|
var_02.ignoreall = 1;
|
|
var_02.animname = "human_civilian_" + var_01 + 1;
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_02;
|
|
}
|
|
}
|
|
|
|
//Function Number: 148
|
|
setup_bridge_explosion_anim_sequence_bridge()
|
|
{
|
|
level.explosion_scene_bridge = [];
|
|
for(var_00 = 1;var_00 <= 7;var_00++)
|
|
{
|
|
var_01 = spawn("script_model",(0,0,-1000));
|
|
if(var_00 == 1)
|
|
{
|
|
var_01 setmodel("ggb_collapse_03_chunka");
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_01;
|
|
level.after_collpase_ents[level.after_collpase_ents.size] = var_01;
|
|
}
|
|
else if(var_00 == 2)
|
|
{
|
|
var_01 setmodel("ggb_collapse_03_chunkb");
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_01;
|
|
level.after_collpase_ents[level.after_collpase_ents.size] = var_01;
|
|
}
|
|
else if(var_00 == 3)
|
|
{
|
|
var_01 setmodel("ggb_collapse_03_chunkc");
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_01;
|
|
level.after_collpase_ents[level.after_collpase_ents.size] = var_01;
|
|
}
|
|
else if(var_00 == 4)
|
|
{
|
|
var_01 setmodel("ggb_collapse_03_chunkd");
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_01;
|
|
level.after_collpase_ents[level.after_collpase_ents.size] = var_01;
|
|
}
|
|
else if(var_00 == 5)
|
|
{
|
|
var_01 setmodel("ggb_collapse_03_chunke");
|
|
}
|
|
else if(var_00 == 6)
|
|
{
|
|
var_01 setmodel("ggb_collapse_03_chunkf");
|
|
}
|
|
else if(var_00 == 7)
|
|
{
|
|
var_01 setmodel("ggb_collapse_03_chunkg");
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_01;
|
|
}
|
|
|
|
var_01.animname = "bridge0" + var_00;
|
|
var_01 useanimtree(#animtree);
|
|
var_01 hide();
|
|
level.explosion_scene_bridge[level.explosion_scene_bridge.size] = var_01;
|
|
level.collapse_scene_ents[level.collapse_scene_ents.size] = var_01;
|
|
}
|
|
|
|
for(var_00 = 1;var_00 <= 2;var_00++)
|
|
{
|
|
var_02 = spawn("script_model",(0,0,-1000));
|
|
var_02 setmodel("ggb_cable_hero_01");
|
|
var_02.animname = "rope_" + var_00;
|
|
var_02 useanimtree(#animtree);
|
|
var_02 hide();
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_02;
|
|
}
|
|
|
|
var_03 = spawn("script_model",(0,0,-1000));
|
|
var_03 setmodel("vm_hbra3_nocamo");
|
|
var_03.animname = "gun";
|
|
var_03 useanimtree(#animtree);
|
|
var_03 hide();
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_03;
|
|
for(var_00 = 1;var_00 <= 2;var_00++)
|
|
{
|
|
var_03 = spawn("script_model",(0,0,-1000));
|
|
var_03 setmodel("npc_sn6_base_black");
|
|
var_03.animname = "sn6_0" + var_00;
|
|
var_03 useanimtree(#animtree);
|
|
level.animated_gun[var_00] = var_03;
|
|
level.approach_scene_ents[level.approach_scene_ents.size] = var_03;
|
|
if(var_03.animname == "sn6_02")
|
|
{
|
|
level.approach_idle_ents[level.approach_idle_ents.size] = var_03;
|
|
}
|
|
}
|
|
|
|
var_04 = spawn("script_model",(0,0,-1000));
|
|
var_04 setmodel("deployable_cover");
|
|
var_04.animname = "cover";
|
|
var_04 useanimtree(#animtree);
|
|
level.approach_scene_ents[level.approach_scene_ents.size] = var_04;
|
|
var_05 = spawn("script_model",level.player.origin);
|
|
var_05 setmodel("vm_lasercutter");
|
|
var_05 hide();
|
|
var_05.animname = "cutter";
|
|
var_05 useanimtree(#animtree);
|
|
level.deploy_scene_ents[level.deploy_scene_ents.size] = var_05;
|
|
level.cutter = var_05;
|
|
}
|
|
|
|
//Function Number: 149
|
|
remove_from_idle_array_on_death(param_00)
|
|
{
|
|
self waittill("death");
|
|
if(param_00)
|
|
{
|
|
var_01 = level.animated_gun;
|
|
var_02 = var_01[1].origin;
|
|
var_03 = spawn("script_model",var_01[1].origin);
|
|
var_03.angles = var_01[1].angles;
|
|
var_03 setmodel(var_01[1].model);
|
|
var_01[1] delete();
|
|
var_03 physicslaunchclient(var_03.origin,(0,15,200));
|
|
}
|
|
|
|
level.barrier_scene_ents = common_scripts\utility::array_remove(level.barrier_scene_ents,self);
|
|
level.approach_scene_ents = common_scripts\utility::array_remove(level.approach_scene_ents,self);
|
|
level.approach_idle_ents = common_scripts\utility::array_remove(level.approach_idle_ents,self);
|
|
level.collapse_scene_ents = common_scripts\utility::array_remove(level.collapse_scene_ents,self);
|
|
}
|
|
|
|
//Function Number: 150
|
|
handle_boost_jump()
|
|
{
|
|
common_scripts\utility::flag_set("flag_obj_boost_to_MOB");
|
|
maps\_utility::autosave_by_name();
|
|
level thread move_overwatch_heli_to_slope();
|
|
level thread maps\sanfran_util::give_boost_jump();
|
|
common_scripts\utility::run_thread_on_targetname("trigger_boost_down_color",::boost_down_in_order);
|
|
common_scripts\utility::run_thread_on_noteworthy("trigger_boost_burke_lets_go",::boost_lets_go);
|
|
maps\_utility::activate_trigger_with_targetname("start_boost_jump");
|
|
common_scripts\utility::flag_set("start_boost_lighting");
|
|
common_scripts\utility::flag_set("flag_dialog_start_boost");
|
|
common_scripts\utility::flag_set("flag_dialog_boost_nag");
|
|
common_scripts\utility::flag_set("flag_dialog_boost_chatter");
|
|
level notify("vfx_boost_jump_start");
|
|
common_scripts\utility::run_thread_on_targetname("trigger_on_ship",::wait_till_on_ship);
|
|
}
|
|
|
|
//Function Number: 151
|
|
boost_lets_go()
|
|
{
|
|
self endon("death");
|
|
self waittill("trigger");
|
|
level thread anim_burke_boost_lets_go();
|
|
}
|
|
|
|
//Function Number: 152
|
|
anim_burke_boost_lets_go()
|
|
{
|
|
var_00 = getent("boost_burke_lets_go","targetname");
|
|
var_01 = getnode("boost_burke_lets_go_goal","targetname");
|
|
var_00 maps\_anim::anim_reach_solo(level.burke,"boost_go");
|
|
var_00 maps\_anim::anim_single_solo_run(level.burke,"boost_go");
|
|
level.burke thread maps\_spawner::go_to_node(var_01);
|
|
level.burke maps\_utility::enable_ai_color_dontmove();
|
|
}
|
|
|
|
//Function Number: 153
|
|
wait_till_on_ship()
|
|
{
|
|
self waittill("trigger");
|
|
common_scripts\utility::flag_set("flag_obj_player_on_MOB");
|
|
wait(1);
|
|
if(isalive(level.player))
|
|
{
|
|
maps\_loadout_code::saveplayerweaponstatepersistent("sanfran",1);
|
|
maps\_utility::nextmission();
|
|
}
|
|
}
|
|
|
|
//Function Number: 154
|
|
boost_down_in_order()
|
|
{
|
|
self endon("death");
|
|
self waittill("trigger");
|
|
var_00 = getentarray("trigger_boost_down_color","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(var_02.script_index < self.script_index)
|
|
{
|
|
var_02 delete();
|
|
}
|
|
}
|
|
|
|
wait(0.05);
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 155
|
|
move_overwatch_heli_to_slope()
|
|
{
|
|
if(!isdefined(level.overwatch_heli))
|
|
{
|
|
level.overwatch_heli = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("explosion_overwatch_heli");
|
|
level.overwatch_heli maps\_vehicle::godon();
|
|
level.overwatch_heli maps\sanfran_util::riders_no_damage();
|
|
var_00 = level.overwatch_heli maps\sanfran_util::heli_get_shooters();
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02.ignoreall = 1;
|
|
var_02 laseron();
|
|
}
|
|
}
|
|
|
|
var_04 = common_scripts\utility::getstruct("overwatch_heli_boost","targetname");
|
|
level.overwatch_heli thread maps\_vehicle_code::_vehicle_paths(var_04);
|
|
}
|
|
|
|
//Function Number: 156
|
|
railing_dangerzone_think()
|
|
{
|
|
var_00 = [];
|
|
for(;;)
|
|
{
|
|
common_scripts\utility::flag_wait("railing_danger_zone_touching");
|
|
var_01 = getaiarray("axis");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(randomfloat(100) < 75 && isalive(var_03) && !isdefined(var_03.isseeking))
|
|
{
|
|
var_03 thread dangerzone_enemy_seek_player();
|
|
var_00 = common_scripts\utility::array_add(var_00,var_03);
|
|
}
|
|
}
|
|
|
|
var_05 = undefined;
|
|
common_scripts\utility::flag_waitopen("railing_danger_zone_touching");
|
|
var_00 = [];
|
|
wait(1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 157
|
|
dangerzone_enemy_seek_player()
|
|
{
|
|
self endon("death");
|
|
thread maps\_utility::player_seek_enable();
|
|
self.isseeking = 1;
|
|
common_scripts\utility::flag_waitopen("railing_danger_zone_touching");
|
|
thread maps\_utility::player_seek_disable();
|
|
self.isseeking = undefined;
|
|
} |