IL-GSC/AW/PC/ZM/maps/mp/_exo_hover.gsc
2023-10-27 03:49:01 -04:00

187 lines
4.8 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps/mp/_exo_hover.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 7
* Decompile Time: 102 ms
* Timestamp: 10/27/2023 2:08:15 AM
*******************************************************************/
//Function Number: 1
exo_hover_think()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("joined_team");
self endon("faux_spawn");
self endon("exo_hover_taken");
if(!self hasweapon(level.hoverweapon))
{
return;
}
exo_hover_init();
for(;;)
{
if(self batteryisinuse(level.hoverweapon) == 0)
{
self waittillmatch(level.hoverweapon,"battery_discharge_begin");
}
self.exo_hover_on = 1;
maps\mp\gametypes\_gamelogic::sethasdonecombat(self,1);
self.pers["numberOfTimesHoveringUsed"]++;
maps\mp\_exo_battery::set_exo_ability_hud_omnvar(level.hoverweapon,"ui_exo_battery_toggle",1);
thread maps\mp\_exo_battery::update_exo_battery_hud(level.hoverweapon);
thread exo_hover_update();
thread play_exo_hover_vfx();
if(maps\mp\_utility::_hasperk("specialty_exo_blastsuppressor"))
{
maps\mp\_snd_common_mp::snd_message("mp_suppressed_exo_hover");
}
else
{
maps\mp\_snd_common_mp::snd_message("mp_regular_exo_hover");
}
thread end_exo_hover_on_notifies();
if(self batteryisinuse(level.hoverweapon) == 1)
{
self waittillmatch(level.hoverweapon,"battery_discharge_end");
}
maps\mp\_exo_battery::set_exo_ability_hud_omnvar(level.hoverweapon,"ui_exo_battery_toggle",0);
self.exo_hover_on = 0;
self notify("stop_exo_hover_effects");
}
}
//Function Number: 2
exo_hover_init()
{
self batterysetdischargescale(level.hoverweapon,1);
var_00 = self batterygetsize(level.hoverweapon);
if(self gettacticalweapon() == level.hoverweapon)
{
self setclientomnvar("exo_ability_nrg_req0",0);
self setclientomnvar("exo_ability_nrg_total0",var_00);
self setclientomnvar("ui_exo_battery_level0",var_00);
}
else if(self getlethalweapon() == level.hoverweapon)
{
self setclientomnvar("exo_ability_nrg_req1",0);
self setclientomnvar("exo_ability_nrg_total1",var_00);
self setclientomnvar("ui_exo_battery_level1",var_00);
}
if(!isdefined(level.regular_exo_hover_vfx))
{
level.regular_exo_hover_vfx = loadfx("vfx/smoke/exohover_exhaust_continuous");
}
if(!isdefined(level.suppressed_exo_hover_vfx))
{
level.suppressed_exo_hover_vfx = loadfx("vfx/smoke/exohover_exhaust_continuous_suppressed");
}
if(level.gametype == "horde")
{
setdynamicdvar("hover_max_travel_distance",1000);
return;
}
setdynamicdvar("hover_max_travel_distance",350);
}
//Function Number: 3
end_exo_hover_on_notifies()
{
self endon("stop_exo_hover_effects");
common_scripts\utility::waittill_any("death","disconnect","joined_team","faux_spawn","exo_hover_taken");
maps\mp\_exo_battery::set_exo_ability_hud_omnvar(level.hoverweapon,"ui_exo_battery_toggle",0);
self.exo_hover_on = 0;
self notify("stop_exo_hover_effects");
}
//Function Number: 4
take_exo_hover()
{
level.hoverweapon = "exohover_equipment_mp";
if(isdefined(level.ishorde))
{
level.hoverweapon = "exohoverhorde_equipment_mp";
}
self notify("kill_battery");
self notify("exo_hover_taken");
self takeweapon(level.hoverweapon);
}
//Function Number: 5
give_exo_hover()
{
level.hoverweapon = "exohover_equipment_mp";
if(isdefined(level.ishorde))
{
level.hoverweapon = "exohoverhorde_equipment_mp";
}
self giveweapon(level.hoverweapon);
thread exo_hover_think();
}
//Function Number: 6
exo_hover_update()
{
level endon("game_ended");
self endon("disconnect");
self endon("death");
self endon("joined_team");
self endon("faux_spawn");
self endon("exo_hover_taken");
self endon("stop_exo_hover_effects");
var_00 = self batterygetdischargerate(level.hoverweapon);
var_01 = self batterygetsize(level.hoverweapon);
for(;;)
{
self playrumbleonentity("damage_heavy");
var_02 = self getvelocity();
var_03 = length2d(var_02);
var_04 = 1;
if(level.gametype == "horde")
{
if(isdefined(self.hordeexobattery))
{
var_04 = 1 + self.hordeexobattery * -0.1;
}
}
self batterysetdischargescale(level.hoverweapon,max(var_04,var_01 * var_03 / getdvarint("hover_max_travel_distance",350) * var_00));
wait(0.1);
}
}
//Function Number: 7
play_exo_hover_vfx()
{
level endon("game_ended");
var_00 = 0;
if(maps\mp\_utility::_hasperk("specialty_exo_blastsuppressor"))
{
var_00 = 1;
var_01 = spawnlinkedfx(level.suppressed_exo_hover_vfx,self,"tag_jetpack");
}
else
{
var_01 = spawnlinkedfx(level.regular_exo_hover_vfx,self,"tag_jetpack");
}
triggerfx(var_01);
common_scripts\utility::waittill_any("disconnect","death","joined_team","faux_spawn","exo_hover_taken","stop_exo_hover_effects");
if(isdefined(var_01))
{
var_01 delete();
}
}