IL-GSC/AW/PC/maps/finale_utility.gsc
InfinityLoader b2389dbcb9 Full AW Dump
2024-04-22 02:38:24 -04:00

2055 lines
44 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: finale_utility.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 87
* Decompile Time: 1283 ms
* Timestamp: 4/22/2024 2:29:29 AM
*******************************************************************/
//Function Number: 1
teleport_to_scriptstruct(param_00)
{
var_01 = common_scripts\utility::getstruct(param_00,"script_noteworthy");
level.player setorigin(var_01.origin);
if(isdefined(var_01.angles))
{
level.player setplayerangles(var_01.angles);
}
var_02 = getentarray("hero","script_noteworthy");
foreach(var_04 in var_02)
{
if(isspawner(var_04))
{
var_02 = common_scripts\utility::array_remove(var_02,var_04);
}
}
var_06 = common_scripts\utility::getstructarray(var_01.target,"targetname");
for(var_07 = 0;var_07 < var_02.size;var_07++)
{
if(var_07 < var_06.size)
{
var_02[var_07] forceteleport(var_06[var_07].origin,var_06[var_07].angles);
var_02[var_07] setgoalpos(var_06[var_07].origin);
continue;
}
var_02[var_07] forceteleport(level.player.origin,level.player.angles);
var_02[var_07] setgoalpos(level.player.origin);
}
}
//Function Number: 2
spawn_metrics_init()
{
level.spawn_metrics_spawn_count = [];
level.spawn_metrics_death_count = [];
maps\_utility::add_global_spawn_function("axis",::spawn_metrics_spawn_func);
foreach(var_01 in getaiarray("axis"))
{
if(!isspawner(var_01) && isalive(var_01))
{
var_01 spawn_metrics_spawn_func();
}
}
}
//Function Number: 3
spawn_metrics_spawn_func()
{
if(!isai(self))
{
return;
}
if(isdefined(self.script_noteworthy))
{
if(isdefined(level.spawn_metrics_spawn_count[self.script_noteworthy]))
{
level.spawn_metrics_spawn_count[self.script_noteworthy] = level.spawn_metrics_spawn_count[self.script_noteworthy] + 1;
}
else
{
level.spawn_metrics_spawn_count[self.script_noteworthy] = 1;
}
thread spawn_metrics_death_watcher();
}
}
//Function Number: 4
spawn_metrics_death_watcher()
{
var_00 = self.script_noteworthy;
self waittill("death");
if(isdefined(level.spawn_metrics_death_count[var_00]))
{
level.spawn_metrics_death_count[var_00] = level.spawn_metrics_death_count[var_00] + 1;
return;
}
level.spawn_metrics_death_count[var_00] = 1;
}
//Function Number: 5
spawn_metrics_number_spawned(param_00)
{
if(isarray(param_00))
{
var_01 = 0;
foreach(var_03 in param_00)
{
var_01 = var_01 + spawn_metrics_number_spawned(var_03);
}
return var_01;
}
if(isdefined(level.spawn_metrics_spawn_count[var_04]))
{
return level.spawn_metrics_spawn_count[var_04];
}
return 0;
}
//Function Number: 6
spawn_metrics_number_died(param_00)
{
if(isarray(param_00))
{
var_01 = 0;
foreach(var_03 in param_00)
{
var_01 = var_01 + spawn_metrics_number_died(var_03);
}
return var_01;
}
if(isdefined(level.spawn_metrics_death_count[var_04]))
{
return level.spawn_metrics_death_count[var_04];
}
return 0;
}
//Function Number: 7
spawn_metrics_number_alive(param_00)
{
return spawn_metrics_number_spawned(param_00) - spawn_metrics_number_died(param_00);
}
//Function Number: 8
spawn_metrics_waittill_count_reaches(param_00,param_01,param_02)
{
if(!isarray(param_01))
{
param_01 = [param_01];
}
waittillframeend;
for(;;)
{
var_03 = 0;
foreach(var_05 in param_01)
{
var_03 = var_03 + spawn_metrics_number_alive(var_05);
}
if(var_03 <= param_00)
{
break;
}
wait(1);
}
}
//Function Number: 9
spawn_metrics_waittill_deaths_reach(param_00,param_01,param_02)
{
if(!isarray(param_01))
{
param_01 = [param_01];
}
for(;;)
{
var_03 = 0;
foreach(var_05 in param_01)
{
var_03 = var_03 + spawn_metrics_number_died(var_05);
}
if(var_03 >= param_00)
{
break;
}
wait(1);
}
}
//Function Number: 10
delete_spawners(param_00)
{
if(!isarray(param_00))
{
param_00 = [param_00];
}
foreach(var_02 in param_00)
{
foreach(var_04 in getentarray(var_02,"script_noteworthy"))
{
if(isspawner(var_04))
{
var_04 delete();
}
}
}
}
//Function Number: 11
cleanup_ai_with_script_noteworthy(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = 512;
}
var_02 = [];
foreach(var_04 in getentarray(param_00,"script_noteworthy"))
{
if(isspawner(var_04))
{
var_04 delete();
continue;
}
var_02[var_02.size] = var_04;
}
thread maps\_utility::ai_delete_when_out_of_sight(var_02,param_01);
}
//Function Number: 12
waittill_notify_func(param_00,param_01,param_02,param_03)
{
self waittill(param_00);
if(isdefined(param_03))
{
self [[ param_01 ]](param_02,param_03);
return;
}
if(isdefined(param_02))
{
self [[ param_01 ]](param_02);
return;
}
self [[ param_01 ]]();
}
//Function Number: 13
player_animated_sequence_restrictions(param_00)
{
if(isdefined(param_00) && param_00)
{
level.player waittill("notify_player_animated_sequence_restrictions");
}
level.player.disablereload = 1;
level.player disableweapons();
level.player disableoffhandweapons();
level.player disableweaponswitch();
level.player allowcrouch(0);
level.player allowjump(0);
level.player allowmelee(0);
level.player allowprone(0);
level.player allowsprint(0);
}
//Function Number: 14
load_mech()
{
mech_player_anims();
mech_generic_human();
mech_script_models();
mech_fx();
}
//Function Number: 15
mech_player_anims()
{
level.scr_animtree["mech_viewmodel"] = #animtree;
level.scr_model["mech_viewmodel"] = "viewhands_player_pmc";
level.scr_anim["mech_viewmodel"]["mech_enable"] = %cap_playermech_getinto_mech_vm;
maps\_anim::addnotetrack_notify("mech_viewmodel","enable_mech","notify_mech_enable","mech_enable");
}
//Function Number: 16
mech_generic_human()
{
level.scr_animtree["mech_player_rig"] = #animtree;
level.scr_anim["mech_player_rig"]["mech_run_through"] = %cap_playermech_run_through_mech_short;
level.scr_model["mech_player_rig"] = "worldhands_playermech";
level.scr_animtree["mech_suit_top"] = #animtree;
level.scr_model["mech_suit_top"] = "playermech_animated_model_top";
level.scr_anim["mech_suit_top"]["mech_enable"] = %cap_playermech_getinto_mech_mech;
level.scr_animtree["mech_suit_bottom"] = #animtree;
level.scr_model["mech_suit_bottom"] = "playermech_animated_model_btm";
level.scr_anim["mech_suit_bottom"]["mech_enable"] = %cap_playermech_getinto_mech_mech;
level.scr_anim["generic"]["explode_death"] = %death_explosion_run_f_v2;
}
//Function Number: 17
mech_script_models()
{
level.scr_animtree["mb_wall_1"] = #animtree;
level.scr_anim["mb_wall_1"]["mech_run_through"] = %cap_playermech_run_through_prop_short;
level.scr_model["mb_wall_1"] = "cap_playermech_breakable_wall";
}
//Function Number: 18
mech_fx()
{
}
//Function Number: 19
mech_setup()
{
setsaveddvar("mechSpeed",350);
setsaveddvar("mechAcceleration",3.25);
setsaveddvar("mechAirAcceleration",0.23);
setsaveddvar("player_sprintSpeedScale",1.6);
if(level.player adsbuttonpressed() || getdvar("quickmech") == "1")
{
thread mech_enable();
}
}
//Function Number: 20
mech_enable(param_00,param_01)
{
level.damage_multiplier_mod = 0.13;
level.mech_swarm_rocket_max_targets = 6;
level.mech_swarm_rocket_dud_min_count = 2;
level.mech_swarm_rocket_dud_max_count = 3;
level.mech_swarm_skip_line_of_sight_obstruction_test = 0;
level.player maps\_playermech_code::playermech_start("base",param_01,param_00,"vm_view_arms_mech","vm_view_arms_mech");
setsaveddvar("mechStandHeight",71);
setsaveddvar("mechBarrelSpinAnim","s1_playermech_barrel_spin");
}
//Function Number: 21
mech_enable_switch_exhaust_version(param_00,param_01)
{
level.player notify("kill_think_player_blast_walk_anims");
level.player.blast_anim_set = undefined;
level.player takeweapon("playermech_auto_cannon_finale");
level.player giveweapon("playermech_auto_cannon_finale_exhaust");
level.player switchtoweaponimmediate("playermech_auto_cannon_finale_exhaust");
setsaveddvar("mechBarrelSpinAnim","s1_blast_gun_up_playermech_barrel_spin");
level.player.mechdata.weapon_names["mech_base_weapon"] = "playermech_auto_cannon_finale_exhaust";
level.player maps\_playermech_code::playermech_start("base",param_00,param_01,"vm_view_arms_mech","vm_view_arms_mech");
}
//Function Number: 22
goto_node(param_00,param_01,param_02)
{
self endon("stop_goto_node");
if(!isdefined(param_02))
{
param_02 = 16;
}
maps\_utility::set_goal_radius(param_02);
if(isstring(param_00))
{
var_03 = getnode(param_00,"script_noteworthy");
}
else
{
var_03 = param_01;
}
if(isdefined(var_03))
{
maps\_utility::set_goal_node(var_03);
}
else
{
var_03 = common_scripts\utility::getstruct(param_00,"script_noteworthy");
maps\_utility::set_goal_pos(var_03.origin);
}
if(param_01)
{
self waittill("goal");
}
}
//Function Number: 23
screen_fade_out(param_00)
{
level notify("new_screen_fade");
level endon("new_screen_fade");
if(!isdefined(param_00))
{
param_00 = 1;
}
if(!isdefined(level.black_screen))
{
create_black_screen();
}
setblur(10,param_00);
if(param_00 > 0)
{
level.black_screen.alpha = 0;
level.black_screen fadeovertime(param_00);
}
level.black_screen.alpha = 1;
wait(param_00);
}
//Function Number: 24
screen_fade_in(param_00)
{
level notify("new_screen_fade");
level endon("new_screen_fade");
if(!isdefined(param_00))
{
param_00 = 1;
}
if(!isdefined(level.black_screen))
{
create_black_screen();
}
setblur(0,param_00);
if(param_00 > 0)
{
level.black_screen.alpha = 1;
level.black_screen fadeovertime(param_00);
}
level.black_screen.alpha = 0;
wait(param_00);
}
//Function Number: 25
create_black_screen()
{
level.black_screen = newhudelem();
level.black_screen.x = 0;
level.black_screen.y = 0;
level.black_screen.alpha = 0;
level.black_screen.horzalign = "fullscreen";
level.black_screen.vertalign = "fullscreen";
level.black_screen.foreground = 1;
level.black_screen setshader("black",640,480);
}
//Function Number: 26
screen_fade(param_00,param_01,param_02)
{
if(!isdefined(param_00))
{
param_00 = 1;
}
if(!isdefined(param_01))
{
param_01 = 1;
}
if(!isdefined(param_02))
{
param_02 = 0;
}
thread screen_fade_out(param_00);
wait(param_02 + param_00);
thread screen_fade_in(param_01);
}
//Function Number: 27
set_custom_patrol_anim_set(param_00)
{
set_custom_run_anim(param_00);
self allowedstances("stand");
self.oldcombatmode = self.combatmode;
self.combatmode = "no_cover";
maps\_utility::disable_cqbwalk();
}
//Function Number: 28
set_custom_run_anim(param_00)
{
var_01 = undefined;
var_02 = undefined;
if(isdefined(level.scr_anim["generic"]["patrol_walk_" + param_00]))
{
var_01 = "patrol_walk_" + param_00;
}
if(isdefined(level.scr_anim["generic"]["patrol_walk_weights_" + param_00]))
{
var_02 = "patrol_walk_weights_" + param_00;
}
maps\_utility::set_generic_run_anim_array(var_01,var_02,1);
if(isdefined(level.scr_anim["generic"]["patrol_idle_" + param_00]))
{
var_03 = "patrol_idle_" + param_00;
maps\_utility::set_generic_idle_anim(var_03);
}
if(isdefined(level.scr_anim["generic"]["patrol_transin_" + param_00]))
{
self.customarrivalfunc = ::custom_idle_trans_function;
self.startidletransitionanim = level.scr_anim["generic"]["patrol_transin_" + param_00];
}
if(isdefined(level.scr_anim["generic"]["patrol_transout_" + param_00]))
{
self.permanentcustommovetransition = 1;
self.custommovetransition = ::animscripts\cover_arrival::custommovetransitionfunc;
self.startmovetransitionanim = level.scr_anim["generic"]["patrol_transout_" + param_00];
}
}
//Function Number: 29
custom_idle_trans_function()
{
if(!isdefined(self.startidletransitionanim))
{
return;
}
var_00 = self.approachnumber;
var_01 = self.startidletransitionanim;
if(!isdefined(self.heat))
{
thread animscripts\cover_arrival::abortapproachifthreatened();
}
self clearanim(%body,0.2);
self setflaggedanimrestart("coverArrival",var_01,1,0.2,self.movetransitionrate);
animscripts\face::playfacialanim(var_01,"run");
animscripts\shared::donotetracks("coverArrival",::animscripts\cover_arrival::handlestartaim);
var_02 = level.arrivalendstance[self.approachtype];
if(isdefined(var_02))
{
self.a.pose = var_02;
}
self.a.movement = "stop";
self.a.arrivaltype = self.approachtype;
self clearanim(%root,0.3);
self.lastapproachaborttime = undefined;
var_03 = self.origin - self.goalpos;
}
//Function Number: 30
disable_grenades()
{
if(isdefined(self.grenadeammo) && !isdefined(self.oldgrenadeammo))
{
self.oldgrenadeammo = self.grenadeammo;
}
self.grenadeammo = 0;
}
//Function Number: 31
enable_grenades()
{
if(isdefined(self.oldgrenadeammo))
{
self.grenadeammo = self.oldgrenadeammo;
self.oldgrenadeammo = undefined;
}
}
//Function Number: 32
angles_and_origin(param_00)
{
if(isdefined(param_00.origin))
{
self.origin = param_00.origin;
}
if(isdefined(param_00.angles))
{
self.angles = param_00.angles;
}
}
//Function Number: 33
spawn_tag_origin_monitor(param_00)
{
if(!isdefined(level.monitored_tag_origins))
{
level.monitored_tag_origins = [];
}
var_01 = common_scripts\utility::spawn_tag_origin();
var_01 angles_and_origin(self);
if(isdefined(param_00))
{
var_01.tag_idx = param_00;
}
level.monitored_tag_origins[level.monitored_tag_origins.size] = var_01;
level.monitored_tag_origins = common_scripts\utility::array_removeundefined(level.monitored_tag_origins);
iprintln(level.monitored_tag_origins.size);
return var_01;
}
//Function Number: 34
mech_glass_damage_think(param_00)
{
level endon(param_00);
for(;;)
{
if(isdefined(self))
{
glassradiusdamage(self.origin,72,1000,100);
}
wait(0.05);
}
}
//Function Number: 35
setstencilstate(param_00)
{
self hudoutlineenable(6,1);
}
//Function Number: 36
clearstencilstate()
{
if(isdefined(self))
{
self hudoutlinedisable();
self hudoutlineenable(0,0);
self hudoutlinedisable();
setsaveddvar("r_hudoutlinewidth",1);
}
}
//Function Number: 37
player_looking_in_direction_2d(param_00,param_01,param_02,param_03)
{
if(!isdefined(param_01))
{
param_01 = 0.8;
}
var_04 = maps\_utility::get_player_from_self();
var_05 = var_04 geteye();
var_06 = vectortoangles(param_00 - var_05);
var_07 = anglestoforward(var_06);
var_08 = var_04 getplayerangles();
var_09 = anglestoforward(var_08);
var_07 = vectornormalize((var_07[0],var_07[1],0));
var_09 = vectornormalize((var_09[0],var_09[1],0));
var_0A = vectordot(var_07,var_09);
if(var_0A < param_01)
{
return 0;
}
if(isdefined(param_02))
{
return 1;
}
var_0B = bullettrace(param_00,var_05,0,param_03);
return var_0B["fraction"] == 1;
}
//Function Number: 38
enable_takedown_hint(param_00,param_01,param_02,param_03,param_04)
{
self notify("enable_takedown_hint_called");
self endon("enable_takedown_hint_called");
var_05 = undefined;
var_06 = undefined;
if(isdefined(param_04))
{
var_06 = gettime() + param_04 * 1000;
}
if(isdefined(param_01))
{
var_05 = param_01 * param_01;
}
if(!isdefined(level.melee_hint_displayed))
{
level.melee_hint_displayed = 0;
}
if(!common_scripts\utility::flag_exist("flag_disable_takedown_hint"))
{
common_scripts\utility::flag_init("flag_disable_takedown_hint");
}
else
{
common_scripts\utility::flag_clear("flag_disable_takedown_hint");
}
level.melee_pressed = 0;
level.should_display_melee_hint = 0;
while(!level.melee_pressed)
{
if(common_scripts\utility::flag("flag_disable_takedown_hint") || isdefined(var_06) && gettime() > var_06)
{
if(level.melee_hint_displayed)
{
level.should_display_melee_hint = 0;
}
common_scripts\utility::flag_clear("flag_disable_takedown_hint");
return;
}
var_07 = distance2dsquared(param_00.origin,level.player.origin);
if(level.melee_hint_displayed)
{
if(isdefined(var_05) && var_07 > var_05 + 10)
{
level.should_display_melee_hint = 0;
}
if(isdefined(level._cloaked_stealth_settings) && isdefined(level._cloaked_stealth_settings.playing_view_model_cloak_toggle_anim) && level._cloaked_stealth_settings.playing_view_model_cloak_toggle_anim == 1)
{
level.should_display_melee_hint = 0;
}
if(isdefined(param_02) && param_02)
{
var_08 = param_00 geteye();
var_09 = 0.9;
if(!level.player player_looking_in_direction_2d(var_08,var_09,1))
{
level.should_display_melee_hint = 0;
}
}
continue;
}
if(!isdefined(var_05) || var_07 <= var_05)
{
var_0A = 1;
if(isdefined(level._cloaked_stealth_settings) && isdefined(level._cloaked_stealth_settings.playing_view_model_cloak_toggle_anim) && level._cloaked_stealth_settings.playing_view_model_cloak_toggle_anim == 1)
{
var_0A = 0;
}
if(isdefined(param_02) && param_02)
{
var_08 = param_00 geteye();
var_09 = 0.9;
if(!level.player player_looking_in_direction_2d(var_08,var_09,1))
{
var_0A = 0;
}
}
if(var_0A)
{
level.should_display_melee_hint = 1;
level.melee_hint_displayed = 1;
level.player allowmelee(0);
level.takedown_button = param_00 maps\_shg_utility::hint_button_tag("melee","J_SpineUpper");
maps\_utility::hintdisplaymintimehandler("takedown_hint",undefined);
}
}
wait(0.05);
}
self notify("player_completed_takedown");
common_scripts\utility::flag_set(param_03);
}
//Function Number: 39
takedown_hint_off()
{
var_00 = 0;
if(level.player meleebuttonpressed())
{
level.melee_pressed = 1;
var_00 = 1;
}
if(!level.should_display_melee_hint)
{
if(!isdefined(level.player.disable_melee))
{
level.player allowmelee(1);
}
var_00 = 1;
}
if(var_00)
{
level.melee_hint_displayed = 0;
if(isdefined(level.takedown_button))
{
level.takedown_button maps\_shg_utility::hint_button_clear();
}
return 1;
}
return 0;
}
//Function Number: 40
tackle_handle_hint_display()
{
if(common_scripts\utility::flag("flag_balcony_tackle_too_late") || common_scripts\utility::flag("flag_balcony_tackle_started"))
{
return 1;
}
return 0;
}
//Function Number: 41
process_stab_finale_scene(param_00,param_01,param_02,param_03,param_04)
{
common_scripts\utility::flag_clear("flag_stop_display_melee_hint");
level.player endon("flag_stop_display_melee_hint");
common_scripts\utility::flag_clear("flag_button_melee_success");
if(!common_scripts\utility::flag_exist("flag_final_melee_pressed"))
{
common_scripts\utility::flag_init("flag_final_melee_pressed");
}
common_scripts\utility::flag_clear("flag_final_melee_pressed");
var_05 = 0;
if(isdefined(param_03))
{
wait(param_03);
}
var_06 = param_00 maps\_shg_utility::hint_button_tag("melee",param_01);
var_06.fontscale = 2;
var_06 thread final_scene_handle_melee_hint();
common_scripts\utility::flag_wait_or_timeout("flag_final_melee_pressed",param_02);
if(common_scripts\utility::flag("flag_final_melee_pressed"))
{
if(param_01 == "J_Wrist_RI")
{
soundscripts\_snd::snd_message("finale_ending_qte1_success");
}
else
{
soundscripts\_snd::snd_message("finale_ending_qte2_success");
}
common_scripts\utility::flag_set("flag_button_melee_success");
if(isdefined(param_04))
{
param_00 maps\_utility::anim_stopanimscripted();
level.irons maps\_utility::anim_stopanimscripted();
return;
}
return;
}
if(param_01 == "J_Wrist_RI")
{
soundscripts\_snd::snd_message("finale_ending_qte1_timeout");
return;
}
soundscripts\_snd::snd_message("finale_ending_qte2_timeout");
}
//Function Number: 42
final_scene_handle_melee_hint()
{
var_00 = 0;
common_scripts\utility::flag_clear("flag_final_melee_pressed");
while(!common_scripts\utility::flag("flag_stop_display_melee_hint"))
{
if(level.player meleebuttonpressed())
{
if(!common_scripts\utility::flag("flag_stop_display_melee_hint"))
{
common_scripts\utility::flag_set("flag_final_melee_pressed");
}
break;
}
wait 0.05;
}
var_00 = 1;
level.melee_hint_displayed = 0;
if(isdefined(self))
{
maps\_shg_utility::hint_button_clear();
}
}
//Function Number: 43
process_buttonmash_finale_scene(param_00,param_01,param_02,param_03)
{
param_00 endon("end_process_buttonmash");
common_scripts\utility::flag_clear("flag_xbutton_mash_end");
level.player.buttonmash_decay_per_frame = 0.1;
level.player.buttonmash_value = 0;
level.player.buttonmash_add_per_press = 0.2;
level.player notifyonplayercommand("x_pressed","+usereload");
level.player notifyonplayercommand("x_pressed","+activate");
param_00 thread maps\_shg_utility::hint_button_create_flashing(param_01,"x","end_process_buttonmash",(0,0,0),35,300,2);
var_04 = 0;
var_05 = 30;
while(var_04 < var_05)
{
if(level.player usebuttonpressed())
{
soundscripts\_snd::snd_message("finale_ending_buttonmash_start");
break;
}
var_04 = var_04 + 1;
wait 0.05;
}
if(var_04 >= var_05)
{
param_00 thread process_buttonmash_handle_fail(param_03);
}
childthread buttonmash_monitor(param_03,param_00);
common_scripts\utility::flag_wait("flag_xbutton_mash_end");
level.player notifyonplayercommandremove("x_pressed","+usereload");
level.player notifyonplayercommandremove("x_pressed","+activate");
param_00 notify("end_process_buttonmash");
}
//Function Number: 44
buttonmash_monitor(param_00,param_01)
{
level notify("notify_buttonmash_monitor_reset");
level endon("notify_buttonmash_monitor_reset");
level.player.buttonmash_value = 0;
while(!common_scripts\utility::flag("flag_xbutton_mash_end"))
{
childthread buttonmash_decay(param_00,param_01);
level.player common_scripts\utility::waittill_any("x_pressed","b_pressed","a_pressed");
level.player.buttonmash_value = level.player.buttonmash_value + level.player.buttonmash_add_per_press;
wait 0.05;
}
level notify("notify_buttonmash_decay_stop");
}
//Function Number: 45
buttonmash_decay(param_00,param_01)
{
level notify("notify_buttonmash_decay_stop");
level endon("notify_buttonmash_decay_stop");
var_02 = 0;
var_03 = 30;
while(var_02 < var_03)
{
if(level.player.buttonmash_value > 0)
{
level.player.buttonmash_value = level.player.buttonmash_value - level.player.buttonmash_decay_per_frame;
}
var_02 = var_02 + 1;
wait 0.05;
}
param_01 thread process_buttonmash_handle_fail(param_00);
}
//Function Number: 46
process_buttonmash_handle_hint()
{
if(common_scripts\utility::flag("flag_xbutton_mash_end") || common_scripts\utility::flag("missionfailed") || level.player usebuttonpressed())
{
return 1;
}
return 0;
}
//Function Number: 47
process_buttonmash_handle_fail(param_00)
{
soundscripts\_snd::snd_message("finale_ending_buttonmash_fail");
common_scripts\utility::flag_set("flag_xbutton_mash_end");
level.player lightsetforplayer("finale_hang_fail");
self notify("end_process_buttonmash");
level notify("audio_finale_qte_fail");
thread maps\finale_fx::vfx_irons_fail_fall();
var_01 = [self,level.irons];
param_00 maps\_anim::anim_single(var_01,"balcony_finale_pt3_fail");
setdvar("ui_deadquote","");
maps\_utility::missionfailedwrapper();
}
//Function Number: 48
chase_timer_countdown(param_00,param_01)
{
level notify("chase_timer_countdown_stop");
level endon("chase_timer_countdown_stop");
common_scripts\utility::flag_wait_or_timeout("flag_irons_escaped",param_00);
if(param_01 == &"FINALE_FAILED_MISSILE_LAUNCH")
{
level.player showhud();
level.player setclientomnvar("ui_playermech_hud",0);
setsaveddvar("cg_drawCrosshair",0);
}
setdvar("ui_deadquote",param_01);
maps\_utility::missionfailedwrapper();
}
//Function Number: 49
chase_timer_cancel()
{
level notify("chase_timer_countdown_stop");
}
//Function Number: 50
sprint_hint_reminder()
{
while(!common_scripts\utility::flag("flag_player_passed_door"))
{
if(!level.player issprinting())
{
thread maps\_utility::hintdisplayhandler("player_input_sprint_hint");
}
wait 0.05;
}
}
//Function Number: 51
player_input_sprint()
{
if(level.player issprinting() || level.player issprintsliding() || common_scripts\utility::flag("missionfailed"))
{
return 1;
}
return 0;
}
//Function Number: 52
player_chase_speed_control()
{
level endon("missionfailed");
var_00 = 1;
var_01 = 0.8;
var_02 = 0.5;
level.too_close_distance = 180;
var_03 = level.too_close_distance + 80;
common_scripts\utility::flag_set("flag_player_speed_control_on");
level.player setmovespeedscale(var_00);
while(common_scripts\utility::flag("flag_player_speed_control_on"))
{
if(distance(level.player.origin,level.irons.origin) < level.too_close_distance)
{
while(var_00 >= var_01 && distance(level.player.origin,level.irons.origin) < level.too_close_distance && common_scripts\utility::flag("flag_player_speed_control_on"))
{
var_00 = var_00 - 0.05;
level.player setmovespeedscale(var_00);
wait(var_02);
}
while(distance(level.player.origin,level.irons.origin) < var_03 && common_scripts\utility::flag("flag_player_speed_control_on"))
{
wait 0.05;
}
while(var_00 < 1 && distance(level.player.origin,level.irons.origin) < level.too_close_distance & common_scripts\utility::flag("flag_player_speed_control_on"))
{
var_00 = var_00 + 0.05;
level.player setmovespeedscale(var_00);
wait(var_02);
}
if(var_00 > 1)
{
var_00 = 1;
level.player setmovespeedscale(var_00);
}
}
wait 0.05;
}
level.player setmovespeedscale(1);
}
//Function Number: 53
lowering_door_think(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = getent(param_01,"targetname");
var_07 = getent(param_02,"targetname");
param_03 = getent(param_03,"targetname");
thread lowering_door_slide_hint();
if(isdefined(param_04))
{
common_scripts\utility::flag_wait(param_04);
}
var_07 linkto(var_06);
soundscripts\_snd::snd_message("irons_chase_door_close",var_06);
var_06 move_door_to_position(param_03.origin,param_00,undefined,undefined,param_05);
if(!common_scripts\utility::flag("flag_player_passed_door"))
{
chase_timer_cancel();
setdvar("ui_deadquote",&"FINALE_FAILED_IRONS_CHASE");
maps\_utility::missionfailedwrapper();
}
}
//Function Number: 54
move_door_to_position(param_00,param_01,param_02,param_03,param_04)
{
self endon("death");
if(isdefined(param_04))
{
param_04 = getent(param_04,"targetname");
}
var_05 = distance(param_00,self.origin);
var_06 = 0;
var_07 = self.origin;
while(var_06 < var_05)
{
var_08 = getlerpfraction(self.origin,param_00,param_01,param_02);
if(var_08 == 0)
{
break;
}
self.origin = vectorlerp(self.origin,param_00,var_08);
if(isdefined(param_03))
{
self.angles = self.angles + param_03;
}
var_06 = distance(self.origin,var_07);
if(isdefined(param_04))
{
var_09 = 0;
while(level.player istouching(param_04))
{
var_09 = var_09 + 1;
if(var_09 == 30)
{
level.player kill();
break;
}
wait 0.05;
}
}
wait(0.05);
}
level notify("lerp_complete");
}
//Function Number: 55
getlerpfraction(param_00,param_01,param_02,param_03)
{
var_04 = distance(param_00,param_01);
if(param_02 == 0 || var_04 == 0)
{
return 0;
}
var_05 = param_02 / var_04 * 0.05;
if(var_05 > 0)
{
return var_05;
}
return 0;
}
//Function Number: 56
lowering_door_slide_hint()
{
self notify("slide_hint");
self endon("slide_hint");
var_00 = getent("vol_door_slide_reminder","targetname");
while(!common_scripts\utility::flag("flag_player_passed_door"))
{
if(level.player istouching(var_00))
{
thread maps\_utility::hintdisplayhandler("player_input_slide_button");
}
wait 0.05;
}
}
//Function Number: 57
player_input_slide_under_door()
{
if(common_scripts\utility::flag("flag_player_passed_door") || common_scripts\utility::flag("missionfailed"))
{
return 1;
}
return 0;
}
//Function Number: 58
build_new_view_matrix(param_00)
{
var_01 = anglestoright(self.angles);
var_02 = vectorcross(param_00,var_01);
var_03 = axistoangles(param_00,var_01,var_02);
return var_03;
}
//Function Number: 59
get_goal_angles_ramped_given_viewdir(param_00,param_01,param_02,param_03,param_04)
{
var_05 = anglestoforward(param_00);
var_06 = 1;
if(gettime() < param_03)
{
var_06 = gettime() - param_02 / param_03 - param_02;
}
if(isdefined(param_04) && var_06 > param_04)
{
var_06 = param_04;
}
var_07 = 1 - var_06;
param_01 = var_06 * param_01 + var_07 * var_05;
var_08 = build_new_view_matrix(param_01);
return var_08;
}
//Function Number: 60
rotate_camera_to_see_ent(param_00,param_01,param_02,param_03)
{
self.target_entity = param_00;
var_04 = self.target_entity.origin - self.origin;
var_05 = vectornormalize(var_04);
rotate_camera_to_internal(var_05,param_01,param_02,1,param_03);
}
//Function Number: 61
rotate_camera_to_offset_angles(param_00,param_01,param_02,param_03,param_04)
{
var_05 = (param_00,param_01,param_02);
var_06 = combineangles(self.angles,var_05);
var_07 = anglestoforward(var_06);
var_07 = vectornormalize(var_07);
rotate_camera_to_internal(var_07,param_03,param_04);
}
//Function Number: 62
rotate_camera_to_match_ent(param_00,param_01,param_02)
{
var_03 = anglestoforward(param_00.angles);
var_04 = vectornormalize(var_03);
rotate_camera_to_internal(var_04,param_01,param_02,1);
}
//Function Number: 63
rotate_camera_to_internal(param_00,param_01,param_02,param_03,param_04)
{
var_05 = self.angles;
var_06 = gettime();
var_07 = gettime() + param_02 * 1000;
var_08 = gettime() + param_01 * 1000;
if(!isdefined(param_03))
{
param_03 = 0;
}
while(gettime() <= var_08)
{
var_09 = get_goal_angles_ramped_given_viewdir(var_05,param_00,var_06,var_07,param_04);
iprintln(var_09);
self unlink();
self.angles = var_09;
self linkto(level.player.drivingvehicle);
thread maps\_shg_debug::draw_axis(self.origin,var_09,10);
wait 0.05;
if(param_03)
{
var_0A = self.target_entity.origin - self.origin;
param_00 = vectornormalize(var_0A);
}
}
}
//Function Number: 64
camera_sway_tuning()
{
level.values[0] = 0.2;
level.values[1] = 4.1;
level.values[2] = 0.56;
level.values[3] = 2;
level.values[4] = 0.95;
level.values[5] = 0;
level.values[6] = 0;
level.values[7] = 0.4;
level.values[8] = 0.1;
level.values[9] = 0.1;
var_00[0] = "scalePitch";
var_00[1] = "scaleyaw";
var_00[2] = "scaleroll";
var_00[3] = "duration";
var_00[4] = "durationfadeup";
var_00[5] = "durationfadedown";
var_00[6] = "radius";
var_00[7] = "frequencypitch";
var_00[8] = "frequencyyaw";
var_00[9] = "frequencyroll";
var_01 = 0;
var_02 = 0;
for(;;)
{
if(level.player buttonpressed("DPAD_LEFT"))
{
var_01++;
if(var_01 >= var_00.size)
{
var_01 = 0;
}
var_02 = 1;
wait(0.5);
}
else if(level.player buttonpressed("DPAD_RIGHT"))
{
var_01--;
if(var_01 < 0)
{
var_01 = var_00.size - 1;
}
var_02 = 1;
wait(0.5);
}
else if(level.player buttonpressed("DPAD_UP"))
{
level.values[var_01] = level.values[var_01] + 0.05;
var_02 = 1;
}
else if(level.player buttonpressed("DPAD_DOWN"))
{
level.values[var_01] = level.values[var_01] - 0.05;
var_02 = 1;
}
if(var_02)
{
var_03 = var_00[var_01] + "(" + level.values[var_01] + ") ";
iprintln(var_03);
var_02 = 0;
}
wait 0.05;
}
}
//Function Number: 65
boat_bobbing_think(param_00)
{
level endon("boat_scene_cleanup");
self endon("death");
if(!isdefined(param_00))
{
param_00 = common_scripts\utility::get_target_ent();
param_00 linkto(self);
}
maps\_utility::ent_flag_init("flag_big_bobbing");
for(;;)
{
var_01 = boat_scene_small_bob_settings();
maps\_bobbing_boats::prep_bobbing([self],::maps\_bobbing_boats::bobbingobject,var_01,0);
thread maps\_bobbing_boats::start_bobbing_single(randomfloatrange(0,1));
maps\_utility::ent_flag_wait("flag_big_bobbing");
var_01 = boat_scene_big_bob_settings();
maps\_bobbing_boats::prep_bobbing([self],::maps\_bobbing_boats::bobbingobject,var_01,0);
thread maps\_bobbing_boats::start_bobbing_single(randomfloatrange(0,1));
maps\_utility::ent_flag_waitopen("flag_big_bobbing");
}
}
//Function Number: 66
boat_scene_small_bob_settings()
{
var_00 = spawnstruct();
var_00.max_pitch = 3;
var_00.min_pitch_period = 3;
var_00.max_pitch_period = 6;
var_00.max_yaw = 6;
var_00.min_yaw_period = 3;
var_00.max_yaw_period = 6;
var_00.max_roll = 6;
var_00.min_roll_period = 3;
var_00.max_roll_period = 6;
var_00.max_sink = 4;
var_00.max_float = 6;
var_00.min_bob_period = 2;
var_00.max_bob_period = 4;
return var_00;
}
//Function Number: 67
boat_scene_big_bob_settings()
{
var_00 = spawnstruct();
var_00.max_pitch = 3;
var_00.min_pitch_period = 3;
var_00.max_pitch_period = 6;
var_00.max_yaw = 0;
var_00.min_yaw_period = 3;
var_00.max_yaw_period = 6;
var_00.max_roll = 6;
var_00.min_roll_period = 3;
var_00.max_roll_period = 6;
var_00.max_sink = 36;
var_00.max_float = 24;
var_00.min_bob_period = 3;
var_00.max_bob_period = 6;
return var_00;
}
//Function Number: 68
postspawn_rpg_vehicle()
{
self setmodel("projectile_rpg7");
var_00 = common_scripts\utility::getfx("rpg_trail");
playfxontag(var_00,self,"tag_origin");
var_00 = common_scripts\utility::getfx("rpg_muzzle");
playfxontag(var_00,self,"tag_origin");
self playsound("weap_rpg_fire_npc");
if(isdefined(self.script_sound))
{
if(isdefined(self.script_wait))
{
common_scripts\utility::delaycall(self.script_wait,::playsound,self.script_sound);
}
else
{
self playsound(self.script_sound);
}
}
else
{
self playloopsound("weap_rpg_loop");
}
self waittill("reached_end_node");
self notify("explode",self.origin);
var_01 = 0;
if(isdefined(self.currentnode))
{
var_02 = undefined;
var_03 = self.currentnode;
while(isdefined(var_03))
{
var_02 = var_03;
if(!isdefined(var_03.target))
{
break;
}
var_03 = getvehiclenode(var_03.target,"targetname");
}
if(isdefined(var_02.target))
{
var_04 = common_scripts\utility::getstruct(var_02.target,"targetname");
if(isdefined(var_04))
{
level thread rpg_explosion(var_04.origin,var_04.angles);
var_01 = 1;
}
}
}
if(!var_01)
{
var_04 = spawnstruct();
var_04.origin = self.origin;
var_04.angles = (-90,0,0);
level thread rpg_explosion(var_04.origin,var_04.angles);
}
self delete();
}
//Function Number: 69
rpg_explosion(param_00,param_01)
{
var_02 = common_scripts\utility::getfx("rpg_explode");
playfx(var_02,param_00,anglestoforward(param_01),anglestoup(param_01));
radiusdamage(param_00,200,150,50);
thread common_scripts\utility::play_sound_in_space("null",param_00);
}
//Function Number: 70
combat_silo_seeker_ai()
{
var_00 = 2;
var_01 = [];
for(;;)
{
var_02 = getaiarray("axis");
var_03 = [];
foreach(var_05 in var_02)
{
if(issubstr(var_05.classname,"mech"))
{
var_03[var_03.size] = var_05;
}
}
wait 0.05;
var_01 = [];
for(var_07 = 0;var_07 < var_00;var_07++)
{
if(var_03.size > var_07)
{
var_05 = maps\_utility::get_closest_living(level.player.origin,var_03);
if(isalive(var_05))
{
if(isdefined(var_05.magic_bullet_shield))
{
var_05 maps\_utility::stop_magic_bullet_shield();
}
var_05.playerseeker = 1;
var_05 cleargoalvolume();
var_05 thread maps\_utility::player_seek();
var_05.favoriteenemy = level.player;
var_01[var_01.size] = var_05;
}
}
}
if(var_01.size > 0)
{
maps\_utility::array_wait(var_01,"death");
}
wait(2);
}
foreach(var_09 in var_01)
{
if(isalive(var_09))
{
var_09 notify("goal");
}
}
}
//Function Number: 71
murder_player_seek()
{
self cleargoalvolume();
self.favoriteenemy = level.player;
maps\_utility::set_baseaccuracy(999);
self setgoalentity(level.player);
self.goalradius = 20;
self.combatmode = "no_cover";
self notify("end_patrol");
level.player enablehealthshield(0);
}
//Function Number: 72
get_follow_volume_array()
{
var_00 = getent("info_v_silo_top","targetname");
var_01 = getent("info_v_silo_bottom","targetname");
var_02 = [var_00,var_01];
level.player.follow_volume_designated_head_top = var_00;
level.player.follow_volume_designated_head_bottom = var_01;
var_03 = var_02;
foreach(var_05 in var_02)
{
for(var_06 = var_05;isdefined(var_06.target) && isdefined(getent(var_06.target,"targetname"));var_06 = var_07)
{
var_07 = getent(var_06.target,"targetname");
var_03[var_03.size] = var_07;
}
}
return var_03;
}
//Function Number: 73
get_opposite_volume(param_00)
{
var_01 = undefined;
if(isdefined(param_00.script_linkto))
{
var_01 = getent(param_00.script_linkto,"script_linkname");
}
else if(isdefined(param_00.script_linkname))
{
foreach(var_03 in level.player.follow_volume_array)
{
if(isdefined(var_03.script_linkto) && var_03.script_linkto == param_00.script_linkname)
{
var_01 = var_03;
break;
}
}
}
if(!isdefined(var_01))
{
var_01 = "opposite not found";
}
return var_01;
}
//Function Number: 74
player_follow_volume_think()
{
self endon("kill_player_follow_volume_think");
self endon("death");
self.match_player_floor_percent = 0.75;
self.follow_volume_array = get_follow_volume_array();
level.player.follow_volume_maintain_count = 0;
var_00 = 0;
for(;;)
{
var_01 = get_non_mech_enemies();
var_02 = 0;
var_03 = 0;
if(var_00 != var_01.size)
{
if(var_01.size <= 3)
{
var_02 = 1;
}
if(var_00 <= 3 && var_01.size > 3)
{
var_03 = 1;
}
}
foreach(var_05 in self.follow_volume_array)
{
if((!isdefined(self.follow_volume) || var_02 || var_03 || self.follow_volume != var_05) && self istouching(var_05))
{
if(var_02)
{
self.match_player_floor_percent = 1;
}
else if(!isdefined(self.follow_volume))
{
self.match_player_floor_percent = 0.75;
}
else
{
self.match_player_floor_percent = 0.75;
}
self.follow_volume = var_05;
if(!isdefined(var_05.target))
{
self.follow_volume_target = self.follow_volume;
}
else
{
self.follow_volume_target = getent(var_05.target,"targetname");
}
self.follow_volume_target_opposite = get_opposite_volume(self.follow_volume_target);
foreach(var_07 in var_01)
{
var_07.follow_volume = undefined;
}
level.player.follow_volume_maintain_count = 0;
if(!isdefined(self.follow_volume_target))
{
self.follow_volume_target = self.follow_volume;
}
break;
}
}
var_00 = var_01.size;
wait 0.05;
}
}
//Function Number: 75
get_non_mech_enemies()
{
var_00 = getaiarray("axis");
var_01 = [];
foreach(var_03 in var_00)
{
if(var_03.classname != "actor_enemy_mech")
{
var_01[var_01.size] = var_03;
}
}
return var_01;
}
//Function Number: 76
is_goal_blocked(param_00)
{
if(isdefined(param_00.script_flag_true) && !common_scripts\utility::flag(param_00.script_flag_true))
{
return 1;
}
return 0;
}
//Function Number: 77
move_guy(param_00,param_01,param_02)
{
if(!isdefined(param_02))
{
param_02 = undefined;
param_00 = level.player.follow_volume_designated_head_top;
param_01 = level.player.follow_volume_designated_head_bottom;
}
var_03 = get_floor_count_array();
var_04 = var_03[0];
var_05 = var_03[1];
var_06 = 0;
if(var_04 + var_05 > 0)
{
var_06 = var_04 / var_04 + var_05;
}
var_07 = undefined;
var_08 = undefined;
if(var_06 <= level.player.match_player_floor_percent)
{
var_07 = param_00;
var_08 = 1;
}
else
{
var_07 = param_01;
var_08 = 2;
}
if(is_goal_blocked(var_07))
{
if(isstring(var_07) || !isdefined(var_07))
{
self.follow_volume = "opposite not found";
return 0;
}
if(var_07 == param_00)
{
var_07 = param_02;
var_08 = 3;
}
else
{
var_07 = get_opposite_volume(param_02);
var_08 = 4;
}
}
self cleargoalvolume();
self.goalradius = 256;
self setgoalvolumeauto(var_07);
self.follow_volume = var_07;
return var_08;
}
//Function Number: 78
follow_volume_think()
{
self endon("death");
if(self.classname == "actor_enemy_mech")
{
return;
}
thread death_watcher();
self.follow_volume_status = 0;
if(1)
{
self.follow_volume_status = move_guy(level.player.follow_volume_target,level.player.follow_volume_target_opposite,level.player.follow_volume);
}
for(;;)
{
if(!has_target_volume())
{
self.follow_volume_status = move_guy(level.player.follow_volume_target,level.player.follow_volume_target_opposite,level.player.follow_volume);
}
else if(1 && level.player.follow_volume_maintain_count > 0 && check_move_me_to_maintain_ratio())
{
level.player.follow_volume_maintain_count--;
self.follow_volume_status = move_guy(level.player.follow_volume_target,level.player.follow_volume_target_opposite,level.player.follow_volume);
}
else if(is_guy_follow_status_blocked())
{
if(!is_goal_blocked(self.follow_volume))
{
var_00 = getent(self.follow_volume.target,"targetname");
var_01 = get_opposite_volume(var_00);
self.follow_volume_status = move_guy(var_00,var_01,self.follow_volume);
}
}
wait(randomfloatrange(1,5));
}
}
//Function Number: 79
death_watcher()
{
self waittill("death");
if(isdefined(self.follow_volume) && !isstring(self.follow_volume))
{
level.player.follow_volume_maintain_count++;
}
}
//Function Number: 80
check_move_me_to_maintain_ratio()
{
if(!1)
{
return 0;
}
var_00 = get_floor_count_array();
var_01 = var_00[0];
var_02 = var_00[1];
var_03 = 0;
if(var_01 + var_02 > 0)
{
var_03 = var_01 / var_01 + var_02;
}
if(var_03 <= level.player.match_player_floor_percent)
{
if(self.follow_volume_status != 1 && self.follow_volume_status != 3)
{
return 1;
}
}
else if(self.follow_volume_status != 2 && self.follow_volume_status != 4)
{
return 1;
}
return 0;
}
//Function Number: 81
has_target_volume()
{
if(isdefined(self.follow_volume))
{
return 1;
}
return 0;
}
//Function Number: 82
is_guy_follow_status_blocked()
{
return self.follow_volume_status == 3 || self.follow_volume_status == 4;
}
//Function Number: 83
get_floor_count_array()
{
var_00 = 0;
var_01 = 0;
var_02 = getaiarray("axis");
foreach(var_04 in var_02)
{
if(isdefined(var_04.follow_volume) && isdefined(var_04.follow_volume_status) && var_04.follow_volume_status == 1 || var_04.follow_volume_status == 3)
{
var_00++;
}
if(isdefined(var_04.follow_volume) && isdefined(var_04.follow_volume_status) && var_04.follow_volume_status == 2 || var_04.follow_volume_status == 4)
{
var_01++;
}
}
return [var_00,var_01];
}
//Function Number: 84
set_level_player_rumble_ent_intensity(param_00)
{
if(!isdefined(level.rumble_ent))
{
level.rumble_ent = maps\_utility::get_rumble_ent("steady_rumble",0);
}
if(isdefined(param_00))
{
level.rumble_ent.intensity = param_00;
}
else
{
level.rumble_ent.intensity = 0;
}
level.rumble_ent.base_intensity = level.rumble_ent.intensity;
}
//Function Number: 85
set_level_player_rumble_ent_intensity_for_time(param_00,param_01)
{
if(!isdefined(level.rumble_ent))
{
level.rumble_ent = maps\_utility::get_rumble_ent("steady_rumble",0);
}
if(!isdefined(level.rumble_ent.base_intensity))
{
level.rumble_ent.base_intensity = 0;
}
if(isdefined(param_00))
{
level.rumble_ent.intensity = param_00;
}
else
{
level.rumble_ent.intensity = 0;
}
if(isdefined(param_01))
{
wait(param_01);
}
else
{
wait(0.25);
}
level.rumble_ent.intensity = level.rumble_ent.base_intensity;
}
//Function Number: 86
get_closest_point_on_segment(param_00,param_01,param_02)
{
return get_closest_point_from_segment_to_segment(param_00,param_00,param_01,param_02);
}
//Function Number: 87
get_closest_point_from_segment_to_segment(param_00,param_01,param_02,param_03)
{
var_04 = 0.001;
var_05 = undefined;
var_06 = param_01 - param_00;
var_07 = param_03 - param_02;
var_08 = param_00 - param_02;
var_09 = vectordot(var_06,var_06);
var_0A = vectordot(var_07,var_07);
var_0B = vectordot(var_07,var_08);
var_0C = 0;
if(var_09 <= var_04 && var_0A <= var_04)
{
var_05 = 0;
var_0D = 0;
var_0E = param_00;
var_0F = param_02;
return [var_05,vectordot(var_0E - var_0F,var_0E - var_0F),var_0E,var_0F];
}
if(var_0C <= var_07)
{
var_08 = 0;
var_0D = var_0E / var_0D;
var_0F = clamp(var_0F,0,1);
}
else
{
var_10 = vectordot(var_09,var_0B);
if(var_0C <= var_06)
{
var_0F = 0;
var_07 = clamp(-1 * var_10 / var_0B,0,1);
}
else
{
var_11 = vectordot(var_08,var_09);
var_12 = var_0B * var_0C - var_11 * var_11;
if(var_12 != 0)
{
var_07 = clamp(var_11 * var_0D - var_10 * var_0C / var_12,0,1);
}
else
{
var_07 = 0;
}
var_0F = var_11 * var_07 + var_0D / var_0C;
if(var_0F < 0)
{
var_0F = 0;
var_07 = clamp(-1 * var_10 / var_0B,0,1);
}
else if(var_0F > 1)
{
var_0F = 1;
var_07 = clamp(var_11 - var_10 / var_0B,0,1);
}
}
}
var_0E = param_02 + var_08 * var_07;
var_0F = param_03 + var_08 * var_0E;
return [var_0D,vectordot(var_0E - var_0F,var_0E - var_0F),var_0E,var_0F];
}