mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
9949 lines
285 KiB
Plaintext
9949 lines
285 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: fusion_code.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 399
|
|
* Decompile Time: 5965 ms
|
|
* Timestamp: 4/22/2024 2:30:02 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
fusion_intro_screen()
|
|
{
|
|
level.player freezecontrols(1);
|
|
thread fusion_intro_background(8.3 + level.intro_hades_video_length,5);
|
|
thread fusion_intro_title_text();
|
|
common_scripts\utility::flag_set("intro_screen_done");
|
|
common_scripts\utility::flag_set("introscreen_complete");
|
|
wait(11 + level.intro_hades_video_length);
|
|
level.player freezecontrols(0);
|
|
}
|
|
|
|
//Function Number: 2
|
|
fusion_intro_title_text()
|
|
{
|
|
setsaveddvar("cg_cinematicfullscreen","1");
|
|
maps\_shg_utility::play_chyron_video("chyron_text_fusion");
|
|
var_00 = getdvarint("cg_cinematicCanPause",0);
|
|
setsaveddvar("cg_cinematicCanPause",1);
|
|
cinematicingame("fusion_videolog02");
|
|
wait 0.05;
|
|
while(!iscinematicplaying())
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
fusion_intro_hades_videolog_vo();
|
|
setsaveddvar("cg_cinematicCanPause",var_00);
|
|
common_scripts\utility::flag_set("intro_text_cinematic_over");
|
|
}
|
|
|
|
//Function Number: 3
|
|
fusion_intro_hades_videolog_vo()
|
|
{
|
|
var_00 = spawn("script_origin",level.player.origin);
|
|
var_00 playscheduledcinematicsound(106,"fus_hade_peopleoftheworldyou");
|
|
var_00 playscheduledcinematicsound(269,"fus_hade_technologyisacancerrotting");
|
|
var_00 playscheduledcinematicsound(595,"fus_hade_todaywestrikeatthe");
|
|
wait(1);
|
|
while(iscinematicplaying())
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 4
|
|
fusion_intro_background(param_00,param_01)
|
|
{
|
|
var_02 = newclienthudelem(level.player);
|
|
var_02 setshader("black",1280,720);
|
|
var_02.horzalign = "fullscreen";
|
|
var_02.vertalign = "fullscreen";
|
|
var_02.alpha = 1;
|
|
var_02.foreground = 0;
|
|
wait(param_00);
|
|
var_02 fadeovertime(param_01);
|
|
var_02.alpha = 0;
|
|
wait(param_01);
|
|
var_02 destroy();
|
|
}
|
|
|
|
//Function Number: 5
|
|
gameplay_setup()
|
|
{
|
|
maps\_variable_grenade::main();
|
|
vehicle_scripts\_pdrone_tactical_picker::main();
|
|
maps\_stingerm7::init();
|
|
maps\_player_exo::player_exo_add_single("high_jump");
|
|
if(level.nextgen)
|
|
{
|
|
thread hide_water();
|
|
}
|
|
|
|
thread setup_m_turret();
|
|
thread setup_spawn_functions();
|
|
thread finale_enemy_transports();
|
|
thread finale_enemy_gaz();
|
|
thread reactor_entrance_rally();
|
|
thread interior_gameplay();
|
|
thread evacuation_setup();
|
|
thread setup_evacuation_scene();
|
|
thread extraction_chopper();
|
|
thread cooling_tower_collapse();
|
|
if(level.currentgen)
|
|
{
|
|
thread mobile_cover_drones_cg();
|
|
}
|
|
|
|
thread setup_dont_leave_failure();
|
|
thread setup_dont_leave_hint();
|
|
maps\_utility::add_hint_string("hint_dont_leave_mission",&"FUSION_DONT_LEAVE",::should_break_dont_leave);
|
|
}
|
|
|
|
//Function Number: 6
|
|
setup_spawn_functions()
|
|
{
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_01",::street_enemy_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_02",::street_enemy_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_turret_wave_2",::street_enemy_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_rear_mi17_01",::street_enemy_think);
|
|
if(level.nextgen)
|
|
{
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_03",::street_enemy_building_east_think);
|
|
}
|
|
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_04",::street_enemy_building_west_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_zip_rooftop",::rooftop_enemy_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_zip_rooftop_strafe",::rooftop_enemy_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_tank_stage_01",::street_enemy_tank_battle_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_tank_stage_02",::street_enemy_tank_battle_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_tank_stage_03",::street_enemy_tank_battle_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_turret_wave_1",::street_enemy_tank_damaged_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_turret_wave_2",::street_enemy_tank_damaged_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_blown_building",::street_enemy_blown_building_think);
|
|
if(level.currentgen)
|
|
{
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_zip_rooftop_left",::rooftop_enemy_think_left);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_zip_rooftop_right",::rooftop_enemy_think_right);
|
|
}
|
|
|
|
maps\_utility::array_spawn_function_noteworthy("turbine_room_enemy",::turbine_room_enemy_think);
|
|
common_scripts\utility::array_thread(getentarray("corpse_trigger","targetname"),::corpse_trigger_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_street_wave_rear",::street_enemy_think);
|
|
maps\_utility::array_spawn_function_noteworthy("rpg_vehicle",::postspawn_rpg_vehicle);
|
|
maps\_utility::array_spawn_function_targetname("hangar_enemies_01",::hangar_enemy_think);
|
|
maps\_utility::add_global_spawn_function("allies",::disable_badplace_for_red_guys);
|
|
maps\_utility::add_global_spawn_function("allies",::ally_enable_boost_traversals);
|
|
maps\_utility::array_spawn_function_noteworthy("evacuation_first_drones",::evacuation_first_drones_think);
|
|
thread enemy_combat_equip_microwave_grenades();
|
|
maps\_utility::add_global_spawn_function("axis",::detect_turret_death);
|
|
maps\_utility::add_global_spawn_function("axis",::maps\_chargeable_weapon::ai_detect_charged_damage);
|
|
}
|
|
|
|
//Function Number: 7
|
|
tff_cleanup_vehicle(param_00)
|
|
{
|
|
switch(param_00)
|
|
{
|
|
case "intro":
|
|
level waittill("tff_pre_transition_intro_to_middle");
|
|
break;
|
|
|
|
case "middle":
|
|
level waittill("tff_pre_transition_middle_to_outro");
|
|
break;
|
|
}
|
|
|
|
if(isdefined(self))
|
|
{
|
|
if(maps\_vehicle::isvehicle())
|
|
{
|
|
self freevehicle();
|
|
}
|
|
|
|
self delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
setup_dont_leave_failure()
|
|
{
|
|
common_scripts\utility::flag_wait("player_left_map");
|
|
level notify("mission failed");
|
|
setdvar("ui_deadquote",&"FUSION_DONT_LEAVE_FAILURE");
|
|
maps\_utility::missionfailedwrapper();
|
|
}
|
|
|
|
//Function Number: 9
|
|
setup_dont_leave_hint()
|
|
{
|
|
level endon("mission failed");
|
|
for(;;)
|
|
{
|
|
common_scripts\utility::flag_wait("player_leaving_map");
|
|
maps\_utility::display_hint("hint_dont_leave_mission");
|
|
common_scripts\utility::flag_wait_either("player_leaving_map","player_returning_to_map");
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
should_break_dont_leave()
|
|
{
|
|
if(common_scripts\utility::flag("missionfailed"))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(common_scripts\utility::flag("player_returning_to_map"))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 11
|
|
mobile_cover_drones_cg()
|
|
{
|
|
if(level.start_point != "fly_in_animated" && level.start_point != "fly_in_animated_part2" && level.start_point != "courtyard")
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = getentarray("mobile_cover_drones","targetname");
|
|
var_01 = [];
|
|
foreach(var_03 in var_00)
|
|
{
|
|
var_01[var_01.size] = var_03 maps\_utility::spawn_vehicle();
|
|
}
|
|
|
|
level waittill("tff_pre_transition_intro_to_middle");
|
|
common_scripts\utility::array_call(var_01,::delete);
|
|
}
|
|
|
|
//Function Number: 12
|
|
heroes_post_zip()
|
|
{
|
|
if(level.nextgen)
|
|
{
|
|
var_00 = getent("hero_alpha_leader","script_noteworthy");
|
|
var_00 maps\_utility::add_spawn_function(::alpha_leader_think);
|
|
level.alpha_leader = var_00 maps\_utility::spawn_ai(1);
|
|
level.alpha_leader.animname = "alpha_leader";
|
|
level.alpha_leader maps\_utility::magic_bullet_shield(1);
|
|
}
|
|
|
|
level.carter unlink();
|
|
level.carter maps\_utility::teleport_ent(common_scripts\utility::getstruct("carter_zip_dest","targetname"));
|
|
level.carter maps\_utility::disable_ai_color();
|
|
level.carter maps\_utility::enable_sprint();
|
|
level.carter maps\_utility::gun_recall();
|
|
level.carter show();
|
|
level.joker unlink();
|
|
level.joker maps\_utility::teleport_ent(common_scripts\utility::getstruct("joker_zip_dest","targetname"));
|
|
level.joker maps\_utility::gun_recall();
|
|
level.joker show();
|
|
}
|
|
|
|
//Function Number: 13
|
|
alpha_leader_think()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_walker_destroyed");
|
|
level.alpha_leader maps\_utility::set_force_color("y");
|
|
}
|
|
|
|
//Function Number: 14
|
|
ally_enable_boost_traversals()
|
|
{
|
|
self.canjumppath = 1;
|
|
}
|
|
|
|
//Function Number: 15
|
|
disable_badplace_for_red_guys()
|
|
{
|
|
if(!isdefined(self.script_forcecolor) || self.script_forcecolor != "r")
|
|
{
|
|
return;
|
|
}
|
|
|
|
thread maps\fusion_utility::ignore_badplace(undefined,"flag_mt_wall_rpg_impact");
|
|
}
|
|
|
|
//Function Number: 16
|
|
objectives()
|
|
{
|
|
thread set_obj_markers_current();
|
|
obj_shut_down_reactor();
|
|
obj_escape();
|
|
}
|
|
|
|
//Function Number: 17
|
|
obj_shut_down_reactor()
|
|
{
|
|
if(!common_scripts\utility::flag("flag_intro_objective_given"))
|
|
{
|
|
maps\_utility::flag_set_delayed("flag_intro_objective_given",33 + level.intro_hades_video_length);
|
|
common_scripts\utility::flag_wait("flag_intro_objective_given");
|
|
}
|
|
|
|
objective_add(maps\_utility::obj("shutdown_reactor"),"active",&"FUSION_OBJECTIVE_REACTOR");
|
|
objective_current(maps\_utility::obj("shutdown_reactor"));
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),getent("obj_reactor_01","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_walker");
|
|
if(isdefined(level.walker))
|
|
{
|
|
objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),&"FUSION_OBJECTIVE_WALKER");
|
|
var_00 = common_scripts\utility::spawn_tag_origin();
|
|
var_00 linkto(level.walker,"tag_camera",(0,0,-24),(0,0,0));
|
|
objective_onentity(maps\_utility::obj("shutdown_reactor"),var_00,(0,0,0));
|
|
common_scripts\utility::flag_wait("flag_walker_destroyed");
|
|
objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),"");
|
|
var_00 delete();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("update_obj_pos_security_entrance_1");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_security_entrance_1","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_security_entrance_2");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_security_entrance_2","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_security_room");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_security_room","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_security_elevator_burke");
|
|
if(isdefined(level.burke))
|
|
{
|
|
objective_onentity(maps\_utility::obj("shutdown_reactor"),level.burke);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("update_obj_pos_security_elevator");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_security_elevator","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_elevator_descent");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),(0,0,0));
|
|
common_scripts\utility::flag_wait("update_obj_pos_lab_follow_joker");
|
|
if(isdefined(level.joker))
|
|
{
|
|
objective_onentity(maps\_utility::obj("shutdown_reactor"),level.joker);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("update_obj_pos_lab_follow_burke");
|
|
if(isdefined(level.burke))
|
|
{
|
|
objective_onentity(maps\_utility::obj("shutdown_reactor"),level.burke);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("update_obj_pos_lab_follow_carter");
|
|
if(isdefined(level.carter))
|
|
{
|
|
objective_onentity(maps\_utility::obj("shutdown_reactor"),level.carter);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("update_obj_pos_reactor_1");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_reactor_1","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_reactor_2");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_reactor_2","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_reactor_exit");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_reactor_exit","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_reactor_storage_1");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_reactor_storage_1","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_reactor_storage_2");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_reactor_storage_2","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_turbine_elevator");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_turbine_elevator","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_turbine_elevator_button");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),getent("elevator_button","targetname").origin);
|
|
objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),&"FUSION_OBJ_POINTER_USE");
|
|
common_scripts\utility::flag_wait("update_obj_pos_turbine_elevator_ascent");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),(0,0,0));
|
|
objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),"");
|
|
common_scripts\utility::flag_wait("update_obj_pos_turbine_room_1");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_turbine_room_1","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_turbine_room_exit");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_turbine_room_exit","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_control_room_door");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_control_room_door","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_control_room_explosion");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),(0,0,0));
|
|
common_scripts\utility::flag_wait("update_obj_pos_control_room_console");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),common_scripts\utility::getstruct("obj_pos_control_room_console","targetname").origin);
|
|
objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),&"FUSION_OBJ_POINTER_USE");
|
|
common_scripts\utility::flag_wait("update_obj_pos_control_room_using_console");
|
|
objective_position(maps\_utility::obj("shutdown_reactor"),(0,0,0));
|
|
objective_setpointertextoverride(maps\_utility::obj("shutdown_reactor"),"");
|
|
common_scripts\utility::flag_wait("flag_shut_down_reactor_failed");
|
|
wait(2);
|
|
objective_state(maps\_utility::obj("shutdown_reactor"),"failed");
|
|
wait(2);
|
|
}
|
|
|
|
//Function Number: 18
|
|
set_obj_markers_current()
|
|
{
|
|
common_scripts\utility::flag_wait_all("flag_obj_markers","flag_burke_rally_street_dialogue_complete");
|
|
objective_add(maps\_utility::obj("use_mobile_cover"),"invisible","");
|
|
objective_add(maps\_utility::obj("enter_mobile_turret"),"invisible","");
|
|
objective_add(maps\_utility::obj("use_smaw"),"invisible","");
|
|
thread obj_use_mobile_cover();
|
|
thread obj_enter_mobile_turret();
|
|
thread obj_use_smaw();
|
|
}
|
|
|
|
//Function Number: 19
|
|
obj_use_mobile_cover()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_mcd_vo_done");
|
|
objective_state_nomessage(maps\_utility::obj("use_mobile_cover"),"active");
|
|
objective_current_nomessage(maps\_utility::obj("use_mobile_cover"),maps\_utility::obj("shutdown_reactor"),maps\_utility::obj("enter_mobile_turret"));
|
|
objective_setpointertextoverride(maps\_utility::obj("use_mobile_cover"),&"FUSION_OBJ_POINTER_USE");
|
|
objective_position(maps\_utility::obj("use_mobile_cover"),getent("org_obj_use_mobile_cover","targetname").origin);
|
|
objective_additionalposition(maps\_utility::obj("use_mobile_cover"),1,getent("org_obj_use_mobile_cover2","targetname").origin);
|
|
level.player waittill("player_linked_to_cover");
|
|
objective_state_nomessage(maps\_utility::obj("use_mobile_cover"),"done");
|
|
}
|
|
|
|
//Function Number: 20
|
|
obj_enter_mobile_turret()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_03");
|
|
objective_state_nomessage(maps\_utility::obj("enter_mobile_turret"),"active");
|
|
objective_current_nomessage(maps\_utility::obj("enter_mobile_turret"),maps\_utility::obj("shutdown_reactor"));
|
|
objective_setpointertextoverride(maps\_utility::obj("enter_mobile_turret"),&"FUSION_OBJ_POINTER_ENTER");
|
|
objective_position(maps\_utility::obj("enter_mobile_turret"),getent("org_obj_enter_mobile_turret","targetname").origin);
|
|
level.player waittill("player_starts_entering_mobile_turret");
|
|
objective_state_nomessage(maps\_utility::obj("enter_mobile_turret"),"done");
|
|
}
|
|
|
|
//Function Number: 21
|
|
obj_use_smaw()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_enemy_walker");
|
|
thread track_smaw();
|
|
objective_state_nomessage(maps\_utility::obj("use_smaw"),"active");
|
|
objective_current_nomessage(maps\_utility::obj("use_smaw"),maps\_utility::obj("shutdown_reactor"));
|
|
objective_setpointertextoverride(maps\_utility::obj("use_smaw"),&"FUSION_OBJ_POINTER_USE");
|
|
common_scripts\utility::flag_wait("flag_walker_reveal_dialogue_complete");
|
|
var_00 = 0;
|
|
while(!common_scripts\utility::flag("flag_walker_destroyed") || !common_scripts\utility::flag("flag_walker_death_anim_start"))
|
|
{
|
|
if(does_player_have_smaw())
|
|
{
|
|
if(var_00)
|
|
{
|
|
objective_state_nomessage(maps\_utility::obj("use_smaw"),"done");
|
|
var_00 = 0;
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
if(!var_00)
|
|
{
|
|
objective_state_nomessage(maps\_utility::obj("use_smaw"),"active");
|
|
objective_current_nomessage(maps\_utility::obj("use_smaw"),maps\_utility::obj("shutdown_reactor"));
|
|
objective_setpointertextoverride(maps\_utility::obj("use_smaw"),&"FUSION_OBJ_POINTER_USE");
|
|
objective_onentity(maps\_utility::obj("use_smaw"),level.smaw_location);
|
|
var_00 = 1;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
if(var_00)
|
|
{
|
|
objective_state_nomessage(maps\_utility::obj("use_smaw"),"done");
|
|
var_00 = 0;
|
|
}
|
|
|
|
level notify("stop_track_smaw");
|
|
level.smaw_location delete();
|
|
level.smaw_location = undefined;
|
|
}
|
|
|
|
//Function Number: 22
|
|
track_smaw()
|
|
{
|
|
level endon("stop_track_smaw");
|
|
level.smaw_location = common_scripts\utility::spawn_tag_origin();
|
|
level.smaw_location.origin = getent("org_obj_use_smaw","targetname").origin;
|
|
for(;;)
|
|
{
|
|
level.player waittill("pickup",var_00,var_01);
|
|
if(isdefined(var_01) && issubstr(var_01.classname,"iw5_stingerm7_sp"))
|
|
{
|
|
level.smaw_location linkto(var_01,"",(-10,8,1),(0,0,0));
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 23
|
|
does_player_have_smaw()
|
|
{
|
|
var_00 = level.player getweaponslistall();
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(var_02 == "iw5_stingerm7_sp")
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 24
|
|
obj_escape()
|
|
{
|
|
var_00 = maps\_utility::obj("obj_escape_power_plant");
|
|
objective_add(var_00,"active",&"FUSION_OBJECTIVE_ESCAPE");
|
|
objective_current(var_00);
|
|
objective_position(var_00,getent("obj_escape_01","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_control_room_exit_1");
|
|
objective_position(var_00,common_scripts\utility::getstruct("obj_pos_control_room_exit_1","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_control_room_exit_2");
|
|
objective_position(var_00,common_scripts\utility::getstruct("obj_pos_control_room_exit_2","targetname").origin);
|
|
common_scripts\utility::flag_wait("update_obj_pos_hangar_entrance");
|
|
objective_position(var_00,common_scripts\utility::getstruct("obj_pos_hangar_entrance","targetname").origin);
|
|
common_scripts\utility::flag_wait("flag_obj_02_pos_update_02");
|
|
objective_position(var_00,getent("obj_escape_02","targetname").origin);
|
|
common_scripts\utility::flag_wait("flag_obj_02_pos_update_03");
|
|
objective_position(var_00,getent("obj_escape_03","targetname").origin);
|
|
common_scripts\utility::flag_wait("objective_on_extraction_chopper");
|
|
if(isdefined(level.extraction_chopper))
|
|
{
|
|
objective_onentity(var_00,level.extraction_chopper);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("tower_knockback");
|
|
wait(5);
|
|
objective_position(var_00,(0,0,0));
|
|
common_scripts\utility::flag_wait("play_ending");
|
|
objective_state(var_00,"done");
|
|
}
|
|
|
|
//Function Number: 25
|
|
squad_heli_zip()
|
|
{
|
|
common_scripts\utility::flag_wait("intro_squad_helis_start");
|
|
wait(0.05);
|
|
level.heli_squad_01.animname = "npc_zip_warbird";
|
|
level.heli_squad_01.goalradius = 1;
|
|
var_00 = spawn("script_origin",(-80,-2480,752));
|
|
var_00.angles = (0,265,0);
|
|
common_scripts\utility::flag_wait("flag_squad_heli_2_unload");
|
|
if(level.nextgen)
|
|
{
|
|
level.heli_squad_01 setvehgoalpos(var_00.origin,1);
|
|
level.heli_squad_01 waittill("goal");
|
|
level.heli_squad_01 vehicle_setspeedimmediate(0,0.05,0.05);
|
|
level.heli_squad_01 sethoverparams(0,0,0);
|
|
level.heli_squad_01 notify("stop_handle_rotors");
|
|
var_00 maps\_anim::anim_first_frame_solo(level.heli_squad_01,"npc_zip");
|
|
var_01 = getent("npc_zip_guy_1","targetname");
|
|
var_02 = getent("npc_zip_guy_2","targetname");
|
|
var_03 = getent("npc_zip_guy_3","targetname");
|
|
var_04 = getent("npc_zip_guy_4","targetname");
|
|
level.guy_1 = var_01 maps\_utility::spawn_ai(1);
|
|
level.guy_1.animname = "npc_zip_1";
|
|
level.guy_1.ignoreme = 1;
|
|
level.guy_2 = var_02 maps\_utility::spawn_ai(1);
|
|
level.guy_2.animname = "npc_zip_2";
|
|
level.guy_2.ignoreme = 1;
|
|
var_05 = var_03 maps\_utility::spawn_ai(1);
|
|
var_05.animname = "npc_zip_3";
|
|
var_05.ignoreme = 1;
|
|
var_06 = var_04 maps\_utility::spawn_ai(1);
|
|
var_06.animname = "npc_zip_4";
|
|
var_06.ignoreme = 1;
|
|
var_07 = maps\_utility::spawn_anim_model("zipline_1");
|
|
var_08 = maps\_utility::spawn_anim_model("zipline_2");
|
|
var_09 = maps\_utility::spawn_anim_model("zipline_3");
|
|
var_0A = maps\_utility::spawn_anim_model("zipline_4");
|
|
var_0B = [level.guy_1,level.guy_2,var_05,var_06,var_07,var_08,var_09,var_0A];
|
|
level.heli_squad_01 maps\_anim::anim_first_frame(var_0B,"npc_zip","TAG_GUY0");
|
|
foreach(var_0D in var_0B)
|
|
{
|
|
var_0D linkto(level.heli_squad_01,"TAG_GUY0");
|
|
}
|
|
|
|
var_00 thread maps\_anim::anim_single_solo(level.heli_squad_01,"npc_zip");
|
|
level.heli_squad_01 maps\_anim::anim_single(var_0B,"npc_zip","TAG_GUY0");
|
|
foreach(var_0D in var_0B)
|
|
{
|
|
var_0D unlink();
|
|
}
|
|
|
|
var_07 delete();
|
|
var_08 delete();
|
|
var_09 delete();
|
|
var_0A delete();
|
|
level.guy_1 maps\fusion_utility::goto_node("node_squad_zip_guard_01",0);
|
|
level.guy_2 maps\fusion_utility::goto_node("node_squad_zip_guard_02",0);
|
|
var_05 delete();
|
|
var_06 delete();
|
|
wait(2);
|
|
}
|
|
|
|
if(level.currentgen)
|
|
{
|
|
wait(10);
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_rpg_at_heli");
|
|
common_scripts\utility::flag_set("flag_squad_heli_01_zip_complete");
|
|
level.heli_squad_01 sethoverparams(50,10,10);
|
|
level.heli_squad_01 setmaxpitchroll(15,40);
|
|
level.heli_squad_01 thread vehicle_scripts\_xh9_warbird::handle_rotors();
|
|
level.heli_squad_01.script_vehicle_selfremove = 1;
|
|
common_scripts\utility::flag_wait("flag_player_zip_started");
|
|
if(level.nextgen)
|
|
{
|
|
level.guy_1 delete();
|
|
level.guy_2 delete();
|
|
var_00 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 26
|
|
fly_in_scene_part1(param_00,param_01,param_02)
|
|
{
|
|
var_03 = getanimlength(%fusion_fly_in_intro_warbird_a);
|
|
level.player shellshock("fusion_slowview",var_03);
|
|
level.joker maps\_utility::gun_remove();
|
|
level.carter maps\_utility::gun_remove();
|
|
var_04 = [];
|
|
var_04[0] = param_01;
|
|
param_00 maps\_anim::anim_first_frame(var_04,"fly_in_intro");
|
|
var_05 = [];
|
|
var_05[0] = param_02;
|
|
var_05[1] = level.burke;
|
|
var_05[2] = level.joker;
|
|
var_05[3] = level.carter;
|
|
var_05[4] = level.copilot_intro;
|
|
var_05[5] = level.pilot_intro;
|
|
var_05[6] = level.guy_facing_player_intro;
|
|
foreach(var_07 in var_05)
|
|
{
|
|
var_07 thread maps\fusion_utility::hide_friendname_until_flag_or_notify("warbird_fly_in_arrived");
|
|
}
|
|
|
|
param_01 maps\_anim::anim_first_frame(var_05,"fly_in_intro","tag_guy0");
|
|
foreach(var_07 in var_05)
|
|
{
|
|
var_07 linkto(param_01,"tag_guy0");
|
|
}
|
|
|
|
level.player playerlinktodelta(param_02,"tag_player",1,0,0,0,0,1);
|
|
wait(level.intro_hades_video_length);
|
|
soundscripts\_snd::snd_message("start_hologram_audio");
|
|
soundscripts\_snd::snd_message("start_burke_foley",level.burke);
|
|
soundscripts\_snd::snd_message("start_intro_npc_foley",level.guy_facing_player_intro);
|
|
common_scripts\utility::flag_wait("intro_screen_done");
|
|
thread intro_heli_movies();
|
|
thread fly_in_rumble();
|
|
level.player thread widen_player_view(param_02);
|
|
param_00 thread maps\_anim::anim_single(var_04,"fly_in_intro");
|
|
param_01 maps\_anim::anim_single(var_05,"fly_in_intro","tag_guy0");
|
|
var_0B = common_scripts\utility::spawn_tag_origin();
|
|
var_0B linkto(param_01,"TAG_ORIGIN",(0,0,0),(270,0,0));
|
|
playfxontag(common_scripts\utility::getfx("warbird_rotor"),var_0B,"TAG_ORIGIN");
|
|
}
|
|
|
|
//Function Number: 27
|
|
fly_in_rumble()
|
|
{
|
|
common_scripts\utility::flag_wait("intro_text_cinematic_over");
|
|
var_00 = maps\_utility::get_rumble_ent("steady_rumble");
|
|
var_00.intensity = 0.08;
|
|
level.burke waittillmatch("start_video_3","single anim");
|
|
level.player playrumblelooponentity("tank_rumble");
|
|
wait(3.5);
|
|
level.player stoprumble("tank_rumble");
|
|
level waittill("intro_missile_hit");
|
|
level.player playrumbleonentity("damage_heavy");
|
|
level.player waittill("fastzip_landed");
|
|
stopallrumbles();
|
|
}
|
|
|
|
//Function Number: 28
|
|
intro_missile_hit(param_00)
|
|
{
|
|
level notify("intro_missile_hit");
|
|
}
|
|
|
|
//Function Number: 29
|
|
widen_player_view(param_00)
|
|
{
|
|
wait(0.2);
|
|
self playerlinktodelta(param_00,"tag_player",0.75,35,0,15,25,1);
|
|
common_scripts\utility::flag_wait("flag_combat_zip_rooftop_start");
|
|
self lerpviewangleclamp(4,2,2,50,40,15,45);
|
|
}
|
|
|
|
//Function Number: 30
|
|
lerp_wind(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
var_05 = param_02 - param_00 / param_04 / 0.05;
|
|
var_06 = param_03 - param_01 / param_04 / 0.05;
|
|
while(param_04 > 0)
|
|
{
|
|
param_00 = param_00 + var_05;
|
|
param_01 = param_01 + var_06;
|
|
setsaveddvar("r_reactiveMotionWindAmplitudeScale",param_00);
|
|
setsaveddvar("r_reactiveMotionWindFrequencyScale",param_01);
|
|
param_04 = param_04 - 0.05;
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 31
|
|
wind_over_trees()
|
|
{
|
|
wait(20);
|
|
lerp_wind(0.3,1,15,1.5,1.5);
|
|
wait(1.75);
|
|
lerp_wind(15,1.5,10,1,1);
|
|
wait(3);
|
|
lerp_wind(10,1,20,2,2);
|
|
wait(5);
|
|
setsaveddvar("r_reactiveMotionWindAmplitudeScale","0.3");
|
|
setsaveddvar("r_reactiveMotionWindFrequencyScale","0.5");
|
|
}
|
|
|
|
//Function Number: 32
|
|
fly_in_scene_part2(param_00,param_01,param_02)
|
|
{
|
|
thread wind_over_trees();
|
|
level.player shellshock("fusion_slowview",50);
|
|
var_03 = maps\_vehicle::spawn_vehicle_from_targetname("squad_blackhawk");
|
|
var_03.animname = "warbird_b";
|
|
var_03.no_anim_rotors = 1;
|
|
var_03 vehicle_turnengineoff();
|
|
var_04 = maps\_vehicle::spawn_vehicle_from_targetname("warbird_c");
|
|
var_04.animname = "warbird_c";
|
|
var_04.no_anim_rotors = 1;
|
|
var_04 vehicle_turnengineoff();
|
|
var_05 = maps\_vehicle::spawn_vehicle_from_targetname("warbird_d");
|
|
var_05.animname = "warbird_d";
|
|
var_05.no_anim_rotors = 1;
|
|
var_05 vehicle_turnengineoff();
|
|
var_06 = maps\_vehicle::spawn_vehicle_from_targetname("warbird_e");
|
|
var_06.animname = "warbird_e";
|
|
var_06.no_anim_rotors = 1;
|
|
var_06 vehicle_turnengineoff();
|
|
var_07 = getent("npc_b","targetname");
|
|
var_08 = var_07 maps\_utility::spawn_ai(1);
|
|
var_08.animname = "npc_b";
|
|
var_09 = getent("npc_c","targetname");
|
|
var_0A = var_09 maps\_utility::spawn_ai(1);
|
|
var_0A.animname = "npc_c";
|
|
var_0B = getent("npc_d","targetname");
|
|
var_0C = var_0B maps\_utility::spawn_ai(1);
|
|
var_0C.animname = "npc_d";
|
|
var_0D = getent("npc_e","targetname");
|
|
var_0E = var_0D maps\_utility::spawn_ai(1);
|
|
var_0E.animname = "npc_e";
|
|
waittillframeend;
|
|
waittillframeend;
|
|
var_03 vehicle_scripts\_xh9_warbird::cloak_warbird();
|
|
var_08 hide();
|
|
var_0A hide();
|
|
var_0C hide();
|
|
var_0E hide();
|
|
var_03 thread wait_to_decloak_helicopter(4.25,var_08,var_0A,var_0C,var_0E);
|
|
thread fly_in_squad_uncloak();
|
|
var_0F = maps\_utility::spawn_anim_model("tower_debris");
|
|
if(level.currentgen)
|
|
{
|
|
var_0F overridelightingorigin((890,-11485,2280));
|
|
}
|
|
|
|
var_10 = common_scripts\utility::getstruct("tower_debris_part","targetname");
|
|
var_11 = [];
|
|
var_11[0] = param_01;
|
|
var_11[1] = var_03;
|
|
var_11[2] = var_04;
|
|
var_11[3] = var_05;
|
|
var_11[4] = var_06;
|
|
var_12 = [];
|
|
var_12[0] = param_02;
|
|
var_12[1] = level.burke;
|
|
var_12[2] = level.joker;
|
|
var_12[3] = level.carter;
|
|
var_12[4] = level.copilot_intro;
|
|
var_12[5] = level.pilot_intro;
|
|
var_12[6] = level.guy_facing_player_intro;
|
|
param_00 maps\_anim::anim_first_frame([var_03,var_04,var_05,var_06],"fly_in_part2");
|
|
var_13 = [];
|
|
var_13[0] = var_08;
|
|
var_13[1] = var_0A;
|
|
var_13[2] = var_0C;
|
|
var_13[3] = var_0E;
|
|
playfxontag(common_scripts\utility::getfx("distortion_warbird"),var_03,"TAG_STATIC_MAIN_ROTOR_R");
|
|
var_03 maps\_anim::anim_first_frame(var_13,"fly_in_part2","tag_guy0");
|
|
foreach(var_15 in var_13)
|
|
{
|
|
var_15 linkto(var_03,"tag_guy0");
|
|
}
|
|
|
|
var_04 thread play_warbird_carrying_walker("warbird_pulley_c","warbird_walker_c","fly_in_part2","tag_guy0","TAG_ATTACH");
|
|
var_05 thread play_warbird_carrying_walker("warbird_pulley_d","warbird_walker_d","fly_in_part2","tag_guy0","TAG_ATTACH");
|
|
var_06 thread play_warbird_carrying_walker("warbird_pulley_e","warbird_walker_e","fly_in_part2","tag_guy0","TAG_ATTACH");
|
|
var_04 thread custom_dust_kickup();
|
|
var_05 thread custom_dust_kickup();
|
|
var_06 thread custom_dust_kickup();
|
|
param_01 maps\fusion_anim::clear_vehicle_anim(0);
|
|
var_03 maps\fusion_anim::clear_vehicle_anim(0);
|
|
param_02 maps\fusion_anim::clear_player_anim(0);
|
|
level.burke maps\fusion_anim::clear_npc_anim(0);
|
|
level.joker maps\fusion_anim::clear_npc_anim(0);
|
|
level.carter maps\fusion_anim::clear_npc_anim(0);
|
|
level.copilot_intro maps\fusion_anim::clear_npc_anim(0);
|
|
level.pilot_intro maps\fusion_anim::clear_npc_anim(0);
|
|
param_00 thread maps\_anim::anim_single(var_11,"fly_in_part2");
|
|
var_10 thread maps\_anim::anim_single_solo(var_0F,"tower_debris_collision");
|
|
var_10 thread maps\fusion_fx::play_tower_debris_fx(var_0F);
|
|
var_03 thread maps\_anim::anim_single(var_13,"fly_in_part2","tag_guy0");
|
|
level.guy_facing_player_intro common_scripts\utility::delaycall(3,::delete);
|
|
param_01 maps\_anim::anim_single(var_12,"fly_in_part2","tag_guy0");
|
|
param_00 thread maps\_anim::anim_loop_solo(param_01,"burke_intro_zip_loop","stop_idle");
|
|
if(!isremovedentity(var_08))
|
|
{
|
|
var_08 delete();
|
|
}
|
|
|
|
if(!isremovedentity(var_0A))
|
|
{
|
|
var_0A delete();
|
|
}
|
|
|
|
if(!isremovedentity(var_0C))
|
|
{
|
|
var_0C delete();
|
|
}
|
|
|
|
if(!isremovedentity(var_0E))
|
|
{
|
|
var_0E delete();
|
|
}
|
|
|
|
var_04 delete();
|
|
var_05 delete();
|
|
var_06 delete();
|
|
level notify("warbird_fly_in_arrived");
|
|
thread rooftop_strafe();
|
|
thread delete_guys_in_heli_when_vo_complete();
|
|
thread delete_tower_debris(var_0F);
|
|
}
|
|
|
|
//Function Number: 33
|
|
delete_tower_debris(param_00)
|
|
{
|
|
common_scripts\utility::flag_wait("player_fly_in_done");
|
|
param_00 stopanimscripted();
|
|
param_00 delete();
|
|
}
|
|
|
|
//Function Number: 34
|
|
play_warbird_carrying_walker(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
var_05 = maps\_utility::spawn_anim_model(param_00);
|
|
maps\_anim::anim_first_frame_solo(var_05,param_02,param_03);
|
|
var_05 linkto(self,param_03);
|
|
var_06 = maps\_utility::spawn_anim_model(param_01);
|
|
var_05 maps\_anim::anim_first_frame_solo(var_06,param_02,param_04);
|
|
var_06 linkto(var_05,"TAG_ATTACH");
|
|
var_07 = common_scripts\utility::spawn_tag_origin();
|
|
var_07 linkto(self,"tag_origin",(0,0,0),(-90,0,0));
|
|
playfxontag(common_scripts\utility::getfx("warbird_shadow"),var_07,"tag_origin");
|
|
thread maps\_anim::anim_single_solo(var_05,param_02,param_03);
|
|
var_05 thread maps\_anim::anim_single_solo(var_06,param_02,param_04);
|
|
level waittill("warbird_fly_in_arrived");
|
|
stopfxontag(common_scripts\utility::getfx("warbird_shadow"),var_07,"tag_origin");
|
|
var_07 delete();
|
|
var_05 delete();
|
|
var_06 delete();
|
|
}
|
|
|
|
//Function Number: 35
|
|
delete_guys_in_heli_when_vo_complete()
|
|
{
|
|
common_scripts\utility::flag_wait("squad_out_dialogue_complete");
|
|
}
|
|
|
|
//Function Number: 36
|
|
launch_missile(param_00)
|
|
{
|
|
var_01 = maps\_utility::spawn_anim_model(param_00);
|
|
var_01.animname = param_00;
|
|
var_01 thread missile_fly(self,param_00);
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 37
|
|
missile_fly(param_00,param_01)
|
|
{
|
|
if(param_01 == "missile_0")
|
|
{
|
|
var_02 = common_scripts\utility::getfx("smoketrail_groundtoair_large");
|
|
}
|
|
else
|
|
{
|
|
var_02 = common_scripts\utility::getfx("smoketrail_groundtoair");
|
|
}
|
|
|
|
playfxontag(var_02,self,"TAG_FX");
|
|
param_00 maps\_anim::anim_single_solo(self,"fly_in_part2");
|
|
if(param_01 == "missile_0")
|
|
{
|
|
var_02 = common_scripts\utility::getfx("smoketrail_groundtoair_large");
|
|
}
|
|
else
|
|
{
|
|
var_02 = common_scripts\utility::getfx("smoketrail_groundtoair");
|
|
}
|
|
|
|
stopfxontag(var_02,self,"TAG_FX");
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 38
|
|
spawn_intro_pilots()
|
|
{
|
|
var_00 = getent("npc_f","targetname");
|
|
level.copilot_intro = var_00 maps\_utility::spawn_ai(1);
|
|
level.copilot_intro.animname = "npc_f";
|
|
level.copilot_intro maps\_utility::gun_remove();
|
|
var_01 = getent("npc_g","targetname");
|
|
level.pilot_intro = var_01 maps\_utility::spawn_ai(1);
|
|
level.pilot_intro.animname = "npc_g";
|
|
level.pilot_intro maps\_utility::gun_remove();
|
|
thread clean_up_intro_pilots();
|
|
}
|
|
|
|
//Function Number: 39
|
|
clean_up_intro_pilots()
|
|
{
|
|
level waittill("warbird_fly_in_arrived");
|
|
level.copilot_intro delete();
|
|
level.pilot_intro delete();
|
|
}
|
|
|
|
//Function Number: 40
|
|
spawn_intro_heroes()
|
|
{
|
|
var_00 = getent("npc_h","targetname");
|
|
level.guy_facing_player_intro = var_00 maps\_utility::spawn_ai(1);
|
|
level.guy_facing_player_intro.animname = "npc_h";
|
|
}
|
|
|
|
//Function Number: 41
|
|
fly_in_sequence()
|
|
{
|
|
common_scripts\utility::flag_set("sun_shad_fly_in");
|
|
maps\_utility::battlechatter_off("allies");
|
|
thread maps\_utility::flag_set_delayed("intro_squad_helis_start",37 + level.intro_hades_video_length);
|
|
thread maps\_utility::flag_set_delayed("street_combat_start",77 + level.intro_hades_video_length);
|
|
thread move_squad_and_walkers();
|
|
thread squad_heli_zip();
|
|
thread fly_in_ambient_heli_squad();
|
|
maps\_utility::delaythread(27 + level.intro_hades_video_length,::fly_in_ambient_jets);
|
|
thread fly_in_ambient_street_jets();
|
|
thread hide_objective_during_fly_in();
|
|
level.warbird_a = maps\_vehicle::spawn_vehicle_from_targetname("blackhawk");
|
|
level.warbird_a.animname = "warbird_a";
|
|
level.warbird_a.no_anim_rotors = 1;
|
|
level.warbird_a vehicle_turnengineoff();
|
|
level.warbird_a soundscripts\_snd::snd_message("player_warbird_spawn");
|
|
spawn_intro_heroes();
|
|
spawn_intro_pilots();
|
|
var_00 = spawn_player_anim_rig();
|
|
var_00 hide();
|
|
level.player maps\_shg_utility::setup_player_for_scene();
|
|
maps\_player_exo::player_exo_deactivate();
|
|
var_01 = common_scripts\utility::getstruct("org_flyin","targetname");
|
|
fly_in_scene_part1(var_01,level.warbird_a,var_00);
|
|
finish_fly_in_sequence(var_01,level.warbird_a,var_00);
|
|
}
|
|
|
|
//Function Number: 42
|
|
play_dust(param_00)
|
|
{
|
|
level notify("warbird_door_open");
|
|
common_scripts\utility::noself_delaycall(1,::playfxontag,common_scripts\utility::getfx("fast_blowing_dust"),level.warbird_a,"TAG_outside_door");
|
|
}
|
|
|
|
//Function Number: 43
|
|
hide_objective_during_fly_in()
|
|
{
|
|
setsaveddvar("objectiveHide",1);
|
|
common_scripts\utility::flag_wait("player_fly_in_done");
|
|
setsaveddvar("objectiveHide",0);
|
|
}
|
|
|
|
//Function Number: 44
|
|
finish_fly_in_sequence(param_00,param_01,param_02)
|
|
{
|
|
maps\_utility::delaythread(50,::start_rooftop_combat);
|
|
param_01.missile_org = param_00;
|
|
fly_in_scene_part2(param_00,param_01,param_02);
|
|
level.burke maps\_utility::gun_recall();
|
|
thread burke_rooftop_combat(param_00,param_01);
|
|
common_scripts\utility::noself_delaycall(0,::stopfxontag,common_scripts\utility::getfx("fast_blowing_dust"),level.warbird_a,"TAG_outside_door");
|
|
thread burke_fastzip_scene(param_00,level.warbird_a);
|
|
common_scripts\utility::flag_wait("player_can_zip");
|
|
wait(0.5);
|
|
common_scripts\utility::flag_set("ready_zip");
|
|
maps\_utility::activate_trigger_with_targetname("trig_move_squad_from_heli");
|
|
param_02 hide();
|
|
var_03 = maps\_utility::spawn_anim_model("player_arms",param_02.origin);
|
|
var_03.angles = param_02.angles;
|
|
var_03 hide();
|
|
thread rooftop_slide();
|
|
level.player thread maps\_player_fastzip::fastzip_turret_think(level.warbird_a,"tag_turret_zipline_kl",var_03,2.7);
|
|
level.player waittill("fastzip_start");
|
|
thread zip_debris_anim();
|
|
thread street_hanging_pipes_anim();
|
|
common_scripts\utility::flag_set("flag_player_zip_started");
|
|
level.player waittill("fastzip_arrived");
|
|
common_scripts\utility::flag_set("sun_shad_off_zip");
|
|
maps\_player_exo::player_exo_activate();
|
|
param_02 delete();
|
|
var_03 delete();
|
|
wait(0.05);
|
|
common_scripts\utility::flag_set("player_fly_in_done");
|
|
maps\_utility::delaythread(3,::maps\_utility::autosave_by_name);
|
|
thread delete_rooftop_los_blockers();
|
|
thread show_hide_plant_vista();
|
|
maps\_utility::battlechatter_on("allies");
|
|
level.warbird_a vehicle_setspeed(60,15,5);
|
|
var_04 = common_scripts\utility::getstruct("heli_path_leave","targetname");
|
|
level.warbird_a thread maps\_utility::vehicle_dynamicpath(var_04,0);
|
|
level.warbird_a soundscripts\_snd::snd_message("player_warbird_flyout");
|
|
level.warbird_a.script_vehicle_selfremove = 1;
|
|
}
|
|
|
|
//Function Number: 45
|
|
show_hide_plant_vista()
|
|
{
|
|
var_00 = getentarray("brushmodel_vista_plant","targetname");
|
|
if(isdefined(var_00))
|
|
{
|
|
var_00 thread hide_plant_vista_via_trigger();
|
|
var_00 thread show_plant_vista_via_trigger();
|
|
}
|
|
}
|
|
|
|
//Function Number: 46
|
|
show_hide_plant_vista_intro()
|
|
{
|
|
var_00 = getentarray("brushmodel_vista_plant","targetname");
|
|
if(isdefined(var_00))
|
|
{
|
|
var_00 thread hide_plant_vista_intro();
|
|
var_00 thread show_plant_vista_intro();
|
|
}
|
|
}
|
|
|
|
//Function Number: 47
|
|
hide_plant_vista_intro()
|
|
{
|
|
foreach(var_01 in self)
|
|
{
|
|
var_01 hide();
|
|
}
|
|
}
|
|
|
|
//Function Number: 48
|
|
show_plant_vista_intro()
|
|
{
|
|
level.player endon("death");
|
|
wait(71);
|
|
foreach(var_01 in self)
|
|
{
|
|
var_01 show();
|
|
}
|
|
}
|
|
|
|
//Function Number: 49
|
|
hide_plant_vista_via_trigger()
|
|
{
|
|
level endon("street_cleanup");
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_hide_plant_vista");
|
|
foreach(var_01 in self)
|
|
{
|
|
var_01 hide();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 50
|
|
show_plant_vista_via_trigger()
|
|
{
|
|
level endon("street_cleanup");
|
|
for(;;)
|
|
{
|
|
maps\_utility::trigger_wait_targetname("trig_show_plant_vista");
|
|
foreach(var_01 in self)
|
|
{
|
|
var_01 show();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 51
|
|
zip_debris_anim()
|
|
{
|
|
wait(1);
|
|
var_00 = common_scripts\utility::getstruct("org_zip_debris","targetname");
|
|
var_01 = maps\_utility::spawn_anim_model("zip_debris_01");
|
|
var_02 = maps\_utility::spawn_anim_model("zip_debris_02");
|
|
var_03 = [var_01,var_02];
|
|
var_00 maps\_anim::anim_single(var_03,"zip_falling_debris");
|
|
maps\_utility::array_delete(var_03);
|
|
}
|
|
|
|
//Function Number: 52
|
|
street_hanging_pipes_anim()
|
|
{
|
|
var_00 = common_scripts\utility::getstruct("org_hanging_pipes_01","targetname");
|
|
var_01 = maps\_utility::spawn_anim_model("street_pipes_01");
|
|
var_00 maps\_anim::anim_loop_solo(var_01,"street_hanging_pipes");
|
|
if(level.currentgen)
|
|
{
|
|
level waittill("tff_pre_transition_intro_to_middle");
|
|
var_00 maps\_utility::anim_stopanimscripted();
|
|
var_01 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 53
|
|
fly_in_ambient_heli_squad()
|
|
{
|
|
common_scripts\utility::flag_wait("intro_squad_helis_start");
|
|
level.heli_squad_01 = spawn_ambient_warbird("squad_warbird_01",25,45);
|
|
level.heli_squad_02 = spawn_ambient_warbird("squad_warbird_02",25,45,1);
|
|
level.heli_squad_03 = spawn_ambient_warbird("squad_warbird_03",20,50,1);
|
|
level.heli_squad_05 = spawn_ambient_warbird("squad_warbird_05",25,50,1);
|
|
level.heli_squad_06 = spawn_ambient_warbird("squad_warbird_06",25,50,1);
|
|
level.heli_squad_07 = spawn_ambient_warbird("squad_warbird_07",25,50,1);
|
|
level.heli_squad_08 = spawn_ambient_warbird("squad_warbird_08",10,25,1);
|
|
level.heli_squad_09 = spawn_ambient_warbird("squad_warbird_09",10,25,1);
|
|
level.heli_squad_11 = spawn_ambient_warbird("squad_warbird_cargo11",10,25,1);
|
|
level.heli_squad_11 thread add_warbird_cargo("cargo_walker11","cargo_pully11");
|
|
level.heli_squad_08 thread add_warbird_cargo("cargo_walker12","cargo_pully12");
|
|
level.heli_squad_05 thread add_warbird_cargo("cargo_walker13","cargo_pully13");
|
|
level.heli_squad_01 vehicle_turnengineoff();
|
|
level.heli_squad_02 vehicle_turnengineoff();
|
|
level.heli_squad_03 vehicle_turnengineoff();
|
|
level.heli_squad_05 vehicle_turnengineoff();
|
|
level.heli_squad_06 vehicle_turnengineoff();
|
|
level.heli_squad_07 vehicle_turnengineoff();
|
|
level.heli_squad_08 vehicle_turnengineoff();
|
|
level.heli_squad_09 vehicle_turnengineoff();
|
|
level.heli_squad_11 vehicle_turnengineoff();
|
|
if(level.currentgen)
|
|
{
|
|
level.heli_squad_01 thread tff_cleanup_vehicle("intro");
|
|
}
|
|
}
|
|
|
|
//Function Number: 54
|
|
spawn_ambient_warbird(param_00,param_01,param_02,param_03)
|
|
{
|
|
var_04 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(param_00);
|
|
var_04 vehicle_scripts\_xh9_warbird::cloak_warbird();
|
|
var_04 setmaxpitchroll(param_01,param_02);
|
|
var_04 vehicle_scripts\_xh9_warbird::set_cloak_parameter(0,0);
|
|
if(isdefined(param_03))
|
|
{
|
|
var_04.script_vehicle_selfremove = param_03;
|
|
}
|
|
|
|
var_04.shadow_tag = common_scripts\utility::spawn_tag_origin();
|
|
var_04.shadow_tag linkto(var_04,"tag_origin",(0,0,0),(-90,0,0));
|
|
playfxontag(common_scripts\utility::getfx("warbird_shadow_cloaked"),var_04.shadow_tag,"tag_origin");
|
|
return var_04;
|
|
}
|
|
|
|
//Function Number: 55
|
|
add_warbird_cargo(param_00,param_01)
|
|
{
|
|
var_02 = getent(param_00,"targetname");
|
|
var_02 linkto(self);
|
|
var_03 = getent(param_01,"targetname");
|
|
var_03 linkto(self);
|
|
self waittill("death");
|
|
var_02 unlink();
|
|
var_02 delete();
|
|
var_03 unlink();
|
|
var_03 delete();
|
|
}
|
|
|
|
//Function Number: 56
|
|
fly_in_squad_uncloak()
|
|
{
|
|
wait(3.5);
|
|
level.heli_squad_01 thread uncloak_ambient_warbird(level.shadow_tag_01,3.3);
|
|
wait(0.15);
|
|
level.heli_squad_09 thread uncloak_ambient_warbird(level.shadow_tag_09,3.3);
|
|
wait(0.15);
|
|
level.heli_squad_11 thread uncloak_ambient_warbird(level.shadow_tag_11,3.3);
|
|
wait(0.15);
|
|
level.heli_squad_06 thread uncloak_ambient_warbird(level.shadow_tag_06,3.3);
|
|
wait(0.15);
|
|
level.heli_squad_07 thread uncloak_ambient_warbird(level.shadow_tag_07,3.3);
|
|
wait(0.15);
|
|
level.heli_squad_08 thread uncloak_ambient_warbird(level.shadow_tag_08,3.3);
|
|
wait(0.15);
|
|
level.heli_squad_05 thread uncloak_ambient_warbird(level.shadow_tag_05,3.3);
|
|
wait(0.15);
|
|
wait(0.15);
|
|
level.heli_squad_03 thread uncloak_ambient_warbird(level.shadow_tag_03,3.3);
|
|
wait(1.25);
|
|
level.heli_squad_02 thread uncloak_ambient_warbird(level.shadow_tag_02,3.3);
|
|
common_scripts\utility::flag_wait("fx_flak_intro");
|
|
level.heli_squad_01 clean_up_shadow_tag();
|
|
level.heli_squad_02 clean_up_shadow_tag();
|
|
level.heli_squad_03 clean_up_shadow_tag();
|
|
level.heli_squad_05 clean_up_shadow_tag();
|
|
level.heli_squad_06 clean_up_shadow_tag();
|
|
level.heli_squad_07 clean_up_shadow_tag();
|
|
level.heli_squad_08 clean_up_shadow_tag();
|
|
level.heli_squad_09 clean_up_shadow_tag();
|
|
level.heli_squad_11 clean_up_shadow_tag();
|
|
}
|
|
|
|
//Function Number: 57
|
|
uncloak_ambient_warbird(param_00,param_01)
|
|
{
|
|
var_02 = 3.3;
|
|
if(isdefined(param_01))
|
|
{
|
|
param_01 = var_02;
|
|
}
|
|
|
|
vehicle_scripts\_xh9_warbird::uncloak_warbird(param_01);
|
|
if(isdefined(self.shadow_tag))
|
|
{
|
|
stopfxontag(common_scripts\utility::getfx("warbird_shadow_cloaked"),self.shadow_tag,"tag_origin");
|
|
playfxontag(common_scripts\utility::getfx("warbird_shadow"),self.shadow_tag,"tag_origin");
|
|
}
|
|
}
|
|
|
|
//Function Number: 58
|
|
clean_up_shadow_tag()
|
|
{
|
|
if(isdefined(self.shadow_tag))
|
|
{
|
|
stopfxontag(common_scripts\utility::getfx("warbird_shadow"),self.shadow_tag,"tag_origin");
|
|
self.shadow_tag delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 59
|
|
fly_in_ambient_jets()
|
|
{
|
|
level.jets = [];
|
|
thread spawn_looping_jets("f15_01");
|
|
thread spawn_looping_jets("f15_03");
|
|
thread spawn_looping_jets("f15_06");
|
|
wait(1);
|
|
thread spawn_looping_jets("f15_05");
|
|
}
|
|
|
|
//Function Number: 60
|
|
spawn_looping_jets(param_00)
|
|
{
|
|
while(!common_scripts\utility::flag("flag_combat_zip_rooftop_complete"))
|
|
{
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(param_00);
|
|
level.jets = common_scripts\utility::array_removeundefined(level.jets);
|
|
level.jets[level.jets.size] = var_01;
|
|
var_01 waittill("death");
|
|
}
|
|
}
|
|
|
|
//Function Number: 61
|
|
fly_in_ambient_street_jets()
|
|
{
|
|
common_scripts\utility::flag_wait("player_fly_in_done");
|
|
if(!isdefined(level.jets))
|
|
{
|
|
level.jets = [];
|
|
}
|
|
|
|
while(level.jets.size > 0)
|
|
{
|
|
level.jets = common_scripts\utility::array_removeundefined(level.jets);
|
|
wait 0.05;
|
|
}
|
|
|
|
thread spawn_looping_street_jets("f15_street01");
|
|
wait(0.5);
|
|
thread spawn_looping_street_jets("f15_street03");
|
|
wait(0.5);
|
|
thread spawn_looping_street_jets("f15_street05");
|
|
wait(0.5);
|
|
thread spawn_looping_street_jets("f15_street07");
|
|
}
|
|
|
|
//Function Number: 62
|
|
spawn_looping_street_jets(param_00)
|
|
{
|
|
while(!common_scripts\utility::flag("flag_player_at_reactor_entrance"))
|
|
{
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(param_00);
|
|
level.jets = common_scripts\utility::array_removeundefined(level.jets);
|
|
level.jets[level.jets.size] = var_01;
|
|
var_01 soundscripts\_snd::snd_message("snd_start_ambient_jet");
|
|
var_01 waittill("death");
|
|
}
|
|
|
|
level.jets = common_scripts\utility::array_removeundefined(level.jets);
|
|
}
|
|
|
|
//Function Number: 63
|
|
wait_to_decloak_helicopter(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
level.player endon("death");
|
|
wait(param_00);
|
|
soundscripts\_snd::snd_message("decloak_intro_helicopter");
|
|
thread vehicle_scripts\_xh9_warbird::uncloak_warbird(3);
|
|
wait(1.5);
|
|
param_01 show();
|
|
param_02 show();
|
|
param_03 show();
|
|
param_04 show();
|
|
param_01 stopusingheroonlylighting();
|
|
param_02 stopusingheroonlylighting();
|
|
param_03 stopusingheroonlylighting();
|
|
param_04 stopusingheroonlylighting();
|
|
}
|
|
|
|
//Function Number: 64
|
|
burke_rooftop_combat(param_00,param_01)
|
|
{
|
|
if(common_scripts\utility::flag("flag_burke_zip"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
param_00 maps\_anim::anim_single_solo(level.burke,"burke_rooftop_shoot_enter");
|
|
level.burke.face_direction = anglestoforward(level.burke.angles);
|
|
level.burke notify("killanimscript");
|
|
level.burke.custom_animscript["combat"] = ::burke_rooftop_combat_animscript;
|
|
level.burke.custom_animscript["stop"] = ::burke_rooftop_combat_animscript;
|
|
common_scripts\utility::flag_wait("flag_burke_zip");
|
|
level.burke.custom_animscript["combat"] = undefined;
|
|
level.burke.custom_animscript["stop"] = undefined;
|
|
level.burke notify("killanimscript");
|
|
level.burke clearanim(%burke_aiming,0.2);
|
|
level.burke clearanim(%burke_add_fire,0.2);
|
|
level.burke.last_pitch_aim = undefined;
|
|
level.burke.last_yaw_aim = undefined;
|
|
level.burke.face_direction = undefined;
|
|
}
|
|
|
|
//Function Number: 65
|
|
burke_rooftop_combat_animscript()
|
|
{
|
|
self notify("killanimscript");
|
|
self endon("killanimscript");
|
|
level.burke orientmode("face direction",level.burke.face_direction);
|
|
setup_burke_aim_anims();
|
|
var_00 = undefined;
|
|
for(;;)
|
|
{
|
|
if(!isdefined(var_00) || !isalive(var_00))
|
|
{
|
|
if(isdefined(self.enemy) && self cansee(self.enemy) && isalive(self.enemy))
|
|
{
|
|
var_00 = self.enemy;
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_00))
|
|
{
|
|
var_01 = animscripts\shared::getshootfrompos();
|
|
var_02 = var_00 getshootatpos();
|
|
var_03 = var_02 - var_01;
|
|
var_04 = vectortoangles(var_03);
|
|
var_05 = aim_burke_at_angles(var_04,48);
|
|
if(var_05)
|
|
{
|
|
var_06 = randomintrange(2,4);
|
|
for(var_07 = 0;var_07 < var_06;var_07++)
|
|
{
|
|
burke_burst_shoot(var_00);
|
|
wait(randomfloatrange(0.2,0.4));
|
|
}
|
|
|
|
wait(randomfloatrange(3,5));
|
|
}
|
|
}
|
|
|
|
if(common_scripts\utility::cointoss())
|
|
{
|
|
var_00 = undefined;
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 66
|
|
setup_burke_aim_anims()
|
|
{
|
|
self clearanim(%root,0.2);
|
|
self setanim(%fusion_fly_in_burke_aim_5,1,0.2,1);
|
|
self setanimlimited(%fusion_fly_in_burke_aim_4,1,0,1);
|
|
self setanimlimited(%fusion_fly_in_burke_aim_6,1,0,1);
|
|
self setanimlimited(%fusion_fly_in_burke_aim_2,1,0,1);
|
|
self setanimlimited(%fusion_fly_in_burke_aim_8,1,0,1);
|
|
self setanimlimited(%burke_aim_4,0,0,1);
|
|
self setanimlimited(%burke_aim_6,0,0,1);
|
|
self setanimlimited(%burke_aim_2,0,0,1);
|
|
self setanimlimited(%burke_aim_8,0,0,1);
|
|
self setanim(%fusion_fly_in_burke_aim_idle,1,0,1);
|
|
}
|
|
|
|
//Function Number: 67
|
|
aim_burke_at_angles(param_00,param_01)
|
|
{
|
|
var_02 = 1;
|
|
if(!isdefined(self.last_pitch_aim))
|
|
{
|
|
self.last_pitch_aim = 0;
|
|
}
|
|
|
|
if(!isdefined(self.last_yaw_aim))
|
|
{
|
|
self.last_yaw_aim = 0;
|
|
}
|
|
|
|
var_03 = angleclamp180(param_00[0] - self.angles[0]);
|
|
if(abs(var_03) > param_01)
|
|
{
|
|
var_03 = 0;
|
|
}
|
|
|
|
var_04 = var_03 / param_01;
|
|
var_05 = var_04 - self.last_pitch_aim;
|
|
if(abs(var_05) > 0.2)
|
|
{
|
|
var_02 = 0;
|
|
var_05 = clamp(var_05,-0.2,0.2);
|
|
var_04 = self.last_pitch_aim + var_05;
|
|
}
|
|
|
|
if(var_04 < 0)
|
|
{
|
|
self setanimlimited(%burke_aim_8,abs(var_04),0.2,1);
|
|
self setanimlimited(%burke_aim_2,0,0.2,1);
|
|
}
|
|
else
|
|
{
|
|
self setanimlimited(%burke_aim_8,0,0.2,1);
|
|
self setanimlimited(%burke_aim_2,var_04,0.2,1);
|
|
}
|
|
|
|
var_06 = angleclamp180(param_00[1] - self.angles[1]);
|
|
if(abs(var_06) > param_01)
|
|
{
|
|
var_06 = 0;
|
|
}
|
|
|
|
var_07 = var_06 / param_01;
|
|
var_08 = var_07 - self.last_yaw_aim;
|
|
if(abs(var_08) > 0.2)
|
|
{
|
|
var_02 = 0;
|
|
var_08 = clamp(var_08,-0.2,0.2);
|
|
var_07 = self.last_yaw_aim + var_08;
|
|
}
|
|
|
|
if(var_07 < 0)
|
|
{
|
|
self setanimlimited(%burke_aim_6,abs(var_07),0.2,1);
|
|
self setanimlimited(%burke_aim_4,0,0.2,1);
|
|
}
|
|
else
|
|
{
|
|
self setanimlimited(%burke_aim_6,0,0.2,1);
|
|
self setanimlimited(%burke_aim_4,var_07,0.2,1);
|
|
}
|
|
|
|
self.last_pitch_aim = var_04;
|
|
self.last_yaw_aim = var_07;
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 68
|
|
burke_burst_shoot(param_00)
|
|
{
|
|
var_01 = randomintrange(2,4);
|
|
for(var_02 = 0;var_02 < var_01;var_02++)
|
|
{
|
|
self shoot();
|
|
self setanimrestart(%fusion_fly_in_burke_fire,1,0,1);
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 69
|
|
start_rooftop_combat()
|
|
{
|
|
common_scripts\utility::flag_set("flag_combat_zip_rooftop_start");
|
|
maps\_utility::autosave_by_name();
|
|
wait(2);
|
|
level.player enableweapons();
|
|
level.player enablehybridsight("iw5_bal27_sp_variablereddot",1);
|
|
level.player enableoffhandweapons();
|
|
level maps\_utility::_setsaveddvar("ammoCounterHide",0);
|
|
maps\_player_exo::player_exo_activate();
|
|
thread handle_disabling_sonic_blast();
|
|
}
|
|
|
|
//Function Number: 70
|
|
handle_disabling_sonic_blast()
|
|
{
|
|
var_00 = maps\_player_exo::player_exo_get_owned_array(["sonic_blast"]);
|
|
if(var_00.size > 0)
|
|
{
|
|
maps\_player_exo::player_exo_remove_array(var_00);
|
|
common_scripts\utility::flag_wait("player_fly_in_done");
|
|
maps\_player_exo::player_exo_add_single("sonic_blast");
|
|
}
|
|
}
|
|
|
|
//Function Number: 71
|
|
rooftop_strafe()
|
|
{
|
|
var_00 = common_scripts\utility::getstruct("path_rooftop_strafe","targetname");
|
|
level.heli_squad_01 thread maps\_utility::vehicle_dynamicpath(var_00,0);
|
|
level.heli_squad_01 setmaxpitchroll(10,10);
|
|
common_scripts\utility::flag_wait_or_timeout("flag_player_cleared_rooftop",15);
|
|
common_scripts\utility::flag_set("flag_rooftop_strafe");
|
|
level.heli_squad_01 soundscripts\_snd::snd_message("rooftop_strafe_start");
|
|
level.heli_squad_01 thread warbird_shooting_think(1);
|
|
wait(1);
|
|
level.heli_squad_01 notify("warbird_fire");
|
|
common_scripts\utility::flag_wait("flag_combat_zip_rooftop_complete");
|
|
level.heli_squad_01 notify("warbird_stop_firing");
|
|
}
|
|
|
|
//Function Number: 72
|
|
delete_rooftop_los_blockers()
|
|
{
|
|
var_00 = getentarray("street_rooftop_los_blocker","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 73
|
|
allow_player_zip()
|
|
{
|
|
wait(8.9);
|
|
common_scripts\utility::flag_wait("flag_combat_zip_rooftop_complete");
|
|
common_scripts\utility::flag_set("player_can_zip");
|
|
}
|
|
|
|
//Function Number: 74
|
|
burke_fastzip_scene(param_00,param_01)
|
|
{
|
|
common_scripts\utility::flag_wait("flag_burke_zip");
|
|
param_01 notify("stop_idle");
|
|
param_00 notify("stop_idle");
|
|
thread burke_fastzip_aim_turret(param_01,"tag_turret_zipline_fl");
|
|
var_02 = param_01.zipline_gun_model["tag_turret_zipline_fl"];
|
|
var_02 unlink();
|
|
level.burke unlink();
|
|
thread burke_rally_init();
|
|
thread allow_player_zip();
|
|
level.burke maps\_utility::anim_stopanimscripted();
|
|
param_00 thread maps\_anim::anim_single_solo_run(level.burke,"burke_intro_zip");
|
|
var_03 = [param_01,var_02];
|
|
param_00 maps\_anim::anim_single(var_03,"burke_intro_zip");
|
|
common_scripts\utility::flag_set("burke_fastzip_done");
|
|
var_04 = [param_01,var_02];
|
|
param_00 thread maps\_anim::anim_loop(var_04,"burke_intro_zip_loop","stop_loop");
|
|
thread heroes_post_zip();
|
|
thread allies_rally_init();
|
|
common_scripts\utility::flag_wait("player_fly_in_done");
|
|
param_00 notify("stop_loop");
|
|
var_02 linkto(param_01,"tag_turret_zipline_fl",(0,0,0),(0,0,0));
|
|
}
|
|
|
|
//Function Number: 75
|
|
burke_fastzip_aim_turret(param_00,param_01)
|
|
{
|
|
var_02 = param_00.zipline_gun_model[param_01];
|
|
var_03 = param_00 vehicle_scripts\_xh9_warbird::spawn_zipline_turret("zipline_gun_rope",param_01,var_02.rope_model,"_turret_fastzip");
|
|
var_03 hide();
|
|
var_04 = common_scripts\utility::spawn_tag_origin();
|
|
var_04.origin = var_02 gettagorigin("jnt_harpoon");
|
|
var_03 settargetentity(var_04);
|
|
while(!common_scripts\utility::flag("burke_fastzip_done"))
|
|
{
|
|
var_04.origin = var_02 gettagorigin("jnt_harpoon");
|
|
wait(0.1);
|
|
}
|
|
|
|
var_04.origin = var_02 gettagorigin("jnt_harpoon");
|
|
var_05 = var_02 gettagorigin("tag_flash");
|
|
var_06 = distance(var_05,var_04.origin) / 12;
|
|
var_07 = var_06 / 200;
|
|
var_08 = %fastzip_launcher_fire_right;
|
|
var_03 setanimknob(var_08,1,0,0);
|
|
var_03 setanimtime(var_08,var_07);
|
|
if(isdefined(var_02.rope_model))
|
|
{
|
|
var_02 detach(var_02.rope_model);
|
|
}
|
|
|
|
var_03 show();
|
|
var_03 maps\_player_fastzip::retract_rope(var_06,"right");
|
|
var_04 delete();
|
|
var_03 delete();
|
|
}
|
|
|
|
//Function Number: 76
|
|
burke_rally_init()
|
|
{
|
|
level.burke maps\_utility::set_force_color("g");
|
|
level.burke maps\_utility::disable_ai_color();
|
|
var_00 = getnode("node_cover_burke_after_zip","targetname");
|
|
level.burke maps\fusion_utility::goto_node(var_00,0);
|
|
thread courtyard_burke_rally();
|
|
}
|
|
|
|
//Function Number: 77
|
|
allies_rally_init()
|
|
{
|
|
level.joker maps\_utility::disable_ai_color();
|
|
var_00 = getnode("node_cover_joker_after_zip","targetname");
|
|
level.joker maps\fusion_utility::goto_node(var_00,0);
|
|
}
|
|
|
|
//Function Number: 78
|
|
move_squad_and_walkers()
|
|
{
|
|
level.player endon("death");
|
|
common_scripts\utility::flag_wait("ready_zip");
|
|
maps\_utility::activate_trigger_with_targetname("trig_move_squad_from_heli");
|
|
}
|
|
|
|
//Function Number: 79
|
|
setup_m_turret()
|
|
{
|
|
maps\_vehicle_shg::set_player_rig_spawn_function(::spawn_player_anim_rig);
|
|
if(level.currentgen)
|
|
{
|
|
if(level.start_point != "fly_in_animated" && level.start_point != "fly_in_animated_part2" && level.start_point != "courtyard" && level.start_point != "security_room")
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
level.x4walker_wheels_fusion_turret = 1;
|
|
var_00 = getentarray("mobile_turret","targetname");
|
|
var_01 = [];
|
|
foreach(var_03 in var_00)
|
|
{
|
|
var_04 = var_03 maps\_utility::spawn_vehicle();
|
|
var_04 thread monitor_mobile_turret_health();
|
|
var_04 thread disable_cover_drone_on_mobile_turret_mount();
|
|
var_04 thread close_enemy_check_on_mt_exit();
|
|
var_04 thread disable_mobile_turret_if_not_destroyed();
|
|
var_04.godmode = 1;
|
|
var_01[var_01.size] = var_04;
|
|
}
|
|
|
|
if(level.currentgen)
|
|
{
|
|
level waittill("tff_pre_transition_intro_to_middle");
|
|
common_scripts\utility::array_call(var_01,::delete);
|
|
}
|
|
}
|
|
|
|
//Function Number: 80
|
|
disable_cover_drone_on_mobile_turret_mount()
|
|
{
|
|
level.player endon("death");
|
|
for(;;)
|
|
{
|
|
level.player waittill("player_starts_entering_mobile_turret");
|
|
thread maps\fusion_lighting::setup_dof_enter_turret();
|
|
level.player.disable_cover_drone = 1;
|
|
level.player waittill("player_exited_mobile_turret");
|
|
thread maps\fusion_lighting::setup_dof_exit_turret();
|
|
level.player.disable_cover_drone = undefined;
|
|
}
|
|
}
|
|
|
|
//Function Number: 81
|
|
wait_for_drone_message_or_death(param_00)
|
|
{
|
|
param_00 endon("death");
|
|
level.player waittill("hiding_cover_drone_hint",var_01);
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 82
|
|
close_enemy_check_on_mt_exit()
|
|
{
|
|
for(;;)
|
|
{
|
|
level.player waittill("player_exited_mobile_turret");
|
|
var_00 = getaiarray("axis");
|
|
var_00 = maps\_utility::array_removedead_or_dying(var_00);
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(isdefined(var_02) && isalive(var_02))
|
|
{
|
|
if(distancesquared(level.player.origin,var_02.origin) < squared(100))
|
|
{
|
|
var_02 maps\fusion_utility::bloody_death(0);
|
|
continue;
|
|
}
|
|
|
|
if(distancesquared(level.player.origin,var_02.origin) < squared(250))
|
|
{
|
|
var_02 maps\fusion_utility::bloody_death(randomfloatrange(0.5,1));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 83
|
|
setup_personal_drone()
|
|
{
|
|
var_00 = getent("player_pdrone","targetname");
|
|
level.player thread maps\_weapon_pdrone::give_player_pdrone(var_00);
|
|
}
|
|
|
|
//Function Number: 84
|
|
setup_ally_squad()
|
|
{
|
|
if(level.currentgen)
|
|
{
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("street_combat_start");
|
|
var_00 = getentarray("allies_street","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(isdefined(var_02))
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
}
|
|
|
|
var_04 = getaiarray("allies");
|
|
foreach(var_06 in var_04)
|
|
{
|
|
if(isdefined(var_06))
|
|
{
|
|
if(!isdefined(var_06.magic_bullet_shield))
|
|
{
|
|
var_06 thread maps\_utility::deletable_magic_bullet_shield();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 85
|
|
road_battle_setup()
|
|
{
|
|
thread setup_triggers_street_battle();
|
|
thread setup_cover_nodes_street();
|
|
thread combat_zip_rooftop();
|
|
common_scripts\utility::flag_wait("street_combat_start");
|
|
thread biasgroup_think();
|
|
if(level.nextgen)
|
|
{
|
|
thread moblie_turrets_intro();
|
|
}
|
|
|
|
thread street_volume_manager();
|
|
thread combat_street_wave_01();
|
|
thread combat_street_wave_02();
|
|
thread combat_street_wave_03();
|
|
thread combat_street_mid_checkpoint_1();
|
|
thread combat_street_mid_checkpoint_2();
|
|
thread combat_street_blown_building();
|
|
thread combat_player_in_m_turret();
|
|
thread combat_street_wave_04();
|
|
thread combat_street_initial();
|
|
thread combat_street_wave_rear();
|
|
thread combat_enemy_trans_heli_wave_01();
|
|
thread combat_enemy_tank();
|
|
thread rpg_at_heli();
|
|
thread wall_explosion_01();
|
|
thread building_explosion_01();
|
|
thread courtyard_mobile_cover_guys();
|
|
thread courtyard_ally_mcd_safeguard_init();
|
|
thread boost_jump_hint();
|
|
if(level.nextgen)
|
|
{
|
|
thread street_mobile_cover_guys();
|
|
}
|
|
|
|
thread mobile_turret_dropoff();
|
|
thread smaw_laser_think();
|
|
}
|
|
|
|
//Function Number: 86
|
|
boost_jump_hint()
|
|
{
|
|
level.player endon("player_starts_entering_mobile_turret");
|
|
common_scripts\utility::flag_wait("flag_obj_markers");
|
|
wait(1);
|
|
common_scripts\utility::flag_wait("flag_boost_jump_reminder_dialogue_done");
|
|
maps\_utility::hintdisplaymintimehandler("hint_use_boost",5);
|
|
}
|
|
|
|
//Function Number: 87
|
|
boost_use_hint()
|
|
{
|
|
if(isdefined(level.player.drivingvehicleandturret) || level.player ishighjumping())
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 88
|
|
biasgroup_think()
|
|
{
|
|
level.player setthreatbiasgroup("player");
|
|
createthreatbiasgroup("drones");
|
|
setthreatbias("drones","axis_street",-20000);
|
|
common_scripts\utility::flag_wait("flag_enemy_bullet_shield_off");
|
|
setthreatbias("player","axis_street",8000);
|
|
common_scripts\utility::flag_wait("flag_enemy_walker");
|
|
setthreatbias("player","axis_street",0);
|
|
while(!common_scripts\utility::flag("elevator_descent_player"))
|
|
{
|
|
if(common_scripts\utility::flag("flag_player_at_reactor_door"))
|
|
{
|
|
setthreatbias("player","axis_street",-20000);
|
|
continue;
|
|
}
|
|
|
|
setthreatbias("player","axis_street",0);
|
|
wait(1);
|
|
}
|
|
|
|
setthreatbias("player","axis_street",0);
|
|
}
|
|
|
|
//Function Number: 89
|
|
setup_triggers_street_battle()
|
|
{
|
|
var_00 = getent("color_t_street_end","targetname");
|
|
var_00 common_scripts\utility::trigger_off();
|
|
var_01 = getent("color_t_walker_destroyed","targetname");
|
|
var_01 common_scripts\utility::trigger_off();
|
|
var_02 = getent("color_t_mt_destroyed","targetname");
|
|
var_02 common_scripts\utility::trigger_off();
|
|
common_scripts\utility::flag_wait_all("flag_mt_wall_rpg_impact","flag_mt_move_up_02");
|
|
wait(1);
|
|
var_02 common_scripts\utility::trigger_on();
|
|
maps\_utility::activate_trigger_with_targetname("color_t_mt_destroyed");
|
|
var_03 = getentarray("bcs_titan","targetname");
|
|
foreach(var_05 in var_03)
|
|
{
|
|
var_05 common_scripts\utility::trigger_off();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_enemy_walker");
|
|
if(isdefined(var_02))
|
|
{
|
|
var_02 common_scripts\utility::trigger_off();
|
|
}
|
|
|
|
wait(3);
|
|
foreach(var_05 in var_03)
|
|
{
|
|
var_05 common_scripts\utility::trigger_on();
|
|
}
|
|
|
|
var_09 = getentarray("bcs_hill","targetname");
|
|
foreach(var_05 in var_09)
|
|
{
|
|
var_05 common_scripts\utility::trigger_off();
|
|
}
|
|
}
|
|
|
|
//Function Number: 90
|
|
setup_cover_nodes_street()
|
|
{
|
|
var_00 = getnodearray("cover_node_walker_hill","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 disconnectnode();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_enemy_walker");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 connectnode();
|
|
}
|
|
}
|
|
|
|
//Function Number: 91
|
|
moblie_turrets_intro()
|
|
{
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname("ally_walker_02");
|
|
var_00 thread maps\fusion_utility::kill_path_on_death();
|
|
var_00 soundscripts\_snd::snd_message("spawn_ally_walker_02");
|
|
var_00 maps\_vehicle::godon();
|
|
var_01 = getent("clip_mobile_turret_player","targetname");
|
|
var_01 linkto(var_00);
|
|
common_scripts\utility::flag_wait("ready_zip");
|
|
var_02 = [var_00];
|
|
foreach(var_04 in var_02)
|
|
{
|
|
if(isdefined(var_04.riders))
|
|
{
|
|
foreach(var_06 in var_04.riders)
|
|
{
|
|
if(isdefined(var_06.deletable_magic_bullet_shield))
|
|
{
|
|
var_06 maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var_00 maps\_utility::delaythread(2,::mobile_turret_gopath);
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_03");
|
|
var_00 maps\_vehicle::godoff();
|
|
if(level.currentgen)
|
|
{
|
|
level waittill("tff_pre_transition_intro_to_middle");
|
|
var_00 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 92
|
|
mobile_turret_gopath()
|
|
{
|
|
self endon("death");
|
|
maps\_vehicle::gopath();
|
|
wait(0.1);
|
|
for(;;)
|
|
{
|
|
level.player waittill_pushed_by(self);
|
|
self vehicle_setspeed(0,60,60);
|
|
var_00 = distancesquared(level.player.origin,self.origin);
|
|
var_01 = var_00 * 2;
|
|
while(var_00 < var_01)
|
|
{
|
|
wait(0.1);
|
|
var_00 = distancesquared(level.player.origin,self.origin);
|
|
}
|
|
|
|
self resumespeed(1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 93
|
|
waittill_pushed_by(param_00)
|
|
{
|
|
thread monitor_player_pushed(param_00);
|
|
thread monitor_player_unresolved(param_00);
|
|
thread monitor_player_pushed_while_linked(param_00);
|
|
for(;;)
|
|
{
|
|
self waittill("notify_push",var_01);
|
|
if(param_00 == var_01)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
self notify("kill_push_monitor");
|
|
}
|
|
|
|
//Function Number: 94
|
|
monitor_player_pushed(param_00)
|
|
{
|
|
self endon("kill_push_monitor");
|
|
param_00 endon("death");
|
|
for(;;)
|
|
{
|
|
self waittill("player_pushed",var_01,var_02);
|
|
self notify("notify_push",var_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 95
|
|
monitor_player_unresolved(param_00)
|
|
{
|
|
self endon("kill_push_monitor");
|
|
param_00 endon("death");
|
|
for(;;)
|
|
{
|
|
self waittill("unresolved_collision",var_01);
|
|
self notify("notify_push",var_01);
|
|
}
|
|
}
|
|
|
|
//Function Number: 96
|
|
monitor_player_pushed_while_linked(param_00)
|
|
{
|
|
self endon("kill_push_monitor");
|
|
param_00 endon("death");
|
|
for(;;)
|
|
{
|
|
var_01 = 200;
|
|
var_02 = 80;
|
|
var_03 = cos(var_02);
|
|
while(self islinked())
|
|
{
|
|
var_04 = anglestoforward(param_00.angles);
|
|
var_05 = vectornormalize(level.player.origin - param_00.origin);
|
|
if(vectordot(var_04,var_05) >= var_03 && distance(self.origin,param_00.origin) < var_01)
|
|
{
|
|
self notify("notify_push",param_00);
|
|
return;
|
|
}
|
|
|
|
wait(0.1);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 97
|
|
monitor_turret_2_death()
|
|
{
|
|
self waittill("death");
|
|
common_scripts\utility::flag_set("flag_m_turret_dead");
|
|
}
|
|
|
|
//Function Number: 98
|
|
rooftop_enemy_think()
|
|
{
|
|
thread rooftop_enemy_counter();
|
|
self endon("death");
|
|
maps\_utility::set_baseaccuracy(0.5);
|
|
maps\fusion_utility::disable_grenades();
|
|
maps\_utility::disable_long_death();
|
|
common_scripts\utility::flag_wait("flag_combat_zip_rooftop_complete");
|
|
maps\fusion_utility::bloody_death(2);
|
|
}
|
|
|
|
//Function Number: 99
|
|
rooftop_enemy_think_left()
|
|
{
|
|
thread rooftop_enemy_counter();
|
|
self endon("death");
|
|
maps\_utility::set_baseaccuracy(0.5);
|
|
maps\fusion_utility::disable_grenades();
|
|
maps\_utility::disable_long_death();
|
|
if(level.currentgen)
|
|
{
|
|
wait(3);
|
|
var_00 = getnode("enemy_street_zip_rooftop_goal_node_left","script_noteworthy");
|
|
maps\_utility::set_goal_node(var_00);
|
|
maps\_utility::set_goal_radius(256);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_combat_zip_rooftop_complete");
|
|
maps\fusion_utility::bloody_death(2);
|
|
}
|
|
|
|
//Function Number: 100
|
|
rooftop_enemy_think_right()
|
|
{
|
|
thread rooftop_enemy_counter();
|
|
self endon("death");
|
|
maps\_utility::set_baseaccuracy(0.5);
|
|
maps\fusion_utility::disable_grenades();
|
|
maps\_utility::disable_long_death();
|
|
if(level.currentgen)
|
|
{
|
|
wait(3);
|
|
var_00 = getnode("enemy_street_zip_rooftop_goal_node_right","script_noteworthy");
|
|
maps\_utility::set_goal_node(var_00);
|
|
maps\_utility::set_goal_radius(256);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_combat_zip_rooftop_complete");
|
|
maps\fusion_utility::bloody_death(2);
|
|
}
|
|
|
|
//Function Number: 101
|
|
rooftop_enemy_counter()
|
|
{
|
|
level endon("flag_combat_zip_rooftop_complete");
|
|
level endon("player_participated_in_rooftop_fight");
|
|
self waittill("death",var_00);
|
|
if(var_00 == level.player)
|
|
{
|
|
common_scripts\utility::flag_set("player_participated_in_rooftop_fight");
|
|
}
|
|
}
|
|
|
|
//Function Number: 102
|
|
street_enemy_think()
|
|
{
|
|
self endon("death");
|
|
self setthreatbiasgroup("axis_street");
|
|
var_00 = getent("vol_street_battle_01_left","targetname");
|
|
var_01 = getent("vol_street_battle_01_right","targetname");
|
|
var_02 = [var_00,var_01];
|
|
street_set_volume_from_pair(var_02);
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_03");
|
|
var_00 = getent("vol_street_battle_02_left","targetname");
|
|
var_01 = getent("vol_street_battle_02_right","targetname");
|
|
var_02 = [var_00,var_01];
|
|
street_set_volume_from_pair(var_02);
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_05");
|
|
var_00 = getent("vol_street_battle_03_left","targetname");
|
|
var_01 = getent("vol_street_battle_03_right","targetname");
|
|
var_02 = [var_00,var_01];
|
|
street_set_volume_from_pair(var_02);
|
|
common_scripts\utility::flag_wait("flag_obj_01_pos_update_02");
|
|
var_00 = getent("vol_street_battle_reactor_entrance_left","targetname");
|
|
var_01 = getent("vol_street_battle_reactor_entrance_right","targetname");
|
|
var_02 = [var_00,var_01];
|
|
street_set_volume_from_pair(var_02);
|
|
common_scripts\utility::flag_wait("flag_enemy_walker");
|
|
self.grenadeammo = 0;
|
|
thread walker_death_courtyard_kva_cleanup();
|
|
common_scripts\utility::flag_wait("flag_walker_destroyed");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname"));
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_player_at_reactor_entrance");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname"));
|
|
}
|
|
}
|
|
|
|
//Function Number: 103
|
|
street_enemy_blown_building_think()
|
|
{
|
|
self endon("death");
|
|
self setthreatbiasgroup("axis_street");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_02_left","targetname"));
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_spawn_gaz_01");
|
|
var_00 = getent("vol_street_battle_03_left","targetname");
|
|
var_01 = getent("vol_street_battle_03_right","targetname");
|
|
var_02 = [var_00,var_01];
|
|
street_set_volume_from_pair(var_02);
|
|
common_scripts\utility::flag_wait("flag_obj_01_pos_update_02");
|
|
var_00 = getent("vol_street_battle_reactor_entrance_left","targetname");
|
|
var_01 = getent("vol_street_battle_reactor_entrance_right","targetname");
|
|
var_02 = [var_00,var_01];
|
|
street_set_volume_from_pair(var_02);
|
|
thread walker_death_courtyard_kva_cleanup();
|
|
common_scripts\utility::flag_wait("flag_walker_destroyed");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname"));
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_player_at_reactor_entrance");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname"));
|
|
}
|
|
}
|
|
|
|
//Function Number: 104
|
|
street_volume_manager()
|
|
{
|
|
var_00 = getent("vol_street_battle_01_left","targetname");
|
|
var_01 = getent("vol_street_battle_01_right","targetname");
|
|
var_02 = [var_00,var_01];
|
|
street_enemy_movement("flag_mt_move_up_03",2,5,var_02);
|
|
var_00 = getent("vol_street_battle_02_left","targetname");
|
|
var_01 = getent("vol_street_battle_02_right","targetname");
|
|
var_02 = [var_00,var_01];
|
|
street_enemy_movement("flag_mt_move_up_05",2,5,var_02);
|
|
var_00 = getent("vol_street_battle_03_left","targetname");
|
|
var_01 = getent("vol_street_battle_03_right","targetname");
|
|
var_02 = [var_00,var_01];
|
|
street_enemy_movement("flag_obj_01_pos_update_02",2,5,var_02);
|
|
var_00 = getent("vol_street_battle_reactor_entrance_left","targetname");
|
|
var_01 = getent("vol_street_battle_reactor_entrance_right","targetname");
|
|
var_02 = [var_00,var_01];
|
|
street_enemy_movement("flag_walker_destroyed",8,20,var_02);
|
|
}
|
|
|
|
//Function Number: 105
|
|
walker_death_courtyard_kva_cleanup()
|
|
{
|
|
self endon("death");
|
|
common_scripts\utility::flag_wait("flag_walker_destroyed");
|
|
var_00 = getnodearray("walker_retreat_point","targetname");
|
|
if(level.nextgen)
|
|
{
|
|
maps\fusion_utility::bloody_death(10);
|
|
return;
|
|
}
|
|
|
|
thread walker_death_courtyard_kva_cleanup_cg(var_00);
|
|
}
|
|
|
|
//Function Number: 106
|
|
walker_death_courtyard_kva_cleanup_cg(param_00)
|
|
{
|
|
self endon("death");
|
|
var_01 = 200;
|
|
var_02 = distance2d(self.origin,level.player.origin);
|
|
if(var_02 < var_01)
|
|
{
|
|
thread maps\_utility::player_seek_enable();
|
|
return;
|
|
}
|
|
|
|
param_00 = common_scripts\utility::array_randomize(param_00);
|
|
self setgoalnode(param_00[0]);
|
|
self waittill("goal");
|
|
self kill();
|
|
}
|
|
|
|
//Function Number: 107
|
|
street_set_volume_from_pair(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 = undefined;
|
|
if(isarray(param_00))
|
|
{
|
|
if(common_scripts\utility::cointoss())
|
|
{
|
|
var_01 = param_00[0];
|
|
if(self istouching(var_01))
|
|
{
|
|
var_01 = param_00[1];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_01 = param_00[1];
|
|
if(self istouching(var_01))
|
|
{
|
|
var_01 = param_00[0];
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
if(isdefined(var_01))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(var_01);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 108
|
|
street_enemy_movement(param_00,param_01,param_02,param_03)
|
|
{
|
|
level.player endon("death");
|
|
level endon(param_00);
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 5;
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 15;
|
|
}
|
|
|
|
while(!common_scripts\utility::flag(param_00))
|
|
{
|
|
wait(randomfloatrange(param_01,param_02));
|
|
var_04 = [];
|
|
foreach(var_06 in param_03)
|
|
{
|
|
var_07 = var_06 maps\_utility::get_ai_touching_volume("axis");
|
|
if(var_07.size > 0)
|
|
{
|
|
var_04 = common_scripts\utility::array_combine(var_04,var_07);
|
|
}
|
|
}
|
|
|
|
if(var_04.size > 0)
|
|
{
|
|
var_09 = var_04[randomint(var_04.size)];
|
|
var_09 street_set_volume_from_pair(param_03);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 109
|
|
mover_debug_text()
|
|
{
|
|
self endon("death");
|
|
var_00 = 5;
|
|
while(var_00 > 0)
|
|
{
|
|
var_00 = var_00 - 0.05;
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 110
|
|
street_enemy_tank_battle_think()
|
|
{
|
|
self endon("death");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self setgoalvolumeauto(getent("vol_street_tank_stage_01","targetname"));
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_enemy_walker");
|
|
self.grenadeammo = 0;
|
|
thread walker_death_courtyard_kva_cleanup();
|
|
common_scripts\utility::flag_wait("flag_walker_destroyed");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname"));
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_player_at_reactor_entrance");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname"));
|
|
}
|
|
}
|
|
|
|
//Function Number: 111
|
|
street_enemy_tank_damaged_think()
|
|
{
|
|
self endon("death");
|
|
self.grenadeammo = 0;
|
|
common_scripts\utility::flag_wait("walker_damaged");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname"));
|
|
}
|
|
|
|
thread walker_death_courtyard_kva_cleanup();
|
|
common_scripts\utility::flag_wait("flag_player_at_reactor_entrance");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname"));
|
|
}
|
|
}
|
|
|
|
//Function Number: 112
|
|
street_enemy_building_east_think()
|
|
{
|
|
self endon("death");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self setgoalvolumeauto(getent("vol_street_battle_rear_building_east","targetname"));
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_obj_01_pos_update_02");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname"));
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_enemy_walker");
|
|
self.grenadeammo = 0;
|
|
thread walker_death_courtyard_kva_cleanup();
|
|
common_scripts\utility::flag_wait("flag_player_at_reactor_entrance");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname"));
|
|
}
|
|
}
|
|
|
|
//Function Number: 113
|
|
street_enemy_building_west_think()
|
|
{
|
|
self endon("death");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self setgoalvolumeauto(getent("vol_street_battle_rear_building_west","targetname"));
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_obj_01_pos_update_02");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance","targetname"));
|
|
}
|
|
|
|
thread walker_death_courtyard_kva_cleanup();
|
|
common_scripts\utility::flag_wait("flag_player_at_reactor_entrance");
|
|
if(!isdefined(self.playerseeker))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("vol_street_battle_reactor_entrance_end","targetname"));
|
|
}
|
|
}
|
|
|
|
//Function Number: 114
|
|
combat_street_wave_01()
|
|
{
|
|
if(level.currentgen)
|
|
{
|
|
common_scripts\utility::flag_wait("ready_zip");
|
|
if(level.currentgen)
|
|
{
|
|
var_00 = ["enemy_street_wave_01","enemy_street_wave_02","enemy_street_wave_mobile_cover_a","enemy_street_wave_mobile_cover_b","enemy_street_blown_building","enemy_street_wave_04","enemy_street_wave_rear","enemy_street_tank_stage_01","enemy_street_tank_stage_02","enemy_street_reactor_entrance","enemy_street_turret_wave_1","enemy_street_turret_wave_2"];
|
|
thread maps\_cg_encounter_perf_monitor::cg_spawn_perf_monitor("elevator_descent_player",var_00,15,0);
|
|
}
|
|
}
|
|
|
|
var_01 = getentarray("enemy_street_wave_01","script_noteworthy");
|
|
if(var_01.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_01);
|
|
}
|
|
|
|
foreach(var_03 in getentarray("enemy_street_wave_01","script_noteworthy"))
|
|
{
|
|
if(isalive(var_03))
|
|
{
|
|
var_03 maps\_utility::deletable_magic_bullet_shield();
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_enemy_bullet_shield_off");
|
|
foreach(var_03 in getentarray("enemy_street_wave_01","script_noteworthy"))
|
|
{
|
|
if(isalive(var_03) && isdefined(var_03.magic_bullet_shield))
|
|
{
|
|
var_03 maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_03");
|
|
var_01 = ["enemy_street_wave_01"];
|
|
maps\fusion_utility::delete_spawners(var_01);
|
|
}
|
|
|
|
//Function Number: 115
|
|
combat_street_wave_02()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_01");
|
|
var_00 = getentarray("enemy_street_wave_02","script_noteworthy");
|
|
if(var_00.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
}
|
|
|
|
var_00 = getentarray("enemy_street_wave_mobile_cover_a","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_02");
|
|
var_00 = getentarray("enemy_street_wave_mobile_cover_b","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_delete_spawners_wave_02");
|
|
var_00 = ["enemy_street_wave_02"];
|
|
maps\fusion_utility::delete_spawners(var_00);
|
|
}
|
|
|
|
//Function Number: 116
|
|
combat_street_wave_03()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_delete_spawners_wave_02");
|
|
var_00 = getentarray("enemy_street_wave_03","script_noteworthy");
|
|
if(var_00.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_enemy_reinforcements_big_wave");
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("enemy_trans_street_01");
|
|
var_01 thread heli_turret_death_think();
|
|
soundscripts\_snd::snd_message("courtyard_mi17_spawn_01",var_01);
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("enemy_trans_street_02");
|
|
var_02 thread heli_turret_death_think();
|
|
soundscripts\_snd::snd_message("courtyard_mi17_spawn_02",var_02);
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_03");
|
|
var_00 = ["enemy_street_wave_03"];
|
|
maps\fusion_utility::delete_spawners(var_00);
|
|
}
|
|
|
|
//Function Number: 117
|
|
combat_street_mid_checkpoint_1()
|
|
{
|
|
level endon("flag_enemy_walker");
|
|
common_scripts\utility::flag_wait("flag_road_combat_mid_save_1");
|
|
maps\_utility::autosave_by_name();
|
|
}
|
|
|
|
//Function Number: 118
|
|
combat_street_mid_checkpoint_2()
|
|
{
|
|
level endon("flag_walker_destroyed");
|
|
common_scripts\utility::flag_wait("flag_road_combat_mid_save_2");
|
|
maps\_utility::autosave_by_name();
|
|
}
|
|
|
|
//Function Number: 119
|
|
combat_street_blown_building()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_combat_blown_building");
|
|
if(!common_scripts\utility::flag("flag_delete_spawners_wave_02"))
|
|
{
|
|
var_00 = getentarray("enemy_street_blown_building","script_noteworthy");
|
|
if(var_00.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_slow_explosions_2");
|
|
var_00 = ["enemy_street_blown_building"];
|
|
maps\fusion_utility::delete_spawners(var_00);
|
|
}
|
|
|
|
//Function Number: 120
|
|
heli_turret_death_think()
|
|
{
|
|
level.player endon("death");
|
|
level endon("street_cleanup");
|
|
self waittill("death",var_00);
|
|
wait(0.05);
|
|
self notify("crash_done");
|
|
}
|
|
|
|
//Function Number: 121
|
|
combat_player_in_m_turret()
|
|
{
|
|
level endon("street_cleanup");
|
|
level.player waittill("player_enters_mobile_turret");
|
|
thread hint_mt_controls();
|
|
maps\_utility::delaythread(2,::maps\_utility::autosave_now);
|
|
var_00 = getentarray("enemy_street_turret_wave_1","script_noteworthy");
|
|
if(var_00.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
}
|
|
|
|
var_01 = getentarray("enemy_street_turret_wave_2","script_noteworthy");
|
|
if(var_01.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_01);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("walker_damaged");
|
|
var_00 = ["enemy_street_turret_wave_1"];
|
|
maps\fusion_utility::delete_spawners(var_00);
|
|
var_01 = ["enemy_street_turret_wave_2"];
|
|
maps\fusion_utility::delete_spawners(var_01);
|
|
}
|
|
|
|
//Function Number: 122
|
|
hint_mt_controls()
|
|
{
|
|
level.player endon("player_exited_mobile_turret");
|
|
wait(1);
|
|
maps\_utility::hintdisplayhandler("hint_mt_fire_missiles");
|
|
common_scripts\utility::flag_wait("flag_hint_mt_control_fire_missiles_press");
|
|
maps\_utility::hintdisplaymintimehandler("hint_mt_fire_missiles_release");
|
|
}
|
|
|
|
//Function Number: 123
|
|
monitor_mobile_turret_health()
|
|
{
|
|
level.player endon("death");
|
|
level endon("street_cleanup");
|
|
level.player waittill("player_starts_entering_mobile_turret");
|
|
common_scripts\utility::flag_set("flag_player_starts_entering_mobile_turret");
|
|
level.player waittill("player_enters_mobile_turret");
|
|
common_scripts\utility::flag_set("flag_player_enters_mobile_turret");
|
|
thread mobile_turret_tutorial_hints();
|
|
var_00 = getentarray("mobile_turret_damage","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 linkto(self);
|
|
}
|
|
|
|
var_04 = getent("trig_mobile_turret_health_1","targetname");
|
|
var_04 mobile_turret_health_think(self,::mobile_turret_health_1);
|
|
var_04 = getent("trig_mobile_turret_health_2","targetname");
|
|
var_04 mobile_turret_health_think(self,::mobile_turret_health_2);
|
|
var_04 = getent("trig_mobile_turret_health_3","targetname");
|
|
var_04 mobile_turret_health_think(self,::mobile_turret_health_3);
|
|
var_04 = getent("trig_mobile_turret_missile","targetname");
|
|
var_04 mobile_turret_health_think(self,::mobile_turret_missile);
|
|
}
|
|
|
|
//Function Number: 124
|
|
mobile_turret_tutorial_hints()
|
|
{
|
|
}
|
|
|
|
//Function Number: 125
|
|
mobile_turret_health_think(param_00,param_01)
|
|
{
|
|
level.player endon("death");
|
|
param_00 endon("death");
|
|
level endon("street_cleanup");
|
|
for(;;)
|
|
{
|
|
self waittill("trigger",var_02);
|
|
if(var_02 == level.player && isdefined(param_00.player_driver) && param_00.player_driver == level.player)
|
|
{
|
|
param_00 thread [[ param_01 ]]();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 126
|
|
mobile_turret_health_1()
|
|
{
|
|
self endon("death");
|
|
self endon("stop_mobile_turret_health_1");
|
|
}
|
|
|
|
//Function Number: 127
|
|
mobile_turret_health_2()
|
|
{
|
|
self endon("death");
|
|
self endon("stop_mobile_turret_health_2");
|
|
var_00 = "mobile_turret_sparks";
|
|
var_01 = "TAG_SPARKS_1";
|
|
var_02 = "TAG_SPARKS_2";
|
|
play_and_store_fx_on_tag(var_00,self,var_01);
|
|
wait(0.1);
|
|
play_and_store_fx_on_tag(var_00,self,var_02);
|
|
}
|
|
|
|
//Function Number: 128
|
|
mobile_turret_health_3()
|
|
{
|
|
self endon("death");
|
|
self endon("stop_mobile_turret_health_3");
|
|
}
|
|
|
|
//Function Number: 129
|
|
mobile_turret_missile()
|
|
{
|
|
self endon("death");
|
|
var_00 = common_scripts\utility::getstruct("org_missile_disable_mt","targetname");
|
|
var_01 = var_00.origin + anglestoforward(var_00.angles) * 256;
|
|
var_02 = magicbullet("mobile_turret_missile",var_00.origin,var_01);
|
|
var_02 missile_settargetpos(self.mgturret[0] gettagorigin("tag_flash") + anglestoforward(self.mgturret[0].angles) * 64);
|
|
var_02 missile_setflightmodedirect();
|
|
var_02 waittill("death");
|
|
playfx(common_scripts\utility::getfx("rpg_explode"),self.mgturret[0].origin);
|
|
var_03 = self.mgturret[0].origin;
|
|
if(isdefined(self.player_driver))
|
|
{
|
|
soundscripts\_snd::snd_message("player_mobile_turret_warning");
|
|
var_03 = self.player_driver.origin;
|
|
thread maps\_utility::flag_set_delayed("flag_bailout_vo",0.5);
|
|
}
|
|
|
|
earthquake(2,1,var_03,256);
|
|
thread mobile_turret_health_4();
|
|
}
|
|
|
|
//Function Number: 130
|
|
mobile_turret_health_4()
|
|
{
|
|
maps\_utility::ent_flag_waitopen("player_in_transition");
|
|
if(isdefined(level.player.drivingvehicleandturret))
|
|
{
|
|
var_00 = self.mgturret[0];
|
|
level.player drivevehicleandcontrolturretoff(self);
|
|
thread mobile_turret_burning_limit_controls(var_00);
|
|
thread mobile_turret_burning();
|
|
self.burning = 1;
|
|
var_01 = "mobile_turret_fire_large";
|
|
var_02 = "TAG_FIRE_2";
|
|
play_and_store_fx_on_tag(var_01,self,var_02);
|
|
return;
|
|
}
|
|
|
|
self.burning = 1;
|
|
destroy_mobile_turret();
|
|
}
|
|
|
|
//Function Number: 131
|
|
mobile_turret_burning_limit_controls(param_00)
|
|
{
|
|
level.player enableslowaim(0.005,0.005);
|
|
level.player maps\_utility::set_ignoreme(1);
|
|
param_00 turretfiredisable();
|
|
self notify("end_rocket_think");
|
|
self notify("fire_missile_system");
|
|
self notify("disable_missile_input");
|
|
self notify("force_clear_all_turret_locks");
|
|
self.reticle vehicle_scripts\_x4walker_wheels_turret::reticle_hide();
|
|
self waittill("dismount_vehicle_and_turret");
|
|
level.player maps\_utility::set_ignoreme(0);
|
|
level.player disableslowaim();
|
|
}
|
|
|
|
//Function Number: 132
|
|
mobile_turret_burning()
|
|
{
|
|
thread destroy_turret_when_player_leaves();
|
|
level.player endon("death");
|
|
level endon("street_cleanup");
|
|
self endon("dismount_vehicle_and_turret");
|
|
self notify("play_damage_warning");
|
|
var_00 = 20;
|
|
wait(var_00 - 1);
|
|
var_01 = self.angles + (-90,90,0);
|
|
playfx(common_scripts\utility::getfx("fusion_vehicle_mobile_cover_explosion"),level.player geteye() + (0,-50,20));
|
|
earthquake(1,1.6,level.player.origin,625);
|
|
wait(1);
|
|
level.player disableinvulnerability();
|
|
level notify("mission failed");
|
|
setdvar("ui_deadquote",&"FUSION_MOBILE_TURRET_DETROYED");
|
|
maps\_utility::missionfailedwrapper();
|
|
}
|
|
|
|
//Function Number: 133
|
|
destroy_turret_when_player_leaves()
|
|
{
|
|
level.player endon("death");
|
|
level endon("street_cleanup");
|
|
self waittill("player_exited_mobile_turret");
|
|
destroy_mobile_turret();
|
|
}
|
|
|
|
//Function Number: 134
|
|
destroy_mobile_turret()
|
|
{
|
|
level.player endon("death");
|
|
level endon("street_cleanup");
|
|
vehicle_scripts\_x4walker_wheels_turret::make_mobile_turret_unusable();
|
|
var_00 = 256;
|
|
var_01 = 20;
|
|
while(distance(self.origin,level.player.origin) < var_00 && var_01 >= 0)
|
|
{
|
|
var_01 = var_01 - 0.05;
|
|
wait(0.05);
|
|
}
|
|
|
|
self.mgturret[0] hide();
|
|
self setmodel("vehicle_x4walker_wheels_dstrypv");
|
|
playfxontag(common_scripts\utility::getfx("mobile_turret_explosion"),self,"tag_death_fx");
|
|
earthquake(1,1.6,self.origin,625);
|
|
soundscripts\_snd::snd_message("player_mobile_turret_explo");
|
|
self notify("stop_mobile_turret_health_1");
|
|
self notify("stop_mobile_turret_health_2");
|
|
self notify("stop_mobile_turret_health_3");
|
|
self notify("stop_mobile_turret_health_4");
|
|
wait(0.5);
|
|
playfxontag(common_scripts\utility::getfx("mobile_turret_ground_smoke"),self,"tag_death_fx");
|
|
}
|
|
|
|
//Function Number: 135
|
|
disable_mobile_turret_if_not_destroyed()
|
|
{
|
|
level.player endon("death");
|
|
self endon("stop_mobile_turret_health_4");
|
|
var_00 = getent("trig_mobile_turret_missile","targetname");
|
|
var_00 waittill("trigger");
|
|
if(!isdefined(level.player.drivingvehicleandturret))
|
|
{
|
|
vehicle_scripts\_x4walker_wheels_turret::make_mobile_turret_unusable();
|
|
}
|
|
}
|
|
|
|
//Function Number: 136
|
|
play_and_store_fx_on_tag(param_00,param_01,param_02)
|
|
{
|
|
playfxontag(common_scripts\utility::getfx(param_00),param_01.mgturret[0],param_02);
|
|
var_03 = spawnstruct();
|
|
var_03.name = param_00;
|
|
var_03.tag = param_02;
|
|
if(!isdefined(param_01.damage_fx))
|
|
{
|
|
param_01.damage_fx = [];
|
|
}
|
|
|
|
param_01.damage_fx[self.damage_fx.size] = var_03;
|
|
}
|
|
|
|
//Function Number: 137
|
|
combat_street_wave_04()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_delete_spawners_wave_02");
|
|
var_00 = getentarray("enemy_street_wave_04","script_noteworthy");
|
|
if(var_00.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_enemy_walker");
|
|
var_00 = ["enemy_street_wave_04"];
|
|
maps\fusion_utility::delete_spawners(var_00);
|
|
}
|
|
|
|
//Function Number: 138
|
|
combat_street_wave_rear()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_05");
|
|
var_00 = getentarray("enemy_street_wave_rear","script_noteworthy");
|
|
if(var_00.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
}
|
|
|
|
foreach(var_02 in getentarray("enemy_street_wave_rear","script_noteworthy"))
|
|
{
|
|
if(isalive(var_02))
|
|
{
|
|
var_02 maps\_utility::deletable_magic_bullet_shield();
|
|
}
|
|
}
|
|
|
|
foreach(var_02 in getentarray("enemy_street_wave_rear","script_noteworthy"))
|
|
{
|
|
if(isalive(var_02) && isdefined(var_02.magic_bullet_shield))
|
|
{
|
|
var_02 maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
}
|
|
|
|
if(level.currentgen)
|
|
{
|
|
common_scripts\utility::flag_wait("flag_walker_destroyed");
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_05");
|
|
}
|
|
|
|
var_00 = ["enemy_street_wave_rear"];
|
|
maps\fusion_utility::delete_spawners(var_00);
|
|
}
|
|
|
|
//Function Number: 139
|
|
combat_enemy_tank()
|
|
{
|
|
common_scripts\utility::flag_wait("walker_trophy_1");
|
|
var_00 = getentarray("enemy_street_tank_stage_01","script_noteworthy");
|
|
if(var_00.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("walker_trophy_2");
|
|
thread rpg_at_squad_01();
|
|
var_00 = getentarray("enemy_street_tank_stage_02","script_noteworthy");
|
|
if(var_00.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("walker_damaged");
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("enemy_m_turret_03");
|
|
var_01 thread gaz_turret_guy_think();
|
|
common_scripts\utility::flag_wait("flag_walker_destroyed");
|
|
var_00 = ["enemy_street_tank_stage_01","enemy_street_tank_stage_02"];
|
|
maps\fusion_utility::delete_spawners(var_00);
|
|
if(!level.nextgen)
|
|
{
|
|
level waittill("tff_pre_transition_intro_to_middle");
|
|
var_01 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 140
|
|
gaz_turret_guy_think()
|
|
{
|
|
var_00 = undefined;
|
|
foreach(var_02 in self.riders)
|
|
{
|
|
if(isdefined(var_02.vehicle_position) && var_02.vehicle_position == 3)
|
|
{
|
|
var_00 = var_02;
|
|
var_00 endon("death");
|
|
}
|
|
|
|
var_02 thread walker_death_courtyard_kva_cleanup();
|
|
}
|
|
|
|
if(!isdefined(var_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_walker_destroyed");
|
|
var_00.health = 1;
|
|
var_00.ignoreme = 0;
|
|
}
|
|
|
|
//Function Number: 141
|
|
combat_enemy_trans_heli_wave_01()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_05");
|
|
}
|
|
|
|
//Function Number: 142
|
|
combat_zip_rooftop()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_combat_zip_rooftop_start");
|
|
var_00 = missile_createrepulsorent(level.warbird_a,5000,1000);
|
|
var_01 = getentarray("enemy_street_zip_rooftop","script_noteworthy");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
if(level.currentgen)
|
|
{
|
|
var_01 = getentarray("enemy_street_zip_rooftop_left","script_noteworthy");
|
|
var_05 = getentarray("enemy_street_zip_rooftop_right","script_noteworthy");
|
|
var_01 = common_scripts\utility::array_combine(var_01,var_05);
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 maps\_utility::spawn_ai(1);
|
|
}
|
|
}
|
|
|
|
if(level.nextgen)
|
|
{
|
|
maps\fusion_utility::spawn_metrics_waittill_deaths_reach(4,["enemy_street_zip_rooftop"],1);
|
|
}
|
|
else
|
|
{
|
|
maps\fusion_utility::spawn_metrics_waittill_deaths_reach(4,["enemy_street_zip_rooftop","enemy_street_zip_rooftop_left","enemy_street_zip_rooftop_right"],1);
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_burke_zip");
|
|
if(level.nextgen)
|
|
{
|
|
maps\fusion_utility::spawn_metrics_waittill_deaths_reach(6,["enemy_street_zip_rooftop"],1);
|
|
}
|
|
else
|
|
{
|
|
maps\fusion_utility::spawn_metrics_waittill_deaths_reach(6,["enemy_street_zip_rooftop","enemy_street_zip_rooftop_left","enemy_street_zip_rooftop_right"],1);
|
|
}
|
|
|
|
var_01 = getentarray("enemy_street_zip_rooftop_strafe","script_noteworthy");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
waittillframeend;
|
|
if(!common_scripts\utility::flag("flag_rooftop_strafe"))
|
|
{
|
|
common_scripts\utility::flag_set("flag_player_cleared_rooftop");
|
|
}
|
|
|
|
if(level.nextgen)
|
|
{
|
|
maps\fusion_utility::spawn_metrics_waittill_deaths_reach(9,["enemy_street_zip_rooftop","enemy_street_zip_rooftop_strafe"],1);
|
|
}
|
|
else
|
|
{
|
|
maps\fusion_utility::spawn_metrics_waittill_deaths_reach(9,["enemy_street_zip_rooftop","enemy_street_zip_rooftop_left","enemy_street_zip_rooftop_right","enemy_street_zip_rooftop_strafe"],1);
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_combat_zip_rooftop_complete");
|
|
soundscripts\_snd::snd_music_message("mus_combat_zip_rooftop_complete");
|
|
}
|
|
|
|
//Function Number: 143
|
|
combat_street_initial()
|
|
{
|
|
if(level.currentgen)
|
|
{
|
|
common_scripts\utility::flag_wait("flag_spawn_gaz_01");
|
|
}
|
|
|
|
var_00 = getentarray("enemy_street_reactor_entrance","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(isdefined(var_02))
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
}
|
|
|
|
if(level.nextgen)
|
|
{
|
|
common_scripts\utility::flag_wait("flag_spawn_gaz_01");
|
|
}
|
|
|
|
var_04 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("enemy_m_turret_02");
|
|
var_05 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("enemy_m_turret_01");
|
|
var_04 thread gaz_turret_guy_think();
|
|
var_05 thread gaz_turret_guy_think();
|
|
var_06 = getent("titan_friendly_badplace","targetname");
|
|
badplace_brush("titan_hill_friendly_bad",-1,var_06,"allies");
|
|
common_scripts\utility::flag_wait("flag_obj_01_pos_update_02");
|
|
var_00 = ["enemy_street_reactor_entrance"];
|
|
maps\fusion_utility::delete_spawners(var_00);
|
|
if(level.currentgen)
|
|
{
|
|
level waittill("tff_pre_transition_intro_to_middle");
|
|
var_04 delete();
|
|
var_05 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 144
|
|
rpg_at_heli()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_rpg_at_heli");
|
|
wait(2.5);
|
|
maps\_vehicle::spawn_vehicle_from_targetname_and_drive("rpg_at_heli");
|
|
}
|
|
|
|
//Function Number: 145
|
|
rpg_at_squad_01()
|
|
{
|
|
maps\_vehicle::spawn_vehicle_from_targetname_and_drive("rpg_at_squad_01");
|
|
wait(1);
|
|
maps\_vehicle::spawn_vehicle_from_targetname_and_drive("rpg_at_squad_02");
|
|
}
|
|
|
|
//Function Number: 146
|
|
wall_explosion_01()
|
|
{
|
|
var_00 = getentarray("street_wall_1_decal","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 hide();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_mt_wall_rpg_fire");
|
|
var_04 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("rpg_at_wall_01");
|
|
common_scripts\utility::flag_wait("flag_mt_wall_rpg_impact");
|
|
var_05 = getent("blocker_wall_1_explode","targetname");
|
|
var_05 delete();
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 show();
|
|
}
|
|
|
|
maps\_utility::activate_trigger_with_targetname("street_wall_1_explode");
|
|
var_08 = common_scripts\utility::getstruct("vfx_street_wall_1_explode","targetname");
|
|
thread maps\fusion_lighting::firelight_volume();
|
|
thread maps\fusion_lighting::firelight_volume2();
|
|
soundscripts\_snd::snd_message("street_wall_1_explode",var_08.origin);
|
|
radiusdamage(var_08.origin,200,200,100,undefined,"MOD_EXPLOSIVE");
|
|
physicsexplosionsphere(var_08.origin,200,10,1);
|
|
}
|
|
|
|
//Function Number: 147
|
|
building_explosion_01()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_mt_move_up_05");
|
|
maps\_utility::activate_trigger_with_targetname("street_building_top_1_explode");
|
|
var_00 = common_scripts\utility::getstruct("vfx_street_building_1_explode","targetname");
|
|
soundscripts\_snd::snd_message("building_explode",var_00.origin);
|
|
radiusdamage(var_00.origin,200,200,100,undefined,"MOD_EXPLOSIVE");
|
|
physicsexplosionsphere(var_00.origin,200,10,1);
|
|
}
|
|
|
|
//Function Number: 148
|
|
spawn_player_anim_rig()
|
|
{
|
|
return maps\_utility::spawn_anim_model("player_rig",(0,0,0));
|
|
}
|
|
|
|
//Function Number: 149
|
|
courtyard_ambient_explosions()
|
|
{
|
|
level.player endon("death");
|
|
level endon("start_itiot");
|
|
level endon("street_cleanup");
|
|
level endon("flag_walker_destroyed");
|
|
common_scripts\utility::flag_wait("flag_ambient_explosions_start");
|
|
childthread courtyard_ambient_bullet_impacts();
|
|
}
|
|
|
|
//Function Number: 150
|
|
courtyard_ambient_bullet_impacts()
|
|
{
|
|
var_00 = common_scripts\utility::getstructarray("ambient_bullet_origins","targetname");
|
|
var_01 = 0.05;
|
|
if(level.currentgen)
|
|
{
|
|
var_01 = 0.5;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
var_02 = 0.25;
|
|
var_03 = 0.5;
|
|
if(common_scripts\utility::flag("flag_slow_explosions_1"))
|
|
{
|
|
var_02 = 1.25;
|
|
var_03 = 1.5;
|
|
}
|
|
|
|
if(common_scripts\utility::flag("flag_slow_explosions_2"))
|
|
{
|
|
var_02 = 2.25;
|
|
var_03 = 2.5;
|
|
}
|
|
|
|
if(level.currentgen)
|
|
{
|
|
var_02 = var_02 * 2;
|
|
var_03 = var_03 * 2;
|
|
}
|
|
|
|
wait(randomfloatrange(var_02,var_03));
|
|
var_04 = anglestoforward(level.player.angles);
|
|
var_05 = anglestoright(level.player.angles);
|
|
var_06 = spawn("script_origin",(0,0,0));
|
|
var_04 = var_04 * randomintrange(256,512);
|
|
var_05 = var_05 * randomintrange(-256,256);
|
|
var_07 = randomint(360);
|
|
var_06.angles = (0,var_07,0);
|
|
var_08 = var_00[randomint(var_00.size)];
|
|
var_09 = 0;
|
|
var_0A = level.player.origin + var_04 + var_05;
|
|
var_0B = randomintrange(64,256);
|
|
if(level.currentgen)
|
|
{
|
|
var_0C = randomintrange(2,8);
|
|
}
|
|
else
|
|
{
|
|
var_0C = randomintrange(4,15);
|
|
}
|
|
|
|
var_0D = var_0A + anglestoforward(var_06.angles) * var_0B;
|
|
var_0E = var_0D - var_0A;
|
|
var_0F = var_0C * var_01;
|
|
while(var_09 < var_0F)
|
|
{
|
|
var_10 = randomfloat(1);
|
|
if(var_10 < 0.8)
|
|
{
|
|
var_06.origin = var_0A + var_0E * var_09 / var_0F;
|
|
var_11 = randomintrange(-40,40);
|
|
var_12 = randomintrange(-40,40);
|
|
var_13 = randomintrange(-5,5);
|
|
var_06.origin = var_06.origin + (var_11,var_12,var_13);
|
|
if(!maps\_utility::shot_endangers_any_player(var_08.origin,var_06.origin))
|
|
{
|
|
magicbullet("iw5_ak12_sp",var_08.origin,var_06.origin);
|
|
soundscripts\_snd::snd_message("courtyard_ambient_bullet_impact","iw5_ak12_sp",var_08.origin,var_06.origin);
|
|
}
|
|
}
|
|
|
|
var_09 = var_09 + var_01;
|
|
wait(var_01);
|
|
}
|
|
|
|
var_06 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 151
|
|
rooftop_slide()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_player_zip_started");
|
|
var_00 = getent("rooftop_slide_guy_1","targetname");
|
|
var_00.count++;
|
|
var_01 = var_00 maps\_utility::spawn_ai(1);
|
|
level.get_in_mobile_turret_guy = var_01;
|
|
var_01.animname = "guy1";
|
|
var_01 maps\_utility::deletable_magic_bullet_shield();
|
|
var_02 = [var_01];
|
|
var_03 = undefined;
|
|
if(level.nextgen)
|
|
{
|
|
var_04 = getent("rooftop_slide_guy_2","targetname");
|
|
var_04.count++;
|
|
var_03 = var_04 maps\_utility::spawn_ai(1);
|
|
var_03.animname = "guy2";
|
|
var_03 maps\_utility::deletable_magic_bullet_shield();
|
|
var_02 = common_scripts\utility::array_add(var_02,var_03);
|
|
}
|
|
|
|
var_05 = common_scripts\utility::getstruct("struct_rooftop_slide","script_noteworthy");
|
|
var_05 maps\_anim::anim_first_frame(var_02,"fusion_rooftop_slide");
|
|
var_05 maps\_anim::anim_single(var_02,"fusion_rooftop_slide");
|
|
if(isdefined(var_03))
|
|
{
|
|
var_03 maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
var_06 = getnode("node_mt_guy_after_zip","targetname");
|
|
var_01 thread maps\fusion_utility::goto_node(var_06,0);
|
|
var_01 maps\fusion_utility::disable_awareness();
|
|
var_01 maps\_utility::delaythread(5.5,::guy_approach_mobile_turret);
|
|
if(isdefined(var_03))
|
|
{
|
|
var_07 = getnode("node_cover_joker_after_zip","targetname");
|
|
var_03 maps\fusion_utility::goto_node(var_07,1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("player_fly_in_done");
|
|
wait(4.5);
|
|
if(isdefined(var_03))
|
|
{
|
|
var_03 maps\_utility::set_force_color("p");
|
|
}
|
|
}
|
|
|
|
//Function Number: 152
|
|
hide_water()
|
|
{
|
|
if(level.start_point == "fly_in_animated" || level.start_point == "courtyard")
|
|
{
|
|
common_scripts\utility::flag_wait("player_fly_in_done");
|
|
}
|
|
|
|
var_00 = getent("water_on","targetname");
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 153
|
|
courtyard_burke_rally()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_player_zip_started");
|
|
common_scripts\utility::flag_set("flag_boots_on_ground_dialogue");
|
|
common_scripts\utility::flag_wait("burke_fastzip_done");
|
|
common_scripts\utility::flag_wait("player_fly_in_done");
|
|
waittillframeend;
|
|
level.burke.animname = "burke";
|
|
level.joker.animname = "joker";
|
|
level.carter.animname = "carter";
|
|
level.burke maps\_utility::set_ignoreall(1);
|
|
level.joker maps\_utility::set_ignoreall(1);
|
|
var_00 = common_scripts\utility::getstruct("struct_courtyard_burke_rally","script_noteworthy");
|
|
maps\_utility::delaythread(6,::color_activate_post_burk_rally);
|
|
var_00 maps\_anim::anim_reach_solo(level.burke,"street_burke_rally");
|
|
level.burke maps\_utility::set_ignoreall(0);
|
|
var_00 thread maps\_anim::anim_single_solo_run(level.burke,"street_burke_rally");
|
|
level.burke maps\_utility::enable_ai_color();
|
|
common_scripts\utility::flag_set("flag_burke_rally_street_dialogue");
|
|
level.carter maps\_utility::delaythread(9,::maps\_utility::enable_ai_color);
|
|
level.joker maps\_utility::set_ignoreall(0);
|
|
var_00 maps\_anim::anim_reach_solo(level.joker,"street_burke_rally_in");
|
|
var_00 maps\_anim::anim_single_solo(level.joker,"street_burke_rally_in");
|
|
var_00 thread maps\_anim::anim_loop_solo(level.joker,"street_burke_rally_idle","ender_string");
|
|
wait(2.75);
|
|
var_00 notify("ender_string");
|
|
var_00 maps\_anim::anim_single_solo_run(level.joker,"street_burke_rally_out");
|
|
level.joker maps\_utility::enable_ai_color();
|
|
}
|
|
|
|
//Function Number: 154
|
|
color_activate_post_burk_rally()
|
|
{
|
|
var_00 = getent("color_t_fastzip_landing","targetname");
|
|
if(isdefined(var_00))
|
|
{
|
|
maps\_utility::activate_trigger_with_targetname("color_t_fastzip_landing");
|
|
}
|
|
|
|
level.carter maps\_utility::disable_sprint();
|
|
if(isdefined(var_00))
|
|
{
|
|
var_00 common_scripts\utility::trigger_off();
|
|
}
|
|
}
|
|
|
|
//Function Number: 155
|
|
courtyard_mobile_cover_guys()
|
|
{
|
|
var_00 = getent("mobile_cover_guy_2","targetname");
|
|
var_00.count++;
|
|
var_01 = var_00 maps\_utility::spawn_ai(1);
|
|
var_01.animname = "guy2";
|
|
var_01 maps\_utility::deletable_magic_bullet_shield();
|
|
var_02 = [var_01];
|
|
var_03 = undefined;
|
|
if(level.nextgen)
|
|
{
|
|
var_04 = getent("mobile_cover_guy_1","targetname");
|
|
var_04.count++;
|
|
var_03 = var_04 maps\_utility::spawn_ai(1);
|
|
var_03.animname = "guy1";
|
|
var_03 maps\_utility::deletable_magic_bullet_shield();
|
|
var_02 = common_scripts\utility::array_add(var_02,var_03);
|
|
}
|
|
|
|
var_05 = common_scripts\utility::spawn_tag_origin();
|
|
var_05.origin = (-960.107,-3213.48,-72);
|
|
var_05.angles = (0,11,0);
|
|
var_06 = spawn("script_model",var_05.origin);
|
|
var_06 setmodel("vehicle_mobile_cover");
|
|
var_06 maps\_utility::assign_animtree("mobile_cover");
|
|
var_07 = getent("mobile_cover_courtyard_clip","targetname");
|
|
var_07 connectpaths();
|
|
var_05 thread maps\_anim::anim_first_frame(var_02,"fusion_mobile_cover");
|
|
var_05 thread maps\_anim::anim_first_frame_solo(var_06,"fusion_mobile_cover");
|
|
var_07.origin = var_06.origin;
|
|
var_07 linkto(var_06);
|
|
common_scripts\utility::flag_wait("flag_ambient_explosions_start");
|
|
var_06 thread mobile_cover_badplace();
|
|
var_06 thread mobile_cover_courtyard_start(var_07,var_05);
|
|
var_05 maps\_anim::anim_single_run(var_02,"fusion_mobile_cover");
|
|
var_01 maps\_utility::stop_magic_bullet_shield();
|
|
var_01 kill();
|
|
var_01 startragdoll();
|
|
var_08 = getnode("node_mobile_cover_courtyard","targetname");
|
|
if(isdefined(var_03))
|
|
{
|
|
var_03 maps\fusion_utility::goto_node(var_08,1);
|
|
var_03 maps\_utility::set_force_color("y");
|
|
var_03 maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
if(level.nextgen)
|
|
{
|
|
level waittill("street_cleanup");
|
|
}
|
|
else
|
|
{
|
|
level waittill("tff_pre_transition_intro_to_middle");
|
|
}
|
|
|
|
var_05 delete();
|
|
var_06 delete();
|
|
}
|
|
|
|
//Function Number: 156
|
|
mobile_cover_courtyard_start(param_00,param_01)
|
|
{
|
|
soundscripts\_snd::snd_message("cvrdrn_paired_anim_start");
|
|
param_01 maps\_anim::anim_single_solo(self,"fusion_mobile_cover");
|
|
soundscripts\_snd::snd_message("cvrdrn_paired_anim_explo");
|
|
mobile_cover_explosion(param_00);
|
|
}
|
|
|
|
//Function Number: 157
|
|
mobile_cover_badplace()
|
|
{
|
|
self endon("stop_mobile_cover_badplace");
|
|
for(;;)
|
|
{
|
|
badplace_cylinder("mobile_cover_badplace",0.25,self.origin,96,96,"axis","allies");
|
|
wait(0.25);
|
|
}
|
|
}
|
|
|
|
//Function Number: 158
|
|
street_mobile_cover_guys()
|
|
{
|
|
level.player endon("death");
|
|
common_scripts\utility::flag_wait("flag_mobile_cover_se_2");
|
|
var_00 = common_scripts\utility::getstruct("street_mobile_cover_guys_node","script_noteworthy");
|
|
while(distance(level.player.origin,var_00.origin) < 195 || maps\_utility::player_looking_at(var_00.origin,cos(60),1))
|
|
{
|
|
wait(0.5);
|
|
}
|
|
|
|
var_01 = getent("mobile_cover_2_guy_1","targetname");
|
|
var_02 = getent("mobile_cover_2_guy_2","targetname");
|
|
var_01.count++;
|
|
var_02.count++;
|
|
var_03 = var_01 maps\_utility::spawn_ai(1);
|
|
var_04 = var_02 maps\_utility::spawn_ai(1);
|
|
var_03.animname = "guy1";
|
|
var_04.animname = "guy2";
|
|
var_03 maps\_utility::deletable_magic_bullet_shield();
|
|
var_04 maps\_utility::deletable_magic_bullet_shield();
|
|
var_05 = getent("street_mobile_cover_guys_cover","script_noteworthy");
|
|
var_06 = var_05 maps\_utility::spawn_vehicle();
|
|
var_06 maps\_utility::assign_animtree("mobile_cover");
|
|
var_06 vehicle_scripts\_cover_drone::cover_drone_disable();
|
|
var_07 = [var_03,var_04,var_06];
|
|
var_00 thread maps\_anim::anim_first_frame(var_07,"fusion_mobile_cover_2");
|
|
var_00 maps\_anim::anim_single(var_07,"fusion_mobile_cover_2");
|
|
var_06 stopanimscripted();
|
|
var_06 vehicle_scripts\_cover_drone::cover_drone_enable();
|
|
var_03 maps\fusion_utility::disable_awareness();
|
|
var_04 maps\fusion_utility::disable_awareness();
|
|
var_04 maps\fusion_utility::goto_node("node_cover_mb_guy_01",0);
|
|
var_03 maps\fusion_utility::goto_node("node_cover_mb_guy_02",0);
|
|
var_03 maps\fusion_utility::enable_awareness();
|
|
var_04 maps\fusion_utility::enable_awareness();
|
|
var_03 maps\_utility::stop_magic_bullet_shield();
|
|
var_04 maps\_utility::stop_magic_bullet_shield();
|
|
var_07 = [var_03,var_04];
|
|
common_scripts\utility::flag_wait("flag_walker_destroyed");
|
|
foreach(var_09 in var_07)
|
|
{
|
|
if(isalive(var_09))
|
|
{
|
|
var_09 maps\_utility::set_force_color("y");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 159
|
|
mobile_cover_explosion(param_00)
|
|
{
|
|
self notify("stop_mobile_cover_badplace");
|
|
var_01 = spawn("script_origin",(0,0,0));
|
|
var_01.origin = self.origin;
|
|
var_02 = self.angles + (-90,90,0);
|
|
param_00 delete();
|
|
self setmodel("vehicle_mobile_cover_dstrypv");
|
|
playfx(common_scripts\utility::getfx("fusion_vehicle_mobile_cover_explosion"),var_01.origin,anglestoforward(var_02),anglestoup(var_02));
|
|
earthquake(1,1.6,var_01.origin,625);
|
|
radiusdamage(var_01.origin,100,200,100,undefined,"MOD_EXPLOSIVE");
|
|
physicsexplosionsphere(var_01.origin,200,10,1);
|
|
common_scripts\utility::play_sound_in_space("mortar_explosion",var_01.origin);
|
|
var_01 delete();
|
|
}
|
|
|
|
//Function Number: 160
|
|
mobile_turret_dropoff()
|
|
{
|
|
level.player endon("death");
|
|
common_scripts\utility::flag_wait("flag_player_zip_started");
|
|
wait(3);
|
|
common_scripts\utility::flag_set("cam_shake_start");
|
|
var_00 = common_scripts\utility::getstruct("org_mobile_turret_warbird_deploy","targetname");
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname("warbird_mobile_turret_deploy");
|
|
var_01 soundscripts\_snd::snd_message("warbird_mobile_turret_dropoff");
|
|
var_01.animname = "warbird_deploy";
|
|
var_01 maps\_vehicle::godon();
|
|
var_01 maps\_vehicle::vehicle_lights_on("running");
|
|
var_01 vehicle_turnengineoff();
|
|
var_02 = maps\_utility::spawn_anim_model("walker_deploy");
|
|
var_02.animname = "walker_deploy";
|
|
var_02 soundscripts\_snd::snd_message("walker_mobile_turret_dropoff");
|
|
var_03 = maps\_utility::spawn_anim_model("pulley_deploy");
|
|
var_03.animname = "pulley_deploy";
|
|
var_01 thread custom_dust_kickup();
|
|
var_00 maps\_anim::anim_first_frame([var_01,var_03,var_02],"mobile_turret_deploy");
|
|
var_00 thread play_warbird_mobile_turret_dropoff(var_01,var_03);
|
|
var_00 maps\_anim::anim_single_solo(var_02,"mobile_turret_deploy");
|
|
var_04 = maps\_vehicle::spawn_vehicle_from_targetname("walker_mobile_turret_deploy");
|
|
var_04 soundscripts\_snd::snd_message("spawn_walker_mobile_turret_deploy");
|
|
var_04.animname = "mobile_turret";
|
|
var_04 maps\_vehicle::godon();
|
|
var_04 vehicle_teleport(var_02.origin,var_02.angles);
|
|
var_02 delete();
|
|
common_scripts\utility::flag_set("cam_shake_stop");
|
|
var_05 = getent("clip_mobile_turret_warbird_deploy","targetname");
|
|
var_05 connectpaths();
|
|
var_05 delete();
|
|
var_06 = getent("clip_mobile_turret_warbird_deploy_player","targetname");
|
|
var_06 linkto(var_04);
|
|
thread guy_get_in_mobile_turret(var_04);
|
|
if(level.currentgen)
|
|
{
|
|
level waittill("tff_pre_transition_intro_to_middle");
|
|
var_04 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 161
|
|
guy_approach_mobile_turret()
|
|
{
|
|
}
|
|
|
|
//Function Number: 162
|
|
custom_dust_kickup()
|
|
{
|
|
wait(0.05);
|
|
self notify("stop_kicking_up_dust");
|
|
var_00 = common_scripts\utility::spawn_tag_origin();
|
|
var_00 linkto(self,"tag_origin",(0,-150,-100),(0,0,0));
|
|
thread maps\_vehicle::aircraft_wash(var_00);
|
|
self waittill("death");
|
|
self notify("stop_kicking_up_dust");
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 163
|
|
courtyard_ally_mcd_safeguard_init()
|
|
{
|
|
common_scripts\utility::array_thread(getentarray("courtyard_trig_ally_mcd_safeguard","targetname"),::courtyard_ally_mcd_safeguard);
|
|
}
|
|
|
|
//Function Number: 164
|
|
courtyard_ally_mcd_safeguard()
|
|
{
|
|
level endon("flag_walker_destroyed");
|
|
var_00 = getent(self.target,"targetname");
|
|
var_01 = common_scripts\utility::getstructarray("courtyard_pos_ally_mcd_safeguard","targetname");
|
|
for(;;)
|
|
{
|
|
self waittill("trigger",var_02);
|
|
var_03 = [level.carter,level.joker,level.burke];
|
|
foreach(var_07, var_05 in var_03)
|
|
{
|
|
var_06 = var_01[var_07];
|
|
if(var_05 istouching(var_00) && !maps\_utility::player_can_see_ai(var_05) && !maps\_utility::player_looking_at(var_06.origin,undefined,1))
|
|
{
|
|
var_05 forceteleport(var_06.origin,var_06.angles);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 165
|
|
play_warbird_mobile_turret_dropoff(param_00,param_01)
|
|
{
|
|
maps\_anim::anim_single([param_00,param_01],"mobile_turret_deploy");
|
|
param_01 linkto(param_00);
|
|
param_00 maps\_utility::vehicle_detachfrompath();
|
|
param_00 vehicle_setspeed(60,15,5);
|
|
var_02 = common_scripts\utility::getstruct("warbird_path_after_turret_deploy","targetname");
|
|
param_00 thread maps\_utility::vehicle_dynamicpath(var_02,0);
|
|
common_scripts\utility::flag_wait("warbird_turret_deploy_delete");
|
|
param_01 delete();
|
|
param_00 delete();
|
|
}
|
|
|
|
//Function Number: 166
|
|
guy_get_in_mobile_turret(param_00)
|
|
{
|
|
level.player endon("death");
|
|
if(level.nextgen)
|
|
{
|
|
level endon("street_cleanup");
|
|
}
|
|
else
|
|
{
|
|
level endon("tff_pre_transition_intro_to_middle");
|
|
}
|
|
|
|
var_01 = level.get_in_mobile_turret_guy;
|
|
var_01 notify("guy_getting_in_mobile_turret");
|
|
var_02 = getdvarint("ai_friendlySuppression");
|
|
setsaveddvar("ai_friendlySuppression",0);
|
|
var_01 maps\fusion_utility::disable_awareness();
|
|
var_01 pushplayer(1);
|
|
var_01 maps\_utility::delaythread(2,::maps\_utility::enable_sprint);
|
|
param_00 maps\_anim::anim_reach_solo(var_01,"guy_enter_mobile_turret","tag_guy");
|
|
param_00 thread maps\_anim::anim_single_solo(var_01,"guy_enter_mobile_turret","tag_guy");
|
|
param_00 maps\_anim::anim_single_solo(param_00,"guy_enter_mobile_turret");
|
|
setsaveddvar("ai_friendlySuppression",var_02);
|
|
param_00 thread maps\_vehicle_aianim::guy_enter(var_01);
|
|
level.get_in_mobile_turret_guy = undefined;
|
|
var_03 = getvehiclenode("deployed_turret_path","targetname");
|
|
param_00.target = "deployed_turret_path";
|
|
param_00 thread maps\_vehicle_code::getonpath();
|
|
param_00 thread mobile_turret_gopath();
|
|
param_00 thread monitor_turret_2_death();
|
|
param_00 thread maps\fusion_utility::kill_path_on_death();
|
|
common_scripts\utility::flag_wait("flag_mt_wall_rpg_fire");
|
|
param_00 notify("stop_vehicle_turret_ai");
|
|
var_04 = common_scripts\utility::spawn_tag_origin();
|
|
var_04 linkto(param_00,"tag_body",(10000,0,0),(0,0,0));
|
|
param_00 setturrettargetent(var_04);
|
|
common_scripts\utility::flag_wait("flag_mt_wall_rpg_impact");
|
|
wait(0.25);
|
|
param_00 maps\_vehicle::godoff();
|
|
param_00 dodamage(param_00.health + 200,(0,0,0));
|
|
param_00 thread walker_guy_death(var_01);
|
|
var_04 delete();
|
|
}
|
|
|
|
//Function Number: 167
|
|
walker_guy_death(param_00)
|
|
{
|
|
var_01 = %x4walker_wheels_destructed_death_right_npc;
|
|
param_00 = maps\_vehicle_aianim::convert_guy_to_drone(param_00,0,0);
|
|
[[ level.global_kill_func ]]("MOD_RIFLE_BULLET","torso_upper",param_00.origin);
|
|
param_00 linkto(self,"tag_guy",(0,0,0),(0,0,0));
|
|
param_00 notsolid();
|
|
param_00 setflaggedanim("death",var_01);
|
|
param_00 thread maps\fusion_fx::set_guy_on_fire();
|
|
var_02 = getanimlength(var_01);
|
|
var_03 = getnotetracktimes(var_01,"start_ragdoll");
|
|
if(isdefined(var_03) && var_03.size > 0)
|
|
{
|
|
var_02 = var_02 * var_03[0];
|
|
}
|
|
else
|
|
{
|
|
var_02 = var_02 - 0.15;
|
|
}
|
|
|
|
wait(var_02);
|
|
param_00 unlink();
|
|
}
|
|
|
|
//Function Number: 168
|
|
enemy_walker()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_enemy_walker");
|
|
level.walker = maps\_vehicle::spawn_vehicle_from_targetname("enemy_walker");
|
|
level.walker thread enemy_walker_set_launcher_targets();
|
|
level.walker soundscripts\_snd::snd_message("titan_init");
|
|
common_scripts\utility::flag_set("update_obj_pos_walker");
|
|
level.walker.mobile_turret_rocket_target = 0;
|
|
level.walker thread walker_anims();
|
|
level.walker thread manage_walker_health();
|
|
level.walker thread walker_trophy_system();
|
|
level.walker thread walker_badplace();
|
|
level.walker thread enemy_walker_kill_player_if_too_close();
|
|
thread launcher_out_of_ammo_think();
|
|
thread enemy_walker_target_player_if_targeted();
|
|
if(isalive(level.walker))
|
|
{
|
|
level.walker waittill("death");
|
|
}
|
|
|
|
level.walker setcontents(0);
|
|
common_scripts\utility::flag_set("flag_walker_destroyed");
|
|
common_scripts\utility::flag_set("update_obj_pos_security_entrance_1");
|
|
if(level.nextgen)
|
|
{
|
|
thread spawn_more_allies();
|
|
}
|
|
|
|
maps\_utility::delaythread(2,::maps\_utility::autosave_now);
|
|
var_00 = getent("color_t_street_end","targetname");
|
|
var_00 common_scripts\utility::trigger_on();
|
|
wait(1);
|
|
if(isdefined(var_00))
|
|
{
|
|
maps\_utility::activate_trigger_with_targetname("color_t_street_end");
|
|
}
|
|
}
|
|
|
|
//Function Number: 169
|
|
launcher_out_of_ammo_think()
|
|
{
|
|
level endon("flag_walker_destroyed");
|
|
level.active_objective = [];
|
|
level.inactive_objective = [];
|
|
var_00 = getent("org_obj_get_launcher_ammo","targetname");
|
|
objective_add(maps\_utility::obj("obj_launcher_ammo"),"invisible","",var_00.origin);
|
|
maps\_utility::set_objective_inactive("obj_launcher_ammo");
|
|
for(;;)
|
|
{
|
|
wait(0.5);
|
|
if(isalive(level.walker))
|
|
{
|
|
var_01 = level.player getweaponslist("primary");
|
|
if(!common_scripts\utility::array_contains(var_01,"iw5_stingerm7_sp"))
|
|
{
|
|
launcher_out_of_ammo_obj_clear(var_00);
|
|
continue;
|
|
}
|
|
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(issubstr(var_03,"iw5_stingerm7_sp"))
|
|
{
|
|
if(level.player getammocount("iw5_stingerm7_sp") > 0)
|
|
{
|
|
launcher_out_of_ammo_obj_clear(var_00);
|
|
common_scripts\utility::flag_clear("flag_launcher_out_of_ammo");
|
|
common_scripts\utility::flag_set("flag_launcher_ammo_gathered");
|
|
}
|
|
|
|
if(level.player getammocount("iw5_stingerm7_sp") == 0)
|
|
{
|
|
launcher_out_of_ammo_obj(var_00,var_01);
|
|
common_scripts\utility::flag_set("flag_launcher_out_of_ammo");
|
|
common_scripts\utility::flag_clear("flag_launcher_ammo_gathered");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 170
|
|
launcher_out_of_ammo_obj(param_00,param_01)
|
|
{
|
|
wait(0.5);
|
|
foreach(var_03 in param_01)
|
|
{
|
|
if(issubstr(var_03,"iw5_stingerm7_sp"))
|
|
{
|
|
if(level.player getammocount("iw5_stingerm7_sp") == 0)
|
|
{
|
|
if(maps\_utility::objective_is_inactive("obj_launcher_ammo"))
|
|
{
|
|
objective_state_nomessage(maps\_utility::obj("obj_launcher_ammo"),"active");
|
|
objective_current_nomessage(maps\_utility::obj("obj_launcher_ammo"),maps\_utility::obj("shutdown_reactor"));
|
|
objective_setpointertextoverride(maps\_utility::obj("obj_launcher_ammo"),&"FUSION_OBJ_AMMO_CRATE");
|
|
maps\_utility::set_objective_active("obj_launcher_ammo");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 171
|
|
launcher_out_of_ammo_obj_clear(param_00)
|
|
{
|
|
if(maps\_utility::objective_is_active("obj_launcher_ammo"))
|
|
{
|
|
objective_delete(maps\_utility::obj("obj_launcher_ammo"));
|
|
}
|
|
}
|
|
|
|
//Function Number: 172
|
|
enemy_walker_set_launcher_targets()
|
|
{
|
|
while(!thread does_player_have_smaw())
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
level.scripttargets = [];
|
|
var_00 = ["kneeb_fr","kneeb_fl","kneeb_kr","kneeb_kl","shoulder_fl","shoulder_fr","launcher_left","launcher_right","tag_sparks2","tag_sparks3"];
|
|
foreach(var_04, var_02 in var_00)
|
|
{
|
|
var_03[var_04] = common_scripts\utility::spawn_tag_origin();
|
|
var_03[var_04].origin = self gettagorigin(var_02);
|
|
var_03[var_04].stinger_override_tags = ["tag_origin"];
|
|
var_03[var_04].script_team = "axis";
|
|
var_03[var_04] linkto(level.walker,var_02);
|
|
var_03[var_04].health = 100;
|
|
var_03[var_04].walkernode = 1;
|
|
level.scripttargets[level.scripttargets.size] = var_03[var_04];
|
|
}
|
|
}
|
|
|
|
//Function Number: 173
|
|
enemy_walker_kill_player_if_too_close()
|
|
{
|
|
self endon("death");
|
|
common_scripts\utility::flag_wait("player_too_close_to_walker");
|
|
maps\_vehicle::godon();
|
|
level.player endon("death");
|
|
level.player enablehealthshield(0);
|
|
foreach(var_01 in self.mgturret)
|
|
{
|
|
var_01 notify("stop_vehicle_turret_ai");
|
|
var_01 thread walker_tank_turret_fire_at_player(level.player);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
level.player dodamage(15 / level.player.damagemultiplier,self.origin,self);
|
|
var_03 = randomfloatrange(0.1,0.3);
|
|
wait(var_03);
|
|
}
|
|
}
|
|
|
|
//Function Number: 174
|
|
enemy_walker_target_player_if_targeted()
|
|
{
|
|
self endon("flag_walker_destroyed");
|
|
var_00 = 0;
|
|
var_01 = 0;
|
|
if(isdefined(level.player.stingerm7_info) && isdefined(level.player.stingerm7_info.locked_targets))
|
|
{
|
|
var_01 = level.player.stingerm7_info.locked_targets.size;
|
|
}
|
|
|
|
var_00 = var_01;
|
|
for(;;)
|
|
{
|
|
if(isdefined(level.player.stingerm7_info) && isdefined(level.player.stingerm7_info.locked_targets))
|
|
{
|
|
var_01 = level.player.stingerm7_info.locked_targets.size;
|
|
}
|
|
|
|
if(var_00 != var_01)
|
|
{
|
|
if(var_01 == 0)
|
|
{
|
|
walker_tank_turret_fire_at_player_clear();
|
|
}
|
|
|
|
if(isdefined(level.player.stingerm7_info) && isdefined(level.player.stingerm7_info.locked_targets))
|
|
{
|
|
var_02 = level.player.stingerm7_info.locked_targets;
|
|
foreach(var_04 in var_02)
|
|
{
|
|
if(isdefined(var_04.ent.walkernode) && var_04.ent.walkernode == 1)
|
|
{
|
|
thread walker_tank_turret_fire_at_player_think();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var_00 = var_01;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 175
|
|
walker_tank_turret_fire_at_player_think()
|
|
{
|
|
self notify("walker_hit");
|
|
self endon("walker_hit");
|
|
level endon("flag_walker_death_anim_start");
|
|
level.walker vehicle_scripts\_vehicle_turret_ai::vehicle_set_forced_target(level.player);
|
|
}
|
|
|
|
//Function Number: 176
|
|
walker_tank_turret_fire_at_player_clear()
|
|
{
|
|
level.walker.ai_target_force_scripted = undefined;
|
|
}
|
|
|
|
//Function Number: 177
|
|
walker_tank_turret_fire_at_player(param_00)
|
|
{
|
|
self endon("death");
|
|
self endon("stop_vehicle_turret_ai");
|
|
self setturretteam("axis");
|
|
self setmode("manual");
|
|
self settargetentity(param_00);
|
|
self turretfireenable();
|
|
self startfiring();
|
|
}
|
|
|
|
//Function Number: 178
|
|
spawn_more_allies()
|
|
{
|
|
var_00 = getentarray("allies_street_end","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(isdefined(var_02))
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 179
|
|
combat_street_seeker_ai()
|
|
{
|
|
var_00 = 1;
|
|
var_01 = [];
|
|
while(!common_scripts\utility::flag("flag_enemy_walker"))
|
|
{
|
|
var_02 = getaiarray("axis");
|
|
wait 0.05;
|
|
var_01 = [];
|
|
for(var_03 = 0;var_03 < var_00;var_03++)
|
|
{
|
|
if(var_02.size > var_03)
|
|
{
|
|
var_04 = var_02[var_03];
|
|
if(isalive(var_04))
|
|
{
|
|
if(isdefined(var_04.magic_bullet_shield))
|
|
{
|
|
var_04 maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
var_04.playerseeker = 1;
|
|
var_04 cleargoalvolume();
|
|
var_04 thread maps\_utility::player_seek();
|
|
var_04.favoriteenemy = level.player;
|
|
var_01[var_01.size] = var_04;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(var_01.size > 0)
|
|
{
|
|
maps\_utility::array_wait(var_01,"death");
|
|
}
|
|
|
|
if(common_scripts\utility::flag("player_in_x4walker"))
|
|
{
|
|
common_scripts\utility::flag_waitopen("player_in_x4walker");
|
|
}
|
|
|
|
wait(5);
|
|
}
|
|
|
|
foreach(var_06 in var_01)
|
|
{
|
|
if(isalive(var_06))
|
|
{
|
|
var_06 notify("goal");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 180
|
|
walker_badplace()
|
|
{
|
|
while(!common_scripts\utility::flag("flag_walker_tank_on_mount"))
|
|
{
|
|
badplace_cylinder("walker_tank_badplace",0.5,self.origin,280,300,"axis","team3","allies");
|
|
wait(0.55);
|
|
}
|
|
}
|
|
|
|
//Function Number: 181
|
|
walker_missile_barrage()
|
|
{
|
|
wait(0.25);
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_01");
|
|
playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_00,"tag_origin");
|
|
var_00 soundscripts\_snd::snd_message("titan_missile");
|
|
wait(0.15);
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_02");
|
|
playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_01,"tag_origin");
|
|
var_01 soundscripts\_snd::snd_message("titan_missile");
|
|
wait(0.15);
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_03");
|
|
playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_02,"tag_origin");
|
|
var_02 soundscripts\_snd::snd_message("titan_missile");
|
|
wait(1.15);
|
|
var_03 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_04");
|
|
playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_03,"tag_origin");
|
|
var_03 soundscripts\_snd::snd_message("titan_missile");
|
|
wait(0.15);
|
|
var_04 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_05");
|
|
playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_04,"tag_origin");
|
|
var_04 soundscripts\_snd::snd_message("titan_missile");
|
|
wait(0.15);
|
|
var_05 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_06");
|
|
playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_05,"tag_origin");
|
|
var_05 soundscripts\_snd::snd_message("titan_missile");
|
|
wait(0.15);
|
|
var_06 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("tank_missile_07");
|
|
playfxontag(common_scripts\utility::getfx("walker_tank_rocket_wv"),var_06,"tag_origin");
|
|
var_06 soundscripts\_snd::snd_message("titan_missile");
|
|
}
|
|
|
|
//Function Number: 182
|
|
walker_anims()
|
|
{
|
|
self endon("stop_walker_tank_anims");
|
|
level.player endon("death");
|
|
self.animname = "walker_tank";
|
|
var_00 = common_scripts\utility::getstruct("org_enemy_walker","targetname");
|
|
soundscripts\_snd::snd_message("titan_enter");
|
|
var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_enter");
|
|
self.state = "forward";
|
|
self.death_state = "forward";
|
|
self.prev_state = "forward";
|
|
common_scripts\utility::flag_set("flag_walker_tank_on_mount");
|
|
var_00 thread maps\_anim::anim_loop_solo(self,"fusion_walker_tank_fwd_idle","walker_stop_idle");
|
|
self disconnectpaths();
|
|
for(;;)
|
|
{
|
|
wait(randomfloatrange(5,10));
|
|
var_01 = [];
|
|
switch(self.state)
|
|
{
|
|
case "forward":
|
|
var_01 = ["left","right"];
|
|
break;
|
|
|
|
case "left":
|
|
var_01 = ["forward","right"];
|
|
break;
|
|
|
|
case "right":
|
|
var_01 = ["forward","left"];
|
|
break;
|
|
}
|
|
|
|
self.prev_state = self.state;
|
|
if(common_scripts\utility::cointoss())
|
|
{
|
|
self.state = var_01[0];
|
|
}
|
|
else
|
|
{
|
|
self.state = var_01[1];
|
|
}
|
|
|
|
var_00 notify("walker_stop_idle");
|
|
if(self.state == "left")
|
|
{
|
|
if(self.prev_state == "right")
|
|
{
|
|
self.death_state = "right";
|
|
var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_right_2_fwd");
|
|
self.death_state = "forward";
|
|
}
|
|
|
|
var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_fwd_2_left");
|
|
self.death_state = "left";
|
|
var_00 thread maps\_anim::anim_loop_solo(self,"fusion_walker_tank_left_idle","walker_stop_idle");
|
|
}
|
|
|
|
if(self.state == "right")
|
|
{
|
|
if(self.prev_state == "left")
|
|
{
|
|
self.death_state = "left";
|
|
var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_left_2_fwd");
|
|
self.death_state = "forward";
|
|
}
|
|
|
|
var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_fwd_2_right");
|
|
self.death_state = "right";
|
|
var_00 thread maps\_anim::anim_loop_solo(self,"fusion_walker_tank_right_idle","walker_stop_idle");
|
|
}
|
|
|
|
if(self.state == "forward")
|
|
{
|
|
if(self.prev_state == "left")
|
|
{
|
|
self.death_state = "left";
|
|
var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_left_2_fwd");
|
|
}
|
|
|
|
if(self.prev_state == "right")
|
|
{
|
|
self.death_state = "right";
|
|
var_00 maps\_anim::anim_single_solo(self,"fusion_walker_tank_right_2_fwd");
|
|
}
|
|
|
|
self.death_state = "forward";
|
|
var_00 thread maps\_anim::anim_loop_solo(self,"fusion_walker_tank_fwd_idle","walker_stop_idle");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 183
|
|
walker_trophy_system()
|
|
{
|
|
self endon("death");
|
|
level.player endon("death");
|
|
self.trophy_count = 5;
|
|
self.current_projectile = 1;
|
|
while(self.trophy_count >= 0)
|
|
{
|
|
level waittill("stinger_fired",var_00,var_01);
|
|
foreach(var_03 in var_01)
|
|
{
|
|
thread player_projectile_think(var_03,self);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 184
|
|
player_projectile_think(param_00,param_01)
|
|
{
|
|
level.player endon("projectile_impact");
|
|
param_00 endon("death");
|
|
param_01 endon("death");
|
|
level.player endon("death");
|
|
var_02 = 512;
|
|
if(param_01.trophy_count <= 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
while(isdefined(param_00))
|
|
{
|
|
var_03 = distance(param_00.origin,param_01.origin);
|
|
if(var_03 <= var_02)
|
|
{
|
|
playfx(common_scripts\utility::getfx("trophy_ignition_smoke"),param_01.origin + (0,0,96));
|
|
playfx(common_scripts\utility::getfx("trophy_explosion"),param_00.origin);
|
|
soundscripts\_snd::snd_message("trophy_system_explosion",param_00.origin);
|
|
param_01.trophy_count--;
|
|
if(param_01.current_projectile <= 2)
|
|
{
|
|
common_scripts\utility::flag_set("walker_trophy_" + param_01.current_projectile);
|
|
}
|
|
|
|
param_01.current_projectile++;
|
|
param_00 delete();
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 185
|
|
manage_walker_health()
|
|
{
|
|
self endon("death");
|
|
level.player endon("death");
|
|
maps\_vehicle::godon();
|
|
thread walker_damage_fx();
|
|
wait_for_walker_to_be_hit_by_smaw();
|
|
common_scripts\utility::flag_set("walker_damaged");
|
|
wait(1);
|
|
wait_for_walker_to_be_hit_by_smaw();
|
|
objective_state_nomessage(maps\_utility::obj("use_smaw"),"done");
|
|
objective_state_nomessage(maps\_utility::obj("obj_launcher_ammo"),"done");
|
|
self notify("stop_vehicle_turret_ai");
|
|
self notify("stop_walker_tank_anims");
|
|
foreach(var_01 in level.scripttargets)
|
|
{
|
|
if(isdefined(var_01) && var_01.health > 0)
|
|
{
|
|
var_01 kill();
|
|
}
|
|
}
|
|
|
|
level.stinger_targets = common_scripts\utility::array_remove_array(level.stinger_targets,level.scripttargets);
|
|
maps\_utility::array_delete(level.scripttargets);
|
|
level.scripttargets = undefined;
|
|
walker_play_death_anim();
|
|
}
|
|
|
|
//Function Number: 186
|
|
wait_for_walker_to_be_hit_by_smaw()
|
|
{
|
|
level.player endon("death");
|
|
for(;;)
|
|
{
|
|
self waittill("damage",var_00,var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09);
|
|
if(isplayer(var_01) && var_04 == "MOD_PROJECTILE" && var_09 == "iw5_stingerm7_sp")
|
|
{
|
|
soundscripts\_snd::snd_message("titan_take_damage_from_smaw");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 187
|
|
walker_damage_fx()
|
|
{
|
|
common_scripts\utility::flag_wait("walker_damaged");
|
|
playfxontag(common_scripts\utility::getfx("vehicle_damaged_sparks_l"),self,"TAG_SPARKS1");
|
|
thread maps\_utility::play_sound_on_tag("titan_take_smaw_dmg_sparks","TAG_SPARKS1",1);
|
|
wait 0.05;
|
|
playfxontag(common_scripts\utility::getfx("vehicle_damaged_sparks_l"),self,"TAG_SPARKS2");
|
|
thread maps\_utility::play_sound_on_tag("titan_take_smaw_dmg_sparks","TAG_SPARKS1",1);
|
|
wait 0.05;
|
|
playfxontag(common_scripts\utility::getfx("vehicle_damaged_sparks_l"),self,"TAG_SPARKS3");
|
|
thread maps\_utility::play_sound_on_tag("titan_take_smaw_dmg_sparks","TAG_SPARKS1",1);
|
|
wait 0.05;
|
|
playfxontag(common_scripts\utility::getfx("vehicle_damaged_sparks_l"),self,"TAG_SPARKS4");
|
|
thread maps\_utility::play_sound_on_tag("titan_take_smaw_dmg_sparks","TAG_SPARKS1",1);
|
|
wait 0.05;
|
|
}
|
|
|
|
//Function Number: 188
|
|
walker_play_death_anim()
|
|
{
|
|
common_scripts\utility::flag_set("flag_walker_death_anim_start");
|
|
var_00 = "";
|
|
switch(self.death_state)
|
|
{
|
|
case "forward":
|
|
var_00 = "fusion_walker_tank_fwd_idle_death";
|
|
break;
|
|
|
|
case "left":
|
|
var_00 = "fusion_walker_tank_left_idle_death";
|
|
break;
|
|
|
|
case "right":
|
|
var_00 = "fusion_walker_tank_right_idle_death";
|
|
break;
|
|
}
|
|
|
|
var_01 = common_scripts\utility::getstruct("org_enemy_walker","targetname");
|
|
thread maps\fusion_fx::walker_dying_fx();
|
|
soundscripts\_snd::snd_message("titan_death");
|
|
var_01 maps\_anim::anim_single_solo(self,var_00);
|
|
}
|
|
|
|
//Function Number: 189
|
|
destroy_walker_tank(param_00)
|
|
{
|
|
param_00 vehicle_teleport(param_00.origin,param_00.angles - (0,28.225,0));
|
|
param_00 setmodel("vehicle_walker_tank_dstrypv");
|
|
playfxontag(common_scripts\utility::getfx("walker_explosion"),param_00,"TAG_DEATH_FX");
|
|
var_01 = param_00.origin;
|
|
var_02 = param_00 gettagorigin("TAG_FIRE");
|
|
var_03 = param_00 gettagangles("TAG_FIRE");
|
|
var_04 = param_00 gettagorigin("TAG_FIRE2");
|
|
var_05 = param_00 gettagangles("TAG_FIRE2");
|
|
var_06 = param_00 gettagorigin("TAG_SPARKS");
|
|
var_07 = param_00 gettagorigin("TAG_SPARKS");
|
|
param_00 kill(param_00.origin,level.player);
|
|
wait(0.1);
|
|
earthquake(1,1.6,var_01,1350);
|
|
radiusdamage(var_01,400,200,100,undefined,"MOD_EXPLOSIVE");
|
|
physicsexplosionsphere(var_01,400,10,1);
|
|
wait(1);
|
|
playfx(common_scripts\utility::getfx("vehicle_destroyed_fire_m"),var_02,anglestoforward(var_03),anglestoup(var_03));
|
|
playfx(common_scripts\utility::getfx("vehicle_destroyed_fire_m"),var_04,anglestoforward(var_05),anglestoup(var_05));
|
|
playfx(common_scripts\utility::getfx("electrical_sparks_runner"),var_06,anglestoforward(var_07),anglestoup(var_07));
|
|
}
|
|
|
|
//Function Number: 190
|
|
add_to_javelin_targeting()
|
|
{
|
|
target_set(self,(0,0,56));
|
|
target_setjavelinonly(self,1);
|
|
if(isalive(level.walker))
|
|
{
|
|
self waittill("death");
|
|
}
|
|
|
|
target_remove(self);
|
|
}
|
|
|
|
//Function Number: 191
|
|
btr_turret_think()
|
|
{
|
|
self endon("death");
|
|
self endon("kill_btr_turret_think");
|
|
thread maps\_vehicle::vehicle_turret_scan_on();
|
|
for(;;)
|
|
{
|
|
wait(randomfloatrange(0.3,0.8));
|
|
var_00 = btr_get_target();
|
|
if(isdefined(var_00))
|
|
{
|
|
btr_fire_at_target(var_00);
|
|
wait(0.3);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 192
|
|
btr_fire_at_target(param_00)
|
|
{
|
|
param_00 endon("death");
|
|
level endon("walker_death_anim_started");
|
|
self setturrettargetent(param_00,(0,0,32));
|
|
if(common_scripts\utility::cointoss())
|
|
{
|
|
if(isdefined(self.mgturret))
|
|
{
|
|
foreach(var_02 in self.mgturret)
|
|
{
|
|
if(isdefined(var_02))
|
|
{
|
|
var_02 setturretteam("axis");
|
|
var_02 setmode("manual");
|
|
var_02 settargetentity(param_00);
|
|
var_02 startfiring();
|
|
}
|
|
}
|
|
}
|
|
|
|
wait(randomfloatrange(3,5));
|
|
if(isdefined(self.mgturret))
|
|
{
|
|
foreach(var_02 in self.mgturret)
|
|
{
|
|
if(isdefined(var_02))
|
|
{
|
|
var_02 cleartargetentity();
|
|
var_02 stopfiring();
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
for(var_06 = 0;var_06 < randomintrange(1,3);var_06++)
|
|
{
|
|
burst_fire_weapon();
|
|
wait(0.5);
|
|
}
|
|
}
|
|
|
|
//Function Number: 193
|
|
burst_fire_weapon()
|
|
{
|
|
for(var_00 = 0;var_00 < randomintrange(2,4);var_00++)
|
|
{
|
|
self fireweapon();
|
|
wait(0.2);
|
|
}
|
|
}
|
|
|
|
//Function Number: 194
|
|
btr_get_target()
|
|
{
|
|
var_00 = 4;
|
|
var_01 = getaiarray("allies");
|
|
for(var_02 = 0;var_02 < var_00;var_02++)
|
|
{
|
|
var_01[var_01.size] = level.player;
|
|
}
|
|
|
|
return common_scripts\utility::random(var_01);
|
|
}
|
|
|
|
//Function Number: 195
|
|
reactor_entrance_rally()
|
|
{
|
|
var_00 = getentarray("security_door_right","targetname");
|
|
var_01 = getentarray("security_door_left","targetname");
|
|
foreach(var_03 in var_00)
|
|
{
|
|
if(var_03.classname == "script_brushmodel")
|
|
{
|
|
var_03 disconnectpaths();
|
|
}
|
|
}
|
|
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(var_03.classname == "script_brushmodel")
|
|
{
|
|
var_03 disconnectpaths();
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_walker_destroyed");
|
|
var_07 = common_scripts\utility::getstruct("security_doors_animnode","targetname");
|
|
var_08 = spawn("script_origin",var_07.origin);
|
|
var_08.angles = var_07.angles;
|
|
var_09 = "fusion_security_doors_approach";
|
|
var_0A = "fusion_security_doors_idle";
|
|
var_0B = "fusion_security_doors_open";
|
|
var_0C = "security_door_ender";
|
|
var_0D = [];
|
|
var_0D[var_0D.size] = level.burke;
|
|
var_0D[var_0D.size] = level.carter;
|
|
var_0E = maps\_utility::spawn_anim_model("security_door_right");
|
|
var_0F = maps\_utility::spawn_anim_model("security_door_left");
|
|
var_10 = [];
|
|
var_10[var_10.size] = var_0E;
|
|
var_10[var_10.size] = var_0F;
|
|
var_08 maps\_anim::anim_first_frame(var_10,var_0B);
|
|
foreach(var_03 in var_00)
|
|
{
|
|
var_03 linkto(var_0E,"tag_origin_animated");
|
|
}
|
|
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 linkto(var_0F,"tag_origin_animated");
|
|
}
|
|
|
|
level.burke thread security_doors_approach(var_08,var_09,var_0A,var_0C);
|
|
level.carter thread security_doors_approach(var_08,var_09,var_0A,var_0C);
|
|
level waittill("security_door_npc_ready");
|
|
level waittill("security_door_npc_ready");
|
|
common_scripts\utility::flag_wait("flag_player_at_reactor_door");
|
|
var_08 notify(var_0C);
|
|
var_08 thread maps\_anim::anim_single_solo_run(level.burke,var_0B);
|
|
var_08 thread maps\_anim::anim_single_solo(var_0E,var_0B);
|
|
wait(0.5);
|
|
var_08 thread maps\_anim::anim_single_solo_run(level.carter,var_0B);
|
|
var_08 thread maps\_anim::anim_single_solo(var_0F,var_0B);
|
|
foreach(var_03 in var_00)
|
|
{
|
|
if(var_03.classname == "script_brushmodel")
|
|
{
|
|
var_03 connectpaths();
|
|
}
|
|
}
|
|
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(var_03.classname == "script_brushmodel")
|
|
{
|
|
var_03 connectpaths();
|
|
}
|
|
}
|
|
|
|
maps\_utility::activate_trigger_with_targetname("security_room_doors_open");
|
|
}
|
|
|
|
//Function Number: 196
|
|
security_doors_approach(param_00,param_01,param_02,param_03)
|
|
{
|
|
maps\_utility::disable_ai_color();
|
|
self notify("stop_goto_node");
|
|
self notify("goal");
|
|
param_00 maps\_anim::anim_reach_solo(self,param_01);
|
|
param_00 maps\_anim::anim_single_solo(self,param_01);
|
|
maps\_utility::enable_cqbwalk();
|
|
level notify("security_door_npc_ready");
|
|
maps\_utility::enable_ai_color();
|
|
param_00 maps\_anim::anim_loop_solo(self,param_02,param_03);
|
|
}
|
|
|
|
//Function Number: 197
|
|
reactor_entrance_rally_anim(param_00)
|
|
{
|
|
self endon("death");
|
|
var_01 = self.animname + "_ender";
|
|
maps\_utility::disable_ai_color();
|
|
param_00 maps\_anim::anim_reach_solo(self,"reactor_entrance_st");
|
|
maps\_utility::ent_flag_set("flag_reactor_entrance_ready");
|
|
param_00 maps\_anim::anim_single_solo(self,"reactor_entrance_st");
|
|
param_00 thread maps\_anim::anim_loop_solo(self,"reactor_entrance_idle",var_01);
|
|
common_scripts\utility::flag_wait("interior_allies");
|
|
param_00 notify(var_01);
|
|
}
|
|
|
|
//Function Number: 198
|
|
postspawn_rpg_vehicle()
|
|
{
|
|
self setmodel("projectile_rpg7");
|
|
var_00 = common_scripts\utility::getfx("rpg_trail");
|
|
playfxontag(var_00,self,"tag_origin");
|
|
var_00 = common_scripts\utility::getfx("rpg_muzzle");
|
|
playfxontag(var_00,self,"tag_origin");
|
|
self playsound("weap_rpg_fire_npc");
|
|
if(isdefined(self.script_sound))
|
|
{
|
|
if(isdefined(self.script_wait))
|
|
{
|
|
common_scripts\utility::delaycall(self.script_wait,::playsound,self.script_sound);
|
|
}
|
|
else
|
|
{
|
|
self playsound(self.script_sound);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self playloopsound("weap_rpg_loop");
|
|
}
|
|
|
|
self waittill("reached_end_node");
|
|
self notify("explode",self.origin);
|
|
var_01 = 0;
|
|
if(isdefined(self.script_exploder))
|
|
{
|
|
common_scripts\_exploder::exploder(self.script_exploder);
|
|
var_01 = 1;
|
|
}
|
|
else if(isdefined(self.currentnode))
|
|
{
|
|
var_02 = undefined;
|
|
var_03 = self.currentnode;
|
|
while(isdefined(var_03))
|
|
{
|
|
var_02 = var_03;
|
|
if(!isdefined(var_03.target))
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_03 = getvehiclenode(var_03.target,"targetname");
|
|
}
|
|
|
|
if(isdefined(var_02.target))
|
|
{
|
|
var_04 = common_scripts\utility::getstruct(var_02.target,"targetname");
|
|
if(isdefined(var_04))
|
|
{
|
|
level thread rpg_explosion(var_04.origin,var_04.angles);
|
|
var_01 = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!var_01)
|
|
{
|
|
var_04 = spawnstruct();
|
|
var_04.origin = self.origin;
|
|
var_04.angles = (-90,0,0);
|
|
level thread rpg_explosion(var_04.origin,var_04.angles);
|
|
}
|
|
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 199
|
|
rpg_explosion(param_00,param_01)
|
|
{
|
|
var_02 = common_scripts\utility::getfx("rpg_explode");
|
|
playfx(var_02,param_00,anglestoforward(param_01),anglestoup(param_01));
|
|
radiusdamage(param_00,200,150,50);
|
|
thread common_scripts\utility::play_sound_in_space("null",param_00);
|
|
}
|
|
|
|
//Function Number: 200
|
|
interior_gameplay()
|
|
{
|
|
thread interior_allies();
|
|
thread security_room();
|
|
thread laboratory();
|
|
thread reactor_room();
|
|
thread turbine_room();
|
|
thread control_room();
|
|
level.pipesdamage = 0;
|
|
}
|
|
|
|
//Function Number: 201
|
|
interior_allies()
|
|
{
|
|
waittillframeend;
|
|
common_scripts\utility::flag_wait_any("interior_allies","flag_walker_destroyed");
|
|
level.burke maps\_utility::set_force_color("r");
|
|
level.joker maps\_utility::set_force_color("g");
|
|
level.carter maps\_utility::set_force_color("o");
|
|
}
|
|
|
|
//Function Number: 202
|
|
security_room()
|
|
{
|
|
if(level.start_point != "fly_in_animated" && level.start_point != "fly_in_animated_part2" && level.start_point != "courtyard" && level.start_point != "security_room")
|
|
{
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::flag_wait_any("interior_allies","flag_walker_destroyed");
|
|
var_00 = "security_room_check_corpse";
|
|
var_01 = "security_room_check_corpse_idle";
|
|
var_02 = "security_room_check_corpse_idle_stop";
|
|
var_03 = getent("fusion_security_room_corpse","targetname") maps\_utility::spawn_ai(1);
|
|
var_03 setcontents(0);
|
|
var_03.animname = "generic";
|
|
var_04 = common_scripts\utility::getstruct("fusion_security_room_corpse_fall_npc","targetname");
|
|
var_05 = spawn("script_origin",var_04.origin);
|
|
var_06 = (0,0,0);
|
|
if(isdefined(var_04.angles))
|
|
{
|
|
var_06 = var_04.angles;
|
|
var_05.angles = var_04.angles;
|
|
}
|
|
|
|
var_03 clearanim(%body,0.2);
|
|
var_03 stopanimscripted();
|
|
var_05 maps\_anim::anim_first_frame_solo(var_03,var_00);
|
|
wait(0.05);
|
|
var_07 = spawn("script_model",var_03 gettagorigin("TAG_WEAPON_RIGHT"));
|
|
var_07.angles = var_03 gettagangles("TAG_WEAPON_RIGHT");
|
|
var_07 setmodel("npc_m160");
|
|
var_07 linkto(var_03,"TAG_WEAPON_RIGHT");
|
|
var_08 = getent("security_room_elevator_doors","targetname");
|
|
var_08 maps\_utility::assign_animtree("security_room_elevator_doors");
|
|
var_05 maps\_anim::anim_first_frame_solo(var_08,"security_room_open_elevator");
|
|
var_09 = getent("security_elevator_door_left","targetname");
|
|
var_0A = getent("security_elevator_door_right","targetname");
|
|
var_09 linkto(var_08,"elevator_back_left_jnt");
|
|
var_0A linkto(var_08,"elevator_back_right_jnt");
|
|
common_scripts\utility::flag_wait("security_room_check_corpse");
|
|
maps\_utility::battlechatter_off("allies");
|
|
level.burke thread start_cqb_when_near(getstartorigin(var_05.origin,var_06,level.scr_anim["burke"][var_00]));
|
|
var_05 maps\_anim::anim_reach_solo(level.burke,var_00);
|
|
maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"vo_security_room_elevator_access");
|
|
thread security_elevator_open();
|
|
soundscripts\_snd::snd_message("start_dead_guy_foley",var_03);
|
|
var_05 thread maps\_anim::anim_generic(var_03,var_00);
|
|
var_05 maps\_anim::anim_single_solo(level.burke,var_00);
|
|
if(!common_scripts\utility::flag("elevator_door_open"))
|
|
{
|
|
var_05 thread maps\_anim::anim_loop_solo(level.burke,var_01,var_02);
|
|
common_scripts\utility::flag_wait("elevator_door_open");
|
|
var_05 notify(var_02);
|
|
}
|
|
|
|
var_0B = "security_room_turn_to_elevator";
|
|
var_0C = "elevator_descent_start_idle";
|
|
var_05 maps\_anim::anim_single_solo(level.burke,var_0B);
|
|
common_scripts\utility::flag_set("burke_facing_elevator");
|
|
var_05 thread maps\_anim::anim_loop_solo(level.burke,var_0C,var_0C);
|
|
wait(2);
|
|
common_scripts\utility::flag_wait("elevator_descent");
|
|
var_05 notify(var_0C);
|
|
var_05 delete();
|
|
if(level.currentgen)
|
|
{
|
|
level waittill("tff_pre_transition_intro_to_middle");
|
|
var_09 delete();
|
|
var_0A delete();
|
|
var_07 delete();
|
|
var_03 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 203
|
|
start_cqb_when_near(param_00)
|
|
{
|
|
var_01 = 40000;
|
|
while(distancesquared(self.origin,param_00) > var_01)
|
|
{
|
|
wait(0.1);
|
|
}
|
|
|
|
maps\_utility::enable_cqbwalk();
|
|
}
|
|
|
|
//Function Number: 204
|
|
security_elevator_open()
|
|
{
|
|
var_00 = common_scripts\utility::getstruct("fusion_security_room_corpse_fall_npc","targetname");
|
|
var_01 = spawn("script_origin",var_00.origin);
|
|
if(isdefined(var_00.angles))
|
|
{
|
|
var_01.angles = var_00.angles;
|
|
}
|
|
|
|
var_02 = "security_room_approach_elevator";
|
|
var_03 = "security_room_open_elevator_idle";
|
|
var_04 = "end_approach_idle";
|
|
var_05 = "security_room_open_elevator";
|
|
var_06 = "security_room_elevator_opened_idle";
|
|
soundscripts\_snd::snd_message("start_elevator_zone_audio");
|
|
var_07 = [];
|
|
var_07[var_07.size] = level.joker;
|
|
var_07[var_07.size] = level.carter;
|
|
level.joker maps\_utility::disable_ai_color();
|
|
level.carter maps\_utility::disable_ai_color();
|
|
level.burke maps\_utility::disable_ai_color();
|
|
common_scripts\utility::array_thread(var_07,::security_elevator_approach,var_01,var_02,var_03,var_04);
|
|
level waittill("elevator_open_guy_ready");
|
|
level waittill("elevator_open_guy_ready");
|
|
common_scripts\utility::flag_wait("elevator_door_open");
|
|
var_01 notify(var_04);
|
|
common_scripts\_exploder::exploder("elevator_door_open_fx");
|
|
var_08 = getent("security_room_elevator_doors","targetname");
|
|
var_08 maps\_utility::assign_animtree("security_room_elevator_doors");
|
|
common_scripts\utility::flag_set("vo_security_room_elevator_open");
|
|
level.joker thread security_elevator_open_anim(var_01,1,var_05,var_06);
|
|
level.carter thread security_elevator_open_anim(var_01,0,var_05,var_06);
|
|
var_01 thread maps\_anim::anim_single_solo(var_08,var_05);
|
|
soundscripts\_snd::snd_message("Sec_Room_Elevator_Open");
|
|
security_elevator_descent(var_01);
|
|
var_01 delete();
|
|
}
|
|
|
|
//Function Number: 205
|
|
security_elevator_approach(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(self == level.joker)
|
|
{
|
|
wait(4);
|
|
}
|
|
|
|
param_00 maps\_anim::anim_reach_solo(self,param_01);
|
|
if(self == level.joker)
|
|
{
|
|
soundscripts\_snd::snd_message("Sec_Room_Move_To_Elevator");
|
|
}
|
|
|
|
param_00 maps\_anim::anim_single_solo(self,param_01);
|
|
if(self == level.joker)
|
|
{
|
|
soundscripts\_snd::snd_message("Sec_Room_Attach_To_Elevator");
|
|
}
|
|
|
|
param_00 thread maps\_anim::anim_loop_solo(self,param_02,param_03);
|
|
level notify("elevator_open_guy_ready");
|
|
}
|
|
|
|
//Function Number: 206
|
|
security_elevator_open_anim(param_00,param_01,param_02,param_03)
|
|
{
|
|
var_04 = "stop_opened_idle";
|
|
var_05 = spawn("script_origin",param_00.origin);
|
|
var_05 maps\_anim::anim_single_solo(self,param_02);
|
|
if(!common_scripts\utility::flag("elevator_descent_player"))
|
|
{
|
|
var_05 thread maps\_anim::anim_loop_solo(self,param_03,var_04);
|
|
common_scripts\utility::flag_wait("elevator_descent_player");
|
|
var_05 notify(var_04);
|
|
}
|
|
}
|
|
|
|
//Function Number: 207
|
|
security_elevator_descent(param_00)
|
|
{
|
|
thread security_elevator_descent_player();
|
|
common_scripts\utility::flag_wait("burke_facing_elevator");
|
|
wait(2);
|
|
common_scripts\utility::flag_wait("elevator_descent");
|
|
level.guys_down_elevator = 0;
|
|
level.burke thread security_elevator_descent_ai(param_00);
|
|
thread security_elevator_prompt();
|
|
common_scripts\utility::flag_wait("elevator_descent_player");
|
|
wait(1);
|
|
level.joker thread security_elevator_descent_ai(param_00);
|
|
level.carter security_elevator_descent_ai(param_00);
|
|
}
|
|
|
|
//Function Number: 208
|
|
security_elevator_prompt()
|
|
{
|
|
wait(4);
|
|
if(common_scripts\utility::flag("elevator_descent_player"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = maps\_shg_utility::hint_button_position("jump",common_scripts\utility::getstruct("obj_pos_security_elevator","targetname").origin,128,512);
|
|
common_scripts\utility::flag_wait("elevator_descent_player");
|
|
var_00 maps\fusion_utility::hint_button_clear_fus();
|
|
}
|
|
|
|
//Function Number: 209
|
|
transient_transition_intro_to_middle()
|
|
{
|
|
if(level.currentgen)
|
|
{
|
|
level notify("tff_pre_transition_intro_to_middle");
|
|
unloadtransient("fusion_intro_tr");
|
|
loadtransient("fusion_middle_tr");
|
|
while(!istransientloaded("fusion_middle_tr"))
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
level notify("tff_post_transition_intro_to_middle");
|
|
}
|
|
}
|
|
|
|
//Function Number: 210
|
|
security_elevator_descent_player()
|
|
{
|
|
var_00 = common_scripts\utility::getstruct("elevator_descent_org","targetname");
|
|
var_01 = maps\_utility::spawn_anim_model("player_rig",level.player.origin);
|
|
var_00 thread maps\_anim::anim_first_frame_solo(var_01,"elevator_descent");
|
|
var_01 hide();
|
|
common_scripts\utility::flag_wait("elevator_descent_player");
|
|
thread transient_transition_intro_to_middle();
|
|
level.player maps\_utility::blend_movespeedscale_percent(0);
|
|
soundscripts\_snd::snd_message("start_player_elevator_slide");
|
|
common_scripts\utility::flag_set("update_obj_pos_elevator_descent");
|
|
level.player maps\_utility::add_wait(::maps\_shg_utility::setup_player_for_scene,1);
|
|
var_01 maps\_utility::add_call(::show);
|
|
thread maps\_utility::do_wait();
|
|
var_02 = 0.3;
|
|
level.player playerlinktoblend(var_01,"tag_player",var_02);
|
|
level.player common_scripts\utility::delaycall(var_02,::playerlinktodelta,var_01,"tag_player",0,20,20,20,20);
|
|
var_03 = 3.25;
|
|
if(level.currentgen)
|
|
{
|
|
var_03 = var_03 * 1.35;
|
|
}
|
|
|
|
level.player common_scripts\utility::delaycall(var_03,::enableweapons);
|
|
level.player common_scripts\utility::delaycall(1.5,::givemaxammo,"iw5_bal27_sp_variablereddot");
|
|
common_scripts\utility::noself_delaycall(1,::playfxontag,common_scripts\utility::getfx("elevator_player_slide_dust"),var_01,"J_MainRoot");
|
|
level.player thread elevator_rumble();
|
|
soundscripts\_snd::snd_message("start_player_elevator_jump");
|
|
var_00 maps\_anim::anim_single_solo(var_01,"elevator_descent");
|
|
level.player unlink();
|
|
var_01 delete();
|
|
level.player enableweapons();
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
common_scripts\utility::flag_set("lab_cqb");
|
|
common_scripts\utility::flag_set("vo_lab_elevator_slide_complete");
|
|
thread street_cleanup();
|
|
maps\_utility::autosave_by_name("elevator_slide_complete");
|
|
}
|
|
|
|
//Function Number: 211
|
|
elevator_rumble()
|
|
{
|
|
wait(0.5);
|
|
var_00 = maps\_utility::get_rumble_ent("steady_rumble");
|
|
var_00.intensity = 0.2;
|
|
wait(2.3);
|
|
stopallrumbles();
|
|
}
|
|
|
|
//Function Number: 212
|
|
play_lab_reactor_pip()
|
|
{
|
|
level notify("stop_evacuation_kiosk_movie");
|
|
wait(0.5);
|
|
common_scripts\utility::flag_wait("vo_lab_elevator_slide_complete");
|
|
setsaveddvar("cg_cinematicfullscreen","0");
|
|
maps\_shg_utility::play_videolog("fusion_videolog","screen_add");
|
|
wait(0.5);
|
|
evacuation_kiosk_movie();
|
|
}
|
|
|
|
//Function Number: 213
|
|
sync_transients_after_time(param_00)
|
|
{
|
|
wait(param_00);
|
|
synctransients();
|
|
}
|
|
|
|
//Function Number: 214
|
|
corpse_trigger_think()
|
|
{
|
|
self waittill("trigger");
|
|
var_00 = getentarray(self.target,"targetname");
|
|
var_01 = maps\_utility::getstructarray_delete(var_00[0].script_noteworthy,"script_noteworthy");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_04 = var_00[randomintrange(0,var_00.size)];
|
|
var_05 = var_04 maps\_utility::spawn_ai();
|
|
var_05.origin = var_03.origin;
|
|
var_05.angles = var_03.angles;
|
|
var_05 setcandamage(0);
|
|
if(isdefined(var_05.weapon) && var_05.weapon != "none")
|
|
{
|
|
var_05 maps\_utility::gun_remove();
|
|
}
|
|
|
|
var_06 = level.scr_anim["generic"][var_03.animation];
|
|
if(isarray(var_06))
|
|
{
|
|
var_06 = var_06[0];
|
|
}
|
|
|
|
var_05 animscripted("endanim",var_03.origin,var_03.angles,var_06);
|
|
if(isdefined(var_03.script_parameters))
|
|
{
|
|
if(var_03.script_parameters == "notsolid")
|
|
{
|
|
var_05 notsolid();
|
|
}
|
|
|
|
if(var_03.script_parameters == "ripples")
|
|
{
|
|
var_05 thread ripples_on_body(var_03);
|
|
}
|
|
}
|
|
|
|
if(issubstr(var_03.animation,"death"))
|
|
{
|
|
var_05 common_scripts\utility::delaycall(0.05,::setanimtime,var_06,1);
|
|
}
|
|
}
|
|
|
|
if(isdefined(self.script_flag))
|
|
{
|
|
common_scripts\utility::flag_wait(self.script_flag);
|
|
common_scripts\utility::array_call(getentarray(var_00[0].script_noteworthy,"script_noteworthy"),::delete);
|
|
}
|
|
}
|
|
|
|
//Function Number: 215
|
|
ripples_on_body(param_00)
|
|
{
|
|
self endon("death");
|
|
wait(0.1);
|
|
var_01 = common_scripts\utility::get_target_ent(param_00.target);
|
|
var_02 = (self.origin[0],self.origin[1],var_01.origin[2] - 1);
|
|
for(;;)
|
|
{
|
|
playfx(common_scripts\utility::getfx("water_movement"),var_02);
|
|
wait(randomfloatrange(0.5,1));
|
|
}
|
|
}
|
|
|
|
//Function Number: 216
|
|
street_cleanup()
|
|
{
|
|
level notify("street_cleanup");
|
|
waittillframeend;
|
|
var_00 = getaiarray();
|
|
var_00 = common_scripts\utility::array_remove(var_00,level.burke);
|
|
var_00 = common_scripts\utility::array_remove(var_00,level.joker);
|
|
var_00 = common_scripts\utility::array_remove(var_00,level.carter);
|
|
common_scripts\utility::array_call(var_00,::delete);
|
|
common_scripts\utility::array_call(getentarray("script_vehicle_x4walker_wheels_turret","classname"),::delete);
|
|
common_scripts\utility::array_call(getentarray("script_vehicle_x4walker_wheels_turret_explosive","classname"),::delete);
|
|
if(isdefined(level.player.linked_to_cover))
|
|
{
|
|
level.player.linked_to_cover vehicle_scripts\_cover_drone::player_unlink_from_cover();
|
|
}
|
|
|
|
common_scripts\utility::array_call(getentarray("script_vehicle_cover_drone","classname"),::delete);
|
|
common_scripts\utility::array_call(getentarray("mobile_turret","targetname"),::delete);
|
|
common_scripts\utility::array_call(getentarray("script_vehicle_pdrone","classname"),::delete);
|
|
if(isdefined(level.walker))
|
|
{
|
|
level.walker connectpaths();
|
|
}
|
|
}
|
|
|
|
//Function Number: 217
|
|
security_elevator_descent_ai(param_00)
|
|
{
|
|
var_01 = "elevator_descent";
|
|
if(self == level.burke)
|
|
{
|
|
soundscripts\_snd::snd_message("start_burke_elevator_slide");
|
|
param_00 thread maps\_anim::anim_single_solo(self,var_01);
|
|
maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"update_obj_pos_security_elevator");
|
|
common_scripts\utility::waittill_any_ents(param_00,var_01,level,"burke_elevator_landing");
|
|
var_01 = "elevator_descent_exit";
|
|
param_00 maps\_anim::anim_single_solo(self,var_01);
|
|
}
|
|
else
|
|
{
|
|
self stopanimscripted();
|
|
param_00 maps\_anim::anim_single_solo(self,var_01);
|
|
}
|
|
|
|
laboratory_start_idle();
|
|
}
|
|
|
|
//Function Number: 218
|
|
laboratory_start_idle()
|
|
{
|
|
var_00 = "elevator_descent_end_idle";
|
|
var_01 = "elevator_descent_end_idle_2_cqb";
|
|
var_02 = "elevator_descent_end_idle_stop";
|
|
var_03 = common_scripts\utility::getstruct("fusion_security_room_corpse_fall_npc","targetname");
|
|
var_04 = spawn("script_origin",var_03.origin);
|
|
if(isdefined(var_03.angles))
|
|
{
|
|
var_04.angles = var_03.angles;
|
|
}
|
|
|
|
var_04 thread maps\_anim::anim_loop_solo(self,var_00,var_02);
|
|
if(!isdefined(level.guys_down_elevator))
|
|
{
|
|
level.guys_down_elevator = 0;
|
|
}
|
|
|
|
level.guys_down_elevator++;
|
|
level notify("guy_down_elevator");
|
|
while(level.guys_down_elevator < 3)
|
|
{
|
|
level waittill("guy_down_elevator");
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("negotiation_elevator_to_hall");
|
|
if(self == level.burke)
|
|
{
|
|
wait(4);
|
|
}
|
|
else if(self == level.carter)
|
|
{
|
|
wait(1);
|
|
}
|
|
|
|
var_04 notify(var_02);
|
|
maps\_utility::enable_cqbwalk();
|
|
maps\_utility::enable_ai_color();
|
|
self.moveplaybackrate = 1.1;
|
|
if(self == level.joker)
|
|
{
|
|
common_scripts\utility::flag_set("start_lab_traversals");
|
|
}
|
|
else
|
|
{
|
|
var_04 maps\_anim::anim_single_solo_run(self,var_01);
|
|
}
|
|
|
|
var_04 delete();
|
|
}
|
|
|
|
//Function Number: 219
|
|
laboratory()
|
|
{
|
|
level endon("airlock_scene_prep");
|
|
thread laboratory_cqb();
|
|
thread play_lab_reactor_pip();
|
|
common_scripts\utility::flag_wait("start_lab_traversals");
|
|
thread lab_doorway_dyn_path();
|
|
thread color_group_enter_lab_trigger();
|
|
laboratory_traversal("negotiation_elevator_to_hall",level.joker);
|
|
laboratory_traversal("negotiation_hall_to_lab",level.burke,"negotiation_curved_hall");
|
|
wait 0.05;
|
|
laboratory_traversal("negotiation_curved_hall",level.burke,"negotiation_locker_room_entrance");
|
|
wait 0.05;
|
|
laboratory_traversal("negotiation_locker_room_entrance",level.carter,"airlock_scene_prep");
|
|
}
|
|
|
|
//Function Number: 220
|
|
color_group_enter_lab_trigger()
|
|
{
|
|
var_00 = getent("color_group_enter_lab","targetname");
|
|
if(isdefined(var_00))
|
|
{
|
|
var_00 waittill("trigger");
|
|
}
|
|
|
|
var_01 = getent("negotiation_hall_to_lab_carter","targetname");
|
|
var_01 delete();
|
|
var_02 = getent("negotiation_hall_to_lab_joker","targetname");
|
|
var_02 delete();
|
|
}
|
|
|
|
//Function Number: 221
|
|
lab_doorway_dyn_path()
|
|
{
|
|
var_00 = getent("lab_doorway_dyn_path","targetname");
|
|
var_00 disconnectpaths();
|
|
level waittill("negotiation_hall_to_lab_dyn_path");
|
|
wait(5);
|
|
var_00 connectpaths();
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 222
|
|
laboratory_traversal(param_00,param_01,param_02)
|
|
{
|
|
if(isdefined(param_02))
|
|
{
|
|
level endon(param_02);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait(param_00);
|
|
var_03 = param_00;
|
|
switch(param_00)
|
|
{
|
|
case "negotiation_elevator_to_hall":
|
|
thread laboratory_elevator_to_hall(param_00,param_02);
|
|
var_03 = "elevator_descent_end_idle_2_cqb";
|
|
common_scripts\utility::flag_set("update_obj_pos_lab_follow_joker");
|
|
break;
|
|
|
|
case "negotiation_hall_to_lab":
|
|
thread negotiation_hall_to_lab(param_00,param_02);
|
|
maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"update_obj_pos_lab_follow_burke");
|
|
break;
|
|
|
|
case "negotiation_curved_hall":
|
|
break;
|
|
|
|
case "negotiation_locker_room_entrance":
|
|
maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"update_obj_pos_lab_follow_carter");
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
var_04 = common_scripts\utility::getstruct(param_00,"targetname");
|
|
param_01 notify("stop_color_move");
|
|
if(param_00 != "negotiation_elevator_to_hall")
|
|
{
|
|
wait 0.05;
|
|
var_04 maps\_anim::anim_reach_solo(param_01,var_03,undefined,1);
|
|
if(param_00 == "negotiation_hall_to_lab")
|
|
{
|
|
level notify("negotiation_hall_to_lab_dyn_path");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_04 = common_scripts\utility::getstruct("fusion_security_room_corpse_fall_npc","targetname");
|
|
}
|
|
|
|
var_05 = param_00 + "_exit";
|
|
var_06 = getent(var_05,"targetname");
|
|
if(isdefined(var_06))
|
|
{
|
|
maps\_utility::activate_trigger_with_targetname(param_00 + "_exit");
|
|
}
|
|
|
|
var_04 maps\_anim::anim_single_solo_run(param_01,var_03);
|
|
}
|
|
|
|
//Function Number: 223
|
|
laboratory_elevator_to_hall(param_00,param_01)
|
|
{
|
|
wait(1);
|
|
maps\_utility::activate_trigger_with_targetname(param_00 + "_carter");
|
|
if(isdefined(level.carter.node))
|
|
{
|
|
level.carter.node.script_delay = undefined;
|
|
}
|
|
|
|
wait(1);
|
|
if(!common_scripts\utility::flag("negotiation_hall_to_lab"))
|
|
{
|
|
maps\_utility::activate_trigger_with_targetname(param_00 + "_burke");
|
|
}
|
|
|
|
if(isdefined(level.burke.node))
|
|
{
|
|
level.burke.node.script_delay = undefined;
|
|
}
|
|
}
|
|
|
|
//Function Number: 224
|
|
negotiation_hall_to_lab(param_00,param_01)
|
|
{
|
|
level endon(param_01);
|
|
wait(1);
|
|
if(isdefined(getent(param_00 + "_carter","targetname")))
|
|
{
|
|
maps\_utility::activate_trigger_with_targetname(param_00 + "_carter");
|
|
}
|
|
|
|
if(isdefined(level.carter.node))
|
|
{
|
|
level.carter.node.script_delay = undefined;
|
|
}
|
|
|
|
wait(3);
|
|
if(isdefined(getent(param_00 + "_carter","targetname")))
|
|
{
|
|
maps\_utility::activate_trigger_with_targetname(param_00 + "_joker");
|
|
}
|
|
|
|
if(isdefined(level.joker.node))
|
|
{
|
|
level.joker.node.script_delay = undefined;
|
|
}
|
|
}
|
|
|
|
//Function Number: 225
|
|
laboratory_cqb()
|
|
{
|
|
common_scripts\utility::flag_wait("lab_cqb");
|
|
level.player maps\_utility::blend_movespeedscale_percent(75);
|
|
setsaveddvar("ai_friendlyFireBlockDuration",0);
|
|
common_scripts\utility::flag_wait("reactor_room_reveal_scene");
|
|
level.player maps\_utility::blend_movespeedscale_percent(100,5);
|
|
common_scripts\utility::flag_wait("reactor_room_reveal_allies_advance");
|
|
setsaveddvar("ai_friendlyFireBlockDuration",2000);
|
|
}
|
|
|
|
//Function Number: 226
|
|
reactor_room()
|
|
{
|
|
thread reactor_room_reveal_scene();
|
|
thread reactor_room_drones();
|
|
thread reactor_room_crane();
|
|
thread handle_outline_on_grenade_launcher();
|
|
if(level.nextgen)
|
|
{
|
|
thread reactor_room_robots();
|
|
}
|
|
}
|
|
|
|
//Function Number: 227
|
|
handle_outline_on_grenade_launcher()
|
|
{
|
|
var_00 = getent("weapon_iw5_microdronelauncher_sp","classname");
|
|
while(isdefined(var_00))
|
|
{
|
|
var_00 hudoutlinedisable(6,1);
|
|
while(isdefined(var_00) && distance(var_00.origin,level.player.origin) > 300)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
if(!isdefined(var_00))
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_00 hudoutlineenable(6,1);
|
|
while(isdefined(var_00) && distance(var_00.origin,level.player.origin) <= 300)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 228
|
|
reactor_room_reveal_scene()
|
|
{
|
|
common_scripts\utility::flag_wait("airlock_scene_prep");
|
|
if(level.currentgen)
|
|
{
|
|
var_00 = ["reactor_room_enemies"];
|
|
thread maps\_cg_encounter_perf_monitor::cg_spawn_perf_monitor("reactor_room_cleanup",var_00,15,0);
|
|
}
|
|
|
|
soundscripts\_snd::snd_message("start_airlock_anim_notetracks");
|
|
var_01 = "fusion_airlock_opening_approach";
|
|
var_02 = "fusion_airlock_opening_idle";
|
|
var_03 = common_scripts\utility::getstruct("airlock_anim_node","targetname");
|
|
var_04 = "reactor_room_reveal_scene";
|
|
thread reactor_room_reveal_door(var_03,"fusion_airlock_opening");
|
|
thread reactor_room_reveal_ally_vo_close_check();
|
|
var_05 = [];
|
|
var_05[var_05.size] = level.burke;
|
|
var_05[var_05.size] = level.carter;
|
|
level.reactor_room_reveal_scene_guys_ready = 0;
|
|
common_scripts\utility::array_thread(var_05,::reactor_room_reveal_scene_approach,var_03,var_01,var_02,var_04);
|
|
level waittill("reactor_room_reveal_scene_prepped");
|
|
var_01 = "fusion_airlock_opening";
|
|
common_scripts\utility::flag_wait("reactor_room_reveal_scene");
|
|
level notify("reactor_room_reveal_scene_started");
|
|
var_03 notify(var_04);
|
|
maps\_utility::array_notify(var_05,"reactor_room_reveal_scene");
|
|
if(level.nextgen)
|
|
{
|
|
common_scripts\utility::array_thread(getentarray("reactor_redshirts","script_noteworthy"),::reactor_room_redshirts);
|
|
thread reactor_room_redshirt_cleanup();
|
|
}
|
|
|
|
var_06 = getent("reactor_room_airlock_enemy","targetname") maps\_utility::spawn_ai(1);
|
|
var_06 notify("handle_detection");
|
|
var_06 setcontents(0);
|
|
var_06.ignoresonicaoe = 1;
|
|
var_06.animname = "generic";
|
|
var_05[var_05.size] = var_06;
|
|
var_06 setcontents(0);
|
|
var_03 thread maps\_anim::anim_single_run(var_05,var_01);
|
|
level.burke maps\_utility::disable_cqbwalk();
|
|
level.joker maps\_utility::disable_cqbwalk();
|
|
level.carter maps\_utility::disable_cqbwalk();
|
|
level.burke.moveplaybackrate = 1;
|
|
level.joker.moveplaybackrate = 1;
|
|
level.carter.moveplaybackrate = 1;
|
|
maps\_utility::battlechatter_off("allies");
|
|
maps\_utility::battlechatter_off("axis");
|
|
maps\_utility::delaythread(15,::maps\_utility::battlechatter_on,"allies");
|
|
maps\_utility::delaythread(15,::maps\_utility::battlechatter_on,"axis");
|
|
level.burke thread reactor_room_reveal_scene_ally_think();
|
|
level.joker thread reactor_room_reveal_scene_ally_think();
|
|
level.carter thread reactor_room_reveal_scene_ally_think();
|
|
common_scripts\utility::flag_set("vo_reactor_entrance");
|
|
maps\_utility::delaythread(12,::maps\_utility::activate_trigger_with_noteworthy,"reactor_room_first_spawn_trigger");
|
|
common_scripts\utility::array_thread(getentarray("reactor_room_robot_grid_safeguard","targetname"),::reactor_room_robot_grid_ally_safeguard);
|
|
maps\_utility::delaythread(12,::maps\_utility::activate_trigger_with_targetname,"reactor_room_door_open_color_trigger");
|
|
common_scripts\utility::flag_wait("reactor_room_reveal_allies_advance");
|
|
level.burke maps\_utility::enable_ai_color();
|
|
level.carter maps\_utility::enable_ai_color();
|
|
if(!common_scripts\utility::flag("reactor_redshirts_enable"))
|
|
{
|
|
maps\_utility::activate_trigger_with_targetname("reactor_room_door_open_color_trigger");
|
|
}
|
|
|
|
common_scripts\utility::flag_set("update_obj_pos_reactor_1");
|
|
maps\_utility::autosave_by_name();
|
|
thread reactor_room_combat();
|
|
thread reactor_room_sonic_hint_use_check();
|
|
wait(10);
|
|
common_scripts\utility::flag_set("flag_show_boost_slam_hint");
|
|
}
|
|
|
|
//Function Number: 229
|
|
reactor_room_sonic_hint_use_check()
|
|
{
|
|
level endon("SonicAoEStarted");
|
|
var_00 = 512;
|
|
wait(35);
|
|
while(!common_scripts\utility::flag("flag_show_sonic_hint"))
|
|
{
|
|
var_01 = getaiarray("axis");
|
|
var_01 = maps\_utility::array_removedead_or_dying(var_01);
|
|
var_02 = maps\_utility::get_within_range(level.player.origin,var_01,var_00);
|
|
if(var_02.size > 0)
|
|
{
|
|
common_scripts\utility::flag_set("flag_show_sonic_hint");
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 230
|
|
reactor_room_reveal_scene_approach(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(self == level.carter)
|
|
{
|
|
common_scripts\utility::flag_wait("reactor_room_reveal_burke_ready");
|
|
}
|
|
|
|
maps\_utility::disable_ai_color();
|
|
self notify("stop_goto_node");
|
|
self notify("goal");
|
|
param_00 maps\_anim::anim_reach_solo(self,param_01);
|
|
if(self == level.burke)
|
|
{
|
|
common_scripts\utility::flag_set("reactor_room_reveal_burke_ready");
|
|
}
|
|
|
|
param_00 maps\_anim::anim_single_solo(self,param_01);
|
|
param_00 thread maps\_anim::anim_loop_solo(self,param_02,param_03);
|
|
level.reactor_room_reveal_scene_guys_ready++;
|
|
if(level.reactor_room_reveal_scene_guys_ready >= 2)
|
|
{
|
|
level notify("reactor_room_reveal_scene_prepped");
|
|
}
|
|
}
|
|
|
|
//Function Number: 231
|
|
reactor_room_reveal_ally_vo_close_check()
|
|
{
|
|
var_00 = getent("airlock_vo_start_check","targetname");
|
|
while(!level.burke istouching(var_00))
|
|
{
|
|
wait(0.3);
|
|
}
|
|
|
|
common_scripts\utility::flag_set("vo_reactor_open_airlock");
|
|
}
|
|
|
|
//Function Number: 232
|
|
reactor_room_reveal_scene_ally_think()
|
|
{
|
|
var_00 = self.grenadeawareness;
|
|
self.grenadeawareness = 0;
|
|
self.ignoreall = 1;
|
|
common_scripts\utility::flag_wait("reactor_room_reveal_allies_advance");
|
|
self.disablebulletwhizbyreaction = 1;
|
|
self.nogrenadereturnthrow = 1;
|
|
var_01 = self.goalradius;
|
|
self.goalradius = 64;
|
|
waittillframeend;
|
|
common_scripts\utility::waittill_notify_or_timeout("goal",5);
|
|
self.ignoreall = 0;
|
|
self.grenadeawareness = var_00;
|
|
self.disablebulletwhizbyreaction = 0;
|
|
self.nogrenadereturnthrow = 0;
|
|
self.goalradius = var_01;
|
|
}
|
|
|
|
//Function Number: 233
|
|
reactor_room_reveal_enemies_think()
|
|
{
|
|
self endon("death");
|
|
self.grenadeammo = 0;
|
|
if(isdefined(self.target))
|
|
{
|
|
self.goalradius = 16;
|
|
}
|
|
|
|
var_00 = 40000;
|
|
while(distancesquared(self.origin,level.burke.origin) > var_00)
|
|
{
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 234
|
|
reactor_room_reveal_door(param_00,param_01)
|
|
{
|
|
var_02 = getent("reactor_airlock_door_1","targetname");
|
|
var_03 = getent(var_02.target,"targetname");
|
|
var_03 disconnectpaths();
|
|
var_02.animname = "fusion_airlock_door";
|
|
var_02 maps\_anim::setanimtree();
|
|
param_00 thread maps\_anim::anim_first_frame_solo(var_02,param_01);
|
|
level waittill("reactor_room_reveal_scene_prepped");
|
|
var_03 linkto(var_02,"door");
|
|
common_scripts\utility::flag_wait("reactor_room_reveal_scene");
|
|
soundscripts\_snd::snd_message("start_reactor_airlock_open",var_02);
|
|
soundscripts\_snd::snd_message("start_reactor_zone_audio");
|
|
soundscripts\_snd::snd_message("start_reactor_burke_attack");
|
|
var_04 = 45;
|
|
var_02 playrumblelooponentity("subtle_tank_rumble");
|
|
earthquake(0.1,var_04,var_02.origin,1000);
|
|
common_scripts\_exploder::exploder(3301);
|
|
common_scripts\_exploder::exploder(3302);
|
|
common_scripts\_exploder::exploder(3303);
|
|
common_scripts\_exploder::exploder(3304);
|
|
common_scripts\_exploder::exploder(3201);
|
|
common_scripts\_exploder::exploder(3202);
|
|
param_00 thread maps\_anim::anim_single_solo(var_02,param_01);
|
|
var_05 = getanimlength(var_02 maps\_utility::getanim(param_01));
|
|
common_scripts\utility::noself_delaycall(var_05,::stopallrumbles);
|
|
wait(15.5);
|
|
common_scripts\utility::flag_set("reactor_room_reveal_allies_advance");
|
|
var_03 connectpaths();
|
|
waittillframeend;
|
|
var_03 disconnectpaths();
|
|
common_scripts\utility::flag_set("vo_reactor_gogogo");
|
|
}
|
|
|
|
//Function Number: 235
|
|
reactor_room_reveal_squibs(param_00,param_01)
|
|
{
|
|
level endon("intro_truck_left");
|
|
var_02 = common_scripts\utility::getstruct("reactor_reveal_bullet_org","targetname");
|
|
var_03 = common_scripts\utility::getstructarray(var_02.target,"targetname");
|
|
var_03 = common_scripts\utility::array_randomize(var_03);
|
|
var_04 = -5;
|
|
var_05 = 5;
|
|
var_06 = 0;
|
|
for(var_07 = 0;var_07 < param_00;var_07++)
|
|
{
|
|
magicbullet("iw5_ak12_sp",var_02.origin,var_03[var_06].origin + (randomfloatrange(var_04,var_05),randomfloatrange(var_04,var_05),randomfloatrange(var_04,var_05)));
|
|
if(randomint(100) < 10)
|
|
{
|
|
level.player playrumbleonentity("damage_light");
|
|
}
|
|
|
|
var_06++;
|
|
if(var_06 >= var_03.size)
|
|
{
|
|
var_03 = common_scripts\utility::array_randomize(var_03);
|
|
var_06 = 0;
|
|
}
|
|
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 236
|
|
reactor_room_robot_grid_ally_safeguard()
|
|
{
|
|
level endon("elevator_ascend");
|
|
var_00 = getent(self.target,"targetname");
|
|
var_01 = common_scripts\utility::getstruct(var_00.target,"targetname");
|
|
for(;;)
|
|
{
|
|
self waittill("trigger",var_02);
|
|
var_03 = getaiarray("allies");
|
|
foreach(var_05 in var_03)
|
|
{
|
|
if(var_05 istouching(var_00) && !maps\_utility::player_can_see_ai(var_05) && !maps\_utility::player_looking_at(var_01.origin,undefined,1))
|
|
{
|
|
var_05 forceteleport(var_01.origin,var_01.angles);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 237
|
|
reactor_room_drones()
|
|
{
|
|
common_scripts\utility::flag_wait("reactor_drones_1");
|
|
var_00 = [];
|
|
var_00[var_00.size] = thread vehicle_scripts\_pdrone::start_flying_attack_drone("reactor_drone_1");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 thread maps\_shg_utility::make_emp_vulnerable();
|
|
var_02 laseron();
|
|
var_02 thread reactor_room_drone_cleanup();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("reactor_drones_2");
|
|
var_04 = [];
|
|
var_04[var_04.size] = thread vehicle_scripts\_pdrone::start_flying_attack_drone("reactor_drone_3");
|
|
var_04[var_04.size] = thread vehicle_scripts\_pdrone::start_flying_attack_drone("reactor_drone_4");
|
|
foreach(var_02 in var_04)
|
|
{
|
|
var_02 thread maps\_shg_utility::make_emp_vulnerable();
|
|
var_02 laseron();
|
|
var_02 thread reactor_room_drone_cleanup();
|
|
}
|
|
}
|
|
|
|
//Function Number: 238
|
|
reactor_room_drone_cleanup()
|
|
{
|
|
self endon("death");
|
|
common_scripts\utility::flag_wait("reactor_room_end_combat");
|
|
wait(randomfloatrange(1,3));
|
|
self kill();
|
|
}
|
|
|
|
//Function Number: 239
|
|
reactor_room_crane()
|
|
{
|
|
level waittill("reactor_room_reveal_scene_started");
|
|
var_00 = getentarray("reactor_crane_track","targetname");
|
|
var_01 = [];
|
|
var_02 = common_scripts\utility::getstruct("reactor_crane_track_inner","targetname");
|
|
var_03 = common_scripts\utility::getstruct(var_02.target,"targetname");
|
|
var_01["min_dist"] = int(distance(var_00[0].origin,var_02.origin));
|
|
var_01["max_dist"] = int(distance(var_00[0].origin,var_03.origin));
|
|
var_04 = common_scripts\utility::getstruct("reactor_crane_height_top","targetname");
|
|
var_05 = common_scripts\utility::getstruct(var_04.target,"targetname");
|
|
var_01["crane_height_delta"] = distance(var_04.origin,var_05.origin);
|
|
var_01["rot_speed"] = 30;
|
|
var_01["rot_delay"] = 0.1;
|
|
var_01["crane_housing_move_speed"] = 75;
|
|
var_01["crane_housing_move_delay"] = 1;
|
|
var_01["height_time"] = 2.5;
|
|
var_01["height_acc"] = 0.5;
|
|
var_01["height_dec"] = 1.5;
|
|
var_01["lower_delay"] = 1;
|
|
var_01["raise_delay"] = 1;
|
|
var_01["crate_height"] = 72;
|
|
var_01["cable_height"] = 40;
|
|
level.reactor_room_crate_tracking = [];
|
|
level.reactor_room_crate_tracking["scripted_crate"] = 0;
|
|
level.reactor_room_crate_tracking["near_player"] = 0;
|
|
level.reactor_room_crate_tracking["near_enemies"] = 0;
|
|
var_06 = getentarray("reactor_cover_crate","script_noteworthy");
|
|
common_scripts\utility::array_thread(var_06,::reactor_room_crate_think);
|
|
var_00 = getentarray("reactor_crane_track","targetname");
|
|
var_00[0] thread reactor_room_crane_think(var_01,"north",var_06);
|
|
var_00[1] thread reactor_room_crane_think(var_01,"south",var_06);
|
|
}
|
|
|
|
//Function Number: 240
|
|
crane_cable(param_00,param_01)
|
|
{
|
|
for(var_02 = self;isdefined(var_02.target);var_02 hide())
|
|
{
|
|
var_02 = getent(var_02.target,"targetname");
|
|
}
|
|
|
|
var_03 = param_01["cable_height"];
|
|
thread stop_crane_audio(param_00);
|
|
for(;;)
|
|
{
|
|
param_00 reactor_room_link_cables(self,1);
|
|
param_00 waittill("crane_moving");
|
|
param_00 reactor_room_link_cables(self,0);
|
|
soundscripts\_snd::snd_message("crane_claw_drop_start",param_00);
|
|
param_00 crane_animated_down(self,param_00,param_01);
|
|
param_00 waittill("crane_stopped");
|
|
soundscripts\_snd::snd_message("crane_claw_drop_stop",param_00);
|
|
param_00 waittill("crane_moving");
|
|
soundscripts\_snd::snd_message("crane_claw_rise_start",param_00);
|
|
param_00 crane_animated_up(self,param_00,param_01);
|
|
param_00 waittill("crane_stopped");
|
|
soundscripts\_snd::snd_message("crane_claw_rise_stop",param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 241
|
|
stop_crane_audio(param_00)
|
|
{
|
|
if(level.currentgen)
|
|
{
|
|
level waittill("tff_pre_transition_middle_to_outro");
|
|
param_00 notify("stop_claw_beep");
|
|
param_00 stoploopsound("crane_rctr_claw_drop_lp");
|
|
param_00 stoploopsound("crane_rctr_claw_rise_lp");
|
|
}
|
|
}
|
|
|
|
//Function Number: 242
|
|
crane_animated_down(param_00,param_01,param_02)
|
|
{
|
|
param_00 thread crane_cable_down(param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 243
|
|
crane_animated_up(param_00,param_01,param_02)
|
|
{
|
|
param_01.last_cable thread crane_cable_up(param_01);
|
|
}
|
|
|
|
//Function Number: 244
|
|
crane_cable_down(param_00,param_01)
|
|
{
|
|
attach_housing(param_00);
|
|
param_00 endon("crane_stopped");
|
|
while(distancesquared(self.og,self getorigin()) < squared(param_01["cable_height"]))
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
if(!isdefined(self.target))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = getent(self.target,"targetname");
|
|
var_02 thread crane_cable_down(param_00,param_01);
|
|
}
|
|
|
|
//Function Number: 245
|
|
attach_housing(param_00)
|
|
{
|
|
self.og = self getorigin();
|
|
self linkto(param_00);
|
|
param_00.last_cable = self;
|
|
if(!isdefined(self.target))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 = getent(self.target,"targetname");
|
|
var_01 show();
|
|
}
|
|
|
|
//Function Number: 246
|
|
crane_cable_up(param_00)
|
|
{
|
|
param_00 endon("crane_stopped");
|
|
while(distancesquared(self.og,self getorigin()) > squared(10))
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
thread detach_housing(param_00);
|
|
if(isdefined(self.script_noteworthy) && self.script_noteworthy == "crane_cable")
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 = getent(self.targetname,"target");
|
|
var_01 thread crane_cable_up(param_00);
|
|
}
|
|
|
|
//Function Number: 247
|
|
detach_housing(param_00)
|
|
{
|
|
if(isdefined(self.script_noteworthy) && self.script_noteworthy == "crane_cable")
|
|
{
|
|
return;
|
|
}
|
|
|
|
self unlink();
|
|
var_01 = 0.5;
|
|
self moveto(self.og,var_01);
|
|
wait(var_01);
|
|
self hide();
|
|
}
|
|
|
|
//Function Number: 248
|
|
reactor_room_crane_think(param_00,param_01,param_02)
|
|
{
|
|
level endon("elevator_ascend");
|
|
var_03 = self;
|
|
var_04 = getent(var_03.target,"targetname");
|
|
var_05 = getentarray(var_04.target,"targetname");
|
|
var_06 = undefined;
|
|
var_07 = undefined;
|
|
var_08 = undefined;
|
|
var_09 = undefined;
|
|
foreach(var_0B in var_05)
|
|
{
|
|
if(var_0B.classname == "script_model")
|
|
{
|
|
var_06 = var_0B;
|
|
continue;
|
|
}
|
|
|
|
if(var_0B.classname == "script_brushmodel")
|
|
{
|
|
var_08 = var_0B;
|
|
continue;
|
|
}
|
|
|
|
if(var_0B.classname == "trigger_multiple")
|
|
{
|
|
var_09 = var_0B;
|
|
continue;
|
|
}
|
|
|
|
var_07 = var_0B;
|
|
}
|
|
|
|
var_08 linkto(var_06);
|
|
var_09 enablelinkto();
|
|
var_09 linkto(var_06);
|
|
var_06.animname = "reactor_crane";
|
|
var_06 maps\_anim::setanimtree();
|
|
var_06 thread maps\_anim::anim_first_frame_solo(var_06,"crane_opened");
|
|
var_0D = getent(var_06.target,"targetname");
|
|
var_0D thread crane_cable(var_06,param_00);
|
|
var_06 linkto(var_04);
|
|
var_04 linkto(var_03);
|
|
var_03.track_inner = common_scripts\utility::spawn_tag_origin();
|
|
var_03.track_inner.origin = var_03.origin + (742,0,0);
|
|
var_03.track_inner linkto(var_03);
|
|
var_03.track_inner thread maps\fusion_utility::delete_on_notify("reactor_room_cleanup");
|
|
var_03.track_outer = common_scripts\utility::spawn_tag_origin();
|
|
var_03.track_outer.origin = var_03.origin + (1354,0,0);
|
|
var_03.track_outer linkto(var_03);
|
|
var_03.track_outer thread maps\fusion_utility::delete_on_notify("reactor_room_cleanup");
|
|
var_0E = common_scripts\utility::spawn_tag_origin();
|
|
var_0E.origin = var_04.origin;
|
|
var_0E linkto(var_04);
|
|
var_0E thread maps\fusion_utility::delete_on_notify("reactor_room_cleanup");
|
|
var_0F = common_scripts\utility::spawn_tag_origin();
|
|
var_0F.origin = var_06.origin;
|
|
var_0F linkto(var_06);
|
|
var_0F thread maps\fusion_utility::delete_on_notify("reactor_room_cleanup");
|
|
var_07 enablelinkto();
|
|
var_07 linkto(var_06);
|
|
var_06 thread reactor_room_crane_light();
|
|
var_10 = [];
|
|
foreach(var_12 in param_02)
|
|
{
|
|
var_13 = vectortoangles(var_12.origin - var_03.origin)[1];
|
|
if(var_13 < 20)
|
|
{
|
|
var_13 = var_13 + 360;
|
|
}
|
|
|
|
if(var_13 < 200 && param_01 == "south")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_13 >= 200 && param_01 == "north")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_10[var_10.size] = var_12;
|
|
}
|
|
|
|
var_15 = 175;
|
|
if(param_01 == "south")
|
|
{
|
|
var_15 = 200;
|
|
reactor_room_crane_rotate_to_angle(var_03,200,param_00["rot_speed"],param_00["rot_delay"]);
|
|
common_scripts\utility::flag_wait("reactor_room_crane_south_start");
|
|
}
|
|
else
|
|
{
|
|
wait(15);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
if(param_01 == "north" && common_scripts\utility::flag("reactor_room_crane_south_start"))
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(var_10.size == 0)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_12 = reactor_room_get_best_crate(var_10,param_01);
|
|
var_10 = common_scripts\utility::array_remove(var_10,var_12);
|
|
var_13 = vectortoangles(var_12.origin - var_03.origin)[1];
|
|
reactor_room_crane_rotate_to_angle(var_03,var_13,param_00["rot_speed"],param_00["rot_delay"]);
|
|
var_16 = distance2d(var_03.origin,var_12.origin);
|
|
var_04 unlink();
|
|
playfxontag(common_scripts\utility::getfx("fus_crane_housing_dust_fall"),var_0E,"tag_origin");
|
|
reactor_room_crane_adjust_housing(var_03,var_04,var_13,var_16,param_00["crane_housing_move_speed"],param_00["crane_housing_move_delay"]);
|
|
var_04 linkto(var_03);
|
|
var_06 unlink();
|
|
var_17 = var_06.origin;
|
|
var_06 notify("crane_moving");
|
|
thread reactor_room_crane_murderplayer_think(var_09,var_06,var_12,param_00);
|
|
playfxontag(common_scripts\utility::getfx("fus_crane_housing_dust"),var_0F,"tag_origin");
|
|
var_06 moveto(var_12.origin + (0,0,param_00["crate_height"]),param_00["height_time"],param_00["height_acc"],param_00["height_dec"]);
|
|
wait(param_00["height_time"]);
|
|
var_06 notify("crane_stopped");
|
|
thread reactor_room_crane_grab_crate(var_06,var_12,param_00);
|
|
var_06 waittill("crate_grabbed");
|
|
var_18 = common_scripts\utility::spawn_tag_origin();
|
|
var_18.origin = var_12.origin;
|
|
var_18 linkto(var_12);
|
|
playfxontag(common_scripts\utility::getfx("fus_crate_dust_lift"),var_18,"tag_origin");
|
|
var_12 notify("crate_raised");
|
|
level notify("crate_raising");
|
|
var_06 notify("crane_moving");
|
|
var_06 moveto(var_17,param_00["height_time"],param_00["height_acc"],param_00["height_dec"]);
|
|
wait(param_00["height_time"]);
|
|
var_06 notify("crane_stopped");
|
|
wait(param_00["raise_delay"]);
|
|
var_06 linkto(var_04);
|
|
var_13 = var_15;
|
|
reactor_room_crane_rotate_to_angle(var_03,var_13,param_00["rot_speed"],param_00["rot_delay"]);
|
|
var_16 = randomintrange(param_00["min_dist"],param_00["max_dist"]);
|
|
var_04 unlink();
|
|
reactor_room_crane_adjust_housing(var_03,var_04,var_13,var_16,param_00["crane_housing_move_speed"],param_00["crane_housing_move_delay"]);
|
|
var_04 linkto(var_03);
|
|
var_06 notify("crane_moving");
|
|
var_06 unlink();
|
|
var_06 moveto(var_06.origin - (0,0,param_00["crane_height_delta"]),param_00["height_time"],param_00["height_acc"],param_00["height_dec"]);
|
|
wait(param_00["height_time"]);
|
|
var_06 notify("crane_stopped");
|
|
wait(param_00["lower_delay"]);
|
|
var_06 notify("crate_release");
|
|
var_18 delete();
|
|
wait(0.05);
|
|
var_06 notify("crane_moving");
|
|
var_06 moveto(var_06.origin + (0,0,param_00["crane_height_delta"]),param_00["height_time"],param_00["height_acc"],param_00["height_dec"]);
|
|
wait(param_00["height_time"]);
|
|
var_06 notify("crane_stopped");
|
|
wait(param_00["raise_delay"]);
|
|
var_06 linkto(var_04);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
switch(param_01)
|
|
{
|
|
case "north":
|
|
var_13 = randomintrange(25,180);
|
|
break;
|
|
|
|
case "south":
|
|
default:
|
|
var_13 = randomintrange(180,360);
|
|
break;
|
|
}
|
|
|
|
var_16 = randomintrange(param_00["min_dist"],param_00["max_dist"]);
|
|
reactor_room_crane_rotate_to_angle(var_03,var_13,param_00["rot_speed"],param_00["rot_delay"]);
|
|
var_04 unlink();
|
|
playfxontag(common_scripts\utility::getfx("fus_crane_housing_dust_fall"),var_0E,"tag_origin");
|
|
reactor_room_crane_adjust_housing(var_03,var_04,var_13,var_16,param_00["crane_housing_move_speed"],param_00["crane_housing_move_delay"]);
|
|
var_04 linkto(var_03);
|
|
wait(randomfloatrange(3,7));
|
|
}
|
|
}
|
|
|
|
//Function Number: 249
|
|
reactor_room_crane_murderplayer_think(param_00,param_01,param_02,param_03)
|
|
{
|
|
param_01 endon("crane_stopped");
|
|
self endon("murderbox_activate");
|
|
for(;;)
|
|
{
|
|
if(distance(param_00.origin,param_02.origin) < 85)
|
|
{
|
|
if(level.player istouching(param_00))
|
|
{
|
|
var_04 = level.player.health / level.player.damagemultiplier;
|
|
level.player dodamage(var_04,param_01.origin);
|
|
self notify("murderbox_activate");
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 250
|
|
reactor_room_crane_grab_crate(param_00,param_01,param_02)
|
|
{
|
|
param_00 maps\_anim::anim_single_solo(param_00,"crane_grab");
|
|
param_00 thread maps\_anim::anim_first_frame_solo(param_00,"crane_closed");
|
|
soundscripts\_snd::snd_message("crane_claw_crate_grab",param_00);
|
|
param_01 linkto(param_00);
|
|
wait(0.05);
|
|
param_00 notify("crate_grabbed");
|
|
param_00 waittill("crate_release");
|
|
param_00 thread maps\_anim::anim_first_frame_solo(param_00,"crane_opened");
|
|
soundscripts\_snd::snd_message("crane_claw_crate_release",param_00);
|
|
param_01 delete();
|
|
}
|
|
|
|
//Function Number: 251
|
|
reactor_room_crane_light()
|
|
{
|
|
level endon("elevator_ascend");
|
|
var_00 = common_scripts\utility::spawn_tag_origin();
|
|
var_00.origin = self.origin;
|
|
var_00.angles = self.angles;
|
|
var_00 linkto(self);
|
|
var_00 thread maps\fusion_utility::delete_on_notify("reactor_room_cleanup");
|
|
while(!common_scripts\utility::flag("elevator_ascend"))
|
|
{
|
|
playfxontag(common_scripts\utility::getfx("fus_crane_light_red"),var_00,"tag_origin");
|
|
self waittill("crate_grabbed");
|
|
stopfxontag(common_scripts\utility::getfx("fus_crane_light_red"),var_00,"tag_origin");
|
|
playfxontag(common_scripts\utility::getfx("fus_crane_light_green"),var_00,"tag_origin");
|
|
self waittill("crate_release");
|
|
stopfxontag(common_scripts\utility::getfx("fus_crane_light_green"),var_00,"tag_origin");
|
|
}
|
|
}
|
|
|
|
//Function Number: 252
|
|
reactor_room_link_cables(param_00,param_01)
|
|
{
|
|
var_02 = param_00;
|
|
if(param_01)
|
|
{
|
|
var_02 linkto(self);
|
|
}
|
|
else
|
|
{
|
|
var_02 unlink();
|
|
}
|
|
|
|
while(isdefined(var_02.target))
|
|
{
|
|
var_02 = getent(var_02.target,"targetname");
|
|
if(param_01)
|
|
{
|
|
var_02 linkto(self);
|
|
continue;
|
|
}
|
|
|
|
var_02 unlink();
|
|
}
|
|
}
|
|
|
|
//Function Number: 253
|
|
reactor_room_get_best_crate(param_00,param_01)
|
|
{
|
|
var_02 = 10000;
|
|
var_03 = 10000;
|
|
var_04 = 1000000;
|
|
var_05 = (0,0,32);
|
|
var_06 = 65;
|
|
if(level.reactor_room_crate_tracking["scripted_crate"] < 1)
|
|
{
|
|
level.reactor_room_crate_tracking["scripted_crate"]++;
|
|
thread reactor_room_allies_run_from_crate();
|
|
return common_scripts\utility::getclosest((3290,3676,-601),param_00,200);
|
|
}
|
|
|
|
if(level.reactor_room_crate_tracking["near_player"] < 1)
|
|
{
|
|
foreach(var_08 in param_00)
|
|
{
|
|
if(distancesquared(var_08.origin,level.player.origin) < var_02)
|
|
{
|
|
level.reactor_room_crate_tracking["near_player"]++;
|
|
return var_08;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(level.reactor_room_crate_tracking["near_enemies"] < 3)
|
|
{
|
|
foreach(var_08 in param_00)
|
|
{
|
|
foreach(var_0C in getaiarray("axis"))
|
|
{
|
|
if(distancesquared(var_08.origin,var_0C.origin) < var_03)
|
|
{
|
|
if(distancesquared(level.player.origin,var_08.origin) < var_04)
|
|
{
|
|
level.reactor_room_crate_tracking["near_enemies"]++;
|
|
return var_08;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach(var_08 in param_00)
|
|
{
|
|
if(level.player worldpointinreticle_circle(var_08.origin + var_05,var_06,500))
|
|
{
|
|
if(distancesquared(level.player.origin,var_08.origin) > var_02)
|
|
{
|
|
if(distancesquared(level.player.origin,var_08.origin) < var_04)
|
|
{
|
|
return var_08;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return param_00[randomint(param_00.size)];
|
|
}
|
|
|
|
//Function Number: 254
|
|
reactor_room_crane_rotate_to_angle(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(param_01 >= 360)
|
|
{
|
|
param_01 = param_01 - 360;
|
|
}
|
|
|
|
var_04 = abs(param_00.angles[1] - param_01) / param_02;
|
|
var_05 = 2;
|
|
var_06 = 2;
|
|
if(var_04 < 2)
|
|
{
|
|
var_04 = 2;
|
|
}
|
|
|
|
if(var_04 < 4)
|
|
{
|
|
var_05 = var_04 / 2;
|
|
var_06 = var_04 / 2;
|
|
}
|
|
|
|
if(var_04 > 0)
|
|
{
|
|
playfxontag(common_scripts\utility::getfx("fus_crane_track_sparks"),param_00.track_inner,"tag_origin");
|
|
playfxontag(common_scripts\utility::getfx("fus_crane_track_sparks"),param_00.track_outer,"tag_origin");
|
|
soundscripts\_snd::snd_message("crane_mach_mvmnt_start",param_00.track_inner,param_00.track_outer);
|
|
param_00 rotateto((0,param_01,0),var_04,var_05,var_06);
|
|
wait(var_04);
|
|
stopfxontag(common_scripts\utility::getfx("fus_crane_track_sparks"),param_00.track_inner,"tag_origin");
|
|
stopfxontag(common_scripts\utility::getfx("fus_crane_track_sparks"),param_00.track_outer,"tag_origin");
|
|
soundscripts\_snd::snd_message("crane_mach_mvmnt_stop",param_00.track_inner,param_00.track_outer);
|
|
}
|
|
|
|
wait(param_03);
|
|
}
|
|
|
|
//Function Number: 255
|
|
reactor_room_crane_adjust_housing(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
var_06 = cos(param_02) * param_03;
|
|
var_07 = sin(param_02) * param_03;
|
|
var_08 = (param_00.origin[0] + var_06,param_00.origin[1] + var_07,param_01.origin[2]);
|
|
var_09 = distance(var_08,param_01.origin) / param_04;
|
|
if(var_09 > 0)
|
|
{
|
|
soundscripts\_snd::snd_message("crane_claw_mvmnt_start",param_01);
|
|
param_01 moveto(var_08,var_09,var_09 / 2,var_09 / 2);
|
|
wait(var_09);
|
|
soundscripts\_snd::snd_message("crane_claw_mvmnt_stop",param_01);
|
|
}
|
|
|
|
wait(param_05);
|
|
}
|
|
|
|
//Function Number: 256
|
|
reactor_room_crate_think()
|
|
{
|
|
self disconnectpaths();
|
|
var_00 = common_scripts\utility::get_target_ent();
|
|
var_00 linkto(self);
|
|
self waittill("crate_raised");
|
|
var_01 = self.origin;
|
|
badplace_cylinder("",3,var_01,80,64,"axis","allies");
|
|
var_02 = getnodesinradius(var_01,80,0,128,"Cover");
|
|
foreach(var_04 in var_02)
|
|
{
|
|
var_04 disconnectnode();
|
|
}
|
|
|
|
wait(3);
|
|
self connectpaths();
|
|
self waittill("death");
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 257
|
|
get_angle_from_center(param_00,param_01)
|
|
{
|
|
return vectortoangles(param_01 - param_00)[1];
|
|
}
|
|
|
|
//Function Number: 258
|
|
reactor_room_robots()
|
|
{
|
|
common_scripts\utility::flag_wait("reactor_room_reveal_scene");
|
|
var_00 = getentarray("reactor_bot","targetname");
|
|
common_scripts\utility::array_thread(getentarray("reactor_bot","targetname"),::reactor_room_robot_think);
|
|
common_scripts\utility::array_thread(getentarray("reactor_bot_scripted","targetname"),::reactor_room_robot_scripted_think);
|
|
}
|
|
|
|
//Function Number: 259
|
|
reactor_room_robot_think()
|
|
{
|
|
level endon("elevator_ascend");
|
|
self endon("death");
|
|
self endon("stop_movement");
|
|
self.health = 100;
|
|
self setcandamage(1);
|
|
thread reactor_room_robot_monitor_death();
|
|
thread maps\_shg_utility::make_emp_vulnerable();
|
|
self.emp_death_function = ::reactor_room_robot_emp_death;
|
|
self.facing = 1;
|
|
var_00 = common_scripts\utility::getstruct(self.target,"targetname");
|
|
var_01 = common_scripts\utility::getstruct(var_00.target,"targetname");
|
|
var_02 = common_scripts\utility::getstruct(var_01.target,"targetname");
|
|
self.collision = getent(self.target,"targetname");
|
|
self.collision linkto(self);
|
|
var_03 = 32;
|
|
var_04 = 0.5;
|
|
var_05 = distance(var_00.origin,var_01.origin) / var_03 + 1;
|
|
var_06 = distance(var_01.origin,var_02.origin) / var_03 + 1;
|
|
if(var_05 - int(var_05) > 0.5)
|
|
{
|
|
var_05 = int(var_05);
|
|
var_05++;
|
|
}
|
|
else
|
|
{
|
|
var_05 = int(var_05);
|
|
}
|
|
|
|
if(var_06 - int(var_06) > 0.5)
|
|
{
|
|
var_06 = int(var_06);
|
|
var_06++;
|
|
}
|
|
else
|
|
{
|
|
var_06 = int(var_06);
|
|
}
|
|
|
|
var_07 = vectortoangles(var_01.origin - var_00.origin);
|
|
var_08 = vectortoangles(var_02.origin - var_01.origin);
|
|
var_09 = getentarray(var_02.target,"targetname");
|
|
self.collision thread reactor_robots_badplace_think();
|
|
common_scripts\utility::array_thread(var_09,::reactor_robots_shelf_think);
|
|
var_0A = [];
|
|
for(var_0B = 0;var_0B < var_05;var_0B++)
|
|
{
|
|
for(var_0C = 0;var_0C < var_06;var_0C++)
|
|
{
|
|
var_0A[var_0B][var_0C] = spawnstruct();
|
|
var_0D = var_03 * var_0B * cos(var_07[1]) + var_03 * var_0C * sin(-1 * var_07[1]);
|
|
var_0E = -1 * var_03 * var_0B * cos(var_08[1]) + var_03 * var_0C * sin(var_08[1]);
|
|
var_0A[var_0B][var_0C].origin = (var_0D,var_0E,0) + var_00.origin;
|
|
var_0F = 0;
|
|
foreach(var_11 in var_09)
|
|
{
|
|
var_12 = var_0A[var_0B][var_0C].origin;
|
|
if(distance(var_0A[var_0B][var_0C].origin,var_11.origin) < 16)
|
|
{
|
|
var_0A[var_0B][var_0C].shelf = 1;
|
|
var_11.x = var_0B;
|
|
var_11.y = var_0C;
|
|
}
|
|
}
|
|
|
|
if(distance(var_0A[var_0B][var_0C].origin,self.origin) < 10)
|
|
{
|
|
var_0A[var_0B][var_0C].robot = 1;
|
|
self.x = var_0B;
|
|
self.y = var_0C;
|
|
}
|
|
}
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
foreach(var_11 in var_09)
|
|
{
|
|
var_0A = clear_path_weights(var_0A);
|
|
var_0A = add_path_weights(var_0A,var_11.x,var_11.y,0,0);
|
|
if(!isdefined(var_11.starting_origin))
|
|
{
|
|
var_11.starting_origin = var_11.origin;
|
|
}
|
|
|
|
self notify("update_path_weights");
|
|
move_to_dest(var_0A,var_11.x,var_11.y);
|
|
var_0A = clear_path_weights(var_0A);
|
|
var_15 = 0;
|
|
var_16 = 10;
|
|
var_17 = 0;
|
|
var_18 = 0;
|
|
while(var_15 <= var_16 && !isdefined(var_0A[var_17][var_18].path_weight) && isdefined(var_0A[self.x][self.y].path_weight) && var_17 != self.x || var_18 != self.y)
|
|
{
|
|
var_17 = randomint(var_05);
|
|
var_18 = randomint(var_06);
|
|
var_0A = clear_path_weights(var_0A);
|
|
var_0A = add_path_weights(var_0A,var_17,var_18,0,1);
|
|
var_15++;
|
|
wait(0.05);
|
|
}
|
|
|
|
if(var_15 > var_16)
|
|
{
|
|
wait(2);
|
|
continue;
|
|
}
|
|
|
|
soundscripts\_snd::snd_message("reactor_bot_shelf_pickup",self);
|
|
var_11 moveto((var_11.origin[0],var_11.origin[1],var_11.starting_origin[2] + var_04),0.2,0.1,0.1);
|
|
wait(0.2);
|
|
var_11 linkto(self);
|
|
self.shelf = var_11;
|
|
self notify("update_path_weights");
|
|
move_to_dest(var_0A,var_17,var_18);
|
|
var_11.x = var_17;
|
|
var_11.y = var_18;
|
|
var_11 unlink();
|
|
self.shelf = undefined;
|
|
soundscripts\_snd::snd_message("reactor_bot_shelf_drop",self);
|
|
var_11 moveto((var_11.origin[0],var_11.origin[1],var_11.starting_origin[2] + var_04),0.2,0.1,0.1);
|
|
wait(0.2);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 260
|
|
reactor_room_robot_emp_death()
|
|
{
|
|
self endon("death");
|
|
self notify("stop_movement");
|
|
self notify("emp");
|
|
playfxontag(common_scripts\utility::getfx("emp_reactor_robot_damage"),self,"tag_origin");
|
|
self moveto(self.origin,0.05);
|
|
self rotateto(self.angles,0.05);
|
|
wait(randomfloatrange(0.5,1.5));
|
|
stopfxontag(common_scripts\utility::getfx("emp_reactor_robot_damage"),self,"tag_origin");
|
|
self notify("death");
|
|
}
|
|
|
|
//Function Number: 261
|
|
reactor_room_robot_monitor_death()
|
|
{
|
|
self endon("emp");
|
|
self endon("robot_lowered");
|
|
self waittill("death");
|
|
self notify("stop_movement");
|
|
playfx(common_scripts\utility::getfx("reactor_robot_death"),self.origin);
|
|
}
|
|
|
|
//Function Number: 262
|
|
move_to_dest(param_00,param_01,param_02)
|
|
{
|
|
self endon("stop_movement");
|
|
var_03 = 1;
|
|
var_04 = 1;
|
|
var_05 = 0.05;
|
|
var_06 = isdefined(self.shelf);
|
|
while(!self.x == param_01 && self.y == param_02)
|
|
{
|
|
var_07 = get_next_grid_position(param_00,self.x,self.y);
|
|
if(var_06)
|
|
{
|
|
param_00[self.x][self.y].shelf = undefined;
|
|
}
|
|
|
|
if(self.facing_goal != self.facing)
|
|
{
|
|
if(var_06)
|
|
{
|
|
self.shelf unlink();
|
|
}
|
|
|
|
self.collision unlink();
|
|
self rotateto(self.angles + (0,90 * self.facing_goal - self.facing,0),var_04);
|
|
self.facing = self.facing_goal;
|
|
if(var_06)
|
|
{
|
|
soundscripts\_snd::snd_message("reactor_bot_turn_shelf",self);
|
|
}
|
|
else
|
|
{
|
|
soundscripts\_snd::snd_message("reactor_bot_turn_self",self);
|
|
}
|
|
|
|
wait(var_04 + var_05);
|
|
if(var_06)
|
|
{
|
|
self.shelf linkto(self);
|
|
}
|
|
|
|
self.collision linkto(self);
|
|
}
|
|
|
|
wait_until_path_safe();
|
|
if(var_06)
|
|
{
|
|
soundscripts\_snd::snd_message("reactor_bot_drive_shelf_start",self);
|
|
}
|
|
else
|
|
{
|
|
soundscripts\_snd::snd_message("reactor_bot_drive_self_start",self);
|
|
}
|
|
|
|
self moveto(param_00[var_07[0]][var_07[1]].origin,var_03);
|
|
wait(var_03 + var_05);
|
|
if(var_06)
|
|
{
|
|
soundscripts\_snd::snd_message("reactor_bot_drive_shelf_stop",self);
|
|
}
|
|
else
|
|
{
|
|
soundscripts\_snd::snd_message("reactor_bot_drive_self_stop",self);
|
|
}
|
|
|
|
if(var_06)
|
|
{
|
|
param_00[var_07[0]][var_07[1]].shelf = 1;
|
|
}
|
|
|
|
self.x = var_07[0];
|
|
self.y = var_07[1];
|
|
}
|
|
}
|
|
|
|
//Function Number: 263
|
|
wait_until_path_safe()
|
|
{
|
|
var_00 = 0;
|
|
while(!var_00)
|
|
{
|
|
var_00 = 1;
|
|
if(distance(self.origin,level.player.origin) < 200)
|
|
{
|
|
var_00 = 0;
|
|
wait(0.5);
|
|
continue;
|
|
}
|
|
|
|
foreach(var_02 in getaiarray())
|
|
{
|
|
if(distancesquared(self.origin,var_02.origin) < 9216)
|
|
{
|
|
var_00 = 0;
|
|
wait(0.5);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 264
|
|
get_next_grid_position(param_00,param_01,param_02)
|
|
{
|
|
var_03 = param_00[param_01][param_02].path_weight;
|
|
var_04 = param_00.size;
|
|
var_05 = param_00[0].size;
|
|
var_06 = 999;
|
|
var_07 = undefined;
|
|
if(param_01 > 0)
|
|
{
|
|
var_08 = param_00[param_01 - 1][param_02].path_weight;
|
|
if(isdefined(var_08))
|
|
{
|
|
if(var_08 < var_06)
|
|
{
|
|
var_06 = var_08;
|
|
var_07 = "left";
|
|
}
|
|
}
|
|
}
|
|
|
|
if(param_01 < var_04 - 1)
|
|
{
|
|
var_08 = param_00[param_01 + 1][param_02].path_weight;
|
|
if(isdefined(var_08))
|
|
{
|
|
if(var_08 < var_06)
|
|
{
|
|
var_06 = var_08;
|
|
var_07 = "right";
|
|
}
|
|
}
|
|
}
|
|
|
|
if(param_02 > 0)
|
|
{
|
|
var_08 = param_00[param_01][param_02 - 1].path_weight;
|
|
if(isdefined(var_08))
|
|
{
|
|
if(var_08 < var_06)
|
|
{
|
|
var_06 = var_08;
|
|
var_07 = "down";
|
|
}
|
|
}
|
|
}
|
|
|
|
if(param_02 < var_05 - 1)
|
|
{
|
|
var_08 = param_00[param_01][param_02 + 1].path_weight;
|
|
if(isdefined(var_08))
|
|
{
|
|
if(var_08 < var_06)
|
|
{
|
|
var_06 = var_08;
|
|
var_07 = "up";
|
|
}
|
|
}
|
|
}
|
|
|
|
var_09 = [];
|
|
switch(var_07)
|
|
{
|
|
case "left":
|
|
var_09 = [param_01 - 1,param_02];
|
|
self.facing_goal = 1;
|
|
break;
|
|
|
|
case "right":
|
|
var_09 = [param_01 + 1,param_02];
|
|
self.facing_goal = 3;
|
|
break;
|
|
|
|
case "down":
|
|
var_09 = [param_01,param_02 - 1];
|
|
self.facing_goal = 2;
|
|
break;
|
|
|
|
case "up":
|
|
var_09 = [param_01,param_02 + 1];
|
|
self.facing_goal = 0;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return var_09;
|
|
}
|
|
|
|
//Function Number: 265
|
|
clear_path_weights(param_00)
|
|
{
|
|
for(var_01 = 0;var_01 < param_00.size;var_01++)
|
|
{
|
|
for(var_02 = 0;var_02 < param_00[var_01].size;var_02++)
|
|
{
|
|
param_00[var_01][var_02].path_weight = undefined;
|
|
}
|
|
}
|
|
|
|
return param_00;
|
|
}
|
|
|
|
//Function Number: 266
|
|
add_path_weights(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
if(param_04 && isdefined(param_00[param_01][param_02].shelf) && param_00[param_01][param_02].shelf && !self.x == param_01 && self.y == param_02)
|
|
{
|
|
param_00[param_01][param_02].path_weight = undefined;
|
|
return param_00;
|
|
}
|
|
|
|
var_05 = param_00[param_01][param_02].path_weight;
|
|
var_06 = param_00.size;
|
|
var_07 = param_00[0].size;
|
|
if(param_03 > 25)
|
|
{
|
|
return param_00;
|
|
}
|
|
|
|
if(!isdefined(var_05) || var_05 > param_03)
|
|
{
|
|
param_00[param_01][param_02].path_weight = param_03;
|
|
param_03++;
|
|
if(param_01 > 0)
|
|
{
|
|
param_00 = add_path_weights(param_00,param_01 - 1,param_02,param_03,param_04);
|
|
}
|
|
|
|
if(param_01 < var_06 - 1)
|
|
{
|
|
param_00 = add_path_weights(param_00,param_01 + 1,param_02,param_03,param_04);
|
|
}
|
|
|
|
if(param_02 > 0)
|
|
{
|
|
param_00 = add_path_weights(param_00,param_01,param_02 - 1,param_03,param_04);
|
|
}
|
|
|
|
if(param_02 < var_07 - 1)
|
|
{
|
|
param_00 = add_path_weights(param_00,param_01,param_02 + 1,param_03,param_04);
|
|
}
|
|
}
|
|
|
|
return param_00;
|
|
}
|
|
|
|
//Function Number: 267
|
|
reactor_robots_shelf_think()
|
|
{
|
|
var_00 = getentarray(self.target,"targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 linkto(self);
|
|
}
|
|
|
|
reactor_robots_badplace_think();
|
|
}
|
|
|
|
//Function Number: 268
|
|
reactor_robots_badplace_think()
|
|
{
|
|
var_00 = 0.1;
|
|
if(level.currentgen)
|
|
{
|
|
var_00 = 0.3;
|
|
}
|
|
|
|
var_01 = 31;
|
|
var_02 = 128;
|
|
while(!common_scripts\utility::flag("elevator_ascend"))
|
|
{
|
|
self connectpaths();
|
|
self disconnectpaths();
|
|
wait(var_00);
|
|
}
|
|
|
|
self connectpaths();
|
|
}
|
|
|
|
//Function Number: 269
|
|
reactor_room_robot_scripted_think()
|
|
{
|
|
level endon("elevator_ascend");
|
|
var_00 = getentarray(self.target,"targetname");
|
|
var_00 = common_scripts\utility::array_combine(var_00,common_scripts\utility::getstructarray(self.target,"targetname"));
|
|
var_01 = undefined;
|
|
var_02 = undefined;
|
|
var_03 = undefined;
|
|
var_04 = undefined;
|
|
var_05 = undefined;
|
|
var_06 = undefined;
|
|
var_07 = 1;
|
|
var_08 = [];
|
|
var_08[var_08.size] = 18;
|
|
var_08[var_08.size] = 36;
|
|
var_08[var_08.size] = 54;
|
|
foreach(var_0A in var_00)
|
|
{
|
|
switch(var_0A.script_parameters)
|
|
{
|
|
case "start_node":
|
|
var_01 = var_0A;
|
|
break;
|
|
|
|
case "initial_lift":
|
|
var_0B = getentarray("reactor_robot_lift","script_noteworthy");
|
|
foreach(var_0D in var_0B)
|
|
{
|
|
if(distance(var_0D.origin,var_0A.origin) < 10)
|
|
{
|
|
var_03 = var_0D;
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case "initial_lift_gate":
|
|
var_0F = getentarray("bot_lift_gate","script_noteworthy");
|
|
foreach(var_11 in var_0F)
|
|
{
|
|
if(distance(var_11.origin,var_0A.origin) < 10)
|
|
{
|
|
var_02 = var_11;
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case "final_lift":
|
|
var_0B = getentarray("reactor_robot_lift","script_noteworthy");
|
|
foreach(var_0D in var_0B)
|
|
{
|
|
if(distance(var_0D.origin,var_0A.origin) < 10)
|
|
{
|
|
var_04 = var_0D;
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case "final_gate":
|
|
var_15 = getentarray("reactor_robot_final_gate","script_noteworthy");
|
|
foreach(var_11 in var_15)
|
|
{
|
|
if(distance(var_11.origin,var_0A.origin) < 10)
|
|
{
|
|
var_05 = var_11;
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case "shelf":
|
|
var_06 = var_0A;
|
|
var_06 thread reactor_robots_badplace_think();
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!isdefined(var_01))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(var_03))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(var_02))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(var_04))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(var_05))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(var_06))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_19 = var_06.origin;
|
|
var_1A = 1;
|
|
var_1B = 32;
|
|
var_1C = 4;
|
|
var_1D = 64;
|
|
var_1E = 3;
|
|
var_1F = 1;
|
|
var_20 = 1;
|
|
var_21 = 3;
|
|
var_22 = 1;
|
|
var_23 = 1;
|
|
var_24 = 1;
|
|
var_1D = 44;
|
|
var_25 = var_21;
|
|
var_1E = var_21 / 2;
|
|
var_1F = var_1E / 2;
|
|
var_20 = var_1E / 2;
|
|
var_26 = 1;
|
|
var_27 = 0.5;
|
|
var_28 = 0.5;
|
|
var_29 = common_scripts\utility::getstruct(var_05.target,"targetname").origin;
|
|
var_2A = var_05.origin;
|
|
var_2B = 128;
|
|
var_2C = 3;
|
|
var_2D = 1;
|
|
var_2E = 1;
|
|
var_03.bars = [];
|
|
var_04.bars = [];
|
|
var_2F = common_scripts\utility::getstructarray("lift_bars","targetname");
|
|
foreach(var_31 in var_2F)
|
|
{
|
|
if(distance(var_31.origin,var_03.origin) < 64)
|
|
{
|
|
var_03.bars[var_03.bars.size] = var_31;
|
|
var_32 = getentarray(var_31.target,"targetname");
|
|
foreach(var_34 in var_32)
|
|
{
|
|
var_34 linkto(var_03);
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
if(distance(var_31.origin,var_04.origin) < 64)
|
|
{
|
|
var_04.bars[var_04.bars.size] = var_31;
|
|
var_32 = getentarray(var_31.target,"targetname");
|
|
foreach(var_34 in var_32)
|
|
{
|
|
var_34 linkto(var_04);
|
|
}
|
|
}
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
reactor_room_robots_lift_adjust_bars(var_03,"lower","initial");
|
|
wait(randomfloatrange(1,10));
|
|
var_06.origin = var_19;
|
|
var_06 linkto(self);
|
|
wait(0.05);
|
|
var_39 = var_01.angles;
|
|
var_3A = var_39;
|
|
if(self.angles != var_01.angles)
|
|
{
|
|
self rotateto(var_01.angles,0.05);
|
|
wait(0.1);
|
|
}
|
|
|
|
var_3B = spawn("script_model",self.origin);
|
|
var_3B setmodel("fus_shelving_robot_01");
|
|
var_3B.angles = self.angles;
|
|
var_3B linkto(self);
|
|
var_3B endon("stop_movement");
|
|
var_3B.health = 100;
|
|
var_3B setcandamage(1);
|
|
var_3B thread maps\_shg_utility::make_emp_vulnerable();
|
|
var_3B.emp_death_function = ::reactor_room_robot_emp_death;
|
|
var_3B thread reactor_room_robot_monitor_death();
|
|
var_3C = spawn("script_model",self.origin);
|
|
var_3C setmodel("fus_shelving_unit_cage_01");
|
|
var_3C.angles = self.angles;
|
|
var_3C linkto(var_06);
|
|
var_06.models = [];
|
|
var_06.models[var_06.models.size] = var_3B;
|
|
var_06.models[var_06.models.size] = var_3C;
|
|
for(var_3D = 0;var_3D < 3;var_3D++)
|
|
{
|
|
if(common_scripts\utility::cointoss())
|
|
{
|
|
var_3E = spawn("script_model",self.origin + (0,0,var_08[var_3D]));
|
|
var_3E setmodel("fus_shelving_unit_item_01");
|
|
var_3E.angles = self.angles + (0,90,0);
|
|
var_3E linkto(var_06);
|
|
var_06.models[var_06.models.size] = var_3E;
|
|
}
|
|
}
|
|
|
|
self linkto(var_03);
|
|
var_3F = common_scripts\utility::getstruct(var_01.target,"targetname");
|
|
var_40 = self.origin[2] - var_3F.origin[2];
|
|
soundscripts\_snd::snd_message("reactor_bot_elevator_start_lp",var_03);
|
|
var_03 moveto(var_03.origin - (0,0,var_40),var_21,var_22,var_23);
|
|
var_02 common_scripts\utility::delaycall(var_25,::moveto,var_02.origin - (0,0,var_1D),var_1E,var_1F,var_20);
|
|
wait(var_21);
|
|
soundscripts\_snd::snd_message("reactor_bot_initial_elevator_stop",var_03);
|
|
soundscripts\_snd::snd_message("reactor_bot_elevator_stop_lp",var_03);
|
|
reactor_room_robots_lift_adjust_bars(var_03,"raise","initial");
|
|
self unlink();
|
|
var_41 = common_scripts\utility::getstruct(var_3F.target,"targetname");
|
|
var_42 = vectortoangles(var_41.origin - self.origin);
|
|
if(abs(var_42[1] - var_39[1]) > 2)
|
|
{
|
|
wait(0.1);
|
|
self rotateto(var_42,var_07);
|
|
soundscripts\_snd::snd_message("reactor_bot_turn_self",self);
|
|
wait(var_07 + 0.1);
|
|
var_39 = var_42;
|
|
wait(0.1);
|
|
}
|
|
|
|
var_43 = 0;
|
|
while(isdefined(var_3F.target))
|
|
{
|
|
var_3F = common_scripts\utility::getstruct(var_3F.target,"targetname");
|
|
var_42 = vectortoangles(var_3F.origin - self.origin);
|
|
if(abs(var_42[1] - var_39[1]) > 2)
|
|
{
|
|
var_06 unlink();
|
|
wait(0.1);
|
|
self rotateto(var_42,var_07);
|
|
soundscripts\_snd::snd_message("reactor_bot_turn_shelf",self);
|
|
wait(var_07 + 0.1);
|
|
var_39 = var_42;
|
|
var_06 linkto(self);
|
|
wait(0.1);
|
|
}
|
|
|
|
while(distance(self.origin,var_3F.origin) > var_1B + 4)
|
|
{
|
|
wait_until_path_safe();
|
|
soundscripts\_snd::snd_message("reactor_bot_drive_shelf_start",self);
|
|
self moveto(vectornormalize(var_3F.origin - self.origin) * 32 + self.origin,var_1A);
|
|
var_43++;
|
|
wait(var_1A);
|
|
soundscripts\_snd::snd_message("reactor_bot_drive_shelf_stop",self);
|
|
if(var_43 == 2)
|
|
{
|
|
soundscripts\_snd::snd_message("reactor_bot_initial_elevator_start",var_03,var_24);
|
|
var_03 common_scripts\utility::delaycall(var_24,::moveto,var_03.origin + (0,0,var_40),var_21,var_22,var_23);
|
|
var_02 moveto(var_02.origin + (0,0,var_1D),var_1E,var_1F,var_20);
|
|
}
|
|
}
|
|
|
|
wait_until_path_safe();
|
|
soundscripts\_snd::snd_message("reactor_bot_drive_shelf_start",self);
|
|
var_44 = var_1A * distance(self.origin,var_3F.origin) / var_1B;
|
|
self moveto(var_3F.origin,var_44);
|
|
wait(var_44);
|
|
soundscripts\_snd::snd_message("reactor_bot_drive_shelf_stop",self);
|
|
}
|
|
|
|
reactor_room_robots_lift_adjust_bars(var_04,"lower","final");
|
|
self linkto(var_04);
|
|
soundscripts\_snd::snd_message("reactor_bot_final_elevator_start",var_04);
|
|
var_04 moveto(var_04.origin - (0,0,var_2B),var_2C,var_2D,var_2E);
|
|
var_05 common_scripts\utility::delaycall(2,::moveto,var_29,var_26,var_27,var_28);
|
|
wait(var_2C);
|
|
self unlink();
|
|
var_45 = self setcontents(0);
|
|
var_3B notify("robot_lowered");
|
|
foreach(var_47 in var_06.models)
|
|
{
|
|
var_47 delete();
|
|
}
|
|
|
|
self hide();
|
|
wait(0.5);
|
|
self.origin = var_01.origin;
|
|
wait(0.5);
|
|
self setcontents(var_45);
|
|
self show();
|
|
reactor_room_robots_lift_adjust_bars(var_04,"raise","final");
|
|
soundscripts\_snd::snd_message("reactor_bot_elevator_start_lp",var_04);
|
|
var_04 moveto(var_04.origin + (0,0,var_2B),var_2C,var_2D,var_2E);
|
|
soundscripts\_snd::snd_message("reactor_bot_final_elevator_stop",var_04,var_2C);
|
|
soundscripts\_snd::snd_message("reactor_bot_elevator_stop_lp",var_04,var_2C);
|
|
var_05 moveto(var_2A,var_26,var_27,var_28);
|
|
soundscripts\_snd::snd_message("reactor_bot_elevator_open",var_05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 270
|
|
reactor_room_robots_lift_adjust_bars(param_00,param_01,param_02)
|
|
{
|
|
if(param_02 == "initial")
|
|
{
|
|
var_03 = "start_bars";
|
|
}
|
|
else
|
|
{
|
|
var_03 = "end_bars";
|
|
}
|
|
|
|
var_04 = undefined;
|
|
var_05 = undefined;
|
|
foreach(var_07 in param_00.bars)
|
|
{
|
|
if(var_07.script_noteworthy == var_03)
|
|
{
|
|
var_05 = var_07;
|
|
}
|
|
}
|
|
|
|
var_09 = 45;
|
|
var_0A = 1;
|
|
var_0B = 0.5;
|
|
var_0C = 0.5;
|
|
if(param_01 == "raise")
|
|
{
|
|
var_09 = var_09 * -1;
|
|
}
|
|
|
|
var_05 = getentarray(var_05.target,"targetname");
|
|
var_0D = undefined;
|
|
var_0E = undefined;
|
|
foreach(var_10 in var_05)
|
|
{
|
|
if(var_10.script_noteworthy == "roll_down_bar_left")
|
|
{
|
|
var_0D = var_10;
|
|
}
|
|
else
|
|
{
|
|
var_0E = var_10;
|
|
}
|
|
|
|
var_10 unlink();
|
|
}
|
|
|
|
var_0E rotateroll(var_09,var_0A,var_0B,var_0C);
|
|
var_0D rotateroll(var_09,var_0A,var_0B,var_0C);
|
|
wait(var_0A);
|
|
foreach(var_10 in var_05)
|
|
{
|
|
var_10 unlink();
|
|
var_10 linkto(param_00);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 271
|
|
reactor_room_allies_run_from_crate()
|
|
{
|
|
level waittill("crate_raising");
|
|
var_00 = getent("reveal_crate_color_trigger","targetname");
|
|
if(isdefined(var_00))
|
|
{
|
|
var_00 maps\_utility::activate_trigger();
|
|
}
|
|
}
|
|
|
|
//Function Number: 272
|
|
reactor_room_redshirts()
|
|
{
|
|
level endon("turbine_elevator_reached_top");
|
|
for(;;)
|
|
{
|
|
common_scripts\utility::flag_wait("reactor_redshirts_enable");
|
|
self.count++;
|
|
var_00 = maps\_utility::spawn_ai();
|
|
var_00 waittill("death");
|
|
wait(randomfloatrange(1,5));
|
|
}
|
|
}
|
|
|
|
//Function Number: 273
|
|
reactor_room_redshirt_cleanup()
|
|
{
|
|
level waittill("turbine_elevator_reached_top");
|
|
waittillframeend;
|
|
common_scripts\utility::array_call(getentarray("reactor_redshirts","script_noteworthy"),::delete);
|
|
}
|
|
|
|
//Function Number: 274
|
|
reactor_room_combat()
|
|
{
|
|
thread reactor_room_catwalk_combat();
|
|
thread reactor_room_combat_seek_player();
|
|
thread reactor_room_combat_mid_checkpoint();
|
|
common_scripts\utility::flag_wait("reactor_room_end_combat");
|
|
level.burke maps\_utility::disable_careful();
|
|
level.joker maps\_utility::disable_careful();
|
|
level.carter maps\_utility::disable_careful();
|
|
}
|
|
|
|
//Function Number: 275
|
|
enemy_combat_equip_microwave_grenades()
|
|
{
|
|
var_00 = getaiarray("axis");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(isdefined(var_02.script_parameters) && var_02.script_parameters == "microwave_equipped")
|
|
{
|
|
var_02 maps\_utility::add_spawn_function(::reactor_room_microwave_grenade_equip);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 276
|
|
reactor_room_combat_mid_checkpoint()
|
|
{
|
|
level endon("elevator_ascend");
|
|
common_scripts\utility::flag_wait("reactor_room_combat_mid_save_1");
|
|
maps\_utility::autosave_by_name();
|
|
}
|
|
|
|
//Function Number: 277
|
|
reactor_room_combat_seek_player()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_reactor_room_combat_seek_player");
|
|
level.burke maps\_utility::disable_careful();
|
|
level.joker maps\_utility::disable_careful();
|
|
level.carter maps\_utility::disable_careful();
|
|
var_00 = getaiarray("axis");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 thread maps\_utility::player_seek_enable();
|
|
}
|
|
}
|
|
|
|
//Function Number: 278
|
|
reactor_room_microwave_grenade_equip()
|
|
{
|
|
maps\fusion_utility::equip_microwave_grenade();
|
|
}
|
|
|
|
//Function Number: 279
|
|
reactor_room_catwalk_death()
|
|
{
|
|
level endon("elevator_ascend");
|
|
common_scripts\utility::flag_wait("reactor_room_catwalk_death");
|
|
var_00 = common_scripts\utility::getstruct("reactor_room_catwalk_death","targetname");
|
|
var_01 = getdvarint("cg_fov");
|
|
if(!level.player worldpointinreticle_circle(var_00.origin,var_01,250))
|
|
{
|
|
var_02 = var_00 common_scripts\utility::get_target_ent() maps\_utility::spawn_ai();
|
|
var_02.deathfunction = undefined;
|
|
var_02.animname = "generic";
|
|
var_02 maps\_utility::set_deathanim("reactor_room_catwalk_death");
|
|
var_02 kill();
|
|
}
|
|
}
|
|
|
|
//Function Number: 280
|
|
reactor_room_catwalk_combat()
|
|
{
|
|
level endon("elevator_ascend");
|
|
var_00 = getent("reactor_room_below_catwalk","targetname");
|
|
var_01 = common_scripts\utility::getstruct("reactor_room_catwalk_struct","targetname");
|
|
var_02 = getentarray("reactor_catwalk_spawner_test","script_noteworthy");
|
|
common_scripts\utility::array_thread(var_02,::reactor_catwalk_spawner_trigger_think);
|
|
for(;;)
|
|
{
|
|
level waittill("reactor_catwalk_spawner_trigger_hit");
|
|
if(level.player istouching(var_00))
|
|
{
|
|
wait(0.1);
|
|
var_03 = getaiarray("axis");
|
|
foreach(var_05 in var_03)
|
|
{
|
|
if(isalive(var_05) && var_05.origin[2] >= var_01.origin[2] && distance2dsquared(var_05.origin,var_01.origin) < var_01.radius * var_01.radius)
|
|
{
|
|
var_05 thread maps\fusion_utility::bloody_death();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 281
|
|
reactor_catwalk_spawner_trigger_think()
|
|
{
|
|
self waittill("trigger");
|
|
level notify("reactor_catwalk_spawner_trigger_hit");
|
|
}
|
|
|
|
//Function Number: 282
|
|
turbine_room()
|
|
{
|
|
thread turbine_room_elevator();
|
|
thread turbine_room_explosion();
|
|
thread turbine_room_entrance_steam();
|
|
thread turbine_room_turbines();
|
|
thread turbine_room_atmosphere();
|
|
thread turbine_room_combat();
|
|
thread turbine_combat_mid_checkpoint_1();
|
|
thread turbine_room_pre_explosion();
|
|
thread pdrone_activate("turbine_room_combat_start");
|
|
thread pdrone_deactivate_think();
|
|
thread pdrone_deploy_hint();
|
|
}
|
|
|
|
//Function Number: 283
|
|
turbine_room_elevator()
|
|
{
|
|
var_00 = getent("turbine_elevator_badplace","targetname");
|
|
badplace_brush("turbine_elevator_badplace",0,var_00,"axis");
|
|
var_01 = getent("elevator_ascend_use_trigger","targetname");
|
|
if(level.player usinggamepad())
|
|
{
|
|
var_01 sethintstring(&"FUSION_OPERATE_ELEVATOR");
|
|
}
|
|
else
|
|
{
|
|
var_01 sethintstring(&"FUSION_OPERATE_ELEVATOR_PC");
|
|
}
|
|
|
|
var_02 = getent("elevator_cover_col","targetname");
|
|
var_03 = getent("elevator_door_col","targetname");
|
|
var_02 notsolid();
|
|
var_03 notsolid();
|
|
var_04 = getent("deployable_cover_final_model","targetname");
|
|
var_04.contents = var_04 setcontents(0);
|
|
var_04 hide();
|
|
common_scripts\utility::flag_wait("turbine_elevator_enter");
|
|
if(level.nextgen)
|
|
{
|
|
common_scripts\utility::array_thread(getaiarray("axis"),::maps\fusion_utility::bloody_death,5);
|
|
}
|
|
else
|
|
{
|
|
thread turbine_enemy_elevator_removal();
|
|
}
|
|
|
|
var_05 = getent("elevator_control","targetname");
|
|
var_06 = getent("elevator_button","targetname");
|
|
var_07 = 6;
|
|
var_08 = 4;
|
|
var_09 = getent("turbine_elevator_animnode","targetname");
|
|
var_09 linkto(var_05);
|
|
var_04 linkto(var_05);
|
|
var_0A = "elevator_button_scene";
|
|
level.player_rig = maps\_utility::spawn_anim_model("player_arms");
|
|
level.player_rig hide();
|
|
var_09 maps\_anim::anim_first_frame_solo(level.player_rig,var_0A);
|
|
if(!isdefined(level.turbine_room_elevator_ascent_time))
|
|
{
|
|
common_scripts\utility::flag_set("vo_turbine_elevator_near");
|
|
var_0B = "stop_elevator_idle";
|
|
level.burke thread turbine_room_elevator_think(var_09,var_0B);
|
|
level.carter thread turbine_room_elevator_think(var_09,var_0B);
|
|
var_0C = level.joker.goalradius;
|
|
level.joker.goalradius = 16;
|
|
var_0D = [level.burke,level.carter,level.joker,level.player];
|
|
var_0E = getent("inside_elevator_trigger","targetname");
|
|
while(!var_0E check_if_multiple_ents_inside(var_0D))
|
|
{
|
|
wait(1);
|
|
}
|
|
|
|
level.burke maps\_utility::disable_ai_color();
|
|
level.joker maps\_utility::disable_ai_color();
|
|
level.carter maps\_utility::disable_ai_color();
|
|
common_scripts\utility::flag_set("update_obj_pos_turbine_elevator_button");
|
|
common_scripts\utility::flag_set("vo_turbine_elevator_ready");
|
|
var_0F = maps\_shg_utility::hint_button_position("use",var_06.origin,40,512);
|
|
level.joker.goalradius = var_0C;
|
|
common_scripts\utility::flag_set("elevator_ascend_ready");
|
|
common_scripts\utility::flag_wait("elevator_ascend");
|
|
var_0F maps\_shg_utility::hint_button_clear();
|
|
common_scripts\utility::flag_set("update_obj_pos_turbine_elevator_ascent");
|
|
thread turbine_room_elevator_button_pressed_anim(var_0A,var_09);
|
|
common_scripts\utility::array_thread(getaiarray("axis"),::maps\_vehicle::force_kill);
|
|
var_01 delete();
|
|
level waittill("flag_anim_elevator_button_pressed");
|
|
var_06 setmodel("fus_elevator_button_02");
|
|
var_10 = getent("joker_elevator_cover","targetname");
|
|
level.joker forceteleport(var_10.origin,var_10.angles);
|
|
level.joker thread turbine_room_elevator_think(var_09,var_0B,var_04);
|
|
soundscripts\_snd::snd_message("start_turbine_elevator");
|
|
level.turbine_room_elevator_ascent_time = 10;
|
|
if(level.currentgen)
|
|
{
|
|
level.turbine_room_elevator_ascent_time = 15;
|
|
}
|
|
|
|
var_11 = getent("elevator_door_bottom_1","script_noteworthy");
|
|
var_12 = getent("elevator_door_bottom_2","script_noteworthy");
|
|
var_13 = getent("elevator_door_bottom_3","script_noteworthy");
|
|
var_14 = getent("elevator_door_bottom_4","script_noteworthy");
|
|
var_11 moveto(var_11.origin + (0,0,-51),var_07 / 2,var_07 / 6,var_07 / 6);
|
|
var_12 moveto(var_12.origin + (0,0,-93),var_07 * 2 / 3,var_07 / 12,var_07 / 12);
|
|
var_13 moveto(var_13.origin + (0,0,-140),var_07,var_07 / 18,var_07 / 18);
|
|
var_14 common_scripts\utility::delaycall(var_07 * 3 / 4,::moveto,var_14.origin + (0,0,8),var_07 / 4,var_07 / 8,var_07 / 8);
|
|
var_15 = getentarray("elevator_inner_door_upper","targetname");
|
|
var_16 = getentarray("elevator_inner_door_lower","targetname");
|
|
foreach(var_18 in var_15)
|
|
{
|
|
var_18 moveto(var_18.origin + (0,0,-80),var_08,var_08 / 6,var_08 / 6);
|
|
}
|
|
|
|
foreach(var_18 in var_16)
|
|
{
|
|
var_18 moveto(var_18.origin + (0,0,48),var_08,var_08 / 6,var_08 / 6);
|
|
}
|
|
|
|
maps\_utility::delaythread(0.5,::common_scripts\utility::flag_set,"vo_turbine_elevator");
|
|
maps\_utility::delaythread(3,::common_scripts\utility::flag_set,"joker_place_elevator_cover");
|
|
var_02 solid();
|
|
var_02 linkto(var_05);
|
|
var_03 solid();
|
|
wait(var_07);
|
|
if(level.currentgen)
|
|
{
|
|
level notify("tff_pre_transition_middle_to_outro");
|
|
unloadtransient("fusion_middle_tr");
|
|
loadtransient("fusion_outro_tr");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_02 solid();
|
|
var_02 linkto(var_05);
|
|
var_03 solid();
|
|
var_04 show();
|
|
var_04 setcontents(var_04.contents);
|
|
common_scripts\utility::flag_set("update_obj_pos_turbine_elevator_button");
|
|
}
|
|
|
|
level notify("reactor_room_cleanup");
|
|
soundscripts\_snd::snd_message("disable_turbine_elevator_trigger");
|
|
common_scripts\utility::array_call(getentarray("reactor_room_enemies","script_noteworthy"),::delete);
|
|
var_1C = getentarray("turbine_room_elevator","script_noteworthy");
|
|
foreach(var_18 in var_1C)
|
|
{
|
|
var_18 linkto(var_05);
|
|
}
|
|
|
|
var_1F = getent("elevator_destination","targetname");
|
|
var_20 = getent("elevator_door_top_1","script_noteworthy");
|
|
var_21 = getent("elevator_door_top_2","script_noteworthy");
|
|
var_22 = getent("elevator_door_top_3","script_noteworthy");
|
|
var_23 = getent("elevator_door_top_4","script_noteworthy");
|
|
var_21 disconnectpaths();
|
|
var_22 disconnectpaths();
|
|
if(level.turbine_room_elevator_ascent_time)
|
|
{
|
|
common_scripts\utility::flag_wait("joker_placing_turbine_elevator_cover");
|
|
var_24 = maps\_utility::get_rumble_ent();
|
|
var_24.intensity = 0.1;
|
|
common_scripts\utility::noself_delaycall(level.turbine_room_elevator_ascent_time,::stopallrumbles);
|
|
var_05 moveto(var_1F.origin,level.turbine_room_elevator_ascent_time,2,2);
|
|
wait(level.turbine_room_elevator_ascent_time);
|
|
if(level.currentgen)
|
|
{
|
|
while(!istransientloaded("fusion_outro_tr"))
|
|
{
|
|
wait(0.1);
|
|
}
|
|
|
|
level notify("tff_post_transition_middle_to_outro");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_25 = var_1F.origin - var_05.origin;
|
|
var_05.origin = var_05.origin + var_25;
|
|
var_02.origin = var_02.origin + var_25;
|
|
var_09.origin = var_09.origin + var_25;
|
|
var_0A = "turbine_elevator_exit";
|
|
var_26 = "turbine_elevator_idle";
|
|
var_0B = "stop_elevator_idle";
|
|
var_09 thread maps\_anim::anim_single_solo_run(level.burke,var_0A);
|
|
var_09 thread maps\_anim::anim_single_solo_run(level.carter,var_0A);
|
|
var_09 thread maps\_anim::anim_loop_solo(level.joker,var_26,var_0B);
|
|
var_09 thread maps\_utility::notify_delay(var_0B,5.5);
|
|
var_09 maps\_utility::delaythread(5.5,::maps\_anim::anim_single_solo_run,level.joker,var_0A);
|
|
}
|
|
|
|
var_02 disconnectpaths();
|
|
var_27 = getentarray("elevator_inner_exit_door_upper","targetname");
|
|
var_28 = getentarray("elevator_inner_exit_door_lower","targetname");
|
|
if(isdefined(var_20))
|
|
{
|
|
var_20 moveto(var_20.origin + (0,0,51),var_07 / 2,var_07 / 6,var_07 / 6);
|
|
var_21 moveto(var_21.origin + (0,0,93),var_07 * 2 / 3,var_07 / 12,var_07 / 12);
|
|
var_22 moveto(var_22.origin + (0,0,140),var_07,var_07 / 18,var_07 / 18);
|
|
var_23 common_scripts\utility::delaycall(var_07 * 3 / 4,::moveto,var_23.origin + (0,0,-8),var_07 / 4,var_07 / 8,var_07 / 8);
|
|
var_15 = getentarray("elevator_inner_door_upper","targetname");
|
|
var_16 = getentarray("elevator_inner_door_lower","targetname");
|
|
foreach(var_18 in var_15)
|
|
{
|
|
var_18 moveto(var_18.origin + (0,0,-80),var_08,var_08 / 6,var_08 / 6);
|
|
}
|
|
|
|
foreach(var_18 in var_16)
|
|
{
|
|
var_18 moveto(var_18.origin + (0,0,48),var_08,var_08 / 6,var_08 / 6);
|
|
}
|
|
}
|
|
|
|
foreach(var_18 in var_27)
|
|
{
|
|
var_18 unlink();
|
|
var_18 moveto(var_18.origin + (0,0,80),var_08,var_08 / 6,var_08 / 6);
|
|
}
|
|
|
|
foreach(var_18 in var_28)
|
|
{
|
|
var_18 unlink();
|
|
var_18 moveto(var_18.origin + (0,0,-48),var_08,var_08 / 6,var_08 / 6);
|
|
}
|
|
|
|
common_scripts\_exploder::exploder(3501);
|
|
common_scripts\_exploder::exploder(3502);
|
|
level notify("turbine_elevator_reached_top");
|
|
if(level.currentgen)
|
|
{
|
|
var_31 = ["turbine_room_enemy"];
|
|
thread maps\_cg_encounter_perf_monitor::cg_spawn_perf_monitor("turbine_room_stop_combat",var_31,15,0);
|
|
common_scripts\utility::flag_set("portal_on_turbine_room_flag");
|
|
}
|
|
|
|
soundscripts\_snd::snd_message("stop_turbine_elevator");
|
|
common_scripts\utility::flag_set("control_room_run_prep");
|
|
soundscripts\_snd::snd_message("start_turbine_loop");
|
|
common_scripts\utility::flag_set("update_obj_pos_turbine_room_1");
|
|
common_scripts\utility::flag_set("turbine_room_combat_start");
|
|
maps\_utility::delaythread(10,::common_scripts\utility::flag_set,"vo_turbine_room_entrance");
|
|
maps\_utility::autosave_by_name("turbine_elevator_complete");
|
|
wait(1);
|
|
var_21 connectpaths();
|
|
var_22 connectpaths();
|
|
}
|
|
|
|
//Function Number: 284
|
|
turbine_enemy_elevator_removal()
|
|
{
|
|
var_00 = getaiarray("axis");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 thread maps\_utility::player_seek_enable();
|
|
}
|
|
|
|
thread maps\_utility::ai_delete_when_out_of_sight(var_00,500);
|
|
}
|
|
|
|
//Function Number: 285
|
|
check_if_multiple_ents_inside(param_00)
|
|
{
|
|
foreach(var_02 in param_00)
|
|
{
|
|
if(!var_02 istouching(self))
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 286
|
|
turbine_room_elevator_button_pressed_anim(param_00,param_01)
|
|
{
|
|
level.player maps\_shg_utility::setup_player_for_scene();
|
|
thread maps\_player_exo::player_exo_deactivate();
|
|
var_02 = 0.4;
|
|
level.player playerlinktoblend(level.player_rig,"tag_player",var_02);
|
|
level.player common_scripts\utility::delaycall(var_02,::playerlinktodelta,level.player_rig,"tag_player",1,7,7,5,5,1);
|
|
level.player take_car_door_shields();
|
|
wait(var_02);
|
|
level.player_rig show();
|
|
level.player soundscripts\_snd::snd_message("turbine_room_elevator_button");
|
|
param_01 maps\_anim::anim_single_solo(level.player_rig,param_00);
|
|
level.player_rig delete();
|
|
level.player unlink();
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
thread maps\_player_exo::player_exo_activate();
|
|
}
|
|
|
|
//Function Number: 287
|
|
turbine_room_elevator_think(param_00,param_01,param_02)
|
|
{
|
|
var_03 = "turbine_elevator_enter";
|
|
var_04 = "turbine_elevator_idle";
|
|
var_05 = "turbine_elevator_exit";
|
|
if(self == level.joker)
|
|
{
|
|
common_scripts\utility::flag_wait("joker_place_elevator_cover");
|
|
}
|
|
|
|
if(self == level.burke)
|
|
{
|
|
wait(2);
|
|
}
|
|
|
|
param_00 maps\_anim::anim_reach_solo(self,var_03);
|
|
if(self == level.joker)
|
|
{
|
|
common_scripts\utility::flag_set("joker_placing_turbine_elevator_cover");
|
|
var_06 = spawn("script_model",(0,0,0));
|
|
var_06.animname = "deployable_cover";
|
|
var_06 setmodel("deployable_cover");
|
|
var_06 maps\_anim::setanimtree();
|
|
var_06 linkto(param_00);
|
|
param_00 thread maps\_anim::anim_single_solo(var_06,"deployable_cover_deploy");
|
|
maps\_utility::delaythread(2.1,::common_scripts\_exploder::exploder,"fx_cover_deploy_impact");
|
|
maps\_utility::delaythread(5,::common_scripts\_exploder::exploder,"fx_cover_deploy_impact_delay");
|
|
var_07 = 5.4;
|
|
param_02 common_scripts\utility::delaycall(var_07,::setcontents,param_02.contents);
|
|
param_02 common_scripts\utility::delaycall(var_07,::show);
|
|
var_06 common_scripts\utility::delaycall(var_07,::delete);
|
|
}
|
|
|
|
self linkto(param_00);
|
|
param_00 maps\_anim::anim_single_solo(self,var_03);
|
|
param_00 thread maps\_anim::anim_loop_solo(self,var_04,param_01);
|
|
if(self == level.joker)
|
|
{
|
|
if(level.currentgen)
|
|
{
|
|
level waittill("tff_post_transition_middle_to_outro");
|
|
}
|
|
else
|
|
{
|
|
wait(5.5);
|
|
}
|
|
}
|
|
else if(level.currentgen)
|
|
{
|
|
level waittill("tff_post_transition_middle_to_outro");
|
|
}
|
|
else
|
|
{
|
|
level waittill("turbine_elevator_reached_top");
|
|
}
|
|
|
|
self unlink();
|
|
param_00 notify(param_01);
|
|
param_00 thread maps\_anim::anim_single_solo_run(self,var_05);
|
|
maps\_utility::disable_surprise();
|
|
maps\_utility::disable_bulletwhizbyreaction();
|
|
wait(10);
|
|
maps\_utility::enable_surprise();
|
|
maps\_utility::enable_bulletwhizbyreaction();
|
|
}
|
|
|
|
//Function Number: 288
|
|
turbine_room_combat()
|
|
{
|
|
common_scripts\utility::flag_wait("player_in_turbine_room");
|
|
level.burke maps\_utility::enable_careful();
|
|
level.joker maps\_utility::enable_careful();
|
|
level.carter maps\_utility::enable_careful();
|
|
level.turbine_room_goal_volume = getent("turbine_room_initial_goal","script_noteworthy");
|
|
common_scripts\utility::array_thread(getentarray("turbine_room_goal_volume_trigger","targetname"),::turbine_room_goal_volume_trigger_think);
|
|
common_scripts\utility::flag_wait("turbine_room_combat_start");
|
|
level.burke maps\_utility::enable_ai_color();
|
|
level.joker maps\_utility::enable_ai_color();
|
|
level.carter maps\_utility::enable_ai_color();
|
|
thread turbine_room_combat_initial();
|
|
thread turbine_room_combat_seek_player();
|
|
common_scripts\utility::flag_wait("turbine_room_stop_combat");
|
|
foreach(var_01 in getaiarray("axis"))
|
|
{
|
|
var_01 thread maps\fusion_utility::bloody_death(randomfloatrange(0,3));
|
|
}
|
|
}
|
|
|
|
//Function Number: 289
|
|
turbine_combat_mid_checkpoint_1()
|
|
{
|
|
level endon("turbine_room_stop_combat");
|
|
common_scripts\utility::flag_wait("flag_turbine_combat_mid_save_1");
|
|
maps\_utility::autosave_by_name();
|
|
}
|
|
|
|
//Function Number: 290
|
|
turbine_room_combat_initial()
|
|
{
|
|
thread turbine_room_squibs();
|
|
var_00 = getaiarray("axis");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(randomfloat(1) < 0.25)
|
|
{
|
|
var_02.favoriteenemy = level.player;
|
|
}
|
|
}
|
|
|
|
wait(5);
|
|
common_scripts\utility::flag_set("turbine_room_initial_combat_retreat");
|
|
}
|
|
|
|
//Function Number: 291
|
|
turbine_room_combat_seek_player()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_turbine_room_combat_seek_player");
|
|
level.burke maps\_utility::disable_careful();
|
|
level.joker maps\_utility::disable_careful();
|
|
level.carter maps\_utility::disable_careful();
|
|
var_00 = getaiarray("axis");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 thread maps\_utility::player_seek_enable();
|
|
}
|
|
}
|
|
|
|
//Function Number: 292
|
|
turbine_room_squibs()
|
|
{
|
|
level endon("turbine_room_initial_combat_retreat");
|
|
var_00 = common_scripts\utility::getstructarray("turbine_room_squib_source","targetname");
|
|
var_01 = common_scripts\utility::getstructarray("turbine_room_squib_dest","targetname");
|
|
wait(1);
|
|
for(;;)
|
|
{
|
|
var_02 = randomintrange(1,var_00.size);
|
|
for(var_03 = 0;var_03 < var_02;var_03++)
|
|
{
|
|
var_04 = var_00[randomint(var_00.size)];
|
|
var_05 = var_01[randomint(var_01.size)];
|
|
magicbullet("iw5_ak12_sp",var_04.origin,var_05.origin);
|
|
wait(randomfloat(0.2));
|
|
}
|
|
|
|
wait(randomfloat(0.2));
|
|
}
|
|
}
|
|
|
|
//Function Number: 293
|
|
turbine_room_goal_volume_trigger_think()
|
|
{
|
|
var_00 = common_scripts\utility::get_target_ent();
|
|
level endon("turbine_room_stop_combat");
|
|
for(;;)
|
|
{
|
|
self waittill("trigger");
|
|
if(var_00 != level.turbine_room_goal_volume)
|
|
{
|
|
level.turbine_room_goal_volume = var_00;
|
|
level notify("turbine_room_update_goal");
|
|
}
|
|
|
|
wait(0.5);
|
|
}
|
|
}
|
|
|
|
//Function Number: 294
|
|
turbine_room_enemy_think()
|
|
{
|
|
self endon("death");
|
|
while(!isdefined(level.turbine_room_goal_volume))
|
|
{
|
|
wait(1);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
level waittill("turbine_room_update_goal");
|
|
self setgoalvolumeauto(level.turbine_room_goal_volume);
|
|
wait(1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 295
|
|
turbine_room_turbines()
|
|
{
|
|
common_scripts\utility::flag_wait("elevator_ascend");
|
|
common_scripts\utility::array_thread(getentarray("turbine_fan","targetname"),::turbine_fan_think);
|
|
}
|
|
|
|
//Function Number: 296
|
|
turbine_fan_think()
|
|
{
|
|
var_00 = 10;
|
|
var_01 = 360;
|
|
if(isdefined(self.script_parameters))
|
|
{
|
|
if(self.script_parameters == "ccw")
|
|
{
|
|
var_01 = -1 * var_01;
|
|
}
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
self rotateroll(var_01 * var_00,var_00,0,0);
|
|
wait(var_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 297
|
|
turbine_room_entrance_steam()
|
|
{
|
|
common_scripts\utility::flag_wait("turbine_room_entrance_steam");
|
|
common_scripts\_exploder::exploder("turbine_looping_steam_fx");
|
|
}
|
|
|
|
//Function Number: 298
|
|
turbine_room_pre_explosion()
|
|
{
|
|
common_scripts\utility::flag_wait("turbine_room_pre_explosion");
|
|
maps\_utility::pauseexploder("turbine_looping_steam_fx");
|
|
wait(2.2);
|
|
common_scripts\_exploder::exploder("turbine_room_spark_steam");
|
|
soundscripts\_snd::snd_message("turbine_pre_explo");
|
|
wait(0.4);
|
|
common_scripts\_exploder::exploder("turbine_room_spark_steam_2");
|
|
common_scripts\_exploder::exploder("turbine_looping_steam_fx_2");
|
|
common_scripts\_exploder::exploder("turbine_looping_steam_fx");
|
|
}
|
|
|
|
//Function Number: 299
|
|
turbine_room_explosion()
|
|
{
|
|
var_00 = getent("turbine_explosion_volume","targetname");
|
|
badplace_brush("turbine_explosion_volume",0,var_00,"allies");
|
|
var_01 = getentarray("turbine_damaged","targetname");
|
|
common_scripts\utility::array_call(var_01,::hide);
|
|
var_02 = getentarray("turbine_fan_damaged","targetname");
|
|
common_scripts\utility::array_call(var_02,::hide);
|
|
common_scripts\utility::flag_wait("turbine_room_explosion");
|
|
soundscripts\_snd::snd_message("turbine_explo_audio");
|
|
wait(0.2);
|
|
var_03 = common_scripts\utility::getstructarray("turbine_explosion_damage_source","targetname");
|
|
foreach(var_05 in var_03)
|
|
{
|
|
radiusdamage(var_05.origin,var_05.radius,200,100);
|
|
}
|
|
|
|
maps\_utility::pauseexploder("turbine_looping_steam_fx");
|
|
maps\_utility::pauseexploder("turbine_looping_steam_fx_2");
|
|
common_scripts\_exploder::exploder("turbine_explosion_fx");
|
|
var_07 = getent("turbine_explosion_catwalk_source","targetname");
|
|
var_07 playsound("detpack_explo_metal");
|
|
earthquake(0.5,0.5,var_07.origin,3000);
|
|
badplace_delete("turbine_explosion_volume");
|
|
badplace_brush("turbine_explosion_volume",0,var_00,"axis","allies");
|
|
var_08 = getentarray("turbine_intact","targetname");
|
|
common_scripts\utility::array_call(var_08,::delete);
|
|
common_scripts\utility::array_call(var_01,::show);
|
|
common_scripts\utility::array_call(var_02,::show);
|
|
common_scripts\utility::array_thread(var_02,::turbine_fan_think);
|
|
wait(1.5);
|
|
common_scripts\_exploder::exploder("turbine_explosion_steam_fx");
|
|
common_scripts\_exploder::exploder("turbine_damage_sparks");
|
|
common_scripts\utility::flag_set("vo_turbine_explosion");
|
|
soundscripts\_snd::snd_message("start_pa_emergency_turbine");
|
|
if(level.currentgen)
|
|
{
|
|
level waittill("notify_out_of_control_room");
|
|
maps\_utility::stop_exploder("turbine_explosion_fx");
|
|
}
|
|
}
|
|
|
|
//Function Number: 300
|
|
turbine_room_explosion_flying_blades()
|
|
{
|
|
var_00 = common_scripts\utility::getstructarray("turbine_blade_flying_start","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
thread turbine_room_explosion_launch_blade(var_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 301
|
|
turbine_room_explosion_launch_blade(param_00)
|
|
{
|
|
if(isdefined(param_00.script_delay))
|
|
{
|
|
wait(param_00.script_delay);
|
|
}
|
|
|
|
var_01 = common_scripts\utility::getstruct(param_00.target,"targetname");
|
|
var_02 = distance(param_00.origin,var_01.origin);
|
|
var_03 = 3000;
|
|
var_04 = var_02 / var_03;
|
|
var_05 = spawn("script_model",param_00.origin);
|
|
var_05 setmodel("vehicle_v22_osprey_damaged_static_bladepiece_left");
|
|
var_05.angles = param_00.angles;
|
|
var_05 moveto(var_01.origin,var_04,0,0);
|
|
var_05 rotatepitch(1080,var_04,0,0);
|
|
wait(var_04);
|
|
var_05.angles = var_01.angles;
|
|
var_05 thread maps\fusion_utility::delete_on_notify("turbine_room_cleanup");
|
|
}
|
|
|
|
//Function Number: 302
|
|
turbine_room_atmosphere()
|
|
{
|
|
level endon("flag_shut_down_reactor_failed");
|
|
level.player endon("death");
|
|
var_00 = common_scripts\utility::getstructarray("turbine_center","script_noteworthy");
|
|
var_01 = 0.07;
|
|
var_02 = 0.12;
|
|
var_03 = var_02 - var_01;
|
|
var_04 = 0.08;
|
|
var_05 = 0.12;
|
|
var_06 = var_05 - var_04;
|
|
for(;;)
|
|
{
|
|
common_scripts\utility::flag_wait("player_in_turbine_room");
|
|
var_07 = maps\_utility::get_rumble_ent("steady_rumble");
|
|
var_07.intensity = 0.08;
|
|
var_08 = 1;
|
|
while(common_scripts\utility::flag("player_in_turbine_room"))
|
|
{
|
|
var_09 = common_scripts\utility::getclosest(level.player.origin,var_00);
|
|
var_0A = get_turbine_shake_value(var_09);
|
|
var_07.intensity = var_01 + var_0A * var_03;
|
|
earthquake(var_04 + var_0A * var_06,var_08,level.player.origin,1000);
|
|
wait(randomfloatrange(var_08 / 4,var_08 / 2));
|
|
}
|
|
|
|
stopallrumbles();
|
|
}
|
|
}
|
|
|
|
//Function Number: 303
|
|
get_turbine_shake_value(param_00)
|
|
{
|
|
var_01 = 300;
|
|
var_02 = 600;
|
|
var_03 = var_02 - var_01;
|
|
var_04 = distance(level.player.origin,param_00.origin);
|
|
if(var_04 < var_01)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(var_04 > var_02)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1 - var_04 - var_01 / var_03;
|
|
}
|
|
|
|
//Function Number: 304
|
|
turbine_room_steam_player()
|
|
{
|
|
level endon("flag_shut_down_reactor_failed");
|
|
while(common_scripts\utility::flag("player_in_turbine_room"))
|
|
{
|
|
playfx(common_scripts\utility::getfx("steam_player"),level.player.origin + (0,0,0));
|
|
wait(0.3);
|
|
}
|
|
}
|
|
|
|
//Function Number: 305
|
|
control_room()
|
|
{
|
|
thread control_room_run();
|
|
thread control_room_explosion();
|
|
}
|
|
|
|
//Function Number: 306
|
|
control_room_run()
|
|
{
|
|
common_scripts\utility::flag_wait("control_room_run_prep");
|
|
var_00 = getent("clip_explosion_door","targetname");
|
|
var_00 hide();
|
|
var_01 = common_scripts\utility::getstruct("control_room_burke_position","targetname");
|
|
var_02 = "fusion_door_explosion";
|
|
var_03 = getent("fusion_door_open_postup_doors","targetname");
|
|
var_03.animname = "fusion_door_open_postup_doors";
|
|
var_03 maps\_anim::setanimtree();
|
|
var_01 maps\_anim::anim_first_frame_solo(var_03,var_02);
|
|
var_04 = getent("fusion_door_open_postup_door_left","targetname");
|
|
var_04 linkto(var_03,"door_R");
|
|
var_05 = getent("fusion_door_open_postup_door_right","targetname");
|
|
var_05 linkto(var_03,"door_L");
|
|
common_scripts\utility::flag_wait("control_room_run_approach");
|
|
var_06 = getaiarray("axis");
|
|
var_06 = maps\_utility::array_removedead_or_dying(var_06);
|
|
while(var_06.size >= 4)
|
|
{
|
|
var_06 = getaiarray("axis");
|
|
var_06 = maps\_utility::array_removedead_or_dying(var_06);
|
|
wait 0.05;
|
|
}
|
|
|
|
var_06 = getaiarray("axis");
|
|
var_06 = maps\_utility::array_removedead_or_dying(var_06);
|
|
foreach(var_08 in var_06)
|
|
{
|
|
maps\fusion_utility::bloody_death(randomfloatrange(1,2));
|
|
}
|
|
|
|
level.burke maps\_utility::disable_careful();
|
|
level.joker maps\_utility::disable_careful();
|
|
level.carter maps\_utility::disable_careful();
|
|
wait 0.05;
|
|
var_0A = [];
|
|
var_0A[var_0A.size] = level.burke;
|
|
var_0A[var_0A.size] = level.carter;
|
|
var_0B = "fusion_door_explosion_postup";
|
|
var_0C = "fusion_door_explosion_postup_loop";
|
|
var_0D = spawn("script_origin",var_01.origin);
|
|
var_0D.angles = var_01.angles;
|
|
var_0E = "control_room_run";
|
|
level.burke thread start_cqb_when_near(getstartorigin(var_0D.origin,var_0D.angles,level.scr_anim["burke"][var_0B]));
|
|
level.carter thread start_cqb_when_near(getstartorigin(var_0D.origin,var_0D.angles,level.scr_anim["carter"][var_0B]));
|
|
var_0A = [];
|
|
var_0A[var_0A.size] = level.burke;
|
|
var_0A[var_0A.size] = level.carter;
|
|
common_scripts\utility::array_thread(var_0A,::control_room_run_approach,var_0D,var_0B,var_0C,var_0E);
|
|
level waittill("control_room_run_guy_ready");
|
|
level waittill("control_room_run_guy_ready");
|
|
common_scripts\utility::flag_wait("control_room_run");
|
|
thread control_room_run_player();
|
|
thread control_room_screens();
|
|
level.burke maps\_utility::disable_cqbwalk();
|
|
level.carter maps\_utility::disable_cqbwalk();
|
|
var_0D notify("control_room_run");
|
|
thread control_room_run_joker();
|
|
maps\_utility::delaythread(2.5,::common_scripts\utility::flag_set,"update_obj_pos_control_room_door");
|
|
var_0A[var_0A.size] = var_03;
|
|
common_scripts\utility::array_call(getentarray("control_room_doors","targetname"),::delete);
|
|
var_0F = maps\_utility::spawn_anim_model("fusion_door_explosion_door_a",(0,0,0));
|
|
var_10 = [];
|
|
var_10[var_10.size] = var_0F;
|
|
soundscripts\_snd::snd_message("start_turbine_door_breach");
|
|
soundscripts\_snd::snd_message("start_turbine_door_impt",var_04,var_05);
|
|
thread control_room_scene_player(var_01);
|
|
maps\_utility::delaythread(5,::common_scripts\utility::flag_set,"vo_control_hall_door_stack");
|
|
maps\_utility::delaythread(6,::common_scripts\utility::flag_set,"vo_control_hall_door_kicked");
|
|
var_0A[var_0A.size] = var_0F;
|
|
var_11 = getanimlength(level.burke maps\_utility::getanim(var_02));
|
|
var_01 thread maps\_anim::anim_single(var_0A,var_02);
|
|
var_12 = 24;
|
|
maps\_utility::delaythread(var_12,::control_room_scene,var_11 - var_12);
|
|
wait(var_11);
|
|
var_00 show();
|
|
var_0D delete();
|
|
}
|
|
|
|
//Function Number: 307
|
|
control_room_run_approach(param_00,param_01,param_02,param_03)
|
|
{
|
|
param_00 maps\_anim::anim_reach_solo(self,param_01);
|
|
param_00 maps\_anim::anim_single_solo(self,param_01);
|
|
param_00 thread maps\_anim::anim_loop_solo(self,param_02,param_03);
|
|
level notify("control_room_run_guy_ready");
|
|
}
|
|
|
|
//Function Number: 308
|
|
control_room_run_player()
|
|
{
|
|
var_00 = common_scripts\utility::getstruct("control_room_door_explosion_dmg_org","targetname");
|
|
var_01 = var_00.radius;
|
|
common_scripts\utility::flag_wait("control_room_explosion");
|
|
playrumbleonposition("grenade_rumble",var_00.origin);
|
|
var_02 = getent("control_room_door_clip","targetname");
|
|
if(isdefined(var_02))
|
|
{
|
|
var_02 delete();
|
|
}
|
|
|
|
var_03 = distance2d(var_00.origin,level.player.origin);
|
|
if(var_03 < var_01)
|
|
{
|
|
var_04 = level.player.health * 0.9 / level.player.damagemultiplier;
|
|
var_05 = var_01 - var_03 / var_01 * var_04;
|
|
level.player dodamage(var_05,var_00.origin);
|
|
var_06 = common_scripts\utility::getstructarray("control_room_door_explosion_dmg_dest","targetname");
|
|
var_07 = [];
|
|
foreach(var_09 in var_06)
|
|
{
|
|
var_07[var_07.size] = length(vectorfromlinetopoint(var_00.origin,var_09.origin,level.player.origin));
|
|
}
|
|
|
|
var_0B = 0;
|
|
var_0C = 1000;
|
|
for(var_0D = 0;var_0D < var_07.size;var_0D++)
|
|
{
|
|
if(var_07[var_0D] < var_0C)
|
|
{
|
|
var_0B = var_0D;
|
|
var_0C = var_07[var_0D];
|
|
}
|
|
}
|
|
|
|
var_0E = var_06[var_0B];
|
|
var_0F = common_scripts\utility::spawn_tag_origin();
|
|
var_0F.origin = level.player.origin;
|
|
var_0F.angles = level.player.angles;
|
|
var_10 = 0.5;
|
|
level.player playerlinktoblend(var_0F,"tag_origin",var_10);
|
|
var_0F moveto(var_0E.origin,var_10,0.05,0.05);
|
|
var_11 = common_scripts\utility::getstruct("control_room_door_explosion_view_org","targetname");
|
|
var_0F rotateto((0,vectortoangles(var_11.origin - var_0E.origin)[1],0),var_10,0.05,0.05);
|
|
level.player playrumbleonentity("damage_heavy");
|
|
wait(var_10);
|
|
level.player unlink();
|
|
var_0F delete();
|
|
return;
|
|
}
|
|
|
|
level.player playrumbleonentity("damage_light");
|
|
}
|
|
|
|
//Function Number: 309
|
|
control_room_run_joker()
|
|
{
|
|
wait(6);
|
|
getent("fusion_door_open_postup_door_left","targetname") connectpaths();
|
|
getent("fusion_door_open_postup_door_right","targetname") connectpaths();
|
|
wait(1);
|
|
var_00 = getnode("pre_control_room_joker_position","targetname");
|
|
var_01 = level.joker.goalradius;
|
|
level.joker.goalradius = 64;
|
|
level.joker maps\_utility::enable_cqbwalk();
|
|
level.joker setgoalnode(var_00);
|
|
level.joker waittill("goal");
|
|
level.joker allowedstances("crouch");
|
|
maps\_utility::trigger_wait_targetname("cover_allies_complete");
|
|
wait(1);
|
|
var_02 = common_scripts\utility::getstruct("control_room_joker_position","targetname");
|
|
var_01 = level.joker.goalradius;
|
|
level.joker.goalradius = 64;
|
|
level.joker maps\_utility::enable_cqbwalk();
|
|
level.joker setgoalpos(var_02.origin);
|
|
level.joker waittill("goal");
|
|
level.joker allowedstances("crouch");
|
|
level waittill("control_room_scene_complete");
|
|
level.joker allowedstances("prone","crouch","stand");
|
|
level.joker maps\_utility::disable_cqbwalk();
|
|
level.joker.goalradius = var_01;
|
|
}
|
|
|
|
//Function Number: 310
|
|
control_room_explosion()
|
|
{
|
|
var_00 = getentarray("control_room_hall_intact","targetname");
|
|
var_01 = getentarray("control_room_hall_destroyed","targetname");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 hide();
|
|
}
|
|
|
|
level waittill("doors_explode");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 show();
|
|
}
|
|
|
|
foreach(var_03 in var_00)
|
|
{
|
|
var_03 delete();
|
|
}
|
|
|
|
common_scripts\utility::flag_set("control_room_explosion");
|
|
common_scripts\utility::flag_set("update_obj_pos_control_room_explosion");
|
|
common_scripts\utility::flag_set("vo_control_room_explosion");
|
|
level thread maps\fusion_fx::vfx_control_room_explo();
|
|
soundscripts\_snd::snd_message("start_control_room_explo");
|
|
}
|
|
|
|
//Function Number: 311
|
|
control_room_scene_player(param_00)
|
|
{
|
|
common_scripts\utility::flag_wait("control_room_console_enable");
|
|
var_01 = getent("control_room_console_use_trigger","targetname");
|
|
var_02 = common_scripts\utility::getstruct("obj_pos_control_room_console","targetname");
|
|
if(level.player usinggamepad())
|
|
{
|
|
var_01 sethintstring(&"FUSION_USE_CONSOLE");
|
|
}
|
|
else
|
|
{
|
|
var_01 sethintstring(&"FUSION_USE_CONSOLE_PC");
|
|
}
|
|
|
|
var_03 = var_01 maps\_shg_utility::hint_button_trigger("use");
|
|
common_scripts\utility::flag_wait("control_room_console_used");
|
|
level.burke thread maps\fusion_utility::hide_friendname_until_flag_or_notify("control_room_scene_complete");
|
|
level.joker thread maps\fusion_utility::hide_friendname_until_flag_or_notify("control_room_scene_complete");
|
|
level.carter thread maps\fusion_utility::hide_friendname_until_flag_or_notify("control_room_scene_complete");
|
|
var_01 delete();
|
|
var_03 maps\fusion_utility::hint_button_clear_fus();
|
|
common_scripts\utility::flag_set("update_obj_pos_control_room_using_console");
|
|
var_04 = getdvarint("cg_fov");
|
|
var_05 = maps\_utility::spawn_anim_model("player_rig",level.player.origin);
|
|
var_05 hide();
|
|
param_00 thread maps\_anim::anim_first_frame_solo(var_05,"control_room_scene");
|
|
level.player disableweapons();
|
|
maps\_player_exo::player_exo_deactivate();
|
|
var_06 = 1;
|
|
level.player playerlinktoblend(var_05,"tag_player",var_06);
|
|
thread maps\fusion_anim::fov_lerp_to_50_blendtime(level.player,var_06);
|
|
var_05 common_scripts\utility::delaycall(var_06,::show);
|
|
level.player common_scripts\utility::delaycall(var_06,::playerlinktodelta,var_05,"tag_player",0,30,30,30,30);
|
|
level.player allowcrouch(0);
|
|
level.player allowprone(0);
|
|
level.player disableweapons();
|
|
level.player maps\_utility::blend_movespeedscale_percent(0);
|
|
wait(var_06);
|
|
common_scripts\utility::flag_wait("control_room_scene_ready");
|
|
common_scripts\utility::flag_set("control_room_scene");
|
|
level.player playerlinktodelta(var_05,"tag_player",0,60,60,70,65);
|
|
param_00 thread maps\_anim::anim_single_solo(var_05,"control_room_scene");
|
|
var_07 = getanimlength(var_05 maps\_utility::getanim("control_room_scene"));
|
|
wait(var_07 - 1);
|
|
level.player allowcrouch(1);
|
|
level.player allowprone(1);
|
|
level.player enableweapons();
|
|
maps\_player_exo::player_exo_activate();
|
|
wait(1);
|
|
var_05 delete();
|
|
level.player unlink();
|
|
level.player maps\_utility::blend_movespeedscale_percent(100,1);
|
|
thread maps\fusion_anim::fov_reset_previous(level.player,var_04);
|
|
}
|
|
|
|
//Function Number: 312
|
|
control_room_scene(param_00)
|
|
{
|
|
common_scripts\utility::flag_set("control_room_scene_ready");
|
|
thread control_room_scene_actors(param_00);
|
|
level waittill("control_room_event_1");
|
|
thread maps\fusion_aud::do_inside_bombshake();
|
|
level waittill("control_room_event_2");
|
|
thread maps\fusion_aud::do_inside_bombshake();
|
|
level waittill("control_room_event_3");
|
|
thread maps\fusion_aud::do_inside_bombshake();
|
|
}
|
|
|
|
//Function Number: 313
|
|
control_room_scene_actors(param_00)
|
|
{
|
|
var_01 = common_scripts\utility::getstruct("control_room_burke_position","targetname");
|
|
var_02 = spawn("script_origin",var_01.origin);
|
|
var_02.angles = var_01.angles;
|
|
var_03 = spawn("script_origin",var_01.origin);
|
|
var_03.angles = var_01.angles;
|
|
var_04 = spawn("script_origin",var_01.origin);
|
|
var_04.angles = var_01.angles;
|
|
var_05 = "control_room_idle";
|
|
var_06 = [];
|
|
var_06[var_06.size] = level.burke;
|
|
var_06[var_06.size] = level.carter;
|
|
if(isdefined(param_00))
|
|
{
|
|
common_scripts\utility::flag_wait_or_timeout("control_room_scene",param_00);
|
|
}
|
|
|
|
var_02 thread maps\_anim::anim_loop_solo(level.burke,var_05,"control_room_scene");
|
|
var_04 thread maps\_anim::anim_loop_solo(level.carter,var_05,"control_room_scene");
|
|
var_05 = "control_room_scene";
|
|
var_06[var_06.size] = level.joker;
|
|
common_scripts\utility::flag_wait("control_room_scene");
|
|
level notify("turbine_room_cleanup");
|
|
var_02 notify("control_room_scene");
|
|
var_04 notify("control_room_scene");
|
|
var_04 delete();
|
|
maps\_utility::clear_all_color_orders("allies");
|
|
level.burke maps\_utility::enable_ai_color();
|
|
level.joker maps\_utility::enable_ai_color();
|
|
level.carter maps\_utility::enable_ai_color();
|
|
level.joker maps\_utility::set_force_color("o");
|
|
level.carter maps\_utility::set_force_color("o");
|
|
maps\_utility::delaythread(1,::maps\_utility::activate_trigger_with_targetname,"control_room_scene_complete_color_trigger");
|
|
common_scripts\utility::flag_set("vo_control_room_scene");
|
|
var_02 maps\_anim::anim_single_run(var_06,var_05);
|
|
var_02 delete();
|
|
common_scripts\utility::flag_set("flag_shut_down_reactor_failed");
|
|
common_scripts\utility::flag_set("evacuation_started");
|
|
common_scripts\utility::flag_set("update_obj_pos_control_room_exit_1");
|
|
control_room_scene_exit();
|
|
}
|
|
|
|
//Function Number: 314
|
|
control_room_screens()
|
|
{
|
|
level notify("stop_evacuation_kiosk_movie");
|
|
setsaveddvar("cg_cinematicFullScreen","0");
|
|
cinematicingameloop("fusion_control_room_loop");
|
|
common_scripts\utility::flag_wait("control_room_scene");
|
|
wait(12);
|
|
cinematicingameloop("fusion_control_room_loop_red");
|
|
common_scripts\utility::flag_wait("evacuation_started");
|
|
if(level.nextgen)
|
|
{
|
|
thread evacuation_kiosk_movie();
|
|
}
|
|
}
|
|
|
|
//Function Number: 315
|
|
control_room_scene_exit()
|
|
{
|
|
wait(0.45);
|
|
var_00 = getent("control_room_exit_door","targetname");
|
|
getent(var_00.target,"targetname") linkto(var_00);
|
|
var_01 = 0.5;
|
|
var_00 rotateto(var_00.angles - (0,120,0),var_01,0,0);
|
|
wait(var_01 + 0.05);
|
|
var_00 rotateto(var_00.angles - (0,-10,0),1,0,1);
|
|
common_scripts\utility::flag_wait("raise_control_room_emergency_exit_door");
|
|
common_scripts\utility::flag_set("update_obj_pos_control_room_exit_2");
|
|
}
|
|
|
|
//Function Number: 316
|
|
scene_control_room_ai()
|
|
{
|
|
maps\_utility::disable_surprise();
|
|
maps\_utility::disable_bulletwhizbyreaction();
|
|
maps\_utility::disable_pain();
|
|
level waittill("control_room_scene_complete");
|
|
maps\_utility::enable_surprise();
|
|
maps\_utility::enable_bulletwhizbyreaction();
|
|
maps\_utility::enable_pain();
|
|
}
|
|
|
|
//Function Number: 317
|
|
scene_control_room_fade_up()
|
|
{
|
|
if(!isdefined(level.overlay))
|
|
{
|
|
level.overlay = maps\_hud_util::create_client_overlay("black",1,level.player);
|
|
level.overlay.sort = -1;
|
|
level.overlay.foreground = 1;
|
|
level.overlay.color = (0,0,0);
|
|
}
|
|
|
|
wait(1);
|
|
var_00 = 1;
|
|
level.overlay fadeovertime(var_00);
|
|
level.overlay.alpha = 0;
|
|
wait(var_00);
|
|
level.overlay destroy();
|
|
}
|
|
|
|
//Function Number: 318
|
|
evacuation_setup()
|
|
{
|
|
common_scripts\utility::flag_wait("evacuation_started");
|
|
thread evacuation_corpses();
|
|
}
|
|
|
|
//Function Number: 319
|
|
dialog_meltdown()
|
|
{
|
|
thread dialog_collapse();
|
|
level endon("collapse_start");
|
|
common_scripts\utility::flag_wait("hangar_enemies");
|
|
level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_gideontangosarebailinout");
|
|
level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_soarewekeepmoving");
|
|
common_scripts\utility::flag_wait("hangar_combat_retreat");
|
|
level.carter maps\fusion_vo::dialogue_queue_global("fus_ctr_jokerwhatsyourgeigerreading");
|
|
level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_weregoodjustkeepshooting");
|
|
common_scripts\utility::flag_wait("hangar_combat_retreat_02");
|
|
level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_prophetwevegotkvaextraction");
|
|
maps\fusion_vo::radio_dialogue_queue_global("fus_prt_affirmativebravoone");
|
|
common_scripts\utility::flag_wait("hangar_exit_retreat");
|
|
level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_wraithtwothreeweneedimmediate");
|
|
maps\fusion_vo::radio_dialogue_queue_global("fus_ch1_copybravooneinboundinthirty");
|
|
maps\fusion_vo::radio_dialogue_queue_global("fus_prt_bravopressurereadingsarecritical");
|
|
soundscripts\_snd::snd_music_message("mus_fusion_pressure_readings_critical");
|
|
level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_youheardtheman");
|
|
common_scripts\utility::flag_wait("reaction_explo01a");
|
|
wait(0.75);
|
|
level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_goddamn2");
|
|
level.carter maps\fusion_vo::dialogue_queue_global("fus_ctr_whatthehellwasthat");
|
|
level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_pressureexplosions");
|
|
common_scripts\utility::flag_wait("ct_combat_retreat");
|
|
wait(2);
|
|
common_scripts\utility::flag_wait("reaction_explo01");
|
|
wait(2);
|
|
if(level.nextgen)
|
|
{
|
|
maps\fusion_vo::radio_dialogue_queue_global("fus_ch1_bravothisiswraithtwothree");
|
|
level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_youreadamnwelcomesight");
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("reaction_explo02");
|
|
wait(4);
|
|
common_scripts\utility::flag_set("extraction_chopper_move_from_explosion");
|
|
maps\fusion_vo::radio_dialogue_queue_global("fus_ch1_bravowecantgetnear");
|
|
level.burke maps\fusion_vo::dialogue_queue_global("fus_gdn_copythattwothree");
|
|
level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_comeon");
|
|
level.carter maps\fusion_vo::dialogue_queue_global("fus_ctr_gogo");
|
|
common_scripts\utility::flag_wait("ct_final_retreat");
|
|
level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_theresourexfil");
|
|
}
|
|
|
|
//Function Number: 320
|
|
dialog_monitor_drones_down()
|
|
{
|
|
common_scripts\utility::flag_wait("evacuation_first_drones_down");
|
|
if(!common_scripts\utility::flag("reaction_explo01") && !common_scripts\utility::flag("collapse_start"))
|
|
{
|
|
level.joker maps\fusion_vo::dialogue_queue_global("fus_jkr_dronesaredown");
|
|
}
|
|
}
|
|
|
|
//Function Number: 321
|
|
dialog_collapse()
|
|
{
|
|
common_scripts\utility::flag_wait("tower_debris");
|
|
}
|
|
|
|
//Function Number: 322
|
|
outro_newscast()
|
|
{
|
|
}
|
|
|
|
//Function Number: 323
|
|
combat_hangar()
|
|
{
|
|
var_00 = getentarray("hangar_enemies_01","targetname");
|
|
var_01 = getentarray("ct_enemies_01","targetname");
|
|
var_02 = getentarray("hangar_runaway","targetname");
|
|
var_03 = getentarray("hangar_runaway_02","targetname");
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death);
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death);
|
|
common_scripts\utility::array_thread(var_02,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death);
|
|
common_scripts\utility::array_thread(var_03,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death);
|
|
level.hangar_enemies = [];
|
|
common_scripts\utility::flag_wait("hangar_combat_start");
|
|
if(level.currentgen)
|
|
{
|
|
var_04 = ["hanger_enemies"];
|
|
thread maps\_cg_encounter_perf_monitor::cg_spawn_perf_monitor("collapse_start",var_04,12,0);
|
|
}
|
|
|
|
var_05 = maps\_utility::array_spawn(var_02,1,1);
|
|
common_scripts\utility::array_thread(var_05,::runaway_guy_delete);
|
|
common_scripts\utility::flag_wait("hangar_enemies");
|
|
level.carter.dontmelee = 1;
|
|
level.joker.dontmelee = 1;
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
common_scripts\utility::flag_wait("hangar_combat_retreat");
|
|
level.carter.dontmelee = undefined;
|
|
level.joker.dontmelee = undefined;
|
|
common_scripts\utility::flag_set("hangar_retreat_done");
|
|
common_scripts\utility::array_thread(level.hangar_enemies,::enemy_run_away,"vol_final_runaway",1);
|
|
common_scripts\utility::flag_wait("hangar_combat_retreat_02");
|
|
level.ct_enemies = maps\_utility::array_spawn(var_01,1,1);
|
|
var_06 = maps\_utility::array_spawn(var_03,1,1);
|
|
common_scripts\utility::array_thread(level.ct_enemies,::maps\_utility::flagwaitthread,"reaction_explo01a",::enemy_run_away,"vol_ct_02",0);
|
|
common_scripts\utility::flag_wait("ct_combat_retreat");
|
|
common_scripts\utility::flag_wait("reaction_explo01");
|
|
maps\_utility::autosave_by_name();
|
|
if(level.nextgen)
|
|
{
|
|
var_07 = getentarray("ct_runaway_drones","targetname");
|
|
common_scripts\utility::array_thread(var_07,::runaway_drone_think);
|
|
}
|
|
|
|
var_08 = getentarray("final_collapse_enemies","targetname");
|
|
maps\_utility::flood_spawn(var_08);
|
|
common_scripts\utility::flag_wait("ct_final_retreat");
|
|
common_scripts\utility::array_thread(var_08,::maps\_spawner::flood_spawner_stop);
|
|
}
|
|
|
|
//Function Number: 324
|
|
extraction_chopper()
|
|
{
|
|
common_scripts\utility::flag_wait("reaction_explo01");
|
|
if(level.nextgen)
|
|
{
|
|
level.extraction_chopper = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("ct_extraction_chopper");
|
|
level.extraction_chopper soundscripts\_snd::snd_message("extraction_chopper_spawn");
|
|
level.extraction_chopper thread warbird_shooting_think();
|
|
level.extraction_chopper setmaxpitchroll(20,60);
|
|
level.extraction_chopper maps\_vehicle::vehicle_lights_on("running");
|
|
level.extraction_chopper vehicle_turnengineoff();
|
|
}
|
|
|
|
wait(2);
|
|
if(level.nextgen)
|
|
{
|
|
level.extraction_chopper notify("warbird_fire");
|
|
}
|
|
|
|
wait(8);
|
|
common_scripts\utility::flag_set("objective_on_extraction_chopper");
|
|
if(level.nextgen)
|
|
{
|
|
level.extraction_chopper setgoalyaw(330);
|
|
level.extraction_chopper sethoverparams(50,50,25);
|
|
common_scripts\utility::flag_wait("extraction_chopper_move_from_explosion");
|
|
level.extraction_chopper notify("warbird_stop_firing");
|
|
level.extraction_chopper soundscripts\_snd::snd_message("extraction_chopper_move");
|
|
level.extraction_chopper cleargoalyaw();
|
|
level.extraction_chopper maps\_vehicle::vehicle_paths(common_scripts\utility::getstruct("extraction_chopper_move_from_explosion","targetname"));
|
|
}
|
|
}
|
|
|
|
//Function Number: 325
|
|
extraction_chopper_collapse()
|
|
{
|
|
common_scripts\utility::flag_wait("tower_debris");
|
|
wait(5);
|
|
var_00 = common_scripts\utility::getstruct("extraction_chopper_final_path","targetname");
|
|
if(!isdefined(level.extraction_chopper))
|
|
{
|
|
level.extraction_chopper = maps\_vehicle::spawn_vehicle_from_targetname("ct_extraction_chopper");
|
|
level.extraction_chopper vehicle_turnengineoff();
|
|
}
|
|
|
|
level.extraction_chopper vehicle_setspeedimmediate(0);
|
|
level.extraction_chopper vehicle_teleport(var_00.origin,var_00.angles);
|
|
level.extraction_chopper maps\_vehicle::vehicle_paths(var_00);
|
|
}
|
|
|
|
//Function Number: 326
|
|
enemy_run_away(param_00,param_01)
|
|
{
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(distance(self.origin,level.player.origin) <= 600)
|
|
{
|
|
return;
|
|
}
|
|
|
|
self notify("enemy_run_away");
|
|
self endon("enemy_run_away");
|
|
self endon("death");
|
|
self.ignoreall = 1;
|
|
var_02 = getent(param_00,"targetname");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(var_02);
|
|
if(isdefined(param_01) && param_01)
|
|
{
|
|
thread enemy_delete_at_goal();
|
|
}
|
|
|
|
var_03 = 10000;
|
|
for(;;)
|
|
{
|
|
common_scripts\utility::waittill_any("damage","bad_path");
|
|
level notify("ct_enemies_runaway_damage");
|
|
}
|
|
}
|
|
|
|
//Function Number: 327
|
|
enemy_delete_at_goal()
|
|
{
|
|
self notify("enemy_delete_at_goal");
|
|
self endon("enemy_delete_at_goal");
|
|
self endon("death");
|
|
self waittill("goal");
|
|
if(isdefined(self) && isalive(self))
|
|
{
|
|
self delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 328
|
|
hangar_enemy_think()
|
|
{
|
|
level.hangar_enemies[level.hangar_enemies.size] = self;
|
|
self cleargoalvolume();
|
|
if(!common_scripts\utility::flag("hangar_retreat_done"))
|
|
{
|
|
self setgoalvolumeauto(getent("vol_enemy_hangar","targetname"));
|
|
return;
|
|
}
|
|
|
|
self setgoalvolumeauto(getent("vol_ct_01","targetname"));
|
|
}
|
|
|
|
//Function Number: 329
|
|
runaway_guy_delete()
|
|
{
|
|
self endon("death");
|
|
self waittill("goal");
|
|
if(isdefined(self) && isalive(self))
|
|
{
|
|
self delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 330
|
|
runaway_drone_think()
|
|
{
|
|
var_00 = maps\_utility::spawn_ai(1);
|
|
var_00 thread runaway_guy_delete();
|
|
var_00 endon("death");
|
|
common_scripts\utility::flag_wait("collapse_start");
|
|
var_00 kill();
|
|
}
|
|
|
|
//Function Number: 331
|
|
add_drone_to_squad()
|
|
{
|
|
if(isdefined(self.script_parameters) && self.script_parameters == "personal_drone")
|
|
{
|
|
var_00 = getent("squad_drone_spawner","targetname");
|
|
maps\_weapon_pdrone::pdrone_launch(var_00);
|
|
if(isdefined(self.pdrone))
|
|
{
|
|
self.pdrone setthreatbiasgroup("drones");
|
|
self.pdrone thread cleanup_squad_drone();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 332
|
|
cleanup_squad_drone()
|
|
{
|
|
if(level.nextgen)
|
|
{
|
|
level waittill("street_cleanup");
|
|
}
|
|
else
|
|
{
|
|
level waittill("tff_pre_transition_intro_to_middle");
|
|
}
|
|
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 333
|
|
reaction_explosions()
|
|
{
|
|
if(level.currentgen)
|
|
{
|
|
common_scripts\utility::flag_wait("hangar_enemies");
|
|
}
|
|
|
|
var_00 = getentarray("pressure_explosion_1_before","targetname");
|
|
var_01 = getentarray("pressure_explosion_1_after","targetname");
|
|
var_02 = getentarray("pressure_explosion_2_before","targetname");
|
|
var_03 = getentarray("pressure_explosion_2_after","targetname");
|
|
common_scripts\utility::array_call(var_01,::hide);
|
|
common_scripts\utility::array_call(var_01,::notsolid);
|
|
common_scripts\utility::array_call(var_03,::hide);
|
|
common_scripts\utility::array_call(var_03,::notsolid);
|
|
var_04 = getent("explosion_cart","targetname");
|
|
var_04.animname = "cart";
|
|
var_04 maps\_anim::setanimtree();
|
|
var_05 = getent("fusion_utility_cart_collision","targetname");
|
|
var_05 linkto(var_04,"TAG_ORIGIN");
|
|
var_06 = getent("org_reaction_pickup_event","targetname");
|
|
var_07 = "fusion_utility_cart_explode_cart";
|
|
thread reaction_pickup_event();
|
|
if(level.nextgen)
|
|
{
|
|
common_scripts\utility::flag_wait("hangar_enemies");
|
|
}
|
|
|
|
wait(1.5);
|
|
common_scripts\utility::flag_wait("reaction_explo01a");
|
|
common_scripts\utility::array_call(var_00,::delete);
|
|
common_scripts\utility::array_call(var_01,::show);
|
|
common_scripts\utility::array_call(var_01,::solid);
|
|
thread pressure_explosion_damage(1);
|
|
level thread maps\fusion_fx::big_pipe_explosion_vfx_after_hangar();
|
|
wait(0.5);
|
|
common_scripts\utility::flag_wait("reaction_explo01");
|
|
wait(0.5);
|
|
common_scripts\utility::array_call(var_02,::delete);
|
|
common_scripts\utility::array_call(var_03,::show);
|
|
common_scripts\utility::array_call(var_03,::solid);
|
|
thread pressure_explosion_damage(2);
|
|
var_04 setmodel("vehicle_ind_utility_tractor_01_dstrypv");
|
|
var_06 thread maps\_anim::anim_single_solo(var_04,var_07);
|
|
thread explosion_cart_kill_trigger();
|
|
var_04 thread maps\fusion_fx::underground_pipe_explosion_utility_truck_vfx();
|
|
var_06 waittill(var_07);
|
|
var_05 disconnectpaths();
|
|
}
|
|
|
|
//Function Number: 334
|
|
explosion_cart_kill_trigger()
|
|
{
|
|
wait(0.75);
|
|
var_00 = common_scripts\utility::getstruct("explosion_cart_kill_struct","targetname");
|
|
radiusdamage(var_00.origin,var_00.radius,300,300,undefined);
|
|
}
|
|
|
|
//Function Number: 335
|
|
pressure_explosion_damage(param_00)
|
|
{
|
|
var_01 = common_scripts\utility::getstruct("pressure_explosion_" + param_00 + "_damage","targetname");
|
|
playrumbleonposition("grenade_rumble",var_01.origin);
|
|
radiusdamage(var_01.origin,var_01.radius,300,300,undefined,"MOD_EXPLOSIVE");
|
|
}
|
|
|
|
//Function Number: 336
|
|
reaction_pickup_event()
|
|
{
|
|
var_00 = getentarray("crater_models","targetname");
|
|
var_00 = common_scripts\utility::array_add(var_00,getent("crater_brush","targetname"));
|
|
var_01 = getent("crater_brush_surface","targetname");
|
|
var_02 = getent("crater_connectpaths","targetname");
|
|
var_03 = getent("explosion_pickup_intact","targetname");
|
|
var_04 = getent("explosion_pickup","targetname");
|
|
var_04.animname = "pickup";
|
|
var_04 maps\_anim::setanimtree();
|
|
var_04 hide();
|
|
foreach(var_06 in var_00)
|
|
{
|
|
var_06 hide();
|
|
}
|
|
|
|
var_08 = getent("truck_flip_collision","targetname");
|
|
var_08 disconnectpaths();
|
|
var_09 = [];
|
|
var_09[var_09.size] = var_04;
|
|
var_0A = getent("org_reaction_pickup_event","targetname");
|
|
var_0A maps\_anim::anim_first_frame(var_09,"fusion_reaction_pickup_event");
|
|
common_scripts\utility::flag_wait("reaction_explo02");
|
|
var_08 connectpaths();
|
|
var_08 delete();
|
|
var_0A thread maps\_anim::anim_single(var_09,"fusion_reaction_pickup_event");
|
|
var_04 thread reaction_pickup_queue_explosion();
|
|
var_04 thread reaction_pickup_player_proximity();
|
|
level waittill("truck_explosion");
|
|
var_03 hide();
|
|
var_04 show();
|
|
var_01 hide();
|
|
var_01 notsolid();
|
|
var_02 solid();
|
|
var_02 disconnectpaths();
|
|
common_scripts\utility::array_call(var_00,::show);
|
|
var_04 thread maps\fusion_fx::underground_pipe_explosion_pickup_truck_vfx();
|
|
thread pressure_explosion_damage(3);
|
|
wait(0.8);
|
|
radiusdamage(var_04.origin,220,200,100,undefined,"MOD_EXPLOSIVE");
|
|
wait(0.3);
|
|
radiusdamage(var_04.origin,180,200,100,undefined,"MOD_EXPLOSIVE");
|
|
}
|
|
|
|
//Function Number: 337
|
|
reaction_pickup_queue_explosion()
|
|
{
|
|
level endon("truck_explosion");
|
|
self waittillmatch("truck_explosion","single anim");
|
|
level notify("truck_explosion");
|
|
}
|
|
|
|
//Function Number: 338
|
|
reaction_pickup_player_proximity()
|
|
{
|
|
level endon("truck_explosion");
|
|
var_00 = 202500;
|
|
for(;;)
|
|
{
|
|
if(distancesquared(self.origin,level.player.origin) < var_00)
|
|
{
|
|
var_01 = [];
|
|
var_01[0] = self;
|
|
maps\_anim::anim_set_time(var_01,"fusion_reaction_pickup_event",0.43);
|
|
level notify("truck_explosion");
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 339
|
|
reaction_ai()
|
|
{
|
|
var_00 = getentarray("ct_enemies_runaway","targetname");
|
|
common_scripts\utility::flag_wait("ct_combat_retreat");
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death);
|
|
var_01 = maps\_utility::array_spawn(var_00);
|
|
common_scripts\utility::flag_wait("reaction_explo01");
|
|
common_scripts\utility::array_thread(level.ct_enemies,::enemy_run_away,"vol_final_runaway",1);
|
|
common_scripts\utility::array_thread(var_01,::enemy_run_away,"vol_final_runaway",1);
|
|
var_02 = getentarray("ct_runaway_enemies","targetname");
|
|
common_scripts\utility::array_thread(var_02,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death);
|
|
var_02 = maps\_utility::array_spawn(var_02);
|
|
common_scripts\utility::flag_wait("reaction_explo02");
|
|
thread ct_enemies_final_runaway_faceplayer(var_00);
|
|
var_03 = getentarray("ct_enemies_final_runaway","targetname");
|
|
common_scripts\utility::array_thread(var_03,::maps\_utility::add_spawn_function,::maps\_utility::disable_long_death);
|
|
var_04 = maps\_utility::array_spawn(var_03,1,1);
|
|
common_scripts\utility::flag_wait("ct_final_retreat");
|
|
var_05 = getaiarray("axis");
|
|
common_scripts\utility::array_thread(var_05,::enemy_run_away,"vol_final_runaway",1);
|
|
}
|
|
|
|
//Function Number: 340
|
|
ct_enemies_runaway_faceplayer()
|
|
{
|
|
common_scripts\utility::flag_wait("kva_retreat_faceplayer");
|
|
var_00 = getentarray("ct_runaway_enemies_backup","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(isalive(var_02))
|
|
{
|
|
var_02 thread maps\_utility::player_seek_enable();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 341
|
|
ct_enemies_final_runaway_faceplayer(param_00)
|
|
{
|
|
self notify("enemy_aggro");
|
|
self endon("enemy_aggro");
|
|
sortbydistance(param_00,level.player.origin);
|
|
level waittill("ct_enemies_runaway_damage");
|
|
}
|
|
|
|
//Function Number: 342
|
|
finale_enemy_transports()
|
|
{
|
|
if(isdefined(level.start_point) && level.start_point == "cooling_tower")
|
|
{
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("evacuation_started");
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname("ct_enemy_transport_01");
|
|
var_00 maps\_vehicle::godon();
|
|
var_00 thread tigger_hurt_rotor();
|
|
var_00 setmaxpitchroll(30,30);
|
|
var_00 maps\_vehicle::vehicle_lights_on("running");
|
|
var_00.snd_disable_vehicle_system = 1;
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname("ct_enemy_transport_02");
|
|
var_01 maps\_vehicle::godon();
|
|
var_01 setmaxpitchroll(30,40);
|
|
var_00 maps\_vehicle::vehicle_lights_on("running");
|
|
var_01.snd_disable_vehicle_system = 1;
|
|
common_scripts\utility::flag_wait("hangar_enemies");
|
|
var_00.snd_disable_vehicle_system = 0;
|
|
var_01.snd_disable_vehicle_system = 0;
|
|
common_scripts\utility::flag_wait("hangar_combat_retreat_02");
|
|
if(level.nextgen)
|
|
{
|
|
maps\_utility::delaythread(1,::spawn_transport_flying_01);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("hangar_exit_retreat");
|
|
maps\_utility::autosave_by_name();
|
|
if(level.nextgen)
|
|
{
|
|
maps\_utility::delaythread(1,::spawn_transport_flying_02);
|
|
}
|
|
|
|
level.get_pdrone_crash_location_override = ::get_pdrone_crash_location_override;
|
|
var_02 = vehicle_scripts\_pdrone::start_flying_attack_drones("kva_retreat_drones");
|
|
foreach(var_04 in var_02)
|
|
{
|
|
var_04 thread maps\_shg_utility::make_emp_vulnerable();
|
|
var_04 thread drone_delete_at_goal();
|
|
}
|
|
|
|
maps\_vehicle::gopath(var_00);
|
|
soundscripts\_snd::snd_message("hangar_transport_01_away",var_00);
|
|
common_scripts\utility::flag_wait("ct_combat_retreat");
|
|
var_06 = vehicle_scripts\_pdrone::start_flying_attack_drones("kva_retreat_drones_02");
|
|
foreach(var_04 in var_06)
|
|
{
|
|
var_04 thread maps\_shg_utility::make_emp_vulnerable();
|
|
var_04 thread drone_delete_at_goal();
|
|
}
|
|
|
|
maps\_vehicle::gopath(var_01);
|
|
common_scripts\utility::flag_wait("reaction_explo01");
|
|
var_09 = vehicle_scripts\_pdrone::start_flying_attack_drones("kva_retreat_drones_03");
|
|
foreach(var_04 in var_09)
|
|
{
|
|
var_04 thread maps\_shg_utility::make_emp_vulnerable();
|
|
var_04 thread drone_delete_at_goal();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("reaction_explo02");
|
|
foreach(var_04 in var_02)
|
|
{
|
|
if(isdefined(var_04) && isalive(var_04))
|
|
{
|
|
var_04 common_scripts\utility::delaycall(randomfloatrange(0.05,10),::kill);
|
|
}
|
|
}
|
|
|
|
level waittill("truck_explosion");
|
|
foreach(var_04 in var_06)
|
|
{
|
|
if(isdefined(var_04) && isalive(var_04))
|
|
{
|
|
var_04 common_scripts\utility::delaycall(randomfloatrange(0.05,1),::kill);
|
|
}
|
|
}
|
|
|
|
foreach(var_04 in var_09)
|
|
{
|
|
if(isdefined(var_04) && isalive(var_04))
|
|
{
|
|
var_04 common_scripts\utility::delaycall(randomfloatrange(0.05,1),::kill);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 343
|
|
tigger_hurt_rotor()
|
|
{
|
|
var_00 = getent("trig_hurt_transport_01","targetname");
|
|
var_00 enablelinkto();
|
|
var_00 linkto(self);
|
|
self waittill("death");
|
|
var_00 unlink();
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 344
|
|
spawn_transport_flying_01()
|
|
{
|
|
var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("ct_enemy_transport_flying_01");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_vehicle::godon();
|
|
}
|
|
|
|
soundscripts\_snd::snd_message("hangar_transport_flying_01_away",var_00[0]);
|
|
}
|
|
|
|
//Function Number: 345
|
|
spawn_transport_flying_02()
|
|
{
|
|
var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("ct_enemy_transport_flying_02");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_vehicle::godon();
|
|
}
|
|
|
|
soundscripts\_snd::snd_message("hangar_transport_flying_02_away",var_00[0]);
|
|
}
|
|
|
|
//Function Number: 346
|
|
evacuation_first_drones_think()
|
|
{
|
|
level endon("collapse_start");
|
|
self waittill("death");
|
|
if(!isdefined(level.evacuation_first_drones_dead))
|
|
{
|
|
level.evacuation_first_drones_dead = 0;
|
|
}
|
|
|
|
level.evacuation_first_drones_dead++;
|
|
if(level.evacuation_first_drones_dead >= 5)
|
|
{
|
|
common_scripts\utility::flag_set("evacuation_first_drones_down");
|
|
}
|
|
}
|
|
|
|
//Function Number: 347
|
|
kva_retreat_drones_animated()
|
|
{
|
|
var_00 = getent("drone_deploy_run_npc","targetname");
|
|
var_01 = getent("drone_deploy_crouch_npc","targetname");
|
|
thread kva_retreat_drone_think(var_00,0);
|
|
thread kva_retreat_drone_think(var_01,0,"Cover Crouch");
|
|
}
|
|
|
|
//Function Number: 348
|
|
kva_retreat_drone_think(param_00,param_01,param_02)
|
|
{
|
|
var_03 = param_00 maps\_utility::spawn_ai(1);
|
|
var_03.animname = "generic";
|
|
var_04 = common_scripts\utility::getstruct(param_00.target,"targetname");
|
|
var_05 = spawn("script_origin",var_04.origin);
|
|
var_05.angles = var_04.angles;
|
|
var_06 = getent(var_04.target,"targetname");
|
|
var_07 = getsubstr(var_04.animation,0,var_04.animation.size - 4);
|
|
var_08 = spawn("script_model",var_03 gettagorigin("TAG_STOWED_BACK"));
|
|
var_08 setmodel(var_06.model);
|
|
var_08.angles = var_03 gettagangles("TAG_STOWED_BACK");
|
|
var_08 linkto(var_03,"TAG_STOWED_BACK");
|
|
var_08.animname = "personal_drone";
|
|
var_08 useanimtree(level.scr_animtree["personal_drone"]);
|
|
var_08 thread maps\_anim::anim_loop_solo(var_08,"personal_drone_folded_idle");
|
|
if(isdefined(param_02))
|
|
{
|
|
var_05 maps\_anim::anim_reach_and_approach_solo(var_03,var_07,undefined,"Cover Crouch");
|
|
}
|
|
else
|
|
{
|
|
var_05 maps\_anim::anim_generic_reach(var_03,var_07);
|
|
}
|
|
|
|
var_05 maps\_anim::anim_generic_reach(var_03,var_07);
|
|
if(param_01)
|
|
{
|
|
var_05 thread maps\_anim::anim_generic_run(var_03,var_07);
|
|
}
|
|
else
|
|
{
|
|
var_05 thread maps\_anim::anim_generic(var_03,var_07);
|
|
}
|
|
|
|
var_06.origin = var_08.origin;
|
|
var_06.angles = var_08.angles;
|
|
var_09 = var_06 maps\_utility::spawn_vehicle();
|
|
var_08 delete();
|
|
var_09.animname = "personal_drone";
|
|
var_05 maps\_anim::anim_single_solo(var_09,var_07);
|
|
if(isdefined(var_09.target))
|
|
{
|
|
var_09 maps\_vehicle::gopath();
|
|
}
|
|
|
|
if(var_09.script_team == "axis")
|
|
{
|
|
var_09 thread maps\_shg_utility::make_emp_vulnerable();
|
|
}
|
|
}
|
|
|
|
//Function Number: 349
|
|
get_pdrone_crash_location_override()
|
|
{
|
|
level.get_pdrone_crash_location_override = undefined;
|
|
return level.player.origin + 200 * anglestoforward(level.player.angles);
|
|
}
|
|
|
|
//Function Number: 350
|
|
finale_enemy_gaz()
|
|
{
|
|
common_scripts\utility::flag_wait("evacuation_started");
|
|
if(isdefined(level.start_point) && level.start_point != "cooling_tower")
|
|
{
|
|
if(level.nextgen)
|
|
{
|
|
thread finale_enemy_gaz_1();
|
|
}
|
|
}
|
|
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname("retreat_gaz_02");
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname("retreat_gaz_03");
|
|
var_00 maps\_vehicle::godon();
|
|
var_01 maps\_vehicle::godon();
|
|
common_scripts\utility::flag_wait("ct_final_retreat");
|
|
wait(1);
|
|
soundscripts\_snd::snd_message("start_gaz_02_retreat",var_00);
|
|
maps\_vehicle::gopath(var_00);
|
|
wait(1.5);
|
|
soundscripts\_snd::snd_message("start_gaz_03_retreat",var_01);
|
|
maps\_vehicle::gopath(var_01);
|
|
}
|
|
|
|
//Function Number: 351
|
|
finale_enemy_gaz_1()
|
|
{
|
|
var_00 = maps\_vehicle::spawn_vehicle_from_targetname("retreat_gaz_01");
|
|
var_00 maps\_vehicle::godon();
|
|
var_00.snd_disable_vehicle_system = 1;
|
|
common_scripts\utility::flag_wait("hangar_enemies");
|
|
var_00.snd_disable_vehicle_system = 0;
|
|
common_scripts\utility::flag_wait("stop_ambient_explosions");
|
|
wait(5);
|
|
maps\_vehicle::gopath(var_00);
|
|
}
|
|
|
|
//Function Number: 352
|
|
cooling_tower_collapse()
|
|
{
|
|
var_00 = getentarray("collapse_geo_before","targetname");
|
|
var_01 = getentarray("collapse_geo_after","targetname");
|
|
common_scripts\utility::array_call(var_01,::hide);
|
|
common_scripts\utility::array_call(var_01,::notsolid);
|
|
var_02 = getentarray("cooling_tower_static","targetname");
|
|
thread cooling_tower_collapse_visibility(var_02);
|
|
common_scripts\utility::flag_wait("collapse_start");
|
|
soundscripts\_snd::snd_message("tower_collapse_prep");
|
|
if(!isdefined(level.player_rig))
|
|
{
|
|
level.player_rig = maps\_utility::spawn_anim_model("player_rig");
|
|
}
|
|
|
|
var_03 = maps\_utility::spawn_anim_model("player_rig",(0,0,0));
|
|
var_03 hide();
|
|
var_04 = spawn("script_model",(0,0,0));
|
|
var_04 setmodel("fus_sever_debris");
|
|
var_04 hide();
|
|
var_04.animname = "collapse_debris_arm";
|
|
var_04 maps\_anim::setanimtree();
|
|
var_05 = maps\_utility::spawn_anim_model("fus_sever_debris_02");
|
|
var_05 hide();
|
|
var_06 = spawn("script_model",(0,0,0));
|
|
var_06 setmodel("fus_end_scene_rubble");
|
|
var_06 hide();
|
|
var_06.animname = "fus_end_scene_rubble";
|
|
var_06 maps\_anim::setanimtree();
|
|
var_07 = maps\_utility::spawn_anim_model("vehicle_xh9_warbird");
|
|
var_07 hide();
|
|
var_08 = maps\_utility::spawn_anim_model("fusion_chunk_combo");
|
|
var_09 = maps\_utility::spawn_anim_model("fusion_rock_chunk01");
|
|
var_0A = maps\_utility::spawn_anim_model("fusion_rock_chunk02");
|
|
var_0B = maps\_utility::spawn_anim_model("player_dismembered_arm");
|
|
var_0B hide();
|
|
var_0C = [];
|
|
var_0C[0] = level.burke;
|
|
var_0C[1] = level.player_rig;
|
|
var_0C[2] = var_04;
|
|
var_0C[3] = var_0B;
|
|
var_0C[4] = var_06;
|
|
var_0C[5] = var_05;
|
|
var_0C[6] = var_08;
|
|
var_0C[7] = var_09;
|
|
var_0C[8] = var_0A;
|
|
var_0D = [];
|
|
var_0E = spawn("script_model",(0,0,0));
|
|
var_0E setmodel("fus_cooling_tower_collapse_chunks");
|
|
var_0E.animname = "fus_cooling_tower_collapse_chunks";
|
|
var_0E maps\_anim::setanimtree();
|
|
var_0D["chunks"] = var_0E;
|
|
var_0E = spawn("script_model",(0,0,0));
|
|
var_0E setmodel("fus_cooling_tower_collapse_concrete_shattered");
|
|
var_0E.animname = "fus_cooling_tower_collapse_concrete_shattered";
|
|
var_0E maps\_anim::setanimtree();
|
|
var_0D["concrete_shattered"] = var_0E;
|
|
var_0E = spawn("script_model",(0,0,0));
|
|
var_0E setmodel("fus_cooling_tower_collapse_concrete_shattered2");
|
|
var_0E.animname = "fus_cooling_tower_collapse_concrete_shattered2";
|
|
var_0E maps\_anim::setanimtree();
|
|
var_0D["concrete_shattered2"] = var_0E;
|
|
var_0E = spawn("script_model",(0,0,0));
|
|
var_0E setmodel("fus_cooling_tower_collapse_street_collapse");
|
|
var_0E.animname = "fus_cooling_tower_collapse_street_collapse";
|
|
var_0E maps\_anim::setanimtree();
|
|
var_0D["street"] = var_0E;
|
|
common_scripts\utility::array_call(var_0D,::hide);
|
|
var_0F = maps\_utility::getanim_from_animname("fusion_silo_collapse_vm_pt02",level.player_rig.animname);
|
|
var_10 = getanimlength(var_0F);
|
|
var_11 = getangledelta(level.scr_anim["player_rig"]["fusion_silo_collapse_vm_pt02"],0,1);
|
|
var_12 = getmovedelta(level.scr_anim["player_rig"]["fusion_silo_collapse_vm_pt02"],0,1);
|
|
var_13 = getent("org_collapse_new","targetname");
|
|
level.player thread collapse_player_dynamic_speed(var_13);
|
|
var_13 maps\_anim::anim_first_frame(var_0D,"fusion_collapse_ground_tower");
|
|
thread collapse_player_disable_exo_and_weapons();
|
|
level thread maps\fusion_fx::pressure_explosion_lead_up();
|
|
wait(1.1);
|
|
level notify("collapse_animation_started");
|
|
soundscripts\_snd::snd_message("tower_collapse_start");
|
|
var_13 thread collapse_animate_lamps("fusion_collapse_ground_tower");
|
|
level thread maps\fusion_fx::big_moment_ending_vfx(var_0D);
|
|
common_scripts\utility::array_call(var_02,::hide);
|
|
common_scripts\utility::array_call(var_0D,::show);
|
|
var_14 = getaiarray("axis");
|
|
foreach(var_16 in var_14)
|
|
{
|
|
var_16 kill();
|
|
}
|
|
|
|
common_scripts\utility::array_thread(getentarray("collapse_stop_signs","targetname"),::collapse_stop_sign_think,var_13);
|
|
common_scripts\utility::array_thread(getaiarray("allies"),::collapse_friendly_think,var_13);
|
|
var_13 thread maps\_anim::anim_single(var_0D,"fusion_collapse_ground_tower");
|
|
common_scripts\utility::flag_wait("tower_knockback");
|
|
thread tower_collapse_knockback_disable_sonar();
|
|
thread collapse_shellshock();
|
|
soundscripts\_snd::snd_message("tower_collapse_player_stumble");
|
|
var_13 maps\_utility::delaythread(1,::maps\_anim::anim_first_frame_solo,level.burke,"fusion_silo_stumble_npc");
|
|
level.burke common_scripts\utility::delaycall(1,::hide);
|
|
common_scripts\utility::noself_delaycall(1,::setsaveddvar,"g_friendlynamedist",0);
|
|
level.burke common_scripts\utility::delaycall(1,::setcontents,0);
|
|
level.player thread maps\_shg_utility::setup_player_for_scene();
|
|
level.player maps\_anim::anim_first_frame_solo(level.player_rig,"fusion_silo_collapse_vm_pt01");
|
|
var_18 = 0.5;
|
|
level.player playerlinktoblend(level.player_rig,"tag_player",var_18);
|
|
level.player common_scripts\utility::delaycall(var_18,::playerlinktodelta,level.player_rig,"tag_player",1,5,5,5,5,1);
|
|
level.player_rig common_scripts\utility::delaycall(var_18,::show);
|
|
var_19 = "fusion_silo_collapse_vm_pt01";
|
|
maps\_utility::delaythread(1,::common_scripts\utility::array_call,var_00,::delete);
|
|
maps\_utility::delaythread(1,::common_scripts\utility::array_call,var_01,::show);
|
|
maps\_utility::delaythread(1,::common_scripts\utility::array_call,var_01,::solid);
|
|
thread maps\_utility::lerp_fov_overtime(3,75);
|
|
var_1A = getanimlength(level.player_rig maps\_utility::getanim(var_19));
|
|
level.player common_scripts\utility::delaycall(var_1A - 0.5,::enableweapons);
|
|
level.player thread collapse_player_look_at_tower(var_19,var_13.origin);
|
|
level.player maps\_anim::anim_single_solo(level.player_rig,var_19);
|
|
level.player thread maps\_shg_utility::setup_player_for_gameplay();
|
|
level.player_rig hide();
|
|
level.player unlink();
|
|
thread collapse_player_disable_exo_and_weapons();
|
|
common_scripts\utility::flag_wait("tower_debris");
|
|
soundscripts\_snd::snd_message("tower_collapse_player_knockback");
|
|
wait(0.3);
|
|
level.player disableweapons();
|
|
thread maps\_utility::lerp_fov_overtime(3,65);
|
|
level.player thread maps\_shg_utility::setup_player_for_scene();
|
|
level.player maps\_anim::anim_first_frame_solo(level.player_rig,"fusion_silo_collapse_vm_pt02");
|
|
var_13 maps\_anim::anim_first_frame_solo(level.burke,"fusion_silo_collapse_finale");
|
|
var_13 maps\_anim::anim_first_frame_solo(var_07,"fusion_silo_collapse_warbird");
|
|
var_1B = combineangles(level.player_rig.angles,(0,0,var_11));
|
|
var_1C = level.player_rig.origin + var_12[0] * anglestoforward(level.player_rig.angles) + var_12[1] * anglestoright(level.player_rig.angles) + var_12[2] * anglestoup(level.player_rig.angles);
|
|
var_1D = var_03.origin - var_1C;
|
|
var_1E = var_03.angles - var_1B;
|
|
level.player_rig.angles = (0,vectortoangles(var_13.origin - level.player.origin)[1],0);
|
|
level.player_rig.origin = level.player.origin;
|
|
var_18 = 0.5;
|
|
level.player playerlinktoblend(level.player_rig,"tag_player",var_18);
|
|
level.player common_scripts\utility::delaycall(var_18,::playerlinktodelta,level.player_rig,"tag_player",1,20,20,20,0,1);
|
|
level.player_rig common_scripts\utility::delaycall(var_18,::show);
|
|
level.player freezecontrols(1);
|
|
level.player_rig maps\_anim::anim_single_solo(level.player_rig,"fusion_silo_collapse_vm_pt02");
|
|
level notify("stop_player_pos_update");
|
|
soundscripts\_snd::snd_message("silo_collapse_plr_stunned");
|
|
var_06 show();
|
|
soundscripts\_snd::snd_message("fus_outro_burke_foley");
|
|
var_07 show();
|
|
level.burke show();
|
|
var_1F = common_scripts\utility::spawn_tag_origin();
|
|
var_1F linkto(var_07,"TAG_light_body_l",(10,0,-20),(14,110,0));
|
|
playfxontag(common_scripts\utility::getfx("fusion_light_heli_strobe_outro"),var_1F,"TAG_ORIGIN");
|
|
var_07 soundscripts\_snd::snd_message("fusion_silo_collapse_warbird");
|
|
var_13 thread maps\_anim::anim_single_solo(level.burke,"fusion_silo_collapse_finale");
|
|
var_13 thread maps\_anim::anim_single_solo(var_07,"fusion_silo_collapse_warbird");
|
|
var_13 thread maps\_anim::anim_single(var_0C,"fusion_silo_collapse_finale");
|
|
var_20 = maps\_utility::getanim_from_animname("fusion_silo_collapse_finale",level.player_rig.animname);
|
|
level notify("stop_evacuation_kiosk_movie");
|
|
var_21 = getanimlength(var_20);
|
|
wait(var_21 - 2);
|
|
common_scripts\utility::flag_set("play_ending");
|
|
var_22 = 2;
|
|
soundscripts\_snd::snd_message("ending_fade_out",var_22);
|
|
maps\_utility::nextmission();
|
|
}
|
|
|
|
//Function Number: 353
|
|
ending_fade_out(param_00)
|
|
{
|
|
setblur(10,param_00);
|
|
var_01 = newhudelem();
|
|
var_01.x = 0;
|
|
var_01.y = 0;
|
|
var_01.horzalign = "fullscreen";
|
|
var_01.vertalign = "fullscreen";
|
|
var_01 setshader("black",640,480);
|
|
if(isdefined(param_00) && param_00 > 0)
|
|
{
|
|
var_01.alpha = 0;
|
|
var_01 fadeovertime(param_00);
|
|
var_01.alpha = 1;
|
|
wait(param_00);
|
|
}
|
|
|
|
waittillframeend;
|
|
var_01 destroy();
|
|
}
|
|
|
|
//Function Number: 354
|
|
collapse_shellshock()
|
|
{
|
|
var_00 = 10;
|
|
level.player shellshock("fusion_pre_collapse",var_00);
|
|
common_scripts\utility::flag_wait("tower_debris");
|
|
wait(1);
|
|
var_00 = 7;
|
|
level.player shellshock("fusion_collapse",var_00);
|
|
wait(8);
|
|
var_00 = 60;
|
|
level.player shellshock("fusion_pre_collapse",var_00);
|
|
}
|
|
|
|
//Function Number: 355
|
|
collapse_friendly_think(param_00)
|
|
{
|
|
var_01 = 0.0005;
|
|
var_02 = distance(self.origin,param_00.origin) * var_01 - 0.97;
|
|
wait(var_02);
|
|
maps\_utility::flashbangstart(4);
|
|
if(self != level.burke)
|
|
{
|
|
common_scripts\utility::flag_wait("tower_knockback");
|
|
wait(3);
|
|
maps\_utility::stop_magic_bullet_shield();
|
|
self delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 356
|
|
collapse_stop_sign_think(param_00)
|
|
{
|
|
var_01 = 0.0005;
|
|
var_02 = distance(self.origin,param_00.origin) * var_01 - 0.97;
|
|
wait(var_02);
|
|
var_03 = getent(self.target,"targetname");
|
|
var_03 linkto(self);
|
|
var_04 = vectortoangles(param_00.origin - self.origin);
|
|
if(self.angles[1] - var_04[1] > -180)
|
|
{
|
|
var_05 = var_04 + (0,-90,90);
|
|
}
|
|
else
|
|
{
|
|
var_05 = var_05 + (0,90,-90);
|
|
}
|
|
|
|
var_06 = 0.3;
|
|
self rotateto(var_05,var_06,0.1,0);
|
|
wait(var_06);
|
|
var_03 delete();
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 357
|
|
collapse_animate_lamps(param_00)
|
|
{
|
|
var_01 = getentarray("collapse_streetlight","targetname");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(isdefined(var_03))
|
|
{
|
|
var_03 delete();
|
|
}
|
|
}
|
|
|
|
var_05 = [];
|
|
for(var_06 = 1;var_06 < 10;var_06++)
|
|
{
|
|
var_05[var_05.size] = maps\_utility::spawn_anim_model("fusion_silo_lamp0" + var_06);
|
|
}
|
|
|
|
for(var_06 = 0;var_06 <= 5;var_06++)
|
|
{
|
|
var_05[var_05.size] = maps\_utility::spawn_anim_model("fusion_silo_lamp1" + var_06);
|
|
}
|
|
|
|
maps\_anim::anim_single(var_05,param_00);
|
|
}
|
|
|
|
//Function Number: 358
|
|
cooling_tower_collapse_visibility(param_00)
|
|
{
|
|
level endon("collapse_start");
|
|
common_scripts\utility::array_call(param_00,::hide);
|
|
for(;;)
|
|
{
|
|
common_scripts\utility::flag_wait("show_collapse_tower");
|
|
common_scripts\utility::array_call(param_00,::show);
|
|
common_scripts\utility::flag_waitopen("show_collapse_tower");
|
|
common_scripts\utility::array_call(param_00,::hide);
|
|
}
|
|
}
|
|
|
|
//Function Number: 359
|
|
grey_out_player()
|
|
{
|
|
var_00 = maps\_hud_util::create_client_overlay("white",0,level.player);
|
|
var_00.sort = -1;
|
|
var_00.foreground = 1;
|
|
var_00.color = (0.6,0.6,0.6);
|
|
var_01 = 0.1;
|
|
var_02 = 1;
|
|
var_00 fadeovertime(var_01);
|
|
var_00.alpha = var_02;
|
|
wait(var_01);
|
|
var_01 = 0.05;
|
|
wait(var_01);
|
|
var_01 = 0.1;
|
|
var_02 = 0;
|
|
var_00 fadeovertime(var_01);
|
|
var_00.alpha = var_02;
|
|
wait(var_01);
|
|
var_00 destroy();
|
|
}
|
|
|
|
//Function Number: 360
|
|
collapse_player_dynamic_speed(param_00)
|
|
{
|
|
level endon("stop_player_pos_update");
|
|
var_01 = 2636;
|
|
var_02 = 4000;
|
|
var_03 = var_02 - var_01;
|
|
var_04 = 0.05;
|
|
var_05 = 1;
|
|
for(;;)
|
|
{
|
|
var_06 = distance(level.player.origin,param_00.origin) - var_01 / var_03;
|
|
if(var_06 < var_04)
|
|
{
|
|
var_06 = var_04;
|
|
}
|
|
else if(var_06 > var_05)
|
|
{
|
|
var_06 = var_05;
|
|
}
|
|
|
|
level.player setmovespeedscale(var_06);
|
|
wait(0.05);
|
|
}
|
|
|
|
level.player maps\_utility::blend_movespeedscale_percent(50,3);
|
|
}
|
|
|
|
//Function Number: 361
|
|
collapse_player_disable_exo_and_weapons()
|
|
{
|
|
maps\_player_exo::player_exo_deactivate();
|
|
level.player disableweaponswitch();
|
|
level.player disableoffhandweapons();
|
|
level.player enableinvulnerability();
|
|
level.player allowjump(0);
|
|
level.player.ignoreme = 1;
|
|
}
|
|
|
|
//Function Number: 362
|
|
collapse_player_look_at_tower(param_00,param_01)
|
|
{
|
|
var_02 = maps\_utility::getanim_from_animname(param_00,level.player_rig.animname);
|
|
var_03 = getanimlength(var_02);
|
|
var_04 = vectortoangles(param_01 - level.player.origin);
|
|
level.player setplayerangles((0,var_04[1],0));
|
|
}
|
|
|
|
//Function Number: 363
|
|
collapse_cleanup()
|
|
{
|
|
wait(1);
|
|
var_00 = getaiarray();
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(isdefined(var_02.magic_bullet_shield) && var_02.magic_bullet_shield)
|
|
{
|
|
var_02 maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::array_call(var_00,::delete);
|
|
}
|
|
|
|
//Function Number: 364
|
|
play_fullscreen_blood_splatter(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
var_05 = newclienthudelem(self);
|
|
var_05.x = 0;
|
|
var_05.y = 0;
|
|
var_05 setshader(param_00,640,480);
|
|
var_05.splatter = 1;
|
|
var_05.alignx = "left";
|
|
var_05.aligny = "top";
|
|
var_05.sort = 1;
|
|
var_05.foreground = 0;
|
|
var_05.horzalign = "fullscreen";
|
|
var_05.vertalign = "fullscreen";
|
|
var_05.alpha = 0;
|
|
var_05.enablehudlighting = 1;
|
|
var_06 = 0;
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 1;
|
|
}
|
|
|
|
if(!isdefined(param_03))
|
|
{
|
|
param_03 = 1;
|
|
}
|
|
|
|
if(!isdefined(param_04))
|
|
{
|
|
param_04 = 1;
|
|
}
|
|
|
|
var_07 = 0.05;
|
|
if(param_02 > 0)
|
|
{
|
|
var_08 = 0;
|
|
var_09 = param_04 / param_02 / var_07;
|
|
while(var_08 < param_04)
|
|
{
|
|
var_05.alpha = var_08;
|
|
var_08 = var_08 + var_09;
|
|
wait(var_07);
|
|
}
|
|
}
|
|
|
|
var_05.alpha = param_04;
|
|
wait(param_01 - param_02 + param_03);
|
|
if(param_03 > 0)
|
|
{
|
|
var_08 = param_04;
|
|
var_0A = param_04 / param_03 / var_07;
|
|
while(var_08 > 0)
|
|
{
|
|
var_05.alpha = var_08;
|
|
var_08 = var_08 - var_0A;
|
|
wait(var_07);
|
|
}
|
|
}
|
|
|
|
var_05.alpha = 0;
|
|
var_05 destroy();
|
|
}
|
|
|
|
//Function Number: 365
|
|
warbird_shooting_think(param_00)
|
|
{
|
|
level.player endon("death");
|
|
self endon("death");
|
|
self.mgturret[0] setmode("manual");
|
|
self.mgturret[1] setmode("manual");
|
|
if(!maps\_utility::ent_flag_exist("fire_turrets"))
|
|
{
|
|
maps\_utility::ent_flag_init("fire_turrets");
|
|
}
|
|
|
|
maps\_utility::ent_flag_set("fire_turrets");
|
|
thread warbird_fire_monitor();
|
|
for(;;)
|
|
{
|
|
self waittill("warbird_fire");
|
|
thread warbird_fire(param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 366
|
|
warbird_fire(param_00)
|
|
{
|
|
self endon("death");
|
|
var_01 = self.mgturret[0];
|
|
var_02 = self.mgturret[1];
|
|
while(maps\_utility::ent_flag("fire_turrets"))
|
|
{
|
|
var_03 = getaiarray("axis");
|
|
if(isdefined(level.flying_attack_drones))
|
|
{
|
|
var_04 = level.flying_attack_drones;
|
|
}
|
|
else
|
|
{
|
|
var_04 = [];
|
|
}
|
|
|
|
if(isdefined(level.drones) && isdefined(level.drones["axis"].array))
|
|
{
|
|
var_03 = common_scripts\utility::array_combine(var_03,level.drones["axis"].array);
|
|
}
|
|
|
|
var_03 = common_scripts\utility::array_combine(var_03,var_04);
|
|
var_05 = [];
|
|
foreach(var_07 in var_03)
|
|
{
|
|
if(isdefined(var_07.ignoreme) && var_07.ignoreme)
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
var_05[var_05.size] = var_07;
|
|
}
|
|
}
|
|
|
|
var_05 = sortbydistance(var_05,self.origin);
|
|
var_09 = undefined;
|
|
foreach(var_07 in var_05)
|
|
{
|
|
if(!isdefined(var_07))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isalive(var_07))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(param_00) && param_00)
|
|
{
|
|
var_0B = self.mgturret[0] gettagorigin("tag_flash");
|
|
var_0C = var_07 geteye();
|
|
var_0D = vectornormalize(var_0C - var_0B);
|
|
var_0E = var_0B + var_0D * 20;
|
|
if(!sighttracepassed(var_0E,var_0C,0,var_07,self.mgturret[0]))
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
var_09 = var_07;
|
|
break;
|
|
}
|
|
|
|
if(isdefined(var_09))
|
|
{
|
|
var_01 settargetentity(var_09);
|
|
var_02 settargetentity(var_09);
|
|
var_01 turretfireenable();
|
|
var_02 turretfireenable();
|
|
var_01 startfiring();
|
|
var_02 startfiring();
|
|
wait_for_warbird_fire_target_done(var_09,param_00);
|
|
var_01 cleartargetentity();
|
|
var_02 cleartargetentity();
|
|
var_01 turretfiredisable();
|
|
var_02 turretfiredisable();
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
var_01 turretfiredisable();
|
|
var_02 turretfiredisable();
|
|
}
|
|
|
|
//Function Number: 367
|
|
wait_for_warbird_fire_target_done(param_00,param_01)
|
|
{
|
|
param_00 endon("death");
|
|
if(!maps\_utility::ent_flag("fire_turrets"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self endon("fire_turrets");
|
|
for(;;)
|
|
{
|
|
if(isdefined(param_01) && param_01)
|
|
{
|
|
var_02 = self.mgturret[0] gettagorigin("tag_flash");
|
|
var_03 = param_00 geteye();
|
|
var_04 = vectornormalize(var_03 - var_02);
|
|
var_05 = var_02 + var_04 * 20;
|
|
if(!sighttracepassed(var_05,var_03,0,param_00,self.mgturret[0]))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
wait(0.3);
|
|
}
|
|
}
|
|
|
|
//Function Number: 368
|
|
warbird_fire_monitor()
|
|
{
|
|
self endon("death");
|
|
self waittill("warbird_stop_firing");
|
|
maps\_utility::ent_flag_clear("fire_turrets");
|
|
}
|
|
|
|
//Function Number: 369
|
|
heli_looking_at_target(param_00)
|
|
{
|
|
var_01 = 45;
|
|
var_02 = cos(var_01);
|
|
var_03 = anglestoforward(self.angles);
|
|
var_04 = vectornormalize(param_00.origin - self.origin);
|
|
if(vectordot(var_03,var_04) >= var_02)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 370
|
|
demo_skip_forward()
|
|
{
|
|
common_scripts\utility::flag_wait("start_itiot");
|
|
if(getdvarint("demo_itiot") == 1)
|
|
{
|
|
wait(0.5);
|
|
level.overlay = maps\_hud_util::create_client_overlay("black",0,level.player);
|
|
level.overlay.sort = -1;
|
|
level.overlay.foreground = 1;
|
|
level.overlay.color = (0,0,0);
|
|
level.overlay fadeovertime(1);
|
|
level.overlay.alpha = 1;
|
|
soundscripts\_snd::snd_message("itiot_fade_out");
|
|
var_00 = [];
|
|
var_00[0] = "In the interest of time...";
|
|
thread demo_feed_lines(var_00,1);
|
|
wait(1);
|
|
if(isdefined(level.player.drivingvehicle))
|
|
{
|
|
level.player.drivingvehicle notify("exit_vehicle_dof");
|
|
level.player maps\_utility::player_dismount_vehicle();
|
|
}
|
|
else if(isdefined(level.player.drivingvehicleandturret))
|
|
{
|
|
level.player.drivingvehicleandturret notify("exit_vehicle_dof");
|
|
level.player.drivingvehicleandturret notify("dismount_vehicle_and_turret");
|
|
level.player.drivingvehicleandturret = undefined;
|
|
}
|
|
|
|
if(isdefined(level.alpha_leader))
|
|
{
|
|
level.alpha_leader maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
if(isdefined(level.joker))
|
|
{
|
|
level.joker maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
if(isdefined(level.carter))
|
|
{
|
|
level.carter maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
if(isdefined(level.burke))
|
|
{
|
|
level.burke maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
level.burke maps\_utility::anim_stopanimscripted();
|
|
level.joker maps\_utility::anim_stopanimscripted();
|
|
level notify("itiot_cleanup");
|
|
common_scripts\utility::array_call(getaiarray(),::delete);
|
|
common_scripts\utility::array_call(getentarray("script_vehicle_x4walker_wheels_turret","classname"),::delete);
|
|
if(isdefined(level.player.linked_to_cover))
|
|
{
|
|
level.player.linked_to_cover vehicle_scripts\_cover_drone::player_unlink_from_cover();
|
|
}
|
|
|
|
common_scripts\utility::array_call(getentarray("script_vehicle_cover_drone","classname"),::delete);
|
|
common_scripts\utility::array_call(getentarray("mobile_turret","targetname"),::delete);
|
|
common_scripts\utility::array_call(getentarray("script_vehicle_pdrone","classname"),::delete);
|
|
level.player setstance("stand");
|
|
level.player freezecontrols(1);
|
|
level.player maps\_utility::teleport_player(common_scripts\utility::getstruct("itiot_player_start","targetname"));
|
|
level.player setplayerangles(level.player.angles + (7,0,0));
|
|
wait(4);
|
|
soundscripts\_snd::snd_message("itiot_fade_in");
|
|
level.player freezecontrols(0);
|
|
common_scripts\utility::flag_set("flag_shut_down_reactor_failed");
|
|
common_scripts\utility::flag_set("evacuation_started");
|
|
}
|
|
}
|
|
|
|
//Function Number: 371
|
|
demo_feed_lines(param_00,param_01)
|
|
{
|
|
var_02 = getarraykeys(param_00);
|
|
for(var_03 = 0;var_03 < var_02.size;var_03++)
|
|
{
|
|
var_04 = var_02[var_03];
|
|
var_05 = var_03 * param_01 + 1;
|
|
maps\_utility::delaythread(var_05,::centerlinethread,param_00[var_04],param_00.size - var_03 - 1,param_01,var_04);
|
|
}
|
|
}
|
|
|
|
//Function Number: 372
|
|
centerlinethread(param_00,param_01,param_02,param_03)
|
|
{
|
|
level notify("new_introscreen_element");
|
|
var_04 = newhudelem();
|
|
var_04.x = 0;
|
|
var_04.y = 0;
|
|
var_04.alignx = "center";
|
|
var_04.aligny = "middle";
|
|
var_04.horzalign = "center";
|
|
var_04.vertalign = "middle_adjustable";
|
|
var_04.sort = 1;
|
|
var_04.foreground = 1;
|
|
var_04 settext(param_00);
|
|
var_04.alpha = 0;
|
|
var_04 fadeovertime(0.2);
|
|
var_04.alpha = 1;
|
|
var_04.hidewheninmenu = 1;
|
|
var_04.fontscale = 2.4;
|
|
var_04.color = (0.8,1,0.8);
|
|
var_04.font = "objective";
|
|
var_04.glowcolor = (0.3,0.6,0.3);
|
|
var_04.glowalpha = 1;
|
|
var_05 = int(param_02 * 1000 + 4000);
|
|
var_04 setpulsefx(30,var_05,700);
|
|
thread maps\_introscreen::hudelem_destroy(var_04);
|
|
if(!isdefined(param_03))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isstring(param_03))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(param_03 != "date")
|
|
{
|
|
}
|
|
}
|
|
|
|
//Function Number: 373
|
|
introscreen_generic_fade_out(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 1.5;
|
|
}
|
|
|
|
var_04 = newhudelem();
|
|
var_04.x = 0;
|
|
var_04.y = 0;
|
|
var_04.horzalign = "fullscreen";
|
|
var_04.vertalign = "fullscreen";
|
|
var_04.foreground = 1;
|
|
var_04 setshader(param_00,640,480);
|
|
if(isdefined(param_03) && param_03 > 0)
|
|
{
|
|
var_04.alpha = 0;
|
|
var_04 fadeovertime(param_03);
|
|
var_04.alpha = 1;
|
|
wait(param_03);
|
|
}
|
|
|
|
wait(param_01);
|
|
if(isdefined(param_02) && param_02 > 0)
|
|
{
|
|
var_04.alpha = 1;
|
|
var_04 fadeovertime(param_02);
|
|
var_04.alpha = 0;
|
|
}
|
|
|
|
var_04 destroy();
|
|
}
|
|
|
|
//Function Number: 374
|
|
prep_cinematic(param_00)
|
|
{
|
|
setsaveddvar("cg_cinematicFullScreen","0");
|
|
cinematicingame(param_00,1);
|
|
level.current_cinematic = param_00;
|
|
}
|
|
|
|
//Function Number: 375
|
|
play_cinematic(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(param_01))
|
|
{
|
|
soundscripts\_audio::deprecated_aud_send_msg("begin_cinematic",param_00);
|
|
}
|
|
|
|
if(isdefined(level.current_cinematic))
|
|
{
|
|
pausecinematicingame(0);
|
|
setsaveddvar("cg_cinematicFullScreen","1");
|
|
level.current_cinematic = undefined;
|
|
}
|
|
else
|
|
{
|
|
cinematicingame(param_00);
|
|
}
|
|
|
|
if(!isdefined(param_02) || !param_02)
|
|
{
|
|
setsaveddvar("cg_cinematicCanPause","1");
|
|
}
|
|
|
|
wait(1);
|
|
while(iscinematicplaying())
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
if(!isdefined(param_02) || !param_02)
|
|
{
|
|
setsaveddvar("cg_cinematicCanPause","0");
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
soundscripts\_audio::deprecated_aud_send_msg("end_cinematic",param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 376
|
|
setup_evacuation_scene()
|
|
{
|
|
maps\_drone_civilian::init();
|
|
maps\_drone_ai::init();
|
|
level.evacuation_scene_spawners = [];
|
|
level.evacuation_scene_spawners["civilian"] = getentarray("evacuation_scene_spawners_civilians","targetname");
|
|
level.evacuation_scene_spawners["axis"] = getentarray("evacuation_scene_spawners_axis","targetname");
|
|
level.evacuation_scene_index = [];
|
|
level.evacuation_scene_index["civilian"] = 0;
|
|
level.evacuation_scene_index["axis"] = 0;
|
|
level.scr_anim["civilian"]["civilian_run_hunched_A_relative"] = %civilian_run_hunched_a_relative;
|
|
level.scr_anim["civilian"]["civilian_run_upright_relative"] = %civilian_run_upright_relative;
|
|
level.scr_anim["civilian"]["unarmed_scared_run"] = %unarmed_scared_run;
|
|
level.scr_anim["civilian"]["civilian_leaning_death"] = %civilian_leaning_death;
|
|
level.scr_anim["civilian"]["DC_Burning_bunker_stumble"] = %dc_burning_bunker_stumble;
|
|
level.scr_anim["civilian"]["civilian_run_upright_turnL90"] = %civilian_run_upright_turnl90;
|
|
level.scr_anim["civilian"]["civilian_run_hunched_turnL90_slide"] = %civilian_run_hunched_turnl90_slide;
|
|
thread handle_evacuation_scene_triggers();
|
|
}
|
|
|
|
//Function Number: 377
|
|
handle_evacuation_scene_triggers()
|
|
{
|
|
var_00 = getentarray("evacuation_scene_trigger","script_noteworthy");
|
|
common_scripts\utility::array_thread(var_00,::evacuation_scene_trigger_think);
|
|
}
|
|
|
|
//Function Number: 378
|
|
evacuation_scene_trigger_think()
|
|
{
|
|
var_00 = common_scripts\utility::getstructarray(self.target,"targetname");
|
|
self waittill("trigger",var_01);
|
|
common_scripts\utility::flag_set("hangar_exit_explosion");
|
|
foreach(var_03 in var_00)
|
|
{
|
|
var_03 thread evacuation_scene_think();
|
|
}
|
|
}
|
|
|
|
//Function Number: 379
|
|
evacuation_scene_think()
|
|
{
|
|
var_00 = get_evacuation_scene_spawner(self.script_parameters);
|
|
if(isdefined(self.script_delay))
|
|
{
|
|
wait(self.script_delay);
|
|
}
|
|
|
|
if(isdefined(self.script_noteworthy) && self.script_noteworthy == "runner")
|
|
{
|
|
var_00.target = self.target;
|
|
var_01 = var_00 maps\_utility::spawn_ai(1);
|
|
var_00.target = undefined;
|
|
var_01.origin = self.origin;
|
|
var_01.no_friendly_fire_penalty = 1;
|
|
var_01 thread evacuation_scene_run_actor(self.animation,self.script_parameters);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.script_noteworthy) && self.script_noteworthy == "run_and_die")
|
|
{
|
|
var_01.target = self.target;
|
|
var_01 = var_01 maps\_utility::spawn_ai(1);
|
|
var_00.target = undefined;
|
|
var_01.origin = self.origin;
|
|
var_01.no_friendly_fire_penalty = 1;
|
|
var_01 thread evacuation_scene_run_actor_and_die(self.animation,self.script_parameters);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.script_noteworthy) && self.script_noteworthy == "anim_then_run")
|
|
{
|
|
var_01.target = self.target;
|
|
var_01.script_moveoverride = 1;
|
|
var_01 = var_01 maps\_utility::spawn_ai(1);
|
|
var_01.no_friendly_fire_penalty = 1;
|
|
var_00.script_moveoverride = undefined;
|
|
var_01.animname = self.script_parameters;
|
|
var_02 = var_01 evacuation_scene_determine_run_cycle(self.animation);
|
|
var_01 maps\_utility::set_run_anim_array(var_02,undefined,1);
|
|
evacuation_scene_animate_actor(var_01);
|
|
var_01 notify("move");
|
|
var_01 waittill("goal");
|
|
var_01 kill();
|
|
return;
|
|
}
|
|
|
|
var_01 = var_01 maps\_utility::spawn_ai(1);
|
|
var_01.no_friendly_fire_penalty = 1;
|
|
var_01.animname = self.script_parameters;
|
|
thread evacuation_scene_animate_actor(var_01);
|
|
}
|
|
|
|
//Function Number: 380
|
|
get_evacuation_scene_spawner(param_00)
|
|
{
|
|
var_01 = level.evacuation_scene_spawners[param_00][level.evacuation_scene_index[param_00]];
|
|
level.evacuation_scene_index[param_00]++;
|
|
if(level.evacuation_scene_index[param_00] >= level.evacuation_scene_spawners[param_00].size)
|
|
{
|
|
level.evacuation_scene_index[param_00] = 0;
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 381
|
|
evacuation_scene_animate_actor(param_00)
|
|
{
|
|
param_00 endon("death");
|
|
param_00.allowdeath = 1;
|
|
var_01 = self.animation;
|
|
if(isarray(level.scr_anim[param_00.animname][var_01]))
|
|
{
|
|
var_02 = 1;
|
|
thread maps\_anim::anim_generic_loop(param_00,var_01,"stop_idle");
|
|
return;
|
|
}
|
|
|
|
var_03 = issubstr(var_01,"death");
|
|
if(var_03)
|
|
{
|
|
param_00.skipdeathanim = 1;
|
|
param_00.noragdoll = 1;
|
|
}
|
|
|
|
if(var_01 == "dubai_restaurant_rolling_soldier")
|
|
{
|
|
param_00 common_scripts\utility::delaycall(1.8,::startragdoll);
|
|
}
|
|
|
|
if(issubstr(var_01,"run"))
|
|
{
|
|
maps\_anim::anim_single_solo_run(param_00,var_01);
|
|
}
|
|
else
|
|
{
|
|
maps\_anim::anim_single_solo(param_00,var_01);
|
|
}
|
|
|
|
if(var_03)
|
|
{
|
|
param_00 kill();
|
|
}
|
|
|
|
var_04 = var_01 + "_idle";
|
|
if(isdefined(level.scr_anim[param_00.animname][var_04]))
|
|
{
|
|
thread maps\_anim::anim_loop_solo(param_00,var_04,"stop_idle");
|
|
}
|
|
}
|
|
|
|
//Function Number: 382
|
|
evacuation_scene_run_actor(param_00,param_01)
|
|
{
|
|
self.runanim = level.scr_anim[param_01][param_00];
|
|
self waittill("goal");
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 383
|
|
evacuation_scene_run_actor_and_die(param_00,param_01)
|
|
{
|
|
self waittill("goal");
|
|
self.animation = param_00;
|
|
self.animname = param_01;
|
|
var_02 = common_scripts\utility::getstruct(self.target,"targetname");
|
|
var_02 evacuation_scene_animate_actor(self);
|
|
}
|
|
|
|
//Function Number: 384
|
|
evacuation_scene_determine_run_cycle(param_00)
|
|
{
|
|
if(issubstr(param_00,"civilian_run_hunched"))
|
|
{
|
|
param_00 = "civilian_run_hunched_A_relative";
|
|
}
|
|
else if(issubstr(param_00,"civilian_run_upright"))
|
|
{
|
|
param_00 = "civilian_run_upright_relative";
|
|
}
|
|
else
|
|
{
|
|
}
|
|
|
|
self.runanim = level.scr_anim[self.animname][param_00];
|
|
return param_00;
|
|
}
|
|
|
|
//Function Number: 385
|
|
evacuation_balcony_death()
|
|
{
|
|
common_scripts\utility::flag_wait("reaction_explo01");
|
|
var_00 = getent("evacuation_scene_civilian_balcony_death","targetname");
|
|
var_01 = common_scripts\utility::getstruct(var_00.target,"targetname");
|
|
var_02 = var_00 maps\_utility::spawn_ai(1);
|
|
var_02.no_friendly_fire_penalty = 1;
|
|
var_02.origin = var_01.origin;
|
|
var_02.angles = var_01.angles;
|
|
var_01 maps\_anim::anim_generic(var_02,"payback_comp_balcony_kick_enemy");
|
|
var_02 kill(level.player.origin);
|
|
var_02 startragdoll();
|
|
}
|
|
|
|
//Function Number: 386
|
|
evacuation_corpses()
|
|
{
|
|
var_00 = getent("evacuation_corpse_civilian","targetname");
|
|
var_01 = common_scripts\utility::getstructarray("evacuation_corpse","targetname");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(!isdefined(var_03.script_parameters))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_04 = undefined;
|
|
switch(var_03.script_parameters)
|
|
{
|
|
case "civilian":
|
|
var_04 = var_00 maps\_utility::spawn_ai();
|
|
break;
|
|
|
|
case "allies":
|
|
case "axis":
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if(!isdefined(var_04))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_04.origin = var_03.origin;
|
|
var_04.angles = var_03.angles;
|
|
var_04 setcandamage(0);
|
|
var_05 = level.scr_anim["generic"][var_03.animation];
|
|
if(isarray(var_05))
|
|
{
|
|
var_05 = var_05[0];
|
|
}
|
|
|
|
var_04 animscripted("endanim",var_03.origin,var_03.angles,var_05);
|
|
var_04 notsolid();
|
|
if(issubstr(var_03.animation,"death"))
|
|
{
|
|
var_04 common_scripts\utility::delaycall(0.05,::setanimtime,var_05,1);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 387
|
|
detect_turret_death()
|
|
{
|
|
self.deathfunction = ::set_turret_death_anim;
|
|
}
|
|
|
|
//Function Number: 388
|
|
set_turret_death_anim()
|
|
{
|
|
if(self.damageweapon == "none" && self.damagetaken > 100)
|
|
{
|
|
var_00 = animscripts\death::getstrongbulletdamagedeathanim();
|
|
if(isdefined(var_00))
|
|
{
|
|
self.deathanim = var_00;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 389
|
|
smaw_laser_think()
|
|
{
|
|
for(;;)
|
|
{
|
|
level.player waittill("weaponchange");
|
|
if(level.player getcurrentweapon() == "smaw_nolock_fusion")
|
|
{
|
|
level.player laseron();
|
|
continue;
|
|
}
|
|
|
|
level.player laseroff();
|
|
}
|
|
}
|
|
|
|
//Function Number: 390
|
|
intro_heli_movies()
|
|
{
|
|
common_scripts\utility::flag_wait("intro_text_cinematic_over");
|
|
setsaveddvar("cg_cinematicFullScreen","0");
|
|
cinematicingameloop("fusion_heliscreen01");
|
|
level.burke waittillmatch("start_video_2","single anim");
|
|
stopcinematicingame();
|
|
cinematicingameloop("fusion_heliscreen02");
|
|
level.burke waittillmatch("start_video_3","single anim");
|
|
stopcinematicingame();
|
|
cinematicingame("fusion_heliscreen03");
|
|
wait(1.9);
|
|
stopcinematicingame();
|
|
cinematicingameloop("fusion_heliscreen01");
|
|
wait(90);
|
|
stopcinematicingame();
|
|
}
|
|
|
|
//Function Number: 391
|
|
evacuation_kiosk_movie()
|
|
{
|
|
level endon("stop_evacuation_kiosk_movie");
|
|
setsaveddvar("cg_cinematicFullScreen","0");
|
|
var_00 = 0;
|
|
for(;;)
|
|
{
|
|
var_01 = level.player.origin[0] < 7200;
|
|
var_00 = var_00 && iscinematicplaying();
|
|
if(!var_00 && var_01)
|
|
{
|
|
cinematicingameloop("fusion_evacuation");
|
|
var_00 = 1;
|
|
}
|
|
else if(var_00 && !var_01)
|
|
{
|
|
stopcinematicingame();
|
|
var_00 = 0;
|
|
}
|
|
|
|
wait(0.5);
|
|
}
|
|
}
|
|
|
|
//Function Number: 392
|
|
take_car_door_shields()
|
|
{
|
|
self notify("remove_car_doors");
|
|
}
|
|
|
|
//Function Number: 393
|
|
drone_delete_at_goal()
|
|
{
|
|
self waittill("reached_path_end");
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 394
|
|
give_night_vision(param_00)
|
|
{
|
|
level endon("flag_end_sonar_vision");
|
|
if(isdefined(param_00))
|
|
{
|
|
common_scripts\utility::flag_wait(param_00);
|
|
}
|
|
|
|
level.player setweaponhudiconoverride("actionslot1","dpad_icon_nvg");
|
|
level.player notifyonplayercommand("sonar_vision","+actionslot 1");
|
|
level.player thread maps\fusion_utility::thermal_with_nvg();
|
|
}
|
|
|
|
//Function Number: 395
|
|
sonar_hint()
|
|
{
|
|
level.player endon("death");
|
|
common_scripts\utility::flag_wait("turbine_room_combat_start");
|
|
wait(7);
|
|
if(!maps\_nightvision::nightvision_check(level.player))
|
|
{
|
|
maps\_utility::hintdisplaymintimehandler("hint_use_sonar",8);
|
|
}
|
|
}
|
|
|
|
//Function Number: 396
|
|
tower_collapse_knockback_disable_sonar()
|
|
{
|
|
wait(1);
|
|
maps\sanfran_b_sonar_vision::sonar_vision_off();
|
|
maps\fusion_utility::sonar_off();
|
|
common_scripts\utility::flag_set("flag_end_sonar_vision");
|
|
}
|
|
|
|
//Function Number: 397
|
|
pdrone_deploy_hint()
|
|
{
|
|
level.player endon("death");
|
|
common_scripts\utility::flag_wait("turbine_room_combat_start");
|
|
wait(7);
|
|
if(!common_scripts\utility::flag("flag_player_using_drone"))
|
|
{
|
|
maps\_utility::hintdisplaymintimehandler("drone_deploy_prompt",8);
|
|
common_scripts\utility::flag_set("drone_deploy_prompt_displayed");
|
|
}
|
|
}
|
|
|
|
//Function Number: 398
|
|
pdrone_activate(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
common_scripts\utility::flag_wait(param_00);
|
|
}
|
|
|
|
level.player setweaponhudiconoverride("actionslot1","dpad_icon_drone");
|
|
level.player notifyonplayercommand("use_drone","-actionslot 1");
|
|
thread maps\fusion_utility::spawn_player_drone_think();
|
|
}
|
|
|
|
//Function Number: 399
|
|
pdrone_deactivate_think()
|
|
{
|
|
common_scripts\utility::flag_wait("turbine_room_stop_combat");
|
|
if(!common_scripts\utility::flag("player_drone_attack_done"))
|
|
{
|
|
level.player setweaponhudiconoverride("actionslot1","dpad_icon_drone_off");
|
|
common_scripts\utility::flag_clear("flag_player_using_drone");
|
|
common_scripts\utility::flag_set("player_drone_attack_done");
|
|
}
|
|
} |