mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
3272 lines
106 KiB
Plaintext
3272 lines
106 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: finale_code.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 139
|
|
* Decompile Time: 2088 ms
|
|
* Timestamp: 4/22/2024 2:29:09 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
finale_intro_screen()
|
|
{
|
|
level.intro_offset = -1;
|
|
soundscripts\_snd::snd_message("start_intro");
|
|
var_00 = 8;
|
|
setsaveddvar("cg_cinematicfullscreen","1");
|
|
level.player disableweapons();
|
|
level.player freezecontrols(1);
|
|
level.player takeallweapons();
|
|
thread maps\_shg_utility::play_chyron_video("chyron_text_finale",14,2);
|
|
common_scripts\utility::flag_wait("chyron_video_done");
|
|
common_scripts\utility::flag_set("flag_chyron_finale_complete");
|
|
common_scripts\utility::flag_wait("flag_dialogue_intro_black_complete");
|
|
level.player maps\finale_utility::mech_enable(undefined,1);
|
|
level.player enableweapons();
|
|
common_scripts\utility::flag_set("flag_intro_screen_complete");
|
|
common_scripts\utility::flag_set("flag_canal_combat_start");
|
|
}
|
|
|
|
//Function Number: 2
|
|
spawn_function()
|
|
{
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_flyin_01",::ai_canal_combat_01_accuracy_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_flyin_bridge_01",::ai_canal_combat_02_accuracy_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_flyin_bridge_02",::ai_canal_combat_03_accuracy_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_flyin_04",::ai_canal_combat_04_accuracy_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_flyin_05",::ai_canal_combat_05_accuracy_think);
|
|
maps\_utility::array_spawn_function_noteworthy("ai_silo_entrance",::ai_silo_think);
|
|
maps\_utility::array_spawn_function_noteworthy("ai_silo_floor_01",::ai_silo_think);
|
|
maps\_utility::array_spawn_function_noteworthy("ai_silo_floor_01_balcony",::ai_silo_floor_01_balcony);
|
|
maps\_utility::array_spawn_function_noteworthy("ai_silo_floor_01_wave_2",::ai_silo_floor_01_wave_2_think);
|
|
maps\_utility::array_spawn_function_noteworthy("ai_silo_floor_02",::ai_silo_floor_01_wave_3_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_01",::maps\finale_utility::follow_volume_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_01_b",::maps\finale_utility::follow_volume_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_01_flood",::maps\finale_utility::follow_volume_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_02",::maps\finale_utility::follow_volume_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_03",::maps\finale_utility::follow_volume_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_boost_silo_03_flood",::maps\finale_utility::follow_volume_think);
|
|
maps\_utility::array_spawn_function_noteworthy("enemy_lobby",::ai_lobby_think);
|
|
maps\_utility::array_spawn_function_noteworthy("rpg_vehicle",::maps\finale_utility::postspawn_rpg_vehicle);
|
|
maps\_utility::array_spawn_function_noteworthy("mech_silo",::mech_behavior_init);
|
|
maps\_utility::array_spawn_function_noteworthy("boat_canal",::boat_death_think);
|
|
maps\_utility::add_global_spawn_function("axis",::tweak_enemy_hp);
|
|
createthreatbiasgroup("enemy_canal");
|
|
createthreatbiasgroup("enemy_silo");
|
|
createthreatbiasgroup("player");
|
|
}
|
|
|
|
//Function Number: 3
|
|
setup_combat()
|
|
{
|
|
spawn_function();
|
|
level.player thread threat_bias_canal_think();
|
|
level.player thread threat_bias_silo_think();
|
|
thread canal_chase_boats();
|
|
thread combat_canal_01();
|
|
thread combat_flyin_bridge();
|
|
thread combat_silo();
|
|
thread combat_silo_mech();
|
|
thread combat_silo_boost();
|
|
}
|
|
|
|
//Function Number: 4
|
|
setup_se()
|
|
{
|
|
thread intro_flyin();
|
|
}
|
|
|
|
//Function Number: 5
|
|
tweak_enemy_hp()
|
|
{
|
|
if(issubstr(self.classname,"elite"))
|
|
{
|
|
self.health = 650;
|
|
}
|
|
|
|
if(issubstr(self.classname,"mech"))
|
|
{
|
|
self.health = 7000;
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
player_mech_melee_modifier()
|
|
{
|
|
if(issubstr(self.classname,"mech"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
maps\_utility::add_damage_function(::player_mech_melee_modifier_damage_function);
|
|
}
|
|
|
|
//Function Number: 7
|
|
player_mech_melee_modifier_damage_function(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
|
{
|
|
if((param_04 == "MOD_MELEE" || param_04 == "MOD_MELEE_ALT") && isplayer(param_01))
|
|
{
|
|
self dodamage(self.health + 1000,param_01 geteye(),param_01,param_01,"MOD_MELEE_ALT");
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
ai_silo_think()
|
|
{
|
|
self endon("death");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_entrance","targetname"));
|
|
common_scripts\utility::flag_wait("flag_combat_silo_entrance_retreat");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_room_01","targetname"));
|
|
common_scripts\utility::flag_wait("flag_combat_silo_floor_01_ware_02");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_room_01_wave_2","targetname"));
|
|
common_scripts\utility::flag_wait("flag_combat_silo");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_room_01","targetname"));
|
|
maps\finale_utility::spawn_metrics_waittill_count_reaches(2,["ai_silo_floor_01"],1);
|
|
common_scripts\utility::flag_set("flag_ai_silo_floor_01_end");
|
|
common_scripts\utility::flag_set("flag_combat_silo_floor_02");
|
|
self cleargoalvolume();
|
|
maps\_utility::player_seek();
|
|
}
|
|
|
|
//Function Number: 9
|
|
ai_silo_floor_01_balcony()
|
|
{
|
|
self endon("death");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_room_01_balcony","targetname"));
|
|
maps\finale_utility::spawn_metrics_waittill_count_reaches(6,["ai_silo_floor_01_wave_2","ai_silo_floor_01","ai_silo_floor_01_balcony"],1);
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_room_02","targetname"));
|
|
common_scripts\utility::flag_wait("flag_combat_silo_floor_02_retreat");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_room_02_retreat","targetname"));
|
|
}
|
|
|
|
//Function Number: 10
|
|
ai_silo_floor_01_wave_2_think()
|
|
{
|
|
self endon("death");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_room_01_wave_2","targetname"));
|
|
maps\finale_utility::spawn_metrics_waittill_count_reaches(2,["ai_silo_floor_01_wave_2","ai_silo_floor_01"],1);
|
|
common_scripts\utility::flag_set("flag_ai_silo_floor_01_end");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_room_02","targetname"));
|
|
common_scripts\utility::flag_wait("flag_combat_silo_floor_02_retreat");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_room_02_retreat","targetname"));
|
|
}
|
|
|
|
//Function Number: 11
|
|
ai_silo_floor_01_wave_3_think()
|
|
{
|
|
self endon("death");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_room_02","targetname"));
|
|
common_scripts\utility::flag_wait("flag_combat_silo_floor_02_retreat");
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(getent("info_v_silo_room_02_retreat","targetname"));
|
|
}
|
|
|
|
//Function Number: 12
|
|
ai_lobby_think()
|
|
{
|
|
self endon("death");
|
|
maps\_utility::set_baseaccuracy(0.01);
|
|
common_scripts\utility::flag_wait("flag_lobby_player_can_shoot");
|
|
wait(1);
|
|
self.health = 40;
|
|
maps\_utility::disable_long_death();
|
|
maps\_utility::set_baseaccuracy(0.5);
|
|
maps\finale_utility::disable_grenades();
|
|
common_scripts\utility::flag_wait("flag_lobby_seek_player");
|
|
self cleargoalvolume();
|
|
maps\_utility::player_seek();
|
|
}
|
|
|
|
//Function Number: 13
|
|
mech_behavior_init()
|
|
{
|
|
self endon("death");
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.paindamagestart = 300;
|
|
self.paindamagemin = 150;
|
|
thread badplace_on_entity(195,100,"allies");
|
|
maps\_utility::ent_flag_init("mech_should_attack_player");
|
|
for(;;)
|
|
{
|
|
var_00 = mech_get_closest_node();
|
|
if(isdefined(var_00))
|
|
{
|
|
var_00.mech_using_this_node = self;
|
|
maps\_mech::mech_set_goal_node(var_00);
|
|
}
|
|
|
|
maps\_utility::ent_flag_wait("mech_should_attack_player");
|
|
thread maps\_mech::mech_rocket_launcher_behavior();
|
|
maps\_utility::ent_flag_waitopen("mech_should_attack_player");
|
|
maps\_mech::mech_stop_rockets();
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
badplace_on_entity(param_00,param_01,param_02)
|
|
{
|
|
self endon("death");
|
|
var_03 = 0.5;
|
|
for(;;)
|
|
{
|
|
badplace_cylinder("",var_03,self.origin,param_00,param_01,param_02);
|
|
wait(var_03);
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
mech_get_closest_node()
|
|
{
|
|
var_00 = getnodearray("node_mech","script_noteworthy");
|
|
var_01 = undefined;
|
|
var_02 = undefined;
|
|
foreach(var_04 in var_00)
|
|
{
|
|
if(isalive(var_04.mech_using_this_node))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_05 = distancesquared(self.origin,var_04.origin);
|
|
if(!isdefined(var_01) || var_05 < var_02)
|
|
{
|
|
var_01 = var_04;
|
|
var_02 = var_05;
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 16
|
|
combat_silo()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_combat_silo_entrance");
|
|
thread maps\_utility::autosave_now();
|
|
level.player thread maps\finale_utility::mech_glass_damage_think("flag_obj_escape");
|
|
level.gideon thread maps\finale_utility::mech_glass_damage_think("flag_obj_escape");
|
|
level.gideon maps\_mech::mech_start_rockets(512,undefined,undefined,undefined,83.33334,undefined,undefined);
|
|
soundscripts\_snd::snd_message("start_silo_approach");
|
|
var_00 = getentarray("ai_silo_entrance","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_combat_silo");
|
|
var_00 = getentarray("ai_silo_floor_01","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_combat_silo_floor_01_ware_02");
|
|
var_00 = getentarray("ai_silo_floor_01_balcony","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
var_00 = getentarray("ai_silo_floor_01_wave_2","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_combat_silo_floor_02");
|
|
var_00 = getentarray("ai_silo_floor_02","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_combat_silo_floor_02_retreat");
|
|
var_00 = getentarray("ai_silo_floor_02_wave_02","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
combat_silo_mech()
|
|
{
|
|
common_scripts\utility::flag_wait_all("flag_silo_watwalks_open","flag_lower_missile_loader");
|
|
wait(6);
|
|
var_00 = getentarray("mech_silo","script_noteworthy");
|
|
thread control_mech_attacks();
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
thread maps\finale_utility::combat_silo_seeker_ai();
|
|
}
|
|
|
|
//Function Number: 18
|
|
control_mech_attacks()
|
|
{
|
|
var_00 = 1;
|
|
level.player.mechs_attacking_me = [];
|
|
for(;;)
|
|
{
|
|
wait(5);
|
|
var_01 = [];
|
|
foreach(var_03 in getentarray("mech_silo","script_noteworthy"))
|
|
{
|
|
if(!var_03 maps\_utility::ent_flag_exist("mech_should_attack_player"))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_03.enemy) || var_03.enemy != level.player)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01[var_01.size] = var_03;
|
|
var_03 maps\_utility::ent_flag_clear("mech_should_attack_player");
|
|
}
|
|
|
|
var_01 = sortbydistance(var_01,level.player.origin);
|
|
for(var_05 = 0;var_05 < var_01.size && var_05 < var_00;var_05++)
|
|
{
|
|
var_01[var_05] maps\_utility::ent_flag_set("mech_should_attack_player");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
combat_silo_boost()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_missile_move_start");
|
|
var_00 = getentarray("enemy_boost_silo_01","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_silo_combat_01_b");
|
|
var_00 = getentarray("enemy_boost_silo_01_b","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
var_00 = getentarray("enemy_boost_silo_01_flood","script_noteworthy");
|
|
if(var_00.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait_any("flag_silo_combat_02","flag_kill_spawners_silo_01");
|
|
maps\finale_utility::delete_spawners("enemy_boost_silo_01_flood");
|
|
common_scripts\utility::flag_wait("flag_silo_combat_02");
|
|
var_00 = getentarray("enemy_boost_silo_02","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_silo_combat_03");
|
|
var_00 = getentarray("enemy_boost_silo_03","script_noteworthy");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
var_00 = getentarray("enemy_boost_silo_03_flood","script_noteworthy");
|
|
if(var_00.size > 0)
|
|
{
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_silo_combat_stop");
|
|
thread combat_silo_complete();
|
|
maps\finale_utility::delete_spawners("enemy_boost_silo_03_flood");
|
|
}
|
|
|
|
//Function Number: 20
|
|
combat_silo_complete()
|
|
{
|
|
var_00 = ["mech_silo","enemy_boost_silo_01","enemy_boost_silo_01_b","enemy_boost_silo_01_flood","enemy_boost_silo_02","enemy_boost_silo_03","enemy_boost_silo_03_flood"];
|
|
maps\finale_utility::spawn_metrics_waittill_count_reaches(0,[var_00],1);
|
|
common_scripts\utility::flag_set("flag_silo_combat_complete");
|
|
}
|
|
|
|
//Function Number: 21
|
|
combat_lobby()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_lobby_combat_start");
|
|
var_00 = getentarray("enemy_lobby","script_noteworthy");
|
|
if(var_00.size > 0)
|
|
{
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02.script_forcespawn = 1;
|
|
}
|
|
|
|
maps\_spawner::flood_spawner_scripted(var_00);
|
|
}
|
|
|
|
maps\finale_utility::spawn_metrics_waittill_deaths_reach(4,["enemy_lobby"],1);
|
|
common_scripts\utility::flag_set("flag_lobby_seek_player");
|
|
maps\finale_utility::spawn_metrics_waittill_deaths_reach(6,["enemy_lobby"],1);
|
|
maps\finale_utility::delete_spawners("enemy_lobby");
|
|
common_scripts\utility::flag_set("flag_lobby_clear");
|
|
}
|
|
|
|
//Function Number: 22
|
|
intro_flyin()
|
|
{
|
|
if(!common_scripts\utility::flag("flag_intro_screen_complete"))
|
|
{
|
|
thread finale_intro_screen();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_intro_flyin_start");
|
|
common_scripts\utility::flag_wait("flag_intro_screen_complete");
|
|
common_scripts\utility::flag_set("flag_se_intro_flyin_start");
|
|
thread maps\_utility::autosave_now();
|
|
level.littlebird_player = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("littlebird_player");
|
|
level.littlebird_player maps\_vehicle::godon();
|
|
var_00 = getent("org_player_attach","targetname");
|
|
var_00.angles = level.littlebird_player.angles;
|
|
var_00 linkto(level.littlebird_player);
|
|
var_01 = maps\_utility::spawn_anim_model("world_body_mech");
|
|
var_01.angles = var_00.angles;
|
|
var_01.origin = var_00.origin;
|
|
var_01 linkto(level.littlebird_player);
|
|
var_01 hide();
|
|
level.player.player_rig_heli = var_01;
|
|
thread se_intro_flyin_gideon();
|
|
thread intro_player(level.littlebird_player,var_01);
|
|
thread intro_bobbing_boats();
|
|
thread se_intro_ambient_warbirds();
|
|
thread se_intro_ambient_jets();
|
|
thread se_intro_missiles();
|
|
thread flyin_handle_steady_rumble();
|
|
}
|
|
|
|
//Function Number: 23
|
|
intro_player(param_00,param_01)
|
|
{
|
|
level.player playerlinkto(param_01,"tag_player",1,20,20,20,20,0);
|
|
level.player.drivingvehicle = param_00;
|
|
var_02 = getanimlength(param_01 maps\_utility::getanim("intro_flyin"));
|
|
param_01 setanim(param_01 maps\_utility::getanim("intro_flyin"),1,0,1);
|
|
wait(var_02);
|
|
level.player playerlinkto(param_01,"tag_player",0.2,90,90,25,40,0);
|
|
common_scripts\utility::flag_wait("flag_intro_flyin_release");
|
|
soundscripts\_snd::snd_message("start_canal");
|
|
}
|
|
|
|
//Function Number: 24
|
|
threat_bias_canal_think()
|
|
{
|
|
self setthreatbiasgroup("player");
|
|
setthreatbias("player","enemy_canal",5000);
|
|
}
|
|
|
|
//Function Number: 25
|
|
threat_bias_silo_think()
|
|
{
|
|
self setthreatbiasgroup("player");
|
|
setthreatbias("player","enemy_silo",7000);
|
|
}
|
|
|
|
//Function Number: 26
|
|
se_intro_flyin_gideon()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_se_intro_flyin_start");
|
|
var_00 = getent("org_intro_flying","targetname");
|
|
level.littlebird_gideon = maps\_vehicle::spawn_vehicle_from_targetname("littlebird_gideon");
|
|
level.littlebird_gideon maps\_vehicle::godon();
|
|
level.littlebird_gideon.animname = "helo_intro_gideon";
|
|
level.gideon setmodel("npc_exo_armor_bigfin");
|
|
var_01 = [level.littlebird_gideon,level.gideon];
|
|
thread player_helo_release(var_00);
|
|
thread gideon_helo_release(var_00,var_01);
|
|
level.gideon thread maps\finale_heli_custom_aim::start_heli_custom_aim("kill_start_heli_custom_aim");
|
|
soundscripts\_snd::snd_message("fin_flyin_start");
|
|
thread rope_link(level.littlebird_gideon,"ropeAttach_KL",level.gideon,"J2_exoShoulder_L");
|
|
thread rope_link(level.littlebird_gideon,"ropeAttach_KR",level.gideon,"J2_exoShoulder_R");
|
|
thread rope_link(level.littlebird_gideon,"ropeAttach_KM",level.gideon,"J_plate_TKR");
|
|
var_00 maps\_anim::anim_single(var_01,"intro_flyin");
|
|
if(!common_scripts\utility::flag("flag_intro_flyin_release"))
|
|
{
|
|
var_00 thread maps\_anim::anim_loop(var_01,"intro_flyin_idle","ender");
|
|
}
|
|
}
|
|
|
|
//Function Number: 27
|
|
flyin_handle_steady_rumble()
|
|
{
|
|
level.flyin_steady_rumble_intensity = 0.08;
|
|
maps\finale_utility::set_level_player_rumble_ent_intensity(level.flyin_steady_rumble_intensity);
|
|
level.player waittill("player_released_from_drone");
|
|
maps\finale_utility::set_level_player_rumble_ent_intensity(0);
|
|
}
|
|
|
|
//Function Number: 28
|
|
gideon_helo_release(param_00,param_01)
|
|
{
|
|
common_scripts\utility::flag_wait("flag_intro_flyin_release");
|
|
level.gideon notify("kill_start_heli_custom_aim");
|
|
wait(0.75);
|
|
param_00 notify("ender");
|
|
level.littlebird_gideon maps\_utility::anim_stopanimscripted();
|
|
level.gideon maps\_utility::anim_stopanimscripted();
|
|
level.gideon common_scripts\utility::delaycall(2,::setmodel,"npc_exo_armor_base");
|
|
param_00 maps\_anim::anim_single(param_01,"intro_flyin_release");
|
|
var_02 = common_scripts\utility::getstruct("path_helo_intro_gideon_end","targetname");
|
|
level.littlebird_gideon thread maps\_utility::vehicle_dynamicpath(var_02,0);
|
|
maps\_utility::activate_trigger_with_targetname("trig_color_canal_land");
|
|
}
|
|
|
|
//Function Number: 29
|
|
intro_gideon(param_00,param_01)
|
|
{
|
|
level.gideon maps\_utility::teleport_to_ent_tag(param_01,"tag_origin");
|
|
level.gideon linkto(param_01,"tag_origin");
|
|
common_scripts\utility::flag_wait("flag_intro_flyin_release");
|
|
level.gideon unlink();
|
|
param_01 = getent("org_gideon_canal_floor","targetname");
|
|
var_02 = getent("clip_gideon_down_exhaust","targetname");
|
|
var_02.origin = level.gideon.origin;
|
|
level.gideon linkto(var_02);
|
|
var_02 moveto(param_01.origin,1.75,1.65,0.1);
|
|
wait(1.75);
|
|
level.gideon unlink();
|
|
}
|
|
|
|
//Function Number: 30
|
|
intro_bobbing_boats()
|
|
{
|
|
var_00 = getentarray("civilian_yacht_01","targetname");
|
|
var_01 = getentarray("civilian_yacht_02","targetname");
|
|
var_02 = getentarray("civilian_yacht_03","targetname");
|
|
var_03 = getentarray("civilian_barge_01","targetname");
|
|
common_scripts\utility::array_thread(var_00,::maps\finale_utility::boat_bobbing_think);
|
|
common_scripts\utility::array_thread(var_00,::maps\finale_fx::boat_small_static_foam);
|
|
common_scripts\utility::array_thread(var_01,::maps\finale_utility::boat_bobbing_think);
|
|
common_scripts\utility::array_thread(var_01,::maps\finale_fx::boat_small_static_foam);
|
|
common_scripts\utility::array_thread(var_02,::maps\finale_utility::boat_bobbing_think);
|
|
common_scripts\utility::array_thread(var_02,::maps\finale_fx::boat_small_static_foam);
|
|
common_scripts\utility::array_thread(var_03,::maps\finale_utility::boat_bobbing_think);
|
|
common_scripts\utility::array_thread(var_03,::maps\finale_fx::boat_large_static_foam);
|
|
common_scripts\utility::flag_wait("flag_intro_flyin_release");
|
|
level notify("boat_scene_cleanup");
|
|
}
|
|
|
|
//Function Number: 31
|
|
se_intro_missiles()
|
|
{
|
|
maps\_utility::delaythread(15,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_01");
|
|
maps\_utility::delaythread(27.6,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_02");
|
|
maps\_utility::delaythread(26.5,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_02b");
|
|
maps\_utility::delaythread(57.5,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_04");
|
|
maps\_utility::delaythread(57.5,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_04b");
|
|
maps\_utility::delaythread(57.5,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"rpg_at_gideon_04c");
|
|
}
|
|
|
|
//Function Number: 32
|
|
se_intro_ambient_warbirds()
|
|
{
|
|
maps\_utility::delaythread(1,::maps\_vehicle::spawn_vehicles_from_targetname_and_drive,"warbird_flyby01");
|
|
maps\_utility::delaythread(9,::maps\_vehicle::spawn_vehicles_from_targetname_and_drive,"warbird_flyby03");
|
|
maps\_utility::delaythread(28,::maps\_vehicle::spawn_vehicles_from_targetname_and_drive,"warbird_flyby05");
|
|
maps\_utility::delaythread(80,::spawn_looping_ambient_vehicles,"warbird_flyby02");
|
|
}
|
|
|
|
//Function Number: 33
|
|
se_intro_ambient_jets()
|
|
{
|
|
if(level.nextgen)
|
|
{
|
|
thread spawn_looping_ambient_vehicles("f15_01");
|
|
}
|
|
|
|
maps\_vehicle::spawn_vehicles_from_targetname_and_drive("f15_03");
|
|
maps\_utility::delaythread(55,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"f15_06");
|
|
maps\_utility::delaythread(55,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"shrike_06");
|
|
maps\_utility::delaythread(75,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"f15_05");
|
|
maps\_utility::delaythread(75,::maps\_vehicle::spawn_vehicle_from_targetname_and_drive,"shrike_05");
|
|
}
|
|
|
|
//Function Number: 34
|
|
spawn_looping_ambient_vehicles(param_00)
|
|
{
|
|
common_scripts\utility::array_thread(getentarray(param_00,"targetname"),::spawn_looping_ambient_vehicle_single);
|
|
}
|
|
|
|
//Function Number: 35
|
|
spawn_looping_ambient_vehicle_single()
|
|
{
|
|
while(!common_scripts\utility::flag("flag_intro_flyin_release"))
|
|
{
|
|
var_00 = maps\_vehicle::spawn_vehicle_and_gopath();
|
|
var_00 waittill("death");
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 36
|
|
se_canal_breach()
|
|
{
|
|
thread gideon_goto_canal_breach();
|
|
var_00 = getent("org_canal_breach","targetname");
|
|
var_01 = maps\_utility::spawn_anim_model("world_body_mech");
|
|
var_01 hide();
|
|
var_02 = maps\_utility::spawn_anim_model("breach_bomb");
|
|
var_02.animname = "breach_bomb";
|
|
var_02 hide();
|
|
var_03 = [var_01,var_02];
|
|
var_00 thread maps\_anim::anim_first_frame(var_03,"canal_breach");
|
|
maps\_playermech_code::hide_mech_glass_static_overlay(var_01);
|
|
var_04 = getent("trig_canal_breach","targetname");
|
|
var_05 = var_04 maps\_shg_utility::hint_button_trigger("x");
|
|
common_scripts\utility::flag_wait("flag_canal_breach_start");
|
|
if(level.currentgen)
|
|
{
|
|
common_scripts\utility::flag_set("load_middle_transient");
|
|
}
|
|
|
|
var_04 sethintstring("");
|
|
var_05 maps\_shg_utility::hint_button_clear();
|
|
maps\_utility::activate_trigger_with_targetname("trig_color_canal_breach");
|
|
thread wall_canal_breach();
|
|
level.player freezecontrols(1);
|
|
var_03 = [var_01,level.gideon,var_02];
|
|
var_06 = getdvarint("g_friendlyNameDist");
|
|
setsaveddvar("g_friendlyNameDist",0);
|
|
var_07 = 0.5;
|
|
level.player playerlinktoblend(var_01,"tag_player",var_07);
|
|
wait(var_07);
|
|
level.player maps\_playermech_code::mech_setup_player_for_scene();
|
|
var_01 show();
|
|
var_02 show();
|
|
var_00 maps\_anim::anim_single_run(var_03,"canal_breach");
|
|
common_scripts\utility::flag_set("flag_obj_enter_silo_complete");
|
|
common_scripts\utility::flag_set("flag_dialogue_canal_breach_complete");
|
|
level.player unlink();
|
|
var_01 delete();
|
|
var_02 delete();
|
|
level.player maps\_playermech_code::mech_setup_player_for_gameplay();
|
|
level.player freezecontrols(0);
|
|
level.player setorigin(level.player.origin + (0,0,-12));
|
|
setsaveddvar("g_friendlyNameDist",var_06);
|
|
}
|
|
|
|
//Function Number: 37
|
|
gideon_goto_canal_breach()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_gideon_approach_canal_breach");
|
|
var_00 = getnode("node_gideon_canal_breach","targetname");
|
|
level.gideon maps\_utility::disable_ai_color();
|
|
level.gideon maps\finale_utility::goto_node(var_00,1,64);
|
|
level.gideon maps\_utility::enable_ai_color_dontmove();
|
|
common_scripts\utility::flag_set("flag_dialogue_gideon_canal_breach_ready");
|
|
}
|
|
|
|
//Function Number: 38
|
|
wall_canal_breach()
|
|
{
|
|
var_00 = getent("brush_wall_canal_breach","targetname");
|
|
wait(9);
|
|
var_00 connectpaths();
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 39
|
|
combat_canal_01()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_canal_combat_start");
|
|
wait(15);
|
|
var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("vrap_canal_01");
|
|
if(level.currentgen)
|
|
{
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 thread tff_cleanup_vehicle("intro");
|
|
}
|
|
}
|
|
|
|
var_04 = getentarray("enemy_flyin_01","script_noteworthy");
|
|
foreach(var_06 in var_04)
|
|
{
|
|
var_06 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_chase_boats_path_02");
|
|
maps\finale_utility::cleanup_ai_with_script_noteworthy("enemy_flyin_01",256);
|
|
var_04 = getentarray("enemy_flyin_04","script_noteworthy");
|
|
foreach(var_06 in var_04)
|
|
{
|
|
var_06 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_canal_comabt_post_highway");
|
|
wait(3);
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("vrap_canal_03");
|
|
if(level.currentgen)
|
|
{
|
|
var_02 thread tff_cleanup_vehicle("intro");
|
|
}
|
|
|
|
wait(2);
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("vrap_canal_04");
|
|
if(level.currentgen)
|
|
{
|
|
var_02 thread tff_cleanup_vehicle("intro");
|
|
}
|
|
|
|
var_04 = getentarray("enemy_flyin_05","script_noteworthy");
|
|
foreach(var_06 in var_04)
|
|
{
|
|
var_06 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_canal_combat_end");
|
|
var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("vrap_canal_05");
|
|
if(level.currentgen)
|
|
{
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 thread tff_cleanup_vehicle("intro");
|
|
}
|
|
}
|
|
|
|
var_04 = getentarray("enemy_flyin_06","script_noteworthy");
|
|
foreach(var_06 in var_04)
|
|
{
|
|
var_06 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_intro_flyin_done");
|
|
maps\finale_utility::cleanup_ai_with_script_noteworthy("enemy_flyin_04",256);
|
|
maps\finale_utility::cleanup_ai_with_script_noteworthy("enemy_flyin_05",256);
|
|
common_scripts\utility::flag_wait("flag_intro_flyin_release");
|
|
wait(3);
|
|
maps\finale_utility::cleanup_ai_with_script_noteworthy("enemy_flyin_06",256);
|
|
}
|
|
|
|
//Function Number: 40
|
|
combat_flyin_bridge()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_combat_flyin_bridge_01");
|
|
var_00 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive("vrap_canal_02");
|
|
var_01 = [];
|
|
foreach(var_03 in var_00)
|
|
{
|
|
var_01 = common_scripts\utility::array_combine(var_01,var_03.riders);
|
|
}
|
|
|
|
if(level.currentgen)
|
|
{
|
|
foreach(var_03 in var_00)
|
|
{
|
|
var_03 thread tff_cleanup_vehicle("intro");
|
|
}
|
|
}
|
|
|
|
wait(3);
|
|
var_07 = getentarray("enemy_flyin_bridge_01","script_noteworthy");
|
|
foreach(var_09 in var_07)
|
|
{
|
|
var_09 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
var_07 = getentarray("enemy_flyin_bridge_02","script_noteworthy");
|
|
foreach(var_09 in var_07)
|
|
{
|
|
var_09 maps\_utility::spawn_ai(1);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_canal_highway_ai_cleanup");
|
|
maps\finale_utility::cleanup_ai_with_script_noteworthy("enemy_flyin_bridge_01",256);
|
|
foreach(var_0E in var_01)
|
|
{
|
|
if(isdefined(var_0E))
|
|
{
|
|
var_0E delete();
|
|
}
|
|
}
|
|
|
|
foreach(var_11 in var_00)
|
|
{
|
|
if(isdefined(var_11))
|
|
{
|
|
var_11 delete();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 41
|
|
canal_chase_boats()
|
|
{
|
|
common_scripts\utility::create_dvar("vehicle_free_path_debug",0);
|
|
common_scripts\utility::flag_wait("flag_canal_combat_start");
|
|
var_00 = [level.player,level.gideon];
|
|
level.freedrive_playermatch_catchup_ramp_start_dist = -125;
|
|
level.freedrive_playermatch_catchup_ramp_end_dist = 500;
|
|
level.freedrive_playermatch_catchup_multiplier = 2.2;
|
|
level.freedrive_playermatch_slowdown_ramp_start_dist = 650;
|
|
level.freedrive_playermatch_slowdown_ramp_end_dist = 600;
|
|
level.freedrive_vehicle_min_allowed_speed = 0;
|
|
level.freedrive_dodge_static_early_distance = 1000;
|
|
level.freedrive_stay_within_percent_of_edge = 0.9;
|
|
level.freedrive_progress_mod_step = 600;
|
|
wait(4);
|
|
maps\_vehicle_free_drive::init_vehicle_free_path("road_path_left_01");
|
|
var_01 = getentarray("enemy_boat_01","targetname");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_04 = var_03 maps\_vehicle_free_drive::spawn_vehicle_and_attach_to_free_path(45,0,0,0);
|
|
var_04 thread vehicle_scripts\_diveboat::setup_and_fire_missles_at_guys_repeated(var_00);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_chase_boats_path_02");
|
|
maps\_vehicle_free_drive::init_vehicle_free_path("road_path_left_02");
|
|
var_01 = getentarray("enemy_boat_03","targetname");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_04 = var_03 maps\_vehicle_free_drive::spawn_vehicle_and_attach_to_free_path(30,0,0,0);
|
|
var_04 thread vehicle_scripts\_diveboat::setup_and_fire_missles_at_guys_repeated(var_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 42
|
|
ai_canal_combat_01_accuracy_think()
|
|
{
|
|
self endon("death");
|
|
common_scripts\utility::flag_wait("flag_combat_flyin_bridge_01");
|
|
maps\_utility::set_baseaccuracy(0.1);
|
|
}
|
|
|
|
//Function Number: 43
|
|
ai_canal_combat_02_accuracy_think()
|
|
{
|
|
self endon("death");
|
|
common_scripts\utility::flag_wait("flag_chase_boats_path_02");
|
|
maps\_utility::set_baseaccuracy(0.1);
|
|
}
|
|
|
|
//Function Number: 44
|
|
ai_canal_combat_03_accuracy_think()
|
|
{
|
|
self endon("death");
|
|
common_scripts\utility::flag_wait("flag_canal_accuracy_tweak_bridge_02");
|
|
maps\_utility::set_baseaccuracy(0.1);
|
|
}
|
|
|
|
//Function Number: 45
|
|
ai_canal_combat_04_accuracy_think()
|
|
{
|
|
self endon("death");
|
|
common_scripts\utility::flag_wait("flag_canal_accuracy_tweak_combat_04");
|
|
maps\_utility::set_baseaccuracy(0.1);
|
|
}
|
|
|
|
//Function Number: 46
|
|
ai_canal_combat_05_accuracy_think()
|
|
{
|
|
self endon("death");
|
|
common_scripts\utility::flag_wait("flag_canal_combat_end");
|
|
maps\_utility::set_baseaccuracy(0.1);
|
|
}
|
|
|
|
//Function Number: 47
|
|
boat_death_think()
|
|
{
|
|
if(!isdefined(level.boat_canal))
|
|
{
|
|
level.boat_canal = 0;
|
|
}
|
|
|
|
level.boat_canal++;
|
|
self waittill("death",var_00);
|
|
thread flyin_scene_handle_vehicle_destroyed_rumbles(self);
|
|
level.boat_canal--;
|
|
if(level.boat_canal == 0)
|
|
{
|
|
common_scripts\utility::flag_set("flag_boat_canal_dead");
|
|
return;
|
|
}
|
|
|
|
if(var_00 == level.player)
|
|
{
|
|
common_scripts\utility::flag_set("flag_boat_single_dead");
|
|
}
|
|
}
|
|
|
|
//Function Number: 48
|
|
flyin_scene_handle_vehicle_destroyed_rumbles(param_00)
|
|
{
|
|
var_01 = distance(level.player.origin,param_00.origin);
|
|
var_02 = 2500;
|
|
var_03 = 0.8;
|
|
var_04 = var_02 - var_01 / var_02 / var_03;
|
|
if(var_04 > 0.2)
|
|
{
|
|
maps\finale_utility::set_level_player_rumble_ent_intensity_for_time(var_04,0.25);
|
|
}
|
|
}
|
|
|
|
//Function Number: 49
|
|
estimate_player_speed()
|
|
{
|
|
var_00 = level.player.origin;
|
|
while(!level.player isonground())
|
|
{
|
|
level.player.velocity_scripted = level.player.origin - var_00 / 0.05;
|
|
var_00 = level.player.origin;
|
|
wait 0.05;
|
|
}
|
|
|
|
earthquake(0.3,1,level.player.origin,128);
|
|
}
|
|
|
|
//Function Number: 50
|
|
player_helo_release(param_00)
|
|
{
|
|
common_scripts\utility::flag_wait("flag_intro_flyin_done");
|
|
wait_for_player_release();
|
|
thread maps\_water::watchaienterwater(level.gideon);
|
|
thread player_speed_control_underwater();
|
|
var_01 = level.player.player_rig_heli;
|
|
var_02 = 2;
|
|
level.player lerpviewangleclamp(var_02,1,0.3,0,0,0,0);
|
|
thread estimate_player_speed();
|
|
soundscripts\_snd::snd_message("fin_flyin_drop");
|
|
var_01 maps\_anim::anim_single_solo(var_01,"intro_flyin_release_vm");
|
|
level.player unlink();
|
|
level.player setvelocity((0,0,level.player.velocity_scripted[2]));
|
|
common_scripts\utility::flag_set("flag_intro_flyin_release");
|
|
common_scripts\utility::flag_set("underwater_flashlight");
|
|
common_scripts\utility::flag_clear("flyin_mb");
|
|
maps\_utility::delaythread(5,::maps\_utility::autosave_by_name,"canal");
|
|
}
|
|
|
|
//Function Number: 51
|
|
wait_for_player_release()
|
|
{
|
|
thread maps\_utility::hintdisplayhandler("release_hint");
|
|
var_00 = 0;
|
|
while(var_00 < 1)
|
|
{
|
|
var_00 = 0;
|
|
while(level.player usebuttonpressed() && var_00 < 1)
|
|
{
|
|
var_00 = var_00 + 0.1;
|
|
wait 0.05;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_release_hint_off");
|
|
level.player notify("player_released_from_drone");
|
|
}
|
|
|
|
//Function Number: 52
|
|
release_hint_off()
|
|
{
|
|
return common_scripts\utility::flag("flag_release_hint_off");
|
|
}
|
|
|
|
//Function Number: 53
|
|
signed_distance_to_plane(param_00,param_01,param_02)
|
|
{
|
|
return vectordot(param_02 - param_00,param_01);
|
|
}
|
|
|
|
//Function Number: 54
|
|
player_speed_control_rocket_blast()
|
|
{
|
|
level.origacceleration = getdvarfloat("mechAcceleration");
|
|
setsaveddvar("mechAcceleration",5);
|
|
level.gideon.goalradius = 64;
|
|
player_speed_control(0.12,0.6,0,124,64,0.8,1.2,1.5,::is_player_in_rocket_blast,"start_node_exhaust","gideon_rocket_idle_node",1);
|
|
setsaveddvar("mechAcceleration",level.origacceleration);
|
|
}
|
|
|
|
//Function Number: 55
|
|
player_speed_control_underwater()
|
|
{
|
|
for(;;)
|
|
{
|
|
for(;;)
|
|
{
|
|
if(isdefined(level.player.underwater) && level.player.underwater)
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
level.player maps\_playermech_code::disable_mech_rocket();
|
|
level.player maps\_playermech_code::disable_mech_chaingun();
|
|
level.player maps\_playermech_code::disable_mech_swarm();
|
|
level.player hidehud();
|
|
player_speed_control(0.25,maps\_swim_player::get_underwater_walk_speed_scale_default() * 1.5,0,300,128,maps\_water::get_underwater_walk_speed_scale_ai(),maps\_water::get_underwater_walk_speed_scale_ai() * 1.4,1.5,::is_player_underwater,"start_node_underwater","end_node_underwater",0);
|
|
level.player maps\_playermech_code::enable_mech_chaingun();
|
|
level.player maps\_playermech_code::enable_mech_rocket();
|
|
level.player maps\_playermech_code::enable_mech_swarm();
|
|
level.player showhud();
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 56
|
|
is_player_underwater()
|
|
{
|
|
return isdefined(level.player.underwater) && level.player.underwater;
|
|
}
|
|
|
|
//Function Number: 57
|
|
custom_distance_along_path_think(param_00)
|
|
{
|
|
var_01 = 0;
|
|
while([[ param_00 ]]())
|
|
{
|
|
var_02 = get_custom_distance_on_path(var_01);
|
|
var_01 = var_02[0];
|
|
var_03 = var_02[1];
|
|
self.distance_on_path = var_03;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 58
|
|
get_custom_distance_on_path(param_00)
|
|
{
|
|
var_01 = (0,0,16);
|
|
var_02 = 130;
|
|
var_03 = undefined;
|
|
var_04 = undefined;
|
|
if(!isdefined(level.speed_control_pathnodes) || level.speed_control_pathnodes.size == 0)
|
|
{
|
|
return [0,0];
|
|
}
|
|
|
|
if(isai(self))
|
|
{
|
|
var_03 = self getnearestnode();
|
|
}
|
|
else
|
|
{
|
|
var_05 = getnodesinradiussorted(self.origin,1000,0);
|
|
var_03 = var_05[0];
|
|
}
|
|
|
|
if(!isdefined(var_03))
|
|
{
|
|
return [0,0];
|
|
}
|
|
|
|
var_04 = getnodesinradius(var_03.origin,var_02,0);
|
|
if(isdefined(var_03.target))
|
|
{
|
|
var_06 = getnode(var_03.target,"targetname");
|
|
}
|
|
|
|
if(isdefined(var_03.targetname))
|
|
{
|
|
var_07 = getnode(var_03.targetname,"target");
|
|
}
|
|
|
|
var_08 = undefined;
|
|
var_09 = undefined;
|
|
var_0A = 0;
|
|
var_0B = 0;
|
|
var_0C = undefined;
|
|
for(var_0D = param_00;var_0D < level.speed_control_pathnodes.size;var_0D++)
|
|
{
|
|
var_0E = level.speed_control_pathnodes[var_0D];
|
|
foreach(var_10 in var_04)
|
|
{
|
|
if(var_10 == var_0E)
|
|
{
|
|
var_11 = -1;
|
|
var_12 = -1;
|
|
if(var_0D >= 1)
|
|
{
|
|
var_13 = maps\finale_utility::get_closest_point_on_segment(self.origin,level.speed_control_pathnodes[var_0D - 1].origin,var_0E.origin);
|
|
var_11 = var_13[0];
|
|
var_14 = var_13[1];
|
|
var_08 = var_13[2];
|
|
var_09 = var_13[3];
|
|
if(var_11 > 0 && var_11 < 1)
|
|
{
|
|
var_0B = 1;
|
|
param_00 = var_0D - 1;
|
|
var_0A = var_11;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(var_0D < level.speed_control_pathnodes.size - 2)
|
|
{
|
|
var_15 = maps\finale_utility::get_closest_point_on_segment(self.origin,var_0E.origin,level.speed_control_pathnodes[var_0D + 1].origin);
|
|
var_12 = var_15[0];
|
|
var_14 = var_15[1];
|
|
var_08 = var_15[2];
|
|
var_09 = var_15[3];
|
|
if(var_12 > 0 && var_12 < 1)
|
|
{
|
|
var_0B = 1;
|
|
param_00 = var_0D;
|
|
var_0A = var_12;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(var_11 == 1 && var_12 == 0)
|
|
{
|
|
var_0B = 1;
|
|
var_08 = self.origin;
|
|
var_09 = level.speed_control_pathnodes[var_0D].origin;
|
|
param_00 = var_0D;
|
|
var_0A = 0;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(var_0B)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_17 = 0;
|
|
var_18 = level.speed_control_pathnodes_dist[param_00];
|
|
if(!var_0B && param_00 == 0 && var_17 == 0)
|
|
{
|
|
var_19 = level.speed_control_pathnodes[1].origin - level.speed_control_pathnodes[0].origin;
|
|
var_19 = (var_19[0],var_19[1],0);
|
|
var_19 = vectornormalize(var_19);
|
|
var_1A = self.origin - level.speed_control_pathnodes[0].origin;
|
|
var_1A = (var_1A[0],var_1A[1],0);
|
|
var_1B = vectordot(var_1A,var_19);
|
|
var_18 = var_1B;
|
|
var_0B = 1;
|
|
}
|
|
|
|
if(var_0B)
|
|
{
|
|
var_17 = level.speed_control_pathnodes_dist[param_00 + 1] - level.speed_control_pathnodes_dist[param_00] * var_0A;
|
|
}
|
|
|
|
return [param_00,var_18 + var_17];
|
|
}
|
|
|
|
//Function Number: 59
|
|
calculatedistances(param_00)
|
|
{
|
|
var_01 = [];
|
|
var_01[0] = 0;
|
|
if(!isdefined(param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
for(var_02 = 1;var_02 < param_00.size;var_02++)
|
|
{
|
|
var_01[var_02] = var_01[var_02 - 1] + distance2d(param_00[var_02 - 1].origin,param_00[var_02].origin);
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 60
|
|
player_speed_control(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
|
|
{
|
|
var_0C = 1;
|
|
var_0D = 0;
|
|
var_0E = 0;
|
|
var_0F = undefined;
|
|
if(!isdefined(param_0B))
|
|
{
|
|
param_0B = 1;
|
|
}
|
|
|
|
maps\_utility_code::movespeed_ramp_over_time(level.gideon,level.gideon.moveplaybackrate,param_05,0.05);
|
|
if(isdefined(param_09))
|
|
{
|
|
var_10 = getnode(param_09,"targetname");
|
|
var_11 = getnode(param_0A,"targetname");
|
|
level.speed_control_pathnodes = getnodesonpath(var_10.origin,var_11.origin,1,var_10,var_11);
|
|
level.speed_control_pathnodes_dist = calculatedistances(level.speed_control_pathnodes);
|
|
}
|
|
|
|
level.gideon thread custom_distance_along_path_think(param_08);
|
|
level.player thread custom_distance_along_path_think(param_08);
|
|
while([[ param_08 ]]())
|
|
{
|
|
var_12 = level.gideon.distance_on_path - level.player.distance_on_path;
|
|
waittillframeend;
|
|
if(gettime() > var_0E)
|
|
{
|
|
var_0C = maps\_shg_utility::linear_map_clamp(var_12,param_02,param_03,param_00,param_01);
|
|
level.player setmovespeedscale(var_0C);
|
|
if(var_12 < param_04)
|
|
{
|
|
var_0D = gettime() + 3000;
|
|
var_0E = gettime() + param_07 * 1000;
|
|
thread maps\_utility_code::movespeed_ramp_over_time(level.gideon,level.gideon.moveplaybackrate,param_06,param_07);
|
|
}
|
|
|
|
if(gettime() > var_0D && var_0D != 0)
|
|
{
|
|
var_0E = gettime() + param_07 * 1000;
|
|
thread maps\_utility_code::movespeed_ramp_over_time(level.gideon,level.gideon.moveplaybackrate,param_05,param_07);
|
|
var_0D = 0;
|
|
}
|
|
}
|
|
|
|
if(param_0B && var_12 < 20)
|
|
{
|
|
level.player setmovespeedscale(0);
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
thread maps\_utility_code::movespeed_ramp_over_time(level.gideon,level.gideon.moveplaybackrate,1,1);
|
|
thread maps\_utility_code::movespeed_ramp_over_time(level.player,var_0C,1,1);
|
|
}
|
|
|
|
//Function Number: 61
|
|
anim_loop_hatch_anims_solo(param_00,param_01,param_02,param_03)
|
|
{
|
|
param_00 endon("ender_gideon");
|
|
var_04 = 0;
|
|
while(!common_scripts\utility::flag("flag_exhaust_hatch_open"))
|
|
{
|
|
param_00 maps\_anim::anim_single_solo(level.gideon,param_02);
|
|
if(isdefined(level.player.debug_skip_button_press))
|
|
{
|
|
return;
|
|
}
|
|
|
|
param_00 maps\_anim::anim_single_solo(level.gideon,param_03);
|
|
if(isdefined(level.player.debug_skip_button_press))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 62
|
|
se_missile_load()
|
|
{
|
|
var_00 = getent("org_missile_load","targetname");
|
|
var_01 = getent("missile_bottom","targetname");
|
|
var_01.animname = "missile_main";
|
|
var_01 maps\_utility::assign_animtree();
|
|
for(var_02 = var_01;isdefined(var_02.target);var_02 = var_03)
|
|
{
|
|
var_03 = getent(var_02.target,"targetname");
|
|
var_03 linkto(var_01,"missile");
|
|
}
|
|
|
|
var_04 = maps\_utility::spawn_anim_model("missile_01");
|
|
var_05 = maps\_utility::spawn_anim_model("missile_02");
|
|
var_06 = maps\_utility::spawn_anim_model("missile_03");
|
|
var_07 = maps\_utility::spawn_anim_model("missile_04");
|
|
var_08 = maps\_utility::spawn_anim_model("missile_05");
|
|
var_09 = maps\_utility::spawn_anim_model("missile_06");
|
|
var_0A = [var_01,var_04,var_05,var_06,var_07,var_08,var_09];
|
|
var_00 thread maps\_anim::anim_first_frame(var_0A,"missile_load");
|
|
thread maps\finale_lighting::missle_lighting(var_0A);
|
|
thread silo_catwalks();
|
|
common_scripts\utility::flag_wait("flag_missile_move_start");
|
|
thread silo_autosaves();
|
|
thread countdown_missile_launch();
|
|
thread close_silo_doors();
|
|
var_0B = getnodearray("node_silo","targetname");
|
|
foreach(var_0D in var_0B)
|
|
{
|
|
var_0D disconnectnode();
|
|
}
|
|
|
|
thread speed_up_missile_load(var_0A);
|
|
var_00 maps\_anim::anim_single(var_0A,"missile_load");
|
|
common_scripts\utility::flag_set("flag_missile_seated");
|
|
}
|
|
|
|
//Function Number: 63
|
|
countdown_missile_launch()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_dialogue_launch_coundown_complete");
|
|
if(!common_scripts\utility::flag("flag_gideon_down_exhaust"))
|
|
{
|
|
common_scripts\utility::flag_set("flag_countdown_complete_mission_fail");
|
|
maps\finale_vo::dialogue_primary_ignitionin();
|
|
thread handle_failstate_primary_ignition_rumbles(1);
|
|
thread maps\finale_utility::chase_timer_countdown(2,&"FINALE_FAILED_MISSILE_LAUNCH");
|
|
return;
|
|
}
|
|
|
|
wait(25);
|
|
if(!common_scripts\utility::flag("flag_exhaust_hatch_open"))
|
|
{
|
|
common_scripts\utility::flag_set("flag_countdown_complete_mission_fail");
|
|
maps\finale_vo::dialogue_primary_ignitionin();
|
|
thread handle_failstate_primary_ignition_rumbles(1);
|
|
thread maps\finale_utility::chase_timer_countdown(2,&"FINALE_FAILED_MISSILE_LAUNCH");
|
|
}
|
|
}
|
|
|
|
//Function Number: 64
|
|
handle_failstate_primary_ignition_rumbles(param_00)
|
|
{
|
|
var_01 = 0;
|
|
for(;;)
|
|
{
|
|
var_02 = 0.2 + var_01 / 50;
|
|
var_03 = 0.01 + var_01 / 80;
|
|
maps\finale_utility::set_level_player_rumble_ent_intensity(var_02);
|
|
if(isdefined(param_00) && param_00)
|
|
{
|
|
earthquake(var_03,0.1,level.player.origin,1000);
|
|
}
|
|
|
|
var_01++;
|
|
if(var_01 > 40)
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 65
|
|
speed_up_missile_load(param_00)
|
|
{
|
|
wait 0.05;
|
|
thread maps\_anim::anim_set_rate(param_00,"missile_load",1.75);
|
|
}
|
|
|
|
//Function Number: 66
|
|
close_silo_doors()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_silo_watwalks_open");
|
|
var_00 = getent("door_silo_right","targetname");
|
|
var_01 = getent("door_silo_left","targetname");
|
|
var_00 rotateby((0,-90,0),2,1,0.5);
|
|
var_01 rotateby((0,90,0),2,1,0.5);
|
|
}
|
|
|
|
//Function Number: 67
|
|
silo_catwalks()
|
|
{
|
|
var_00 = getent("silo_catwalk","targetname");
|
|
var_00 common_scripts\utility::hide_notsolid();
|
|
var_01 = getnodearray("node_silo_01","targetname");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 disconnectnode();
|
|
}
|
|
|
|
var_05 = getnodearray("node_silo_02","targetname");
|
|
foreach(var_03 in var_05)
|
|
{
|
|
var_03 disconnectnode();
|
|
}
|
|
|
|
var_08 = getnodearray("node_silo_03","targetname");
|
|
foreach(var_03 in var_08)
|
|
{
|
|
var_03 disconnectnode();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_missile_move_start");
|
|
thread maps\finale_lighting::s_flicker_catwalk_alarm();
|
|
var_0B = getent("org_silo_catwalk_narrow","targetname");
|
|
var_0C = getent("org_silo_catwalk_wide","targetname");
|
|
var_0D = maps\_utility::spawn_anim_model("catwalk_narrow_01");
|
|
var_0E = maps\_utility::spawn_anim_model("catwalk_narrow_02");
|
|
var_0F = maps\_utility::spawn_anim_model("catwalk_wide_01");
|
|
var_10 = maps\_utility::spawn_anim_model("catwalk_wide_02");
|
|
var_11 = [var_0D,var_0E];
|
|
var_12 = [var_0F,var_10];
|
|
var_0B thread maps\_anim::anim_first_frame(var_11,"catwalk");
|
|
var_0C thread maps\_anim::anim_first_frame(var_12,"catwalk");
|
|
common_scripts\utility::flag_wait("flag_silo_watwalks_open");
|
|
common_scripts\utility::flag_wait("flag_lower_missile_loader");
|
|
common_scripts\utility::flag_set("flag_dialogue_ast_ahead");
|
|
level notify("lighting_kill_catwalk_s_flicker_red");
|
|
common_scripts\utility::flag_set("flag_silo_combat_02");
|
|
var_13 = getent("org_missile_corridor_lower","targetname");
|
|
var_14 = getent("org_missile_corridor_origin","targetname");
|
|
var_15 = getent("missle_corridor","targetname");
|
|
var_16 = getent("missle_corridor_glass","targetname");
|
|
var_16 linkto(var_15);
|
|
var_15 overridelightingorigin(var_14.origin);
|
|
var_15 thread maps\finale_fx::vfx_silo_corridor_lowering();
|
|
var_15 moveto(var_13.origin,6,2,1);
|
|
wait(3);
|
|
var_0B thread maps\_anim::anim_single(var_11,"catwalk");
|
|
var_0C thread maps\_anim::anim_single(var_12,"catwalk");
|
|
thread maps\finale_fx::vfx_catwalk_lowering();
|
|
wait(3);
|
|
level notify("lighting_kill_catwalk_s_flicker_white");
|
|
silo_catwalk_clip(var_00);
|
|
maps\_utility::activate_trigger_with_targetname("trig_color_missile_in_position");
|
|
}
|
|
|
|
//Function Number: 68
|
|
se_door_kick()
|
|
{
|
|
common_scripts\utility::flag_wait_all("flag_silo_combat_stop","flag_silo_combat_complete");
|
|
soundscripts\_snd::snd_music_message("ast_combat_end");
|
|
level.gideon maps\_utility::disable_ai_color();
|
|
var_00 = getent("org_silo_door_kick","targetname");
|
|
var_00 maps\_anim::anim_reach_solo(level.gideon,"kick_door_enter_mech");
|
|
var_00 maps\_anim::anim_single_solo(level.gideon,"kick_door_enter_mech");
|
|
if(!common_scripts\utility::flag("flag_player_close_to_kick_doors"))
|
|
{
|
|
var_00 thread maps\_anim::anim_loop_solo(level.gideon,"kick_door_idle_mech");
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_player_close_to_kick_doors");
|
|
level.player notify("kill_player_follow_volume_think");
|
|
level.gideon maps\_utility::anim_stopanimscripted();
|
|
var_00 maps\_utility::anim_stopanimscripted();
|
|
var_01 = getent("sliding_door_l","targetname");
|
|
var_02 = getent("sliding_door_r","targetname");
|
|
var_03 = var_01 common_scripts\utility::get_target_ent();
|
|
var_04 = var_02 common_scripts\utility::get_target_ent();
|
|
var_03 linkto(var_01);
|
|
var_04 linkto(var_02);
|
|
var_05 = [var_03,var_04];
|
|
var_06 = maps\_utility::spawn_anim_model("kick_door_r");
|
|
var_07 = maps\_utility::spawn_anim_model("kick_door_l");
|
|
var_08 = [level.gideon,var_07,var_06];
|
|
var_00 maps\_anim::anim_first_frame(var_08,"kick_door");
|
|
var_01.origin = var_07 gettagorigin("tag_origin_animated");
|
|
var_02.origin = var_06 gettagorigin("tag_origin_animated");
|
|
var_01 linkto(var_07,"tag_origin_animated");
|
|
var_02 linkto(var_06,"tag_origin_animated");
|
|
foreach(var_0A in var_05)
|
|
{
|
|
var_0A connectpaths();
|
|
}
|
|
|
|
level.gideon maps\_utility::walkdist_force_walk();
|
|
soundscripts\_snd::snd_message("silo_door_kick",level.gideon);
|
|
var_00 maps\_anim::anim_single(var_08,"kick_door");
|
|
level.gideon maps\_utility::anim_stopanimscripted();
|
|
var_00 maps\_utility::anim_stopanimscripted();
|
|
maps\_utility::activate_trigger_with_targetname("trig_color_exit_main_silo");
|
|
level.gideon maps\_utility::enable_ai_color();
|
|
level.gideon maps\_utility::delaythread(5,::maps\_utility::walkdist_reset);
|
|
common_scripts\utility::flag_set("flag_se_door_kick_complete");
|
|
var_03 delete();
|
|
}
|
|
|
|
//Function Number: 69
|
|
se_exhaust_hatch()
|
|
{
|
|
var_00 = getent("org_exhaust_hatch","targetname");
|
|
common_scripts\utility::flag_wait("flag_se_exhaust_hatch_init");
|
|
level.gideon maps\_mech::mech_stop_rockets();
|
|
var_01 = maps\_utility::spawn_anim_model("hatch");
|
|
var_02 = maps\_utility::spawn_anim_model("piston_r");
|
|
var_03 = maps\_utility::spawn_anim_model("piston_l");
|
|
var_01.animname = "hatch";
|
|
var_02.animname = "piston_r";
|
|
var_03.animname = "piston_l";
|
|
var_04 = [var_01,var_03];
|
|
thread se_exhaust_hatch_player(var_00,var_02);
|
|
var_00 thread maps\_anim::anim_first_frame(var_04,"exhaust_hatch_enter");
|
|
common_scripts\utility::flag_wait("flag_gideon_down_exhaust");
|
|
var_04 = [level.gideon,var_01,var_03];
|
|
var_00 maps\_anim::anim_reach_solo(level.gideon,"exhaust_hatch_enter");
|
|
var_00 maps\_anim::anim_single(var_04,"exhaust_hatch_enter");
|
|
soundscripts\_snd::snd_music_message("hatch_scene_being");
|
|
common_scripts\utility::flag_set("flag_obj_exhaust_hatch_open");
|
|
var_00 thread anim_loop_hatch_anims_solo(var_00,level.gideon,"exhaust_hatch_idle_noloop","exhaust_hatch_idle_wave_noloop");
|
|
common_scripts\utility::flag_wait("flag_exhaust_hatch_open");
|
|
maps\_utility::delaythread(7,::save_exhaust_hatch);
|
|
if(!isdefined(level.player.debug_skip_button_press))
|
|
{
|
|
var_00 notify("ender_gideon");
|
|
level.gideon maps\_utility::anim_stopanimscripted();
|
|
var_00 maps\_anim::anim_single(var_04,"exhaust_hatch_open");
|
|
}
|
|
|
|
thread maps\finale_lighting::hatch_lighting();
|
|
common_scripts\utility::flag_set("flag_exhaust_hatch_complete");
|
|
var_05 = getent("clip_exhaust_hatch","targetname");
|
|
var_05 delete();
|
|
if(!isdefined(level.player.debug_skip_button_press))
|
|
{
|
|
var_00 thread maps\_anim::anim_loop_solo(level.gideon,"exhaust_hatch_end_idle","ender_gideon");
|
|
common_scripts\utility::flag_wait("flag_player_exhaust_corridor");
|
|
var_00 notify("ender_gideon");
|
|
}
|
|
}
|
|
|
|
//Function Number: 70
|
|
save_exhaust_hatch()
|
|
{
|
|
if(!common_scripts\utility::flag("flag_countdown_complete_mission_fail"))
|
|
{
|
|
maps\_utility::autosave_by_name("exhaust_hatch");
|
|
}
|
|
}
|
|
|
|
//Function Number: 71
|
|
se_exhaust_hatch_player(param_00,param_01)
|
|
{
|
|
var_02 = 0.25;
|
|
var_03 = maps\_utility::spawn_anim_model("world_body_mech");
|
|
var_03 hide();
|
|
level.player.player_rig = var_03;
|
|
var_04 = [var_03,param_01];
|
|
maps\_playermech_code::hide_mech_glass_static_overlay(var_03);
|
|
param_00 thread maps\_anim::anim_first_frame(var_04,"exhaust_hatch_vm_approach");
|
|
common_scripts\utility::flag_wait("flag_exhaust_hatch_grab");
|
|
setsaveddvar("g_friendlyNameDist",0);
|
|
level.player maps\_playermech_code::mech_setup_player_for_scene(undefined,1);
|
|
level.player allowads(0);
|
|
var_05 = getanimlength(maps\finale_anim_vm::getanim_vm("s1_playermech_putaway"));
|
|
var_05 = var_05 / 2;
|
|
level.player playerlinktoblend(var_03,"tag_player",0.5);
|
|
thread playerlinktodeltadelayed(2,var_03);
|
|
thread maps\finale_anim_vm::anim_single_solo_vm(level.player,"s1_playermech_putaway");
|
|
wait(0.55);
|
|
var_03 show();
|
|
level.player maps\_playermech_code::mech_setup_player_for_scene();
|
|
thread maps\finale_shaft::do_shaft_gameplay_setup(param_00);
|
|
if(!isdefined(level.player.debug_skip_button_press))
|
|
{
|
|
param_00 maps\_anim::anim_single(var_04,"exhaust_hatch_vm_approach");
|
|
maps\finale_shaft::hatch_button_gameplay(param_00,var_04,var_03,param_01);
|
|
}
|
|
else
|
|
{
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_exhaust_hatch_open");
|
|
if(!isdefined(level.player.debug_skip_button_press))
|
|
{
|
|
param_00 notify("ender_player");
|
|
thread maps\finale_shaft::store_speed(var_03);
|
|
param_00 maps\_anim::anim_single(var_04,"exhaust_hatch_open");
|
|
}
|
|
|
|
soundscripts\_snd::snd_message("start_silo_exhaust_entrance");
|
|
soundscripts\_snd::snd_music_message("hatch_jump_begin");
|
|
level.player maps\finale_shaft::do_shaft_gameplay();
|
|
common_scripts\utility::flag_wait("flag_player_exhaust_corridor");
|
|
maps\_utility::delaythread(7,::maps\_utility::autosave_by_name,"exhaust_corridor");
|
|
}
|
|
|
|
//Function Number: 72
|
|
playerlinktodeltadelayed(param_00,param_01)
|
|
{
|
|
wait(param_00);
|
|
level.player playerlinktodelta(param_01,"tag_player",0.75,5,5,5,5,1);
|
|
}
|
|
|
|
//Function Number: 73
|
|
anim_single_solo_with_special_walk(param_00,param_01)
|
|
{
|
|
var_02 = getent("vents","targetname");
|
|
var_02.animname = "vents";
|
|
var_02 maps\_utility::assign_animtree();
|
|
var_03 = [var_02,param_00];
|
|
maps\_anim::anim_first_frame(var_03,param_01);
|
|
var_04 = getanimlength(param_00 maps\_utility::getanim(param_01));
|
|
var_05 = 2.7;
|
|
thread maps\_anim::anim_single(var_03,param_01);
|
|
wait(var_04 - var_05);
|
|
level.player lerpviewangleclamp(1,0.1,0.1,0,0,0,0);
|
|
wait(var_05);
|
|
thread maps\finale_shaft::think_player_blast_walk_anims("nohands");
|
|
wait 0.05;
|
|
param_00 hide();
|
|
level.player unlink();
|
|
level.player maps\_playermech_code::mech_setup_player_for_forced_walk_scene();
|
|
}
|
|
|
|
//Function Number: 74
|
|
se_exhaust_land()
|
|
{
|
|
common_scripts\utility::trigger_off("trig_exhaust_corridor","targetname");
|
|
common_scripts\utility::flag_wait("flag_player_exhaust_corridor");
|
|
if(isdefined(level.player.player_failed_drop) && level.player.player_failed_drop)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = getent("org_exhaust_hatch","targetname");
|
|
soundscripts\_snd::snd_message("exhaust_shaft_land");
|
|
var_00 thread anim_single_solo_with_special_walk(level.player.player_rig,"exhaust_land_vm");
|
|
common_scripts\utility::flag_set("flag_lighting_fall_blur");
|
|
soundscripts\_snd::snd_music_message("hatch_jump_end");
|
|
level.player waittill("notetrack_gideon_start");
|
|
soundscripts\_snd::snd_message("exhaust_shaft_land_gideon",level.gideon);
|
|
var_00 thread maps\_anim::anim_single_run_solo(level.gideon,"exhaust_land");
|
|
level.gideon set_blast_walk_anims();
|
|
maps\_utility::activate_trigger_with_targetname("trig_color_exhaust_corridor_01");
|
|
}
|
|
|
|
//Function Number: 75
|
|
gideon_play_scripted_anim_when_reaching_goal(param_00)
|
|
{
|
|
level.gideon endon("gideon_ender");
|
|
var_01 = getnode("gideon_missile_stopped","targetname");
|
|
for(;;)
|
|
{
|
|
if(distance2d(var_01.origin,level.gideon.origin) < 30)
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
level.gideon maps\_utility::disable_ai_color();
|
|
level.gideon maps\finale_utility::goto_node(var_01,1,64);
|
|
param_00 maps\_anim::anim_reach_solo(level.gideon,"missile_stopped");
|
|
for(;;)
|
|
{
|
|
if(abs(level.player.origin[0] - level.gideon.origin[0]) < 200)
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
maps\_utility::delaythread(8,::common_scripts\utility::flag_set,"flag_player_shoot_missile");
|
|
param_00 maps\_anim::anim_single_solo(level.gideon,"missile_stopped");
|
|
param_00 maps\_anim::anim_loop_solo(level.gideon,"missile_stopped_idle","gideon_ender");
|
|
}
|
|
|
|
//Function Number: 76
|
|
player_exhaust_corridor()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_player_exhaust_corridor");
|
|
level.player thread player_exhaust_corridor_rumbles();
|
|
level.player waittill("notetrack_player_control");
|
|
level.player setmovespeedscale(0.5);
|
|
level.player waittill("notetrack_player_blast_react");
|
|
maps\finale_shaft::anim_single_solo_with_lerp(level.player.player_rig,"exhaust_blast_react");
|
|
common_scripts\utility::trigger_on("trig_exhaust_corridor","targetname");
|
|
thread player_speed_control_rocket_blast();
|
|
thread missile_damage_think();
|
|
var_00 = getent("org_missile_damaged","targetname");
|
|
thread gideon_play_scripted_anim_when_reaching_goal(var_00);
|
|
level.player waittill("notetrack_rocket_launch_start");
|
|
soundscripts\_snd::snd_message("aud_rocket_launch_start");
|
|
common_scripts\utility::flag_set("flag_vfx_missile_liftoff_start");
|
|
common_scripts\utility::flag_set("flag_missile_launch_stop");
|
|
common_scripts\utility::flag_wait("flag_player_shoot_missile");
|
|
if(!common_scripts\utility::flag("flag_exhaust_corridor_timer_fail"))
|
|
{
|
|
level.player maps\finale_utility::mech_enable_switch_exhaust_version();
|
|
level.player maps\_playermech_code::mech_setup_player_for_gameplay();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait("flag_missile_damaged");
|
|
common_scripts\utility::flag_set("flag_obj_stop_missile_launch_complete");
|
|
common_scripts\utility::flag_set("lighting_flag_obj_stop_missile_complete");
|
|
common_scripts\utility::flag_set("flag_obj_escape");
|
|
level.player.player_rig show();
|
|
level.player playerlinktoabsolute(level.player.player_rig,"TAG_PLAYER");
|
|
level.player maps\_playermech_code::mech_setup_player_for_scene();
|
|
var_01 = maps\_utility::spawn_anim_model("minigun");
|
|
var_02 = [var_01,level.player.player_rig,level.gideon];
|
|
var_00 maps\_anim::anim_first_frame(var_02,"missile_stopped_vm");
|
|
soundscripts\_snd::snd_message("fin_silo_success");
|
|
var_00 maps\_anim::anim_single(var_02,"missile_stopped_vm");
|
|
var_01 delete();
|
|
thread missile_stopped();
|
|
wait(2);
|
|
common_scripts\utility::flag_set("flag_se_mech_exit_start");
|
|
level.gideon clear_blast_walk_anims();
|
|
}
|
|
|
|
//Function Number: 77
|
|
player_exhaust_corridor_rumbles()
|
|
{
|
|
level.player waittill("notetrack_vfx_blast");
|
|
wait(1.5);
|
|
maps\finale_utility::set_level_player_rumble_ent_intensity(0.2);
|
|
common_scripts\utility::flag_wait("flag_player_shoot_missile");
|
|
maps\finale_utility::set_level_player_rumble_ent_intensity(0.12);
|
|
common_scripts\utility::flag_wait_either("flag_missile_failed","flag_missile_damaged");
|
|
if(common_scripts\utility::flag("flag_missile_damaged"))
|
|
{
|
|
maps\finale_utility::set_level_player_rumble_ent_intensity(0);
|
|
return;
|
|
}
|
|
|
|
thread handle_failstate_primary_ignition_rumbles();
|
|
}
|
|
|
|
//Function Number: 78
|
|
exhaust_corridor_timer()
|
|
{
|
|
wait(55);
|
|
if(!common_scripts\utility::flag("flag_player_shoot_missile"))
|
|
{
|
|
common_scripts\utility::flag_set("flag_exhaust_corridor_timer_fail");
|
|
thread maps\finale_utility::chase_timer_countdown(2,&"FINALE_FAILED_MISSILE_LAUNCH");
|
|
}
|
|
}
|
|
|
|
//Function Number: 79
|
|
missile_stopped()
|
|
{
|
|
var_00 = getent("missile","targetname");
|
|
var_01 = getent("org_missile_stopped","targetname");
|
|
}
|
|
|
|
//Function Number: 80
|
|
fail_missile_damage_think(param_00)
|
|
{
|
|
var_01 = getent("org_missile_damaged","targetname");
|
|
var_02 = getent("org_far_fail","targetname");
|
|
common_scripts\utility::flag_wait("flag_player_shoot_missile");
|
|
wait(2.2);
|
|
wait(18);
|
|
if(common_scripts\utility::flag("flag_missile_damaged"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_missile_failed");
|
|
common_scripts\utility::flag_set("lighting_missile_fail");
|
|
thread maps\finale_missile::restore_thrusters_all(param_00,param_00.damage_accumulation_clip);
|
|
level.player maps\_playermech_code::mech_setup_player_for_scene();
|
|
var_03 = level.player.player_rig;
|
|
if(!isdefined(var_03))
|
|
{
|
|
var_03 = maps\_utility::spawn_anim_model("world_body_mech");
|
|
}
|
|
|
|
var_03 show();
|
|
level.player playerlinktoabsolute(var_03,"TAG_PLAYER");
|
|
level.player.ignore_fade_notetrack = 1;
|
|
level.player takeallweapons();
|
|
level.gideon notify("gideon_ender");
|
|
var_04 = maps\_utility::spawn_anim_model("minigun");
|
|
var_05 = [var_03,param_00,var_04,level.gideon];
|
|
level.gideon thread freeze_anim_at_end("missile_launch");
|
|
if(level.player.origin[0] > var_02.origin[0])
|
|
{
|
|
var_03.origin = (level.player.origin[0],level.player.origin[1],var_02.origin[2]);
|
|
var_03.angles = var_02.angles;
|
|
var_04 hide();
|
|
var_03 maps\_anim::anim_first_frame_solo(var_03,"missile_launch_far_fail");
|
|
var_03 thread maps\finale_shaft::anim_single_solo_in_place(var_03,"missile_launch_far_fail");
|
|
var_05 = common_scripts\utility::array_remove(var_05,var_03);
|
|
}
|
|
|
|
var_01 maps\_anim::anim_first_frame(var_05,"missile_launch");
|
|
var_01 maps\_anim::anim_single(var_05,"missile_launch");
|
|
level.player showhud();
|
|
level.player setclientomnvar("ui_playermech_hud",0);
|
|
setsaveddvar("cg_drawCrosshair",0);
|
|
setdvar("ui_deadquote",&"FINALE_FAILED_MISSILE_LAUNCH");
|
|
maps\_utility::missionfailedwrapper();
|
|
}
|
|
|
|
//Function Number: 81
|
|
freeze_anim_at_end(param_00)
|
|
{
|
|
var_01 = maps\_utility::getanim(param_00);
|
|
var_02 = getanimlength(var_01);
|
|
var_03 = var_02 - 0.1 / var_02;
|
|
for(;;)
|
|
{
|
|
if(self getanimtime(var_01) >= var_03)
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
self setanimrate(var_01,0);
|
|
}
|
|
|
|
//Function Number: 82
|
|
missile_damage_think()
|
|
{
|
|
level endon("flag_missile_failed");
|
|
common_scripts\utility::flag_wait("flag_missile_launch_stop");
|
|
var_00 = getent("damage_accumulation_clip","targetname");
|
|
var_01 = getent("missile_main_02","targetname");
|
|
maps\finale_missile::setup_complete_missile_prefab(var_01,var_00);
|
|
var_01.damage_accumulation_clip = var_00;
|
|
thread fail_missile_damage_think(var_01);
|
|
var_00 waittill("damage",var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A,var_0B);
|
|
common_scripts\utility::flag_set("flag_missile_hit");
|
|
playfx(common_scripts\utility::getfx("fin_rocket_silo_explosion"),var_00.origin);
|
|
soundscripts\_snd::snd_message("aud_fin_rocket_damage_vfx");
|
|
var_00 waittill("death",var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A,var_0B);
|
|
common_scripts\utility::flag_set("flag_missile_damaged");
|
|
level.gideon notify("gideon_ender");
|
|
}
|
|
|
|
//Function Number: 83
|
|
is_player_in_rocket_blast()
|
|
{
|
|
return !common_scripts\utility::flag("flag_obj_stop_missile_launch_complete");
|
|
}
|
|
|
|
//Function Number: 84
|
|
se_mech_exit()
|
|
{
|
|
thread maps\finale_lighting::play_finale_silo_end_cine();
|
|
var_00 = getent("org_mech_exit","targetname");
|
|
var_01 = undefined;
|
|
if(isdefined(level.player.player_rig))
|
|
{
|
|
var_01 = level.player.player_rig;
|
|
}
|
|
else
|
|
{
|
|
var_01 = maps\_utility::spawn_anim_model("world_body_mech");
|
|
}
|
|
|
|
var_02 = maps\_utility::spawn_anim_model("world_body");
|
|
var_01 hide();
|
|
var_02 hide();
|
|
var_01 thread maps\_playermech_code::scripted_screen_flicker_loop();
|
|
var_03 = [var_01,var_02];
|
|
var_00 thread maps\_anim::anim_first_frame(var_03,"mech_exit");
|
|
level.gideon maps\_utility::disable_ai_color();
|
|
level.gideon maps\finale_utility::clearstencilstate();
|
|
level.gideon delete();
|
|
maps\finale::spawn_gideon();
|
|
level.gideon maps\_utility::gun_remove();
|
|
var_03 = [var_01,var_02,level.gideon];
|
|
common_scripts\utility::flag_wait("flag_se_mech_exit_start");
|
|
if(level.player hasweapon("playermech_auto_cannon_finale") || level.player hasweapon("playermech_auto_cannon_finale_exhaust"))
|
|
{
|
|
level.player maps\_playermech_code::playermech_end();
|
|
level.player takeweapon("iw5_unarmedfinale_nullattach");
|
|
level.player setviewmodel("viewhands_sentinel_mitchell_prosthetic_smashed");
|
|
level.player giveweapon("iw5_titan45finalelobby_sp_xmags");
|
|
level.player setweaponammostock("iw5_titan45finalelobby_sp_xmags",0);
|
|
level.player switchtoweapon("iw5_titan45finalelobby_sp_xmags");
|
|
level.player setadditiveviewmodelanim(0);
|
|
}
|
|
else
|
|
{
|
|
level.player takeweapon("iw5_unarmedfinale_nullattach");
|
|
level.player giveweapon("iw5_titan45finalelobby_sp_xmags");
|
|
level.player setweaponammostock("iw5_titan45finalelobby_sp_xmags",0);
|
|
level.player switchtoweapon("iw5_titan45finalelobby_sp_xmags");
|
|
level.player disableweapons();
|
|
}
|
|
|
|
level.player maps\_shg_utility::setup_player_for_scene(1);
|
|
thread maps\finale_utility::screen_fade_in(2);
|
|
level.player maps\_playermech_code::mech_setup_player_for_scene();
|
|
var_01 show();
|
|
var_02 show();
|
|
level.player playerlinktodelta(var_02,"tag_player",0.75,5,5,5,5,1);
|
|
level.player enableslowaim(0.3,0.15);
|
|
soundscripts\_snd::snd_message("gid_release_plr_mech_suit");
|
|
var_00 maps\_anim::anim_single(var_03,"mech_exit");
|
|
thread maps\_utility::lerp_fov_overtime(0.5,var_02.fov_original);
|
|
soundscripts\_snd::snd_music_message("dazed_and_confused1");
|
|
wait(3);
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
level.gideon maps\_utility::gun_recall();
|
|
level.player maps\_playermech_code::mech_setup_player_for_gameplay();
|
|
level.player disableslowaim();
|
|
level.player unlink();
|
|
var_01 delete();
|
|
var_02 delete();
|
|
level.gideon maps\_utility::anim_stopanimscripted();
|
|
}
|
|
|
|
//Function Number: 85
|
|
se_will_reveal()
|
|
{
|
|
soundscripts\_snd::snd_message("start_will_room");
|
|
common_scripts\utility::flag_wait("flag_dialogue_carry_scene_02_complete");
|
|
common_scripts\utility::flag_set("second_half_lighting");
|
|
level.player lightsetforplayer("finale_will");
|
|
maps\_utility::vision_set_fog_changes("finale_cinematic_nofog",0);
|
|
maps\_utility::delaythread(10,::maps\finale_utility::screen_fade_in,4);
|
|
var_00 = getent("org_will_reveal","targetname");
|
|
level.player maps\_shg_utility::setup_player_for_scene(1);
|
|
var_01 = maps\_utility::spawn_anim_model("world_body");
|
|
var_01 hide();
|
|
var_02 = [var_01,level.gideon];
|
|
level.player playerlinktodelta(var_01,"tag_player",0.75,5,15,15,15,1);
|
|
level.player enableslowaim(0.3,0.15);
|
|
var_01 show();
|
|
level.player lerpfov(50,0);
|
|
var_00 thread maps\_anim::anim_first_frame(var_02,"will_reveal");
|
|
common_scripts\utility::flag_wait("flag_dialogue_se_will_reveal");
|
|
var_00 thread maps\_anim::anim_single_run_solo(level.gideon,"will_reveal");
|
|
level.gideon maps\_utility::enable_cqbwalk();
|
|
var_00 maps\_anim::anim_single_solo(var_01,"will_reveal");
|
|
level.player unlink();
|
|
var_01 delete();
|
|
level.player setorigin(level.player.origin + (0,4,0));
|
|
level.player disableslowaim();
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
setsaveddvar("player_sprintSpeedScale",1.4);
|
|
common_scripts\utility::flag_set("flag_will_reveal_complete");
|
|
}
|
|
|
|
//Function Number: 86
|
|
se_irons_reveal_head_sway()
|
|
{
|
|
for(;;)
|
|
{
|
|
screenshake(level.player.origin,2.1,2.25,1.9,2,0.2,0.2,0,0.2,0.34,0.3);
|
|
wait(1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 87
|
|
se_irons_reveal_head_jolt()
|
|
{
|
|
screenshake(level.player.origin,4,1,1,0.25,0.1,0.1,0,0.1,0.1,0.1);
|
|
}
|
|
|
|
//Function Number: 88
|
|
se_irons_reveal_handle_button_prompts_on_arm(param_00)
|
|
{
|
|
self hide();
|
|
param_00 maps\_anim::anim_first_frame_solo(self,"irons_reveal_button_press");
|
|
common_scripts\utility::delaycall(0.05,::show);
|
|
common_scripts\utility::flag_clear("flag_buttonmash_success");
|
|
var_01 = level.scr_anim["world_body_damaged"]["irons_reveal_button_press"];
|
|
self setflaggedanim("prompt_start",var_01);
|
|
var_02 = level.scr_anim["world_body_damaged"]["fin_irons_reveal_button_press_finger_loop_vm"];
|
|
self waittillmatch("start_button_press","prompt_start");
|
|
var_03 = common_scripts\utility::spawn_tag_origin();
|
|
var_03.origin = self gettagorigin("J_Wrist_RI");
|
|
var_03 linkto(self,"J_Wrist_RI",(-2.5,0,1),(0,0,0));
|
|
var_04 = var_03 maps\_shg_utility::hint_button_tag("x","tag_origin",64,128,1,1);
|
|
var_04.fontscale = 2;
|
|
var_04 thread maps\_shg_utility::hint_button_flash(0.15,0.1);
|
|
maps\_utility::hintdisplayhandler("break_free_buttonmash_hint");
|
|
level.player notifyonplayercommand("x_pressed","+usereload");
|
|
level.player notifyonplayercommand("x_pressed","+activate");
|
|
childthread se_irons_reveal_monitor_button_on_arm();
|
|
childthread se_irons_reveal_head_sway();
|
|
thread maps\finale_utility::chase_timer_countdown(15,&"FINALE_FAILED_IRONS_CHASE");
|
|
var_05 = self getanimtime(var_01);
|
|
self.button_presses = 0;
|
|
var_06 = 1;
|
|
self setanimrate(var_01,0);
|
|
var_07 = 0;
|
|
soundscripts\_snd::snd_message("fin_irons_reveal_mash_start");
|
|
while(var_05 < 1)
|
|
{
|
|
self.button_presses = 0;
|
|
wait(0.2);
|
|
if(self.button_presses >= 1)
|
|
{
|
|
var_07 = var_07 + 0.2;
|
|
if(var_07 >= 1)
|
|
{
|
|
soundscripts\_snd::snd_message("fin_irons_reveal_mash","peak");
|
|
var_07 = 1;
|
|
}
|
|
else
|
|
{
|
|
soundscripts\_snd::snd_message("fin_irons_reveal_mash","speedup");
|
|
}
|
|
|
|
self setanimrate(var_01,var_07);
|
|
var_06 = 0;
|
|
self setanim(var_02);
|
|
continue;
|
|
}
|
|
|
|
var_07 = var_07 - 0.33;
|
|
if(var_07 <= 0)
|
|
{
|
|
soundscripts\_snd::snd_message("fin_irons_reveal_mash","stopped");
|
|
var_07 = 0;
|
|
}
|
|
else
|
|
{
|
|
soundscripts\_snd::snd_message("fin_irons_reveal_mash","slowdown");
|
|
}
|
|
|
|
self setanimrate(var_01,var_07);
|
|
if(!var_06)
|
|
{
|
|
var_06 = 1;
|
|
}
|
|
|
|
var_05 = self getanimtime(var_01);
|
|
}
|
|
|
|
self setanimtime(var_01,1);
|
|
var_04 maps\_shg_utility::hint_button_clear();
|
|
var_03 delete();
|
|
common_scripts\utility::flag_set("flag_buttonmash_success");
|
|
soundscripts\_snd::snd_message("fin_irons_reveal_mash_finish");
|
|
level.player notifyonplayercommandremove("x_pressed","+usereload");
|
|
level.player notifyonplayercommandremove("x_pressed","+activate");
|
|
common_scripts\utility::flag_set("stair_lights_on");
|
|
level notify("chase_timer_countdown_stop");
|
|
}
|
|
|
|
//Function Number: 89
|
|
se_irons_reveal_monitor_button_on_arm()
|
|
{
|
|
level endon("flag_buttonmash_success");
|
|
while(!common_scripts\utility::flag("flag_buttonmash_success"))
|
|
{
|
|
level.player common_scripts\utility::waittill_any("x_pressed");
|
|
self.button_presses = self.button_presses + 1;
|
|
level.player playrumbleonentity("damage_light");
|
|
}
|
|
}
|
|
|
|
//Function Number: 90
|
|
se_irons_reveal()
|
|
{
|
|
soundscripts\_snd::snd_message("start_will_room");
|
|
common_scripts\utility::flag_wait("flag_dialogue_carry_scene_02_complete");
|
|
common_scripts\utility::flag_set("second_half_lighting");
|
|
level.player lightsetforplayer("finale_will");
|
|
maps\_utility::vision_set_fog_changes("finale_cinematic_nofog",0);
|
|
var_00 = maps\_utility::spawn_targetname("irons_will_reveal",1);
|
|
var_00.animname = "irons";
|
|
var_00 maps\_utility::gun_remove();
|
|
var_00.ignoreall = 1;
|
|
level.irons = var_00;
|
|
thread maps\finale_lighting::lighting_will_reveal();
|
|
thread maps\finale_lighting::will_room_speech_end();
|
|
if(level.nextgen)
|
|
{
|
|
thread maps\finale_lighting::setup_eye_highlights(var_00);
|
|
thread maps\finale_lighting::dof_irons_meet(var_00);
|
|
}
|
|
|
|
thread will_room_door_exit();
|
|
maps\_utility::delaythread(10,::maps\finale_utility::screen_fade_in,4);
|
|
var_01 = getent("org_irons_reveal","targetname");
|
|
level.player maps\_shg_utility::setup_player_for_scene(1);
|
|
var_02 = maps\_utility::spawn_anim_model("world_body_damaged");
|
|
var_02 hide();
|
|
var_03 = maps\_utility::spawn_anim_model("pistol");
|
|
var_03 hidepart("tag_rail_master_on");
|
|
var_03 hide();
|
|
var_04 = [var_02,level.gideon,var_03];
|
|
level.player playerlinktodelta(var_02,"tag_player",1,0,0,0,0,1);
|
|
level.player enableslowaim(0.3,0.15);
|
|
var_02 show();
|
|
var_03 show();
|
|
var_02 thread se_irons_reveal_handle_material_swap();
|
|
level.player lerpfov(50,0);
|
|
var_01 thread maps\_anim::anim_first_frame(var_04,"irons_reveal");
|
|
var_01 thread maps\_anim::anim_first_frame_solo(var_00,"irons_reveal");
|
|
var_05 = maps\_utility::spawn_anim_model("irons_phone");
|
|
var_05.origin = var_00 gettagorigin("TAG_WEAPON_CHEST");
|
|
var_05.angles = var_00 gettagangles("TAG_WEAPON_CHEST");
|
|
var_05 linkto(var_00,"TAG_WEAPON_CHEST");
|
|
common_scripts\utility::flag_wait("flag_dialogue_se_will_reveal");
|
|
maps\_utility::delaythread(123,::common_scripts\utility::flag_set,"flag_will_room_door_exit_open");
|
|
level thread maps\finale_fx::vfx_irons_reveal_scene();
|
|
level.player common_scripts\utility::delaycall(2.6,::playrumbleonentity,"damage_heavy");
|
|
var_06 = getanimlength(maps\_utility::getanim_from_animname("irons_reveal","irons"));
|
|
var_00 maps\_utility::delaythread(var_06,::maps\_utility::_delete);
|
|
var_05 maps\_utility::delaythread(var_06,::maps\_utility::_delete);
|
|
var_03 maps\_utility::delaythread(var_06,::maps\_utility::_delete);
|
|
var_01 thread maps\_anim::anim_single_solo(var_00,"irons_reveal");
|
|
var_01 maps\finale_ending::anim_single_with_gameplay(var_04,"irons_reveal");
|
|
thread maps\_utility::autosave_by_name("free_from_exo");
|
|
var_01 thread maps\_anim::anim_loop_solo(level.gideon,"irons_reveal_button_idle","ender");
|
|
var_02 se_irons_reveal_handle_button_prompts_on_arm(var_01);
|
|
var_02 setmodel("viewbody_sentinel_mitchell_egress_custom");
|
|
level.player notify("exo_released");
|
|
var_01 notify("ender");
|
|
level.player common_scripts\utility::delaycall(5,::playrumbleonentity,"damage_heavy");
|
|
level.gideon thread se_irons_reveal_pt2_gideon(var_01);
|
|
var_01 thread maps\_anim::anim_single([var_02],"irons_reveal_part2");
|
|
var_07 = var_02 maps\_utility::getanim("irons_reveal_part2");
|
|
var_08 = getanimlength(var_07);
|
|
var_09 = getnotetracktimes(var_07,"ease_out")[0] * var_08;
|
|
var_0A = 0;
|
|
while(var_0A < var_08)
|
|
{
|
|
if(var_0A >= var_09 && level.player getnormalizedmovement()[0] > 0.5)
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
var_0A = var_0A + 0.05;
|
|
}
|
|
|
|
level.player unlink();
|
|
var_02 delete();
|
|
level notify("release");
|
|
level.player disableslowaim();
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
level.player disableoffhandweapons();
|
|
setsaveddvar("player_sprintSpeedScale",1.6);
|
|
common_scripts\utility::flag_set("flag_will_reveal_complete");
|
|
common_scripts\utility::flag_set("flag_obj_escape_complete");
|
|
common_scripts\utility::flag_set("flag_start_irons_chase");
|
|
maps\_utility::battlechatter_off("allies");
|
|
maps\_utility::battlechatter_off("axis");
|
|
thread maps\finale_lighting::will_room_speech_end();
|
|
}
|
|
|
|
//Function Number: 91
|
|
se_irons_reveal_pt2_gideon(param_00)
|
|
{
|
|
param_00 maps\_anim::anim_single([self],"irons_reveal_part2");
|
|
param_00 thread maps\_anim::anim_loop_solo(self,"irons_reveal_idle","ender");
|
|
}
|
|
|
|
//Function Number: 92
|
|
irons_exo_hack(param_00)
|
|
{
|
|
maps\_shg_utility::play_videolog("finale_hud_reboot","screen_add",0,0,0,0,0);
|
|
}
|
|
|
|
//Function Number: 93
|
|
se_irons_reveal_handle_material_swap()
|
|
{
|
|
self overridematerial("mtl_arm_band_ui_glass","m/mtl_arm_band_ui_offline");
|
|
level.gideon overridematerial("mtl_arm_band_ui_glass","m/mtl_arm_band_ui_offline");
|
|
common_scripts\utility::flag_wait("flag_material_swap_detach_exo");
|
|
self overridematerialreset();
|
|
self overridematerial("mtl_arm_band_ui_glass","m/mtl_arm_band_ui_reboot");
|
|
common_scripts\utility::flag_wait("flag_material_swap_confirm_button");
|
|
self overridematerialreset();
|
|
common_scripts\utility::flag_wait("flag_material_swap_gideon_error");
|
|
level.gideon thread maps\finale_fx::exo_release_gideon_error_glow();
|
|
level.gideon overridematerialreset();
|
|
level.gideon overridematerial("mtl_arm_band_ui_glass","m/mtl_arm_band_ui_failure");
|
|
}
|
|
|
|
//Function Number: 94
|
|
door_irons_reveal_open(param_00)
|
|
{
|
|
var_01 = getent("door_irons_reveal","targetname");
|
|
var_01 soundscripts\_snd::snd_message("aud_irons_reveal_star_trek_door");
|
|
var_02 = getent("org_door_irons_reveal_open","targetname");
|
|
var_01 moveto(var_02.origin,1,0.25,0.25);
|
|
}
|
|
|
|
//Function Number: 95
|
|
se_irons_reveal_exo(param_00)
|
|
{
|
|
level.player setviewmodel("viewhands_noexo_mitchell_prosthetic_smashed");
|
|
var_01 = getent("org_irons_reveal","targetname");
|
|
var_02 = maps\_utility::spawn_anim_model("exo");
|
|
var_01 maps\_anim::anim_single_solo(var_02,"irons_reveal_exo");
|
|
var_01 thread maps\_anim::anim_loop_solo(var_02,"irons_reveal_exo_idle");
|
|
}
|
|
|
|
//Function Number: 96
|
|
se_will_reveal_irons()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_se_will_reveal_irons");
|
|
var_00 = getent("org_will_reveal_irons","targetname");
|
|
level.player maps\_shg_utility::setup_player_for_scene(1);
|
|
var_01 = maps\_utility::spawn_anim_model("world_hands");
|
|
var_01 hide();
|
|
var_02 = maps\_utility::spawn_targetname("irons_will_reveal",1);
|
|
var_02.animname = "irons";
|
|
var_02 maps\_utility::gun_remove();
|
|
var_03 = [var_01,var_02];
|
|
level.player playerlinktodelta(var_01,"tag_player",0.1,0,0,0,0,1);
|
|
var_00 thread maps\_anim::anim_first_frame(var_03,"will_reveal_irons");
|
|
var_00 maps\_anim::anim_single(var_03,"will_reveal_irons");
|
|
level.player unlink();
|
|
var_02 delete();
|
|
var_01 delete();
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
maps\_utility::activate_trigger_with_targetname("trig_color_wills_room_exit");
|
|
common_scripts\utility::flag_set("flag_will_reveal_irons_complete");
|
|
level.player lerpfov(65,0);
|
|
level.player setorigin((11608,-85516,7600));
|
|
level.player setplayerangles((0,-90,0));
|
|
}
|
|
|
|
//Function Number: 97
|
|
se_irons_chase()
|
|
{
|
|
thread se_irons_elevator_doors();
|
|
common_scripts\utility::flag_set("second_half_lighting");
|
|
common_scripts\utility::flag_wait("flag_start_irons_chase");
|
|
level.player allowmelee(0);
|
|
maps\_utility::delaythread(2,::maps\_utility::autosave_by_name,"chase_begin");
|
|
if(!isdefined(level.irons))
|
|
{
|
|
level.irons = maps\_utility::spawn_targetname("irons",1);
|
|
level.irons.animname = "irons";
|
|
level.irons.name = "";
|
|
level.irons maps\finale_utility::set_custom_patrol_anim_set("unaware");
|
|
level.irons maps\_utility::gun_remove();
|
|
level.irons thread maps\_utility::deletable_magic_bullet_shield();
|
|
}
|
|
|
|
level.irons.team = "axis";
|
|
thread maps\finale_utility::sprint_hint_reminder();
|
|
thread maps\finale_utility::chase_timer_countdown(15,&"FINALE_FAILED_IRONS_CHASE");
|
|
thread maps\finale_utility::player_chase_speed_control();
|
|
setsaveddvar("player_sprintUnlimited",1);
|
|
var_00 = getent("org_irons_run","targetname");
|
|
var_00 maps\_anim::anim_first_frame_solo(level.irons,"irons_run_left_turn_up_stairs");
|
|
common_scripts\utility::flag_wait("flag_irons_start_running_01");
|
|
thread maps\finale_utility::chase_timer_countdown(8,&"FINALE_FAILED_IRONS_CHASE");
|
|
var_00 maps\_anim::anim_single_solo(level.irons,"irons_run_left_turn_up_stairs");
|
|
var_01 = getent("org_irons_end","targetname");
|
|
var_00 stopanimscripted();
|
|
var_01 stopanimscripted();
|
|
var_02 = getent("door_irons_chase_se","targetname");
|
|
var_02.animname = "keypad_door";
|
|
var_02 maps\_utility::assign_animtree();
|
|
var_03 = getent("clip_door_irons_chase_se","targetname");
|
|
var_00 maps\_anim::anim_first_frame_solo(var_02,"irons_run_to_keypad_door");
|
|
var_00 maps\_anim::anim_first_frame_solo(level.irons,"irons_run_to_elevator_full");
|
|
common_scripts\utility::flag_wait("flag_irons_start_running_02");
|
|
thread maps\finale_utility::chase_timer_countdown(15,&"FINALE_FAILED_IRONS_CHASE");
|
|
thread maps\finale_utility::lowering_door_think(23,"door_irons_chase","clip_door_irons_chase","origin_door_irons_chase","flag_start_door_lowering","trig_door_path_check");
|
|
soundscripts\_snd::snd_message("irons_keypad_door_open",var_02);
|
|
var_00 thread maps\_anim::anim_single_solo(var_02,"irons_run_to_keypad_door");
|
|
var_00 thread maps\_anim::anim_single_solo(level.irons,"irons_run_to_elevator_full");
|
|
wait(9);
|
|
if(!common_scripts\utility::flag("flag_se_bridge_takedown"))
|
|
{
|
|
common_scripts\utility::flag_set("flag_irons_passed_final_run_start");
|
|
}
|
|
}
|
|
|
|
//Function Number: 98
|
|
se_irons_elevator_doors()
|
|
{
|
|
var_00 = getent("fin_balcony_elevator_door_01","targetname");
|
|
var_00.animname = "elevator_doors";
|
|
var_00 maps\_utility::assign_animtree();
|
|
var_01 = common_scripts\utility::getstruct("se_balcony_finale","script_noteworthy");
|
|
var_01 maps\_anim::anim_first_frame_solo(var_00,"balcony_finale_pt1_fail_elevator_close");
|
|
}
|
|
|
|
//Function Number: 99
|
|
se_bridge_takedown()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_irons_rooftop");
|
|
var_00 = getent("org_bridge_takedown","targetname");
|
|
var_01 = maps\_utility::spawn_targetname("guy_bridge_takedown",1);
|
|
var_01.animname = "guy_bridge_takedown";
|
|
var_01.ignoreme = 1;
|
|
var_01.ignoreall = 1;
|
|
self.allowdeath = 1;
|
|
var_01 maps\_utility::place_weapon_on("iw5_hbra3_sp","right");
|
|
var_01 laseroff();
|
|
var_02 = maps\_utility::spawn_anim_model("world_body_damaged_no_exo");
|
|
var_02 hide();
|
|
var_03 = [var_02,var_01];
|
|
var_00 thread maps\_anim::anim_first_frame(var_03,"bridge_takedown");
|
|
common_scripts\utility::flag_wait("flag_se_bridge_takedown");
|
|
soundscripts\_snd::snd_message("fin_skybridge_takedown_start");
|
|
var_04 = getent("trig_irons_passed_final_run_start","targetname");
|
|
var_04 common_scripts\utility::trigger_off();
|
|
maps\finale_utility::chase_timer_cancel();
|
|
var_05 = 0.31;
|
|
level.player maps\_shg_utility::setup_player_for_scene(0);
|
|
level.player playerlinktoblend(var_02,"tag_player",var_05);
|
|
level.player common_scripts\utility::delaycall(var_05,::playerlinktodelta,var_02,"tag_player",1,0,0,0,0,1);
|
|
var_02 common_scripts\utility::delaycall(var_05,::show);
|
|
var_00 thread maps\_anim::anim_single(var_03,"bridge_takedown");
|
|
wait(0.5);
|
|
thread maps\finale_utility::enable_takedown_hint(var_01,175,1,"flag_se_bridge_takedown_success",2);
|
|
common_scripts\utility::flag_wait("flag_bridge_takedown_jump_complete");
|
|
if(common_scripts\utility::flag("flag_se_bridge_takedown_success"))
|
|
{
|
|
common_scripts\utility::flag_set("flag_disable_takedown_hint");
|
|
if(isdefined(level.takedown_button))
|
|
{
|
|
level.takedown_button maps\_shg_utility::hint_button_clear();
|
|
}
|
|
|
|
level.player_knife = maps\_utility::spawn_anim_model("player_knife");
|
|
level.player_knife hide();
|
|
var_03 = common_scripts\utility::array_add(var_03,level.player_knife);
|
|
var_00 thread maps\_anim::anim_single(var_03,"bridge_takedown_success");
|
|
var_06 = var_02 maps\_utility::getanim("bridge_takedown_success");
|
|
var_07 = getanimlength(var_06);
|
|
var_08 = getnotetracktimes(var_06,"ease_out")[0] * var_07;
|
|
var_09 = 0;
|
|
while(var_09 < var_07)
|
|
{
|
|
if(var_09 >= var_08 && level.player getnormalizedmovement()[0] > 0.5)
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait 0.05;
|
|
var_09 = var_09 + 0.05;
|
|
}
|
|
|
|
level.player forcesprint();
|
|
var_01 delete();
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
level.player disableoffhandweapons();
|
|
level.player takeweapon("iw5_unarmedfinale_nullattach");
|
|
level.player giveweapon("iw5_unarmedfinaleknife");
|
|
level.player switchtoweapon("iw5_unarmedfinaleknife");
|
|
level.player unlink();
|
|
level.player show();
|
|
var_02 delete();
|
|
level.player_knife delete();
|
|
thread rooftop_glass_explode();
|
|
wait(0.5);
|
|
common_scripts\utility::flag_clear("flag_player_speed_control_on");
|
|
thread se_balcony_finale_player_speed();
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_disable_takedown_hint");
|
|
if(isdefined(level.takedown_button))
|
|
{
|
|
level.takedown_button maps\_shg_utility::hint_button_clear();
|
|
}
|
|
|
|
maps\_utility::delaythread(1,::maps\_utility::slowmo_lerp_out);
|
|
soundscripts\_snd::snd_message("bridge_takedown_fail");
|
|
var_00 maps\_anim::anim_single(var_03,"bridge_takedown_fail");
|
|
setdvar("ui_deadquote","");
|
|
maps\_utility::missionfailedwrapper();
|
|
}
|
|
|
|
//Function Number: 100
|
|
rooftop_glass_explode()
|
|
{
|
|
var_00 = getentarray("org_rooftop_glass_explode","targetname");
|
|
wait(0.25);
|
|
level notify("vfx_rooftop_glass_explode");
|
|
soundscripts\_snd::snd_message("fin_skybridge_glass_explo");
|
|
earthquake(0.4,1.5,level.player.origin,1000);
|
|
foreach(var_02 in var_00)
|
|
{
|
|
glassradiusdamage(var_02.origin,256,110,25);
|
|
}
|
|
}
|
|
|
|
//Function Number: 101
|
|
se_balcony_finale()
|
|
{
|
|
thread se_balcony_finale_balcony();
|
|
common_scripts\utility::flag_wait("flag_se_bridge_takedown");
|
|
thread maps\finale_lighting::mb_surprise();
|
|
if(!common_scripts\utility::flag("flag_irons_passed_final_run_start"))
|
|
{
|
|
thread se_balcony_finale_player();
|
|
thread se_balcony_finale_irons();
|
|
}
|
|
}
|
|
|
|
//Function Number: 102
|
|
se_link_player_to_rig(param_00,param_01)
|
|
{
|
|
level.player playerlinktodelta(param_00,"tag_player",1,10,10,5,0,0,0);
|
|
level.player springcamenabled(2.2,0.5);
|
|
level.ground_ref = spawn("script_origin",(0,0,0));
|
|
level.ground_ref.angles = level.player getplayerangles();
|
|
level.ground_ref linkto(level.player_rig,"tag_player");
|
|
level.player playersetgroundreferenceent(level.ground_ref);
|
|
level.player enableslowaim(0.5,0.5);
|
|
}
|
|
|
|
//Function Number: 103
|
|
se_balcony_reveal_head_sway()
|
|
{
|
|
level endon("dofpart5");
|
|
level waittill("dofpart3");
|
|
for(;;)
|
|
{
|
|
screenshake(level.player.origin,5,7,4,2,0.2,0.2,0,0.3,0.375,0.225);
|
|
wait(1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 104
|
|
se_player_rig_move_to_irons(param_00,param_01)
|
|
{
|
|
var_02 = self.origin;
|
|
var_03 = param_00 - self.origin;
|
|
var_04 = 0.05;
|
|
while(var_04 < param_01)
|
|
{
|
|
self.origin = var_02 + level.irons.origin - param_00 + var_03 * var_04 / param_01;
|
|
var_05 = level.irons.origin - self.origin;
|
|
if(length2d(var_05) > 20)
|
|
{
|
|
var_06 = angleclamp360(var_05[1],var_05[0]);
|
|
var_07 = var_06 - self.angles[1];
|
|
var_08 = self.angles[1] + var_07 / 4;
|
|
self.angles = (self.angles[0],var_08,self.angles[2]);
|
|
}
|
|
|
|
var_04 = var_04 + 0.05;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 105
|
|
se_balcony_finale_player()
|
|
{
|
|
var_00 = 200;
|
|
common_scripts\utility::flag_wait("flag_bridge_takedown_jump_complete");
|
|
var_01 = common_scripts\utility::getstruct("se_balcony_finale","script_noteworthy");
|
|
level.player_rig = maps\_utility::spawn_anim_model("world_body_damaged_no_exo");
|
|
level.player_rig hide();
|
|
soundscripts\_snd::snd_message("fin_skybridge_takedown_plr_attack");
|
|
var_01 maps\_anim::anim_first_frame_solo(level.player_rig,"balcony_finale_pt2");
|
|
common_scripts\utility::flag_wait("flag_balcony_tackle_fake_okay");
|
|
while(distance(level.player.origin,level.irons.origin) > var_00 && !common_scripts\utility::flag("flag_balcony_tackle_too_late"))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
var_02 = level.irons maps\_shg_utility::hint_button_tag("x","J_SpineUpper",72,1000,1);
|
|
var_02.fontscale = 2;
|
|
while(!level.player usebuttonpressed() && !common_scripts\utility::flag("flag_balcony_tackle_too_late"))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
var_02 maps\_shg_utility::hint_button_clear();
|
|
if(common_scripts\utility::flag("flag_balcony_tackle_too_late"))
|
|
{
|
|
var_03 = getent("fin_balcony_elevator_door_01","targetname");
|
|
var_03.animname = "elevator_doors";
|
|
var_03 maps\_utility::assign_animtree();
|
|
var_04 = common_scripts\utility::getstruct("se_balcony_finale","script_noteworthy");
|
|
var_04 thread maps\_anim::anim_single_solo(var_03,"balcony_finale_pt1_fail_elevator_close");
|
|
setdvar("ui_deadquote",&"FINALE_FAILED_IRONS_CHASE");
|
|
maps\_utility::missionfailedwrapper();
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_balcony_tackle_started");
|
|
soundscripts\_snd::snd_message("fin_irons_takedown_start");
|
|
soundscripts\_snd::snd_music_message("irons_tackle");
|
|
maps\_utility::delaythread(0.5,::maps\_utility::autosave_now);
|
|
level.player_rig.origin = level.player.origin;
|
|
level.player_rig.angles = level.player.angles;
|
|
thread se_link_player_to_rig(level.player_rig,0.05);
|
|
level.player_rig common_scripts\utility::delaycall(0.3,::show);
|
|
level.player maps\_shg_utility::setup_player_for_scene(0);
|
|
var_05 = level.scr_anim["world_body_damaged_no_exo"]["balcony_finale_pt1"];
|
|
level.player_rig setanim(var_05);
|
|
var_06 = getanimlength(var_05);
|
|
var_07 = level.irons maps\_utility::getanim("balcony_finale_pt1");
|
|
var_08 = getanimlength(var_07);
|
|
var_09 = var_08 - level.irons getanimtime(var_07) * var_08 / 3;
|
|
level.player_rig setanimrate(var_05,var_06 / var_09);
|
|
var_06 = var_09;
|
|
level.player_rig thread se_player_rig_move_to_irons(level.irons.origin,var_06);
|
|
thread maps\_anim::start_notetrack_wait(level.player_rig,"single anim","balcony_finale_pt1","world_body_damaged_no_exo",var_05);
|
|
thread maps\_anim::animscriptdonotetracksthread(level.player_rig,"single anim","balcony_finale_pt1");
|
|
wait(var_06 - 0.1);
|
|
level.player_rig notify("balcony_finale_pt1");
|
|
level.player_rig unlink();
|
|
common_scripts\utility::flag_set("flag_balcony_tackle_success");
|
|
level.player lerpfov(55,2);
|
|
level.player_rig attach("vm_mitchell_finale_knife","tag_weapon_left");
|
|
level notify("dofpart2");
|
|
soundscripts\_snd::snd_message("fin_irons_tackle");
|
|
var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt2");
|
|
soundscripts\_snd::snd_message("finale_qte_show_knife");
|
|
level.player_rig detach("vm_mitchell_finale_knife","tag_weapon_left");
|
|
level.player_rig attach("vm_mitchell_finale_knife","tag_weapon_right");
|
|
var_0A = getanimlength(level.player_rig maps\_utility::getanim("balcony_finale_pt2b_idle"));
|
|
thread maps\finale_utility::process_stab_finale_scene(level.player_rig,"J_Wrist_RI",var_0A,0,var_03);
|
|
var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt2b_idle");
|
|
common_scripts\utility::flag_set("flag_stop_display_melee_hint");
|
|
if(common_scripts\utility::flag("flag_button_melee_success"))
|
|
{
|
|
var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt2b_success");
|
|
}
|
|
|
|
level notify("dofpart3");
|
|
level notify("dofpart4");
|
|
maps\_utility::flagwaitthread("flag_xbutton_mash_start",::maps\finale_utility::process_buttonmash_finale_scene,level.player_rig,"J_Wrist_LE",8,var_03);
|
|
maps\_utility::flagwaitthread("flag_stab_mash_button_start",::maps\finale_utility::process_stab_finale_scene,level.player_rig,"J_Wrist_LE",5,0);
|
|
level notify("dof_look_down");
|
|
var_0A = getanimlength(level.player_rig maps\_utility::getanim("balcony_finale_pt3_combined"));
|
|
var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt3_combined");
|
|
level.player_rig detach("vm_mitchell_finale_knife","tag_weapon_right");
|
|
level.player_rig attach("vm_mitchell_finale_knife","tag_weapon_left");
|
|
common_scripts\utility::flag_set("flag_stop_display_melee_hint");
|
|
if(!common_scripts\utility::flag("flag_button_melee_success") && common_scripts\utility::flag("flag_xbutton_mash_end"))
|
|
{
|
|
level.player lightsetforplayer("finale_hang_fail");
|
|
level notify("audio_finale_qte_fail");
|
|
maps\_utility::vision_set_fog_changes("finale_roof_hang_fail",1.5);
|
|
var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt4_fail");
|
|
setdvar("ui_deadquote","");
|
|
maps\_utility::missionfailedwrapper();
|
|
return;
|
|
}
|
|
|
|
level notify("dofpart5");
|
|
var_03 thread severed_arm_anim();
|
|
var_03 maps\_anim::anim_single_solo(level.player_rig,"balcony_finale_pt5");
|
|
common_scripts\utility::flag_set("flag_obj_irons_complete");
|
|
level notify("irons_dead");
|
|
level.gideon.ignoreall = 1;
|
|
level.gideon maps\_utility::gun_remove();
|
|
level.player_rig detach("vm_mitchell_finale_knife","tag_weapon_left",0);
|
|
var_0B = [level.player_rig,level.gideon];
|
|
var_0A = getanimlength(level.player_rig maps\_utility::getanim("balcony_finale_end"));
|
|
level.player lerpviewangleclamp(1,0.25,0.5,0,5,5,0);
|
|
level.player enableslowaim(0.2,0.2);
|
|
var_03 thread maps\_anim::anim_single(var_0B,"balcony_finale_end");
|
|
thread balcony_finale_end_camera_control(var_0A);
|
|
maps\_utility::flagwaitthread("flag_ending_start_fade",::maps\finale_utility::screen_fade_out,5);
|
|
wait(var_0A);
|
|
level.gideon maps\_utility::stop_magic_bullet_shield();
|
|
level.gideon delete();
|
|
wait(2);
|
|
common_scripts\utility::flag_set("flag_balcony_finale_success");
|
|
}
|
|
|
|
//Function Number: 106
|
|
severed_arm_anim()
|
|
{
|
|
var_00 = maps\_utility::spawn_anim_model("severed_arm");
|
|
var_00 hide();
|
|
var_00 setcontents(0);
|
|
thread maps\_anim::anim_single_solo(var_00,"balcony_finale_pt5");
|
|
common_scripts\utility::flag_wait("flag_arm_severed");
|
|
var_00 show();
|
|
common_scripts\utility::flag_wait("flag_obj_irons_complete");
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 107
|
|
balcony_finale_end_camera_control(param_00)
|
|
{
|
|
wait(15);
|
|
level.player lerpviewangleclamp(1,0.25,0.5,15,15,15,15);
|
|
wait(16);
|
|
level.player lerpviewangleclamp(5,0.25,0.5,5,5,5,5);
|
|
}
|
|
|
|
//Function Number: 108
|
|
se_balcony_finale_player_speed()
|
|
{
|
|
while(!common_scripts\utility::flag("flag_balcony_tackle_too_late"))
|
|
{
|
|
var_00 = level.irons.origin[0] - level.player.origin[0];
|
|
if(level.player issprinting())
|
|
{
|
|
var_01 = maps\_shg_utility::linear_map_clamp(var_00,50,250,0.6,1.1);
|
|
}
|
|
else
|
|
{
|
|
var_01 = maps\_shg_utility::linear_map_clamp(var_00,50,250,0.6,1.2);
|
|
}
|
|
|
|
level.player setmovespeedscale(var_01);
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 109
|
|
mash_x()
|
|
{
|
|
}
|
|
|
|
//Function Number: 110
|
|
se_balcony_part1_up_to_tackle(param_00)
|
|
{
|
|
level endon("flag_balcony_tackle_started");
|
|
param_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt1");
|
|
}
|
|
|
|
//Function Number: 111
|
|
set_when_time_flag_balcony_tackle_fake_okay()
|
|
{
|
|
var_00 = getanimlength(level.irons maps\_utility::getanim("balcony_finale_pt1")) - 2.1;
|
|
wait(var_00);
|
|
common_scripts\utility::flag_set("flag_balcony_tackle_fake_okay");
|
|
}
|
|
|
|
//Function Number: 112
|
|
set_when_time_flag_balcony_tackle_okay()
|
|
{
|
|
var_00 = getanimlength(level.irons maps\_utility::getanim("balcony_finale_pt1")) - 1.3;
|
|
wait(var_00);
|
|
common_scripts\utility::flag_set("flag_balcony_tackle_okay");
|
|
}
|
|
|
|
//Function Number: 113
|
|
set_when_time_flag_balcony_tackle_too_late()
|
|
{
|
|
var_00 = getanimlength(level.irons maps\_utility::getanim("balcony_finale_pt1")) - 0.1;
|
|
wait(var_00);
|
|
common_scripts\utility::flag_set("flag_balcony_tackle_too_late");
|
|
}
|
|
|
|
//Function Number: 114
|
|
se_balcony_finale_irons()
|
|
{
|
|
level waittill("noteworthy_start_window");
|
|
if(!isdefined(level.irons))
|
|
{
|
|
level.irons = maps\_utility::spawn_targetname("irons",1);
|
|
level.irons.animname = "irons";
|
|
level.irons.name = "";
|
|
level.irons maps\finale_utility::set_custom_patrol_anim_set("unaware");
|
|
level.irons maps\_utility::gun_remove();
|
|
level.irons thread maps\_utility::deletable_magic_bullet_shield();
|
|
level.irons.ignoreall = 1;
|
|
}
|
|
|
|
var_00 = common_scripts\utility::getstruct("se_balcony_finale","script_noteworthy");
|
|
var_00 maps\_anim::anim_first_frame_solo(level.irons,"balcony_finale_pt1");
|
|
thread set_when_time_flag_balcony_tackle_fake_okay();
|
|
thread set_when_time_flag_balcony_tackle_okay();
|
|
thread set_when_time_flag_balcony_tackle_too_late();
|
|
thread maps\finale_lighting::mb_tackle();
|
|
se_balcony_part1_up_to_tackle(var_00);
|
|
if(!common_scripts\utility::flag("flag_balcony_tackle_started"))
|
|
{
|
|
var_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt1_fail");
|
|
level.irons delete();
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_wait("flag_balcony_tackle_success");
|
|
}
|
|
|
|
common_scripts\utility::flag_set("flag_balcony_pt2_start");
|
|
var_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt2");
|
|
var_00 maps\_anim::anim_first_frame_solo(level.irons,"balcony_finale_pt3_combined");
|
|
level waittill("dofpart3");
|
|
var_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt3_combined");
|
|
if(!common_scripts\utility::flag("flag_button_melee_success"))
|
|
{
|
|
thread maps\finale_fx::vfx_irons_fail_fall();
|
|
var_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt4_fail");
|
|
level.player lightsetforplayer("finale_hang_fail");
|
|
return;
|
|
}
|
|
|
|
var_00 maps\_anim::anim_single_solo(level.irons,"balcony_finale_pt5");
|
|
level.irons delete();
|
|
}
|
|
|
|
//Function Number: 115
|
|
se_balcony_finale_balcony()
|
|
{
|
|
var_00 = maps\_utility::spawn_anim_model("balcony");
|
|
thread maps\finale_lighting::balcony_lighting(var_00);
|
|
var_01 = common_scripts\utility::getstruct("se_balcony_finale","script_noteworthy");
|
|
var_01 maps\_anim::anim_first_frame_solo(var_00,"balcony_finale_pt2");
|
|
common_scripts\utility::flag_wait("flag_balcony_pt2_start");
|
|
var_01 maps\_anim::anim_single_solo(var_00,"balcony_finale_pt2");
|
|
var_01 maps\_anim::anim_last_frame_solo(var_00,"balcony_finale_pt2");
|
|
}
|
|
|
|
//Function Number: 116
|
|
se_irons_end_helo(param_00,param_01,param_02)
|
|
{
|
|
param_00 maps\_anim::anim_single_solo(self,param_01);
|
|
param_00 maps\_anim::anim_loop_solo(self,param_02);
|
|
}
|
|
|
|
//Function Number: 117
|
|
silo_catwalk_clip(param_00)
|
|
{
|
|
var_01 = getentarray("silo_catwalk_blocker_02","targetname");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 connectpaths();
|
|
var_03 delete();
|
|
}
|
|
|
|
var_01 = getentarray("silo_catwalk_blocker_02","targetname");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 connectpaths();
|
|
var_03 delete();
|
|
}
|
|
|
|
var_07 = getnodearray("node_silo_01","targetname");
|
|
foreach(var_09 in var_07)
|
|
{
|
|
var_09 connectnode();
|
|
}
|
|
|
|
param_00 common_scripts\utility::show_solid();
|
|
}
|
|
|
|
//Function Number: 118
|
|
set_blast_walk_anims()
|
|
{
|
|
self.disableexits = 0;
|
|
self.alwaysrunforward = undefined;
|
|
var_00 = ["exposed","exposed_crouch"];
|
|
var_01[1] = %fin_mech_blast_no_shield_react;
|
|
var_01[2] = %fin_mech_blast_no_shield_react;
|
|
var_01[3] = %fin_mech_blast_no_shield_react;
|
|
var_01[4] = %fin_mech_blast_no_shield_react;
|
|
var_01[6] = %fin_mech_blast_no_shield_react;
|
|
var_01[7] = %fin_mech_blast_no_shield_react;
|
|
var_01[8] = %fin_mech_blast_no_shield_react;
|
|
var_01[9] = %fin_mech_blast_no_shield_react;
|
|
var_02[1] = %fin_mech_blast_no_shield_react_idle_to_walk;
|
|
var_02[2] = %fin_mech_blast_no_shield_react_idle_to_walk;
|
|
var_02[3] = %fin_mech_blast_no_shield_react_idle_to_walk;
|
|
var_02[4] = %fin_mech_blast_no_shield_react_idle_to_walk;
|
|
var_02[6] = %fin_mech_blast_no_shield_react_idle_to_walk;
|
|
var_02[7] = %fin_mech_blast_no_shield_react_idle_to_walk;
|
|
var_02[8] = %fin_mech_blast_no_shield_react_idle_to_walk;
|
|
var_02[9] = %fin_mech_blast_no_shield_react_idle_to_walk;
|
|
var_03 = level.archetypes["mech"]["run_turn"];
|
|
var_04["stairs_down"] = %mech_run_stairs_down;
|
|
var_05 = level.archetypes[level.gideon.animarchetype]["start_stop"];
|
|
maps\_utility::set_npc_anims("mech_blastwalk",%fin_mech_blast_no_shield_walk,%fin_mech_blast_no_shield_walk,[%fin_mech_blast_no_shield_react_idle],var_01,var_02,var_00,var_03,var_03,var_04);
|
|
level.archetypes[level.gideon.animarchetype]["start_stop"] = var_05;
|
|
}
|
|
|
|
//Function Number: 119
|
|
clear_blast_walk_anims()
|
|
{
|
|
maps\_utility::clear_npc_anims("mech_blastwalk");
|
|
self.disableexits = 1;
|
|
}
|
|
|
|
//Function Number: 120
|
|
lobby_protect()
|
|
{
|
|
if(level.currentgen)
|
|
{
|
|
common_scripts\utility::flag_wait("outro_loaded_successfully");
|
|
}
|
|
|
|
common_scripts\utility::flag_clear("first_half_lighting");
|
|
common_scripts\utility::flag_set("second_half_lighting");
|
|
level.player lightsetforplayer("finale_lobby_2");
|
|
maps\_utility::vision_set_fog_changes("finale_lobby",0);
|
|
maps\finale_utility::teleport_to_scriptstruct("checkpoint_lobby");
|
|
thread player_blur_think("flag_lobby_clear");
|
|
var_00 = getnode("node_gideon_lobby_01","targetname");
|
|
level.gideon thread maps\finale_utility::goto_node(var_00,0);
|
|
level.gideon maps\_utility::disable_ai_color();
|
|
level.gideon maps\_utility::set_baseaccuracy(100);
|
|
level.gideon maps\_utility::set_ignoresuppression(1);
|
|
level.player giveweapon("iw5_titan45finalelobby_sp_xmags");
|
|
level.player switchtoweapon("iw5_titan45finalelobby_sp_xmags");
|
|
level.player givestartammo("iw5_titan45finalelobby_sp_xmags");
|
|
level.player setweaponammostock("iw5_titan45finalelobby_sp_xmags",0);
|
|
level.player disableweaponswitch();
|
|
level.player setstance("prone");
|
|
var_01 = getent("org_player_carried_lobby_01","targetname");
|
|
var_02 = getent("org_player_carried_lobby_02","targetname");
|
|
var_03 = getent("org_player_carried_lobby_03","targetname");
|
|
thread maps\_utility::autosave_now();
|
|
thread combat_lobby();
|
|
thread player_accuracy_think();
|
|
maps\_utility::delaythread(2,::common_scripts\utility::flag_set,"flag_lobby_combat_start");
|
|
maps\_utility::delaythread(1,::common_scripts\utility::flag_set,"flag_dialogue_carry_scene_01");
|
|
var_04 = undefined;
|
|
var_05 = getent("org_run_and_putdown","targetname");
|
|
var_06 = undefined;
|
|
var_07 = 0.5;
|
|
level.player thread maps\finale_utility::screen_fade(0,1,0.5);
|
|
var_04 = maps\_utility::spawn_anim_model("world_body_damaged");
|
|
maps\finale_drag::drag_player_from_start_to_end(var_01,var_02,level.gideon,var_04,"drag_run01",var_07);
|
|
level.player thread maps\finale_utility::screen_fade(var_07,2,0.5);
|
|
maps\finale_drag::drag_player_from_start_to_end(var_02,var_03,level.gideon,var_04,"drag_run02",var_07);
|
|
level.player thread maps\finale_utility::screen_fade(var_07,1,0.5);
|
|
wait(var_07);
|
|
wait 0.05;
|
|
level.player maps\_shg_utility::setup_player_for_scene();
|
|
var_06 = [level.gideon,var_04];
|
|
var_05 maps\_anim::anim_single(var_06,"drag_putdown");
|
|
level.player playerlinktodelta(var_04,"TAG_PLAYER",1,40,45,30,10,1,0);
|
|
level.player maps\_shg_utility::setup_player_for_gameplay();
|
|
var_05 thread maps\_anim::anim_loop_solo(level.gideon,"drag_cover","gideon_ender");
|
|
level.player enableweapons();
|
|
level.player allowsprint(0);
|
|
level.player allowprone(1);
|
|
level.player allowcrouch(0);
|
|
level.player allowstand(0);
|
|
level.player allowmelee(0);
|
|
level.player disableoffhandweapons();
|
|
level.player disableoffhandsecondaryweapons();
|
|
level.player disableweaponpickup();
|
|
level.player thread maps\_player_exo::setoverdrive();
|
|
common_scripts\utility::flag_set("flag_lobby_player_can_shoot");
|
|
thread maps\finale_drag::shooting_head_sway();
|
|
common_scripts\utility::flag_wait("flag_lobby_clear");
|
|
level.player maps\_player_exo::unsetoverdrive();
|
|
while(isdefined(level.gideon.pickup_allowed) && !level.gideon.pickup_allowed)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
var_05 notify("gideon_ender");
|
|
soundscripts\_snd::snd_message("fin_lobby_gun_limp");
|
|
maps\finale_anim_vm::anim_single_solo_vm(level.player,"gun_limp");
|
|
soundscripts\_snd::snd_music_message("dazed_and_confused2");
|
|
level.player notify("end_head_sway");
|
|
level.player playerlinktoblend(var_04,"TAG_PLAYER",1.2);
|
|
level.player common_scripts\utility::delaycall(4,::playerlinktodelta,var_04,"TAG_PLAYER",1,10,10,10,10,1,0);
|
|
level.player maps\_shg_utility::setup_player_for_scene();
|
|
level.player giveweapon("iw5_unarmedfinale_nullattach");
|
|
level.player takeweapon("iw5_titan45finalelobby_sp_xmags");
|
|
var_08 = maps\_utility::spawn_anim_model("drag_pistol");
|
|
var_06 = [level.gideon,var_04,var_08];
|
|
var_05 maps\_anim::anim_single(var_06,"drag_pickup02");
|
|
if(isdefined(var_04))
|
|
{
|
|
var_04 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 121
|
|
player_accuracy_think()
|
|
{
|
|
level endon("flag_lobby_clear");
|
|
for(;;)
|
|
{
|
|
var_00 = level.player getcurrentweapon();
|
|
var_01 = level.player getammocount(var_00);
|
|
if(var_01 <= 2 && var_00 != "none")
|
|
{
|
|
var_02 = getaiarray("axis");
|
|
foreach(var_04 in var_02)
|
|
{
|
|
if(isdefined(var_04.script_noteworthy) && var_04.script_noteworthy == "enemy_lobby")
|
|
{
|
|
var_04 thread maps\finale_utility::murder_player_seek();
|
|
}
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 122
|
|
player_blur_think(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
level endon(param_00);
|
|
thread player_blur_reset(param_00);
|
|
}
|
|
|
|
var_01 = randomfloatrange(2,4);
|
|
var_02 = randomfloatrange(0.5,5);
|
|
for(;;)
|
|
{
|
|
if(!level.player maps\_utility::isads())
|
|
{
|
|
thread player_blur_monitor_ads();
|
|
player_blur_non_ads(var_01,var_02);
|
|
continue;
|
|
}
|
|
|
|
thread player_blur_monitor_non_ads();
|
|
player_blur_ads();
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 123
|
|
player_blur_non_ads(param_00,param_01)
|
|
{
|
|
level endon("player_ads");
|
|
setblur(param_00,param_01);
|
|
wait(param_01);
|
|
setblur(0.5,param_01);
|
|
wait(param_01);
|
|
}
|
|
|
|
//Function Number: 124
|
|
player_blur_ads()
|
|
{
|
|
level endon("player_ads");
|
|
setblur(0,0.75);
|
|
wait(0.75);
|
|
}
|
|
|
|
//Function Number: 125
|
|
player_blur_monitor_non_ads()
|
|
{
|
|
level notify("player_ads_end");
|
|
level endon("player_ads_end");
|
|
while(level.player maps\_utility::isads())
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
level notify("player_ads");
|
|
}
|
|
|
|
//Function Number: 126
|
|
player_blur_monitor_ads()
|
|
{
|
|
level notify("player_ads_end");
|
|
level endon("player_ads_end");
|
|
while(!level.player maps\_utility::isads())
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
level notify("player_ads");
|
|
}
|
|
|
|
//Function Number: 127
|
|
player_blur_reset(param_00)
|
|
{
|
|
common_scripts\utility::flag_wait(param_00);
|
|
setblur(0,2);
|
|
}
|
|
|
|
//Function Number: 128
|
|
player_carried_skybridge()
|
|
{
|
|
level.player lightsetforplayer("finale_lobby");
|
|
maps\_utility::vision_set_fog_changes("finale_sky_bridge",0);
|
|
thread maps\finale_lighting::sky_bridge_dof();
|
|
common_scripts\utility::flag_set("second_half_lighting");
|
|
level.player disableweapons();
|
|
level.player setstance("prone");
|
|
level.player allowstand(0);
|
|
level.player allowcrouch(0);
|
|
level.player takeweapon("iw5_titan45finalelobby_sp_xmags");
|
|
level.player giveweapon("iw5_unarmedfinale_nullattach");
|
|
level.player switchtoweapon("iw5_unarmedfinale_nullattach");
|
|
maps\_utility::delaythread(2,::common_scripts\utility::flag_set,"flag_dialogue_carry_scene_02");
|
|
level.gideon maps\_utility::enable_ai_color();
|
|
level notify("sky_bridge_vfx");
|
|
maps\finale_utility::teleport_to_scriptstruct("checkpoint_sky_bridge");
|
|
var_00 = getent("org_player_carried_01","targetname");
|
|
var_01 = getent("org_player_carried_02","targetname");
|
|
var_02 = getent("org_player_carried_03","targetname");
|
|
var_03 = getent("org_player_carried_04","targetname");
|
|
var_04 = getent("org_player_carried_05","targetname");
|
|
var_05 = getent("org_player_carried_06","targetname");
|
|
thread maps\finale_utility::screen_fade_in(1);
|
|
var_06 = 0.5;
|
|
level.player thread maps\finale_utility::screen_fade(1,1,1);
|
|
var_07 = maps\_utility::spawn_anim_model("world_body_damaged");
|
|
maps\finale_drag::drag_player_from_start_to_end(var_00,var_01,level.gideon,var_07,"drag_run01",1);
|
|
level.player maps\finale_utility::screen_fade(1,1,1);
|
|
maps\finale_drag::drag_player_from_start_to_end(var_02,var_03,level.gideon,var_07,"drag_run01",2);
|
|
level.player maps\finale_utility::screen_fade(2,0.5,2);
|
|
maps\finale_drag::drag_player_from_start_to_end(var_00,var_01,level.gideon,var_07,"drag_run04",0.5);
|
|
level.player maps\finale_utility::screen_fade(0.5,1,1);
|
|
maps\finale_drag::drag_player_from_start_to_end(var_02,var_03,level.gideon,var_07,"drag_run02",2);
|
|
level.player maps\finale_utility::screen_fade(2,1,4);
|
|
maps\finale_drag::drag_player_from_start_to_end(var_02,var_03,level.gideon,var_07,"drag_run01",2);
|
|
maps\finale_utility::screen_fade_out(2);
|
|
var_07 delete();
|
|
}
|
|
|
|
//Function Number: 129
|
|
will_room_door_exit()
|
|
{
|
|
var_00 = getent("org_irons_reveal_exit_door","targetname");
|
|
var_01 = maps\_utility::spawn_anim_model("door");
|
|
var_00 thread maps\_anim::anim_first_frame_solo(var_01,"irons_reveal_exit_door");
|
|
common_scripts\utility::flag_wait("flag_will_room_door_exit_open");
|
|
soundscripts\_snd::snd_message("irons_reveal_exit_door_open",var_01);
|
|
var_00 thread maps\_anim::anim_single_solo(var_01,"irons_reveal_exit_door");
|
|
}
|
|
|
|
//Function Number: 130
|
|
irons_rooftop()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_irons_rooftop");
|
|
level.irons = maps\_utility::spawn_targetname("irons",1);
|
|
level.irons.animname = "irons";
|
|
level.irons.name = "";
|
|
level.irons maps\finale_utility::set_custom_patrol_anim_set("unaware");
|
|
level.irons maps\_utility::gun_remove();
|
|
level.irons thread maps\_utility::magic_bullet_shield();
|
|
common_scripts\utility::flag_set("flag_se_irons_end");
|
|
}
|
|
|
|
//Function Number: 131
|
|
razorback_spotlight_init()
|
|
{
|
|
maps\_vehicle::godon();
|
|
maps\_vehicle::mgoff();
|
|
maps\_utility::ent_flag_init("spotlight_on");
|
|
self.spotlight = spawnturret("misc_turret",self gettagorigin("tag_flash"),"heli_spotlight_so_castle");
|
|
self.spotlight setmode("manual");
|
|
self.spotlight setmodel("com_blackhawk_spotlight_on_mg_setup");
|
|
self.spotlight maketurretinoperable();
|
|
self.spotlight makeunusable();
|
|
self.spotlight.angles = self gettagangles("tag_flash");
|
|
self.spotlight linkto(self,"tag_flash",(-16,-119,-28),(-45,0,0));
|
|
thread spotlight_think();
|
|
self setlookatent(level.irons);
|
|
thread razorback_spotlight();
|
|
}
|
|
|
|
//Function Number: 132
|
|
razorback_spotlight()
|
|
{
|
|
common_scripts\utility::flag_wait("flag_razorback_spotlight_on");
|
|
maps\_utility::ent_flag_set("spotlight_on");
|
|
}
|
|
|
|
//Function Number: 133
|
|
spotlight_think()
|
|
{
|
|
self endon("death");
|
|
self notify("stop_helo_spotlight");
|
|
self endon("stop_helo_spotlight");
|
|
thread spotlight_light_motion();
|
|
var_00 = 0;
|
|
for(;;)
|
|
{
|
|
if(!maps\_utility::ent_flag("spotlight_on"))
|
|
{
|
|
if(var_00)
|
|
{
|
|
var_00 = 0;
|
|
stopfxontag(common_scripts\utility::getfx("docks_heli_spotlight"),self.spotlight,"tag_flash");
|
|
stopfxontag(common_scripts\utility::getfx("lab_heli_spot_flare"),self.spotlight,"tag_flash");
|
|
}
|
|
|
|
var_01 = level.player;
|
|
if(isdefined(var_01))
|
|
{
|
|
self.spotlight settargetentity_smoothtracking(var_01);
|
|
}
|
|
|
|
wait(0.2);
|
|
continue;
|
|
}
|
|
|
|
wait(0.5);
|
|
if(!var_00)
|
|
{
|
|
var_00 = 1;
|
|
playfxontag(common_scripts\utility::getfx("docks_heli_spotlight"),self.spotlight,"tag_flash");
|
|
playfxontag(common_scripts\utility::getfx("lab_heli_spot_flare"),self.spotlight,"tag_flash");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 134
|
|
spotlight_light_motion()
|
|
{
|
|
self endon("stop_helo_spotlight");
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
var_00 = undefined;
|
|
if(isdefined(self.override_target))
|
|
{
|
|
self.spotlight settargetentity_smoothtracking(self.override_target);
|
|
while(isdefined(self.override_target))
|
|
{
|
|
wait(0.5);
|
|
}
|
|
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
var_01 = [level.player,level.irons];
|
|
var_00 = level.irons;
|
|
if(isdefined(var_00))
|
|
{
|
|
self.spotlight settargetentity_smoothtracking(var_00);
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_00) && isai(var_00))
|
|
{
|
|
if(!isdefined(var_00) || !isalive(var_00))
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait(0.1);
|
|
continue;
|
|
}
|
|
|
|
wait(randomfloatrange(3,5));
|
|
}
|
|
}
|
|
|
|
//Function Number: 135
|
|
settargetentity_smoothtracking(param_00)
|
|
{
|
|
self.real_target = param_00;
|
|
if(isdefined(param_00))
|
|
{
|
|
if(!isdefined(self.spotlight_target))
|
|
{
|
|
self.spotlight_target = common_scripts\utility::spawn_tag_origin();
|
|
}
|
|
|
|
self.spotlight_target.origin = param_00.origin;
|
|
self.spotlight_target linkto(self);
|
|
self settargetentity(self.spotlight_target);
|
|
}
|
|
}
|
|
|
|
//Function Number: 136
|
|
tff_cleanup_vehicle(param_00)
|
|
{
|
|
var_01 = "";
|
|
switch(param_00)
|
|
{
|
|
case "intro":
|
|
var_01 = "load_middle_transient";
|
|
break;
|
|
|
|
case "middle":
|
|
var_01 = "load_outro_transient";
|
|
break;
|
|
}
|
|
|
|
if(var_01 == "")
|
|
{
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::flag_wait(var_01);
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isremovedentity(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!common_scripts\utility::string_find(self.classname,"corpse"))
|
|
{
|
|
maps\_vehicle_code::_freevehicle();
|
|
}
|
|
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 137
|
|
silo_autosaves()
|
|
{
|
|
level endon("flag_exhaust_hatch_open");
|
|
level.stopwatch = 240;
|
|
var_00 = level.stopwatch * 1000;
|
|
var_01 = gettime();
|
|
var_02 = gettime() - var_01 / 1000;
|
|
var_03 = level.stopwatch - 180;
|
|
thread silo_autosaves_safety(var_02,var_03);
|
|
common_scripts\utility::flag_wait("flag_lower_missile_loader");
|
|
var_02 = gettime() - var_01 / 1000;
|
|
var_03 = level.stopwatch - 120;
|
|
thread silo_autosaves_safety(var_02,var_03);
|
|
common_scripts\utility::flag_wait("flag_se_door_kick_complete");
|
|
var_02 = gettime() - var_01 / 1000;
|
|
var_03 = level.stopwatch - 30;
|
|
thread silo_autosaves_safety(var_02,var_03);
|
|
}
|
|
|
|
//Function Number: 138
|
|
silo_autosaves_safety(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 0;
|
|
}
|
|
|
|
if(param_00 < param_01)
|
|
{
|
|
maps\_utility::autosave_or_timeout("silo_clear",param_01 - param_00);
|
|
if(param_02)
|
|
{
|
|
wait(3);
|
|
}
|
|
else
|
|
{
|
|
wait(10);
|
|
}
|
|
|
|
common_scripts\utility::flag_clear("can_save");
|
|
wait(2);
|
|
common_scripts\utility::flag_set("can_save");
|
|
}
|
|
}
|
|
|
|
//Function Number: 139
|
|
rope_link(param_00,param_01,param_02,param_03)
|
|
{
|
|
var_04 = param_00 gettagorigin(param_01);
|
|
var_05 = spawn("script_model",var_04);
|
|
var_05 setmodel("rope1ft_2j");
|
|
var_05 useanimtree(#animtree);
|
|
var_05 setanim(%rope_base,1,0);
|
|
var_05 setanim(%rope_length,1,0);
|
|
var_05 linkto(param_00,param_01);
|
|
var_05 setlookattarget(param_02,"bone",param_03);
|
|
for(;;)
|
|
{
|
|
var_06 = param_00 gettagorigin(param_01);
|
|
var_07 = param_02 gettagorigin(param_03);
|
|
var_08 = var_07 - var_06;
|
|
var_09 = length(var_08);
|
|
var_0A = var_09 - 12 / 88;
|
|
if(var_0A < 0)
|
|
{
|
|
var_0A = 0;
|
|
}
|
|
|
|
var_05 setanim(%rope_length_add,var_0A,0);
|
|
if(level common_scripts\utility::flag("flag_intro_flyin_release"))
|
|
{
|
|
var_05 clearlookattarget();
|
|
var_05 delete();
|
|
return;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
} |