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

449 lines
10 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: _underwater.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 24
* Decompile Time: 342 ms
* Timestamp: 4/22/2024 2:23:33 AM
*******************************************************************/
//Function Number: 1
friendly_bubbles()
{
self endon("death");
self notify("stop_friendly_bubbles");
self endon("stop_friendly_bubbles");
thread friendly_bubbles_cleanup();
thread friendly_bubbles_cleanup_on_death();
var_00 = "TAG_EYE";
self.scuba_org = common_scripts\utility::spawn_tag_origin();
self.scuba_org linkto(self,"tag_eye",(5,0,-6),(-90,0,0));
for(;;)
{
wait(3.5 + randomfloat(3));
playfxontag(common_scripts\utility::getfx("scuba_bubbles_friendly"),self.scuba_org,"tag_origin");
}
}
//Function Number: 2
friendly_bubbles_stop()
{
self notify("stop_friendly_bubbles");
self.scuba_org delete();
}
//Function Number: 3
friendly_bubbles_cleanup_on_death()
{
common_scripts\utility::waittill_either("death","stop_friendly_bubbles");
self.scuba_org delete();
}
//Function Number: 4
friendly_bubbles_cleanup()
{
self endon("death");
self waittillmatch("surfacing","single anim");
self notify("stop_friendly_bubbles");
}
//Function Number: 5
underwater_hud_enable(param_00)
{
wait(0.05);
if(param_00 == 1)
{
setsaveddvar("hud_drawhud","1");
setsaveddvar("hud_showStance","0");
return;
}
setsaveddvar("hud_drawhud","1");
setsaveddvar("hud_showStance","1");
}
//Function Number: 6
player_underwater_start(param_00)
{
if(isdefined(param_00) && param_00 == 1)
{
self.scuba_assisted = 1;
player_scuba();
player_scuba_mask();
return;
}
self.scuba_assisted = 0;
player_underwater_breath();
}
//Function Number: 7
player_underwater_end()
{
if(isdefined(self.scuba_assisted) && self.scuba_assisted == 1)
{
stop_player_scuba();
player_scuba_mask_disable();
return;
}
stop_player_underwater_breath();
}
//Function Number: 8
player_scuba()
{
if(!issplitscreen())
{
thread player_scuba_breathe_sound();
}
else if(self == level.player)
{
thread player_scuba_breathe_sound();
}
thread player_scuba_bubbles();
}
//Function Number: 9
player_scuba_breathe_sound()
{
self endon("death");
self notify("start_scuba_breathe");
self endon("start_scuba_breathe");
self endon("stop_scuba_breathe");
for(;;)
{
wait(0.05);
self notify("scuba_breathe_sound_starting");
if(self issprinting())
{
self playlocalsound("scuba_breathe_player_sprint","scuba_breathe_sound_done");
}
else
{
self playlocalsound("scuba_breathe_player","scuba_breathe_sound_done");
}
self waittill("scuba_breathe_sound_done");
}
}
//Function Number: 10
stop_player_scuba()
{
self notify("stop_scuba_breathe");
self stoplocalsound("scuba_breathe_player");
}
//Function Number: 11
player_scuba_bubbles()
{
if(getdvarint("demo_mode"))
{
return;
}
self endon("death");
self endon("stop_scuba_breathe");
waittillframeend;
self.playerfxorg = spawn("script_model",self.origin + (0,0,0));
self.playerfxorg setmodel("tag_origin");
self.playerfxorg.angles = self.angles;
self.playerfxorg.origin = self geteye() - (0,0,10);
self.playerfxorg linktoplayerview(self,"tag_origin",(5,0,-55),(0,0,0),1);
thread scuba_fx_cleanup(self.playerfxorg);
for(;;)
{
self waittill("scuba_breathe_sound_starting");
wait(2.1);
thread player_bubbles_fx(self.playerfxorg);
if(common_scripts\utility::cointoss())
{
self waittill("scuba_breathe_sound_starting");
}
}
}
//Function Number: 12
scuba_fx_cleanup(param_00)
{
self waittill("stop_scuba_breathe");
param_00 unlinkfromplayerview(self);
param_00 delete();
}
//Function Number: 13
player_bubbles_fx(param_00)
{
self endon("stop_scuba_breathe");
playfxontag(common_scripts\utility::getfx("scuba_bubbles"),param_00,"TAG_ORIGIN");
}
//Function Number: 14
player_scuba_mask(param_00,param_01)
{
if(getdvarint("sg_scuba_mask_off") == 1)
{
return;
}
if(getdvarint("demo_mode"))
{
return;
}
var_02 = "halo_overlay_scuba";
if(isdefined(param_01))
{
var_02 = param_01;
}
self.hud_scubamask = maps\_hud_util::create_client_overlay(var_02,1,self);
self.hud_scubamask.foreground = 0;
self.hud_scubamask.sort = -99;
self.scubamask_distortion = spawn("script_model",level.player.origin);
self.scubamask_distortion setmodel("tag_origin");
self.scubamask_distortion.origin = self.origin;
self.scubamask_distortion linktoplayerview(self,"tag_origin",(10,0,0),(0,180,0),1);
playfxontag(common_scripts\utility::getfx("scuba_mask_distortion"),self.scubamask_distortion,"tag_origin");
self.hud_scubamask_model = spawn("script_model",level.player geteye());
self.hud_scubamask_model setmodel("shpg_udt_headgear_player_a");
self.hud_scubamask_model linktoplayerview(self,"tag_origin",(-0.3,0,-1.2),(0,90,-4),1);
if(getdvarint("demo_mode"))
{
self.hud_scubamask_model delete();
stopfxontag(common_scripts\utility::getfx("scuba_mask_distortion"),self.scubamask_distortion,"tag_origin");
}
}
//Function Number: 15
player_scuba_mask_disable(param_00)
{
if(getdvarint("sg_scuba_mask_off") == 1)
{
return;
}
if(getdvarint("demo_mode"))
{
return;
}
if(isdefined(self.hud_scubamask))
{
self.hud_scubamask maps\_hud_util::destroyelem();
self.scubamask_distortion unlinkfromplayerview(self);
self.scubamask_distortion delete();
self.hud_scubamask_model unlinkfromplayerview(self);
self.hud_scubamask_model delete();
}
}
//Function Number: 16
player_underwater_breath()
{
set_default_breath_values();
self.is_drowning = 0;
thread handle_player_breath();
}
//Function Number: 17
stop_player_underwater_breath()
{
self notify("stop_freeswim_breathe");
self.is_drowning = 0;
}
//Function Number: 18
set_default_breath_values()
{
if(!isdefined(level.player_breath_amount_use_rate))
{
level.player_breath_amount_use_rate = 6.666667;
}
if(!isdefined(level.player_breath_amount_fill_rate))
{
level.player_breath_amount_fill_rate = 50;
}
}
//Function Number: 19
override_breath_values(param_00,param_01)
{
level.player_breath_amount_use_rate = 100 / param_00;
level.player_breath_amount_fill_rate = 100 / param_01;
}
//Function Number: 20
handle_player_breath()
{
self endon("death");
self notify("handle_player_breath");
self endon("handle_player_breath");
if(!isdefined(self.player_breath_amount))
{
self.player_breath_amount = 100;
}
var_00 = gettime();
var_01 = var_00;
self.player_breath_fulltime = 0;
if(!isdefined(self.no_breath_hud) || !self.no_breath_hud)
{
thread player_breath_hud();
}
for(;;)
{
var_00 = gettime();
var_02 = var_00 - var_01 / 1000;
if(isdefined(self.underwater) && self.underwater)
{
self.player_breath_amount = max(self.player_breath_amount - level.player_breath_amount_use_rate * var_02,0);
}
else
{
self.player_breath_amount = min(self.player_breath_amount + level.player_breath_amount_fill_rate * var_02,100);
}
if(self.player_breath_amount <= 0)
{
thread player_drowning_damage_thread();
}
else
{
self notify("stop_drowning");
}
var_01 = var_00;
if(self.player_breath_amount == 100)
{
self.player_breath_fulltime = self.player_breath_fulltime + 0.05;
}
else
{
self.player_breath_fulltime = 0;
}
if(self.player_breath_fulltime >= 1)
{
break;
}
wait(0.05);
}
}
//Function Number: 21
player_breath_hud()
{
self endon("death");
self notify("player_breath_hud");
self endon("player_breath_hud");
var_00 = 0.5;
var_01 = 100;
if(!isdefined(level.player_breath_elem))
{
level.player_breath_elem = level.player maps\_hud_util::createclientprogressbar(level.player,60,"white","black",100,10);
level.player_breath_elem maps\_hud_util::setpoint("RIGHT",undefined,-65,var_01 + 12);
level.player_breath_elem maps\_hud_util::updatebar(1);
level.player_breath_elem.alpha = var_00;
level.player_breath_elem.bar.alpha = var_00;
level.player_breath_elem.bar.color = (0,0,1);
level.player_breath_elem.text = level.player maps\_hud_util::createclientfontstring("default",1.2);
level.player_breath_elem.text maps\_hud_util::setpoint("RIGHT",undefined,-60,var_01);
level.player_breath_elem.text settext("O2");
level.player_breath_elem.text.alpha = var_00;
}
wait(0.05);
while(self.player_breath_amount <= 100)
{
var_02 = self.player_breath_amount / 100;
level.player_breath_elem maps\_hud_util::updatebar(var_02);
if(self.player_breath_fulltime >= 1)
{
break;
}
level.player_breath_elem.alpha = var_00;
level.player_breath_elem.bar.alpha = var_00;
level.player_breath_elem.text.alpha = var_00;
wait(0.05);
}
if(isdefined(level.player_breath_elem))
{
var_03 = gettime();
var_04 = 500;
while(gettime() - var_03 < var_04 && isdefined(level.player_breath_elem))
{
var_05 = 1 - float(gettime() - var_03) / var_04;
level.player_breath_elem.alpha = var_00 * var_05;
level.player_breath_elem.bar.alpha = var_00 * var_05;
level.player_breath_elem.text.alpha = var_00 * var_05;
wait(0.05);
}
level.player_breath_elem.text maps\_hud_util::destroyelem();
level.player_breath_elem maps\_hud_util::destroyelem();
level.player_breath_hud = undefined;
}
}
//Function Number: 22
player_drowning_damage_thread()
{
self endon("death");
self endon("stop_freeswim_breathe");
self endon("stop_drowning");
if(self.is_drowning)
{
return;
}
self.is_drowning = 1;
var_00 = common_scripts\utility::spawn_tag_origin();
var_00 linktoplayerview(level.player,"tag_origin",(0,0,0),(0,0,0),1);
soundscripts\_snd::snd_message("player_drowning_start");
if(self == level.player && isdefined(self.drowning_warning))
{
thread maps\_utility_code::hintprint(self.drowning_warning,undefined,undefined,undefined,undefined,20,undefined,undefined);
self.drowning_warning = undefined;
}
thread end_drowning_damage(var_00);
for(;;)
{
if(isdefined(self.drowning_damage))
{
self dodamage(self.drowning_damage,self.origin);
}
else
{
self dodamage(25,self.origin);
}
playfxontag(common_scripts\utility::getfx("water_vm_gasping_breath"),var_00,"tag_origin");
wait(0.5);
}
}
//Function Number: 23
end_drowning_damage(param_00)
{
self endon("death");
self endon("stop_freeswim_breathe");
self waittill("stop_drowning");
param_00 delete();
self.is_drowning = 0;
}
//Function Number: 24
parse_underwater_triggers()
{
level.underwater_triggers = getentarray("trigger_underwater","targetname");
}