IL-GSC/AW/PC/MP/maps/mp/killstreaks/_aerial_utility.gsc
2023-10-27 03:49:01 -04:00

1445 lines
30 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps/mp/killstreaks/_aerial_utility.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 77
* Decompile Time: 1171 ms
* Timestamp: 10/27/2023 1:51:21 AM
*******************************************************************/
//Function Number: 1
init()
{
if(getdvarint("virtuallobbyactive",0))
{
return;
}
level.helis = [];
level.littlebirds = [];
level.heli_leave_nodes = getentorstructarray("heli_leave","targetname");
level.heli_crash_nodes = getentorstructarray("heli_crash_start","targetname");
level.chopper_fx["explode"]["death"] = [];
level.chopper_fx["explode"]["air_death"] = [];
level.chopper_fx["damage"]["light_smoke"] = loadfx("vfx/trail/smoke_trail_white_heli_emitter");
level.chopper_fx["damage"]["heavy_smoke"] = loadfx("vfx/trail/smoke_trail_black_heli_emitter");
level.chopper_fx["damage"]["on_fire"] = loadfx("vfx/fire/helicopter_damaged_fire_m");
level.chopper_fx["explode"]["large"] = loadfx("fx/explosions/helicopter_explosion_secondary_small");
level.chopper_fx["rocketlaunch"]["warbird"] = loadfx("vfx/muzzleflash/rocket_launch_air_to_ground");
level.heli_sound["allies"]["hit"] = "warbird_death_explo";
level.heli_sound["axis"]["hit"] = "warbird_death_explo";
level.heli_sound["allies"]["spinloop"] = "warbird_death_spin_loop";
level.heli_sound["axis"]["spinloop"] = "warbird_death_spin_loop";
level.heli_sound["allies"]["crash"] = "warbird_air_death";
level.heli_sound["axis"]["crash"] = "warbird_air_death";
level._effect["flare"] = loadfx("vfx/lensflare/flares_warbird");
level.heli_attract_strength = 1000;
level.heli_attract_range = 4096;
level.heli_maxhealth = 2000;
level.heli_targeting_delay = 0.5;
}
//Function Number: 2
makehelitype(param_00,param_01,param_02)
{
level.chopper_fx["explode"]["death"][param_00] = loadfx(param_01);
level.lightfxfunc[param_00] = param_02;
}
//Function Number: 3
addairexplosion(param_00,param_01)
{
level.chopper_fx["explode"]["air_death"][param_00] = loadfx(param_01);
}
//Function Number: 4
addtohelilist()
{
level.helis[self getentitynumber()] = self;
}
//Function Number: 5
removefromhelilist(param_00)
{
level.helis[param_00] = undefined;
}
//Function Number: 6
addtolittlebirdlist(param_00)
{
level.littlebirds[self getentitynumber()] = self;
}
//Function Number: 7
removefromlittlebirdlistondeath(param_00)
{
var_01 = self getentitynumber();
self waittill("death");
level.littlebirds[var_01] = undefined;
}
//Function Number: 8
exceededmaxlittlebirds(param_00)
{
if(level.littlebirds.size >= 4)
{
return 1;
}
return 0;
}
//Function Number: 9
heli_leave_on_disconnect(param_00)
{
self endon("death");
self endon("helicopter_done");
param_00 waittill("disconnect");
thread heli_leave();
}
//Function Number: 10
heli_leave_on_changeteams(param_00)
{
self endon("death");
self endon("helicopter_done");
param_00 common_scripts\utility::waittill_any("joined_team","joined_spectators");
thread heli_leave();
}
//Function Number: 11
heli_modifydamage(param_00,param_01,param_02,param_03)
{
var_04 = maps\mp\gametypes\_damage::modifydamage(param_00,param_01,param_02,param_03);
if(var_04 > 0)
{
heli_staticdamage(param_01,param_02,var_04);
}
return var_04;
}
//Function Number: 12
heli_addrecentdamage(param_00)
{
self endon("death");
self.recentdamageamount = self.recentdamageamount + param_00;
wait(4);
self.recentdamageamount = self.recentdamageamount - param_00;
}
//Function Number: 13
heli_leave_on_timeout(param_00)
{
self endon("death");
self endon("helicopter_done");
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(param_00);
thread heli_leave();
}
//Function Number: 14
heli_leave_on_gameended(param_00)
{
self endon("death");
self endon("helicopter_done");
level waittill("game_ended");
thread heli_leave();
}
//Function Number: 15
heli_leave(param_00)
{
self notify("leaving");
self.isleaving = 1;
self clearlookatent();
var_01 = undefined;
if(!isdefined(param_00))
{
var_01 = heli_pick_fly_node(level.heli_leave_nodes);
param_00 = var_01.origin;
}
var_02 = spawn("script_origin",param_00);
if(isdefined(var_02))
{
self setlookatent(var_02);
var_02 thread wait_and_delete(3);
}
heli_reset();
self vehicle_setspeed(100,45);
if(isdefined(var_01))
{
if(isdefined(var_01.target))
{
heli_fly_simple_path(var_01);
}
else
{
_setvehgoalpos(var_01.origin,0);
self waittillmatch("goal");
}
}
else
{
_setvehgoalpos(param_00,0);
self waittillmatch("goal");
}
self notify("death");
wait(0.05);
if(isdefined(self.killcament))
{
self.killcament delete();
}
maps\mp\_utility::decrementfauxvehiclecount();
self delete();
}
//Function Number: 16
heli_pick_fly_node(param_00)
{
var_01 = self.origin;
var_02 = undefined;
for(var_06 = 0;var_06 < param_00.size;var_06++)
{
var_07 = param_00[var_06].origin;
if(flynodeorgtracepassed(var_01,var_07,self))
{
var_08 = var_07 - var_01;
var_09 = distance(var_01,var_07);
var_0A = rotatevector(var_08,(0,90,0));
var_0B = var_01 + var_0A * 100;
var_0C = var_0B + var_08 * var_09;
if(flynodeorgtracepassed(var_0B,var_0C,self))
{
var_0D = rotatevector(var_08,(0,-90,0));
var_0B = var_01 + var_0D * 100;
var_0C = var_0B + var_08 * var_09;
if(flynodeorgtracepassed(var_0B,var_0C,self))
{
return param_00[var_06];
}
}
}
}
return param_00[randomint(param_00.size)];
}
//Function Number: 17
flynodeorgtracepassed(param_00,param_01,param_02)
{
var_03 = bullettrace(param_00,param_01,0,param_02,0,0,1,0,0);
var_04 = var_03["fraction"] >= 1;
}
//Function Number: 18
wait_and_delete(param_00)
{
self endon("death");
level endon("game_ended");
wait(param_00);
self delete();
}
//Function Number: 19
deleteaftertime(param_00)
{
wait(param_00);
self delete();
}
//Function Number: 20
heli_reset()
{
self cleartargetyaw();
self cleargoalyaw();
self vehicle_setspeed(60,25);
self setyawspeed(100,45,45);
self setmaxpitchroll(30,30);
self setneargoalnotifydist(100);
self setturningability(1);
}
//Function Number: 21
_setvehgoalpos(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = 0;
}
self setvehgoalpos(param_00,param_01);
}
//Function Number: 22
heli_flares_monitor(param_00)
{
switch(self.helitype)
{
default:
break;
}
}
//Function Number: 23
handleincomingstinger(param_00)
{
level endon("game_ended");
self endon("death");
self endon("crashing");
self endon("leaving");
self endon("helicopter_done");
for(;;)
{
level waittill("stinger_fired",var_01,var_02);
if(!maps\mp\_stingerm7::anystingermissilelockedon(var_02,self))
{
continue;
}
if(!isdefined(var_02))
{
continue;
}
if(isdefined(param_00))
{
level thread [[ param_00 ]](var_02,var_01,var_01.team);
continue;
}
level thread watchmissileproximity(var_02,var_01,var_01.team);
}
}
//Function Number: 24
watchmissileproximity(param_00,param_01,param_02)
{
foreach(var_04 in param_00)
{
var_04 thread missilewatchproximity(param_01,param_02,var_04.lockedstingertarget);
}
}
//Function Number: 25
missilewatchproximity(param_00,param_01,param_02)
{
self endon("death");
param_02 endon("death");
var_03 = 5;
var_04 = 4000;
for(;;)
{
if(!isdefined(param_02))
{
break;
}
var_05 = param_02 getpointinbounds(0,0,0);
var_06 = distance(self.origin,var_05);
if(isdefined(param_02.player))
{
param_02.player thread doproximityalarm(self,param_02);
}
if(var_06 < var_04)
{
if(param_02.numflares > 0 || isdefined(param_02.flarestarget))
{
if(isdefined(param_02.owner) && iswarbird(param_02))
{
if(param_02.numflares == 2)
{
param_02.owner setclientomnvar("ui_warbird_flares",1);
}
else if(param_02.numflares == 1)
{
param_02.owner setclientomnvar("ui_warbird_flares",2);
}
param_02.owner playlocalsound("paladin_deploy_flares");
}
var_07 = param_02 deployflares(var_03);
playfxontag(common_scripts\utility::getfx("flare"),var_07,"tag_origin");
if(!isdefined(param_02.flarestarget))
{
param_02.numflares--;
level thread handleflarestimer(param_02,var_07,var_03);
}
self missile_settargetent(var_07);
return;
}
}
wait(0.05);
}
}
//Function Number: 26
deployflares(param_00)
{
var_01 = self gettagorigin("tag_origin") + (0,0,-50);
var_02 = spawn("script_model",var_01);
var_02 setmodel("tag_origin");
var_02.angles = self.angles;
if(!isdefined(self.flaresdeployedyaw))
{
self.flaresdeployedyaw = randomfloatrange(-180,180);
}
else
{
self.flaresdeployedyaw = self.flaresdeployedyaw + 90;
}
var_03 = anglestoforward((self.angles[0],self.flaresdeployedyaw,self.angles[2]));
var_03 = vehiclemodifyflarevector(var_03);
var_02 movegravity(var_03,param_00);
var_02 thread deleteaftertime(param_00);
return var_02;
}
//Function Number: 27
vehiclemodifyflarevector(param_00)
{
if(self.vehicletype == "warbird")
{
return vectornormalize(param_00 + (0,0,-0.2)) * 300;
}
if(self.vehicletype == "paladin")
{
return vectornormalize(param_00 + (0,0,-0.5)) * 2000;
}
return vectornormalize(param_00 + (0,0,-0.4)) * 1000;
}
//Function Number: 28
handleflarestimer(param_00,param_01,param_02)
{
param_00 endon("death");
param_00.flarestarget = param_01;
wait(param_02);
param_00.flarestarget = undefined;
if(isdefined(param_00.owner) && iswarbird(param_00))
{
param_00.owner setclientomnvar("ui_warbird_flares",0);
}
}
//Function Number: 29
hastag(param_00,param_01)
{
var_02 = getnumparts(param_00);
for(var_03 = 0;var_03 < var_02;var_03++)
{
if(tolower(getpartname(param_00,var_03)) == tolower(param_01))
{
return 1;
}
}
return 0;
}
//Function Number: 30
iswarbird(param_00)
{
return isdefined(param_00.heli_type) && param_00.heli_type == "warbird";
}
//Function Number: 31
doproximityalarm(param_00,param_01)
{
self endon("disconnect");
if(shouldstopproximityalarm(param_00,param_01) || isdefined(param_01.incomingmissilesound))
{
return;
}
if(iswarbird(param_01))
{
self setclientomnvar("ui_warbird_flares",3);
}
self playlocalsound("mp_aerial_enemy_locked");
param_01.incomingmissilesound = 1;
for(;;)
{
if(shouldstopproximityalarm(param_00,param_01))
{
self stoplocalsound("mp_aerial_enemy_locked");
param_01.incomingmissilesound = undefined;
return;
}
wait 0.05;
}
}
//Function Number: 32
playerfakeshootpaintmissile(param_00)
{
var_01 = vectornormalize(anglestoforward(self getplayerangles()));
var_02 = vectornormalize(anglestoright(self getplayerangles()));
var_03 = self geteye() + var_01 * 100;
var_04 = var_03 + var_01 * 20000;
var_05 = bullettrace(var_03,var_04,0);
if(var_05["fraction"] == 1)
{
return;
}
earthquake(0.1,1,self geteye(),500,self);
var_03 = self geteye() + var_02 * -1 * 50;
var_04 = var_05["position"];
var_06 = magicbullet("paint_missile_killstreak_mp",var_03,var_04,self);
var_06.owner = self;
var_06 thread watchpaintgrenade();
thread playerfiresounds(param_00,"paladin_threat_bomb_shot_2d","paladin_threat_bomb_shot_3d");
}
//Function Number: 33
playerfakeshootpaintgrenadeattarget(param_00,param_01,param_02,param_03,param_04)
{
var_05 = 5000;
earthquake(0.2,1,self getvieworigin(),300);
var_06 = vectornormalize(param_02 - param_01);
var_07 = var_06 * var_05;
var_08 = magicgrenademanual("paint_grenade_killstreak_mp",param_01,var_07,2,self);
var_08.owner = self;
var_08 thread watchpaintgrenade(param_03,param_04);
thread playerfiresounds(param_00,"recon_drn_launcher_shot_plr","recon_drn_launcher_shot_npc");
self playrumbleonentity("damage_heavy");
}
//Function Number: 34
playerfakeshootempgrenadeattarget(param_00,param_01,param_02)
{
var_03 = 5000;
earthquake(0.2,1,self getvieworigin(),300);
var_04 = vectornormalize(param_02 - param_01);
var_05 = var_04 * var_03;
var_06 = magicgrenademanual("emp_grenade_killstreak_mp",param_01,var_05,2,self);
var_06.owner = self;
thread playerfiresounds(param_00,"recon_drn_launcher_shot_plr","recon_drn_launcher_shot_npc");
self playrumbleonentity("damage_heavy");
}
//Function Number: 35
playerfiresounds(param_00,param_01,param_02)
{
if(isdefined(param_02))
{
param_00 playsoundonmovingent(param_02);
}
if(isdefined(param_01))
{
self playlocalsound(param_01);
}
}
//Function Number: 36
watchpaintgrenade(param_00,param_01)
{
if(!isdefined(param_00))
{
param_00 = 0;
}
var_02 = self.owner;
var_02 endon("disconnect");
var_02 endon("death");
self waittill("explode",var_03);
if(var_02 maps\mp\_utility::isemped() && isdefined(level.empequipmentdisabled) && level.empequipmentdisabled)
{
return;
}
detectiongrenadethink(var_03,var_02,param_00,param_01);
}
//Function Number: 37
detectiongrenadethink(param_00,param_01,param_02,param_03)
{
if(!isdefined(param_02))
{
param_02 = 0;
}
foreach(var_05 in level.players)
{
if(!isdefined(var_05) || !maps\mp\_utility::isreallyalive(var_05) || !isalliedsentient(param_01,var_05))
{
continue;
}
thread maps\mp\_threatdetection::detection_grenade_hud_effect(var_05,param_00,1,400);
thread maps\mp\_threatdetection::detection_highlight_hud_effect(var_05,5);
}
var_07 = getplayersonteam(param_01.team);
foreach(var_05 in level.participants)
{
if(!isdefined(var_05) || !maps\mp\_utility::isreallyalive(var_05) || isalliedsentient(param_01,var_05) || var_05 maps\mp\_utility::_hasperk("specialty_coldblooded"))
{
continue;
}
if(distance(var_05.origin,param_00) < 400)
{
var_05 maps\mp\_threatdetection::addthreatevent(var_07,5,"PAINT_GRENADE",1,0);
param_01 maps\mp\gametypes\_damagefeedback::updatedamagefeedback("paint");
var_05 thread detectiongrenadewatch(param_01,5);
var_05 notify("paint_marked_target",param_01);
if(param_02)
{
maps\mp\gametypes\_weapons::flashbangplayer(var_05,param_00,param_01);
}
if(isdefined(param_03) && param_03.vehname == "recon_uav")
{
param_01 maps\mp\gametypes\_missions::processchallenge("ch_streak_recon");
}
}
}
}
//Function Number: 38
detectiongrenadewatch(param_00,param_01)
{
level endon("game_ended");
self notify("detectionGrenadeWatch");
self endon("detectionGrenadeWatch");
if(!isdefined(self.tagmarkedby) || self.tagmarkedby != param_00)
{
if(!isdefined(level.ishorde))
{
param_00 thread maps\mp\_events::killstreaktagevent();
}
param_00 playrumbleonentity("damage_heavy");
}
if(!isagent(self))
{
self designatefoftarget(1);
}
self.tagmarkedby = param_00;
common_scripts\utility::waittill_any_timeout(param_01,"death","disconnect");
if(isdefined(self))
{
if(!isagent(self))
{
self designatefoftarget(0);
}
self.tagmarkedby = undefined;
}
}
//Function Number: 39
getplayersonteam(param_00)
{
var_01 = [];
foreach(var_03 in level.players)
{
if(var_03.hasspawned && isalive(var_03) && param_00 == var_03.team && !isplayer(self) || var_03 != self)
{
var_01[var_01.size] = var_03;
}
}
return var_01;
}
//Function Number: 40
shouldstopproximityalarm(param_00,param_01)
{
return !isdefined(param_01) || !isdefined(param_01.player) || !isdefined(param_00) || isdefined(param_01.flarestarget) || !maps\mp\_utility::isreallyalive(self) || isdefined(param_01.crashed) || isdefined(param_01.iscrashing);
}
//Function Number: 41
heli_staticdamage(param_00,param_01,param_02)
{
if(param_02 > 0 && isdefined(self.owner))
{
self.owner thread playershowstreakstaticfordamage();
}
if(param_02 > 0 && isdefined(self.warbirdbuddyturret) && isdefined(self.warbirdbuddyturret.owner))
{
self.warbirdbuddyturret.owner thread playershowstreakstaticfordamage();
}
}
//Function Number: 42
heli_monitoremp()
{
level endon("game_ended");
self endon("death");
self endon("crashing");
self endon("leaving");
for(;;)
{
self waittill("emp_damage");
thread heli_empgrenaded();
}
}
//Function Number: 43
heli_empgrenaded()
{
self notify("heli_EMPGrenaded");
self endon("heli_EMPGrenaded");
self endon("death");
self endon("leaving");
self endon("crashing");
self.owner endon("disconnect");
level endon("game_ended");
self.empgrenaded = 1;
if(isdefined(self.mgturretleft))
{
self.mgturretleft notify("stop_shooting");
}
if(isdefined(self.mgturretright))
{
self.mgturretright notify("stop_shooting");
}
wait(3.5);
self.empgrenaded = 0;
if(isdefined(self.mgturretleft))
{
self.mgturretleft notify("turretstatechange");
}
if(isdefined(self.mgturretright))
{
self.mgturretright notify("turretstatechange");
}
}
//Function Number: 44
heli_existance()
{
var_00 = self getentitynumber();
common_scripts\utility::waittill_any("death","crashing","leaving");
removefromhelilist(var_00);
self notify("helicopter_done");
}
//Function Number: 45
heli_crash()
{
self notify("crashing");
self playsoundonmovingent("orbital_pkg_self_destruct");
self clearlookatent();
self.iscrashing = 1;
var_00 = heli_pick_fly_node(level.heli_crash_nodes);
if(isdefined(self.mgturretleft))
{
self.mgturretleft notify("stop_shooting");
}
if(isdefined(self.mgturretright))
{
self.mgturretright notify("stop_shooting");
}
thread heli_spin(180);
thread heli_secondary_explosions();
self vehicle_setspeed(100,45);
if(isdefined(var_00.target))
{
heli_fly_simple_path(var_00);
}
else
{
_setvehgoalpos(var_00.origin,0);
self waittillmatch("goal");
}
thread heli_explode();
}
//Function Number: 46
heli_secondary_explosions()
{
var_00 = self.team;
playfxontag(level.chopper_fx["explode"]["large"],self,"tag_engine_left");
if(isdefined(level.heli_sound[var_00]["hitsecondary"]))
{
self playsound(level.heli_sound[var_00]["hitsecondary"]);
}
wait(3);
if(!isdefined(self))
{
return;
}
playfxontag(level.chopper_fx["explode"]["large"],self,"tag_engine_left");
if(isdefined(level.heli_sound[var_00]["hitsecondary"]))
{
self playsound(level.heli_sound[var_00]["hitsecondary"]);
}
}
//Function Number: 47
heli_spin(param_00)
{
self endon("death");
var_01 = self.team;
self playsound(level.heli_sound[var_01]["hit"]);
thread spinsoundshortly();
self setyawspeed(param_00,param_00,param_00);
while(isdefined(self))
{
self settargetyaw(self.angles[1] + param_00 * 0.9);
wait(1);
}
}
//Function Number: 48
spinsoundshortly()
{
self endon("death");
wait(0.25);
var_00 = self.team;
self stoploopsound();
wait(0.05);
self playloopsound(level.heli_sound[var_00]["spinloop"]);
wait(0.05);
if(isdefined(level.heli_sound[var_00]["spinstart"]))
{
self playloopsound(level.heli_sound[var_00]["spinstart"]);
}
}
//Function Number: 49
heli_explode(param_00)
{
self notify("death");
if(isdefined(param_00) && isdefined(level.chopper_fx["explode"]["air_death"][self.heli_type]))
{
var_01 = self gettagangles("tag_deathfx");
playfx(level.chopper_fx["explode"]["air_death"][self.heli_type],self gettagorigin("tag_deathfx"),anglestoforward(var_01),anglestoup(var_01));
}
else
{
var_02 = self.origin;
var_03 = self.origin + (0,0,1) - self.origin;
playfx(level.chopper_fx["explode"]["death"][self.heli_type],var_02,var_03);
}
var_04 = self.team;
self playsound(level.heli_sound[var_04]["crash"]);
wait(0.05);
if(isdefined(self.killcament))
{
self.killcament delete();
}
maps\mp\_utility::decrementfauxvehiclecount();
self delete();
}
//Function Number: 50
heli_fly_simple_path(param_00)
{
self endon("death");
self endon("leaving");
self notify("flying");
self endon("flying");
heli_reset();
for(var_01 = param_00;isdefined(var_01.target);var_01 = var_02)
{
var_02 = getentorstruct(var_01.target,"targetname");
if(isdefined(var_01.script_airspeed) && isdefined(var_01.script_accel))
{
var_03 = var_01.script_airspeed;
var_04 = var_01.script_accel;
}
else
{
var_03 = 30 + randomint(20);
var_04 = 15 + randomint(15);
}
if(isdefined(self.isattacking) && self.isattacking)
{
wait(0.05);
continue;
}
if(isdefined(self.isperformingmaneuver) && self.isperformingmaneuver)
{
wait(0.05);
continue;
}
self vehicle_setspeed(var_03,var_04);
if(!isdefined(var_02.target))
{
_setvehgoalpos(var_02.origin + self.zoffset,0);
self waittill("near_goal");
continue;
}
_setvehgoalpos(var_02.origin + self.zoffset,0);
self waittill("near_goal");
self setgoalyaw(var_02.angles[1]);
self waittillmatch("goal");
}
}
//Function Number: 51
handle_player_starting_aerial_view()
{
self notify("player_start_aerial_view");
}
//Function Number: 52
handle_player_ending_aerial_view()
{
self notify("player_stop_aerial_view");
}
//Function Number: 53
gethelianchor()
{
if(isdefined(level.helianchor))
{
return level.helianchor;
}
var_00 = getentorstruct("warbird_anchor","targetname");
if(!isdefined(var_00))
{
var_00 = spawnstruct();
var_00.origin = (0,0,2032);
var_00.targetname = "warbird_anchor";
}
if(!isdefined(var_00.script_noteworthy))
{
var_00.script_noteworthy = 3500;
}
level.helianchor = var_00;
return level.helianchor;
}
//Function Number: 54
playerhandleboundarystatic(param_00,param_01,param_02)
{
if(isdefined(param_01))
{
self endon(param_01);
}
if(isdefined(param_02))
{
self endon(param_02);
}
var_03 = getentarray("remote_heli_range","targetname");
if(!isdefined(param_00.vehicletype) || var_03.size == 0)
{
playerhandleboundarystaticradius(param_00,param_01,param_02);
return;
}
for(;;)
{
var_04 = 0;
if(isdefined(level.isoutofboundscustomfunc))
{
var_04 = [[ level.isoutofboundscustomfunc ]](param_00,self,var_03);
}
else
{
var_04 = param_00 vehicletouchinganytrigger(var_03);
}
if(var_04)
{
thread playerstartoutofboundsstatic(param_00,param_01,param_02);
for(;;)
{
wait 0.05;
if(!isdefined(param_00.alwaysstaticout) || !param_00.alwaysstaticout)
{
var_04 = 0;
if(isdefined(level.isoutofboundscustomfunc))
{
var_04 = [[ level.isoutofboundscustomfunc ]](param_00,self,var_03);
}
else
{
var_04 = param_00 vehicletouchinganytrigger(var_03);
}
if(!var_04)
{
param_00 notify("staticDone");
thread playerstatictonormal(param_00,param_01,param_02);
break;
}
}
}
}
wait 0.05;
}
}
//Function Number: 55
vehicletouchinganytrigger(param_00)
{
foreach(var_02 in param_00)
{
if(self istouching(var_02))
{
return 1;
}
}
return 0;
}
//Function Number: 56
playerstatictonormal(param_00,param_01,param_02)
{
if(isdefined(param_01))
{
self endon(param_01);
}
if(isdefined(param_02))
{
self endon(param_02);
}
param_00 endon("staticStarting");
param_00.staticlevel--;
while(param_00.staticlevel > 0)
{
playershowstreakstaticforrange(param_00.staticlevel);
if(isdefined(param_00.buddy))
{
param_00.buddy playershowstreakstaticforrange(param_00.staticlevel);
}
wait(0.5);
param_00.staticlevel--;
}
playershowstreakstaticforrange(0);
if(isdefined(param_00.buddy))
{
param_00.buddy playershowstreakstaticforrange(0);
}
}
//Function Number: 57
playerstartoutofboundsstatic(param_00,param_01,param_02)
{
if(isdefined(param_01))
{
self endon(param_01);
}
if(isdefined(param_02))
{
self endon(param_02);
}
param_00 notify("staticStarting");
param_00 endon("staticDone");
if(!isdefined(param_00.staticlevel) || param_00.staticlevel == 0)
{
param_00.staticlevel = 1;
}
while(param_00.staticlevel < 4)
{
playershowstreakstaticforrange(param_00.staticlevel);
if(isdefined(param_00.buddy))
{
param_00.buddy playershowstreakstaticforrange(param_00.staticlevel);
}
if(isdefined(param_00.playerattachpoint))
{
param_00.playerattachpoint playsound("mp_warbird_outofbounds_warning");
}
if(isdefined(param_00.staticlevelwaittime))
{
wait(param_00.staticlevelwaittime);
continue;
}
wait(2);
param_00.staticlevel++;
}
param_00 notify("outOfBounds");
}
//Function Number: 58
playerhandleboundarystaticradius(param_00,param_01,param_02)
{
if(isdefined(param_01))
{
self endon(param_01);
}
if(isdefined(param_02))
{
self endon(param_02);
}
var_03 = gethelianchor();
var_04 = int(var_03.script_noteworthy);
for(;;)
{
var_05 = distance(var_03.origin,param_00.origin);
if(var_05 < var_04)
{
playershowstreakstaticforrange(0);
}
else if(var_05 > var_04 && var_05 < var_04 + 500)
{
playershowstreakstaticforrange(1);
if(isdefined(param_00.playerattachpoint))
{
param_00.playerattachpoint playsound("mp_warbird_outofbounds_warning");
}
}
else if(var_05 > var_04 + 500 && var_05 < var_04 + 1000)
{
playershowstreakstaticforrange(2);
if(isdefined(param_00.playerattachpoint))
{
param_00.playerattachpoint playsound("mp_warbird_outofbounds_warning");
}
}
else if(var_05 > var_04 + 1000 && var_05 < var_04 + 1500)
{
playershowstreakstaticforrange(3);
if(isdefined(param_00.playerattachpoint))
{
param_00.playerattachpoint playsound("mp_warbird_outofbounds_warning");
}
}
else
{
playershowstreakstaticforrange(4);
param_00 notify("outOfBounds");
}
wait(0.5);
}
}
//Function Number: 59
playerenablestreakstatic()
{
self notify("playerUpdateStreakStatic");
self setclientomnvar("ui_streak_overlay_state",1);
}
//Function Number: 60
playerdisablestreakstatic()
{
self notify("playerUpdateStreakStatic");
self setclientomnvar("ui_streak_overlay_state",0);
}
//Function Number: 61
playershowfullstatic()
{
self notify("playerUpdateStreakStatic");
self setclientomnvar("ui_streak_overlay_state",7);
}
//Function Number: 62
playershowstreakstaticfordamage()
{
self endon("disconnect");
if(self getclientomnvar("ui_streak_overlay_state") != 1)
{
return;
}
self notify("playerUpdateStreakStatic");
self endon("playerUpdateStreakStatic");
self setclientomnvar("ui_streak_overlay_state",2);
wait(1);
self setclientomnvar("ui_streak_overlay_state",1);
}
//Function Number: 63
playershowstreakstaticforrange(param_00)
{
var_01 = 1;
switch(param_00)
{
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
default:
break;
}
}
//Function Number: 64
getentorstruct(param_00,param_01)
{
var_02 = getent(param_00,param_01);
if(isdefined(var_02))
{
return var_02;
}
return common_scripts\utility::getstruct(param_00,param_01);
}
//Function Number: 65
getentorstructarray(param_00,param_01)
{
var_02 = common_scripts\utility::getstructarray(param_00,param_01);
var_03 = getentarray(param_00,param_01);
if(var_03.size > 0)
{
var_02 = common_scripts\utility::array_combine(var_02,var_03);
}
return var_02;
}
//Function Number: 66
playerhandlekillvehicle(param_00,param_01,param_02)
{
if(isdefined(param_01))
{
self endon(param_01);
}
if(isdefined(param_02))
{
self endon(param_02);
}
if(!isdefined(level.vehicle_kill_triggers))
{
return;
}
for(;;)
{
var_03 = param_00 vehicletouchinganytrigger(level.vehicle_kill_triggers);
if(var_03)
{
param_00 notify("death");
}
wait 0.05;
}
}
//Function Number: 67
setup_kill_drone_trig(param_00,param_01)
{
if(isdefined(param_00) && isdefined(param_01))
{
var_02 = getentarray(param_00,param_01);
common_scripts\utility::array_thread(var_02,::setup_kill_drone_trig_proc);
return;
}
if(isvehiclekilltrigger())
{
setup_kill_drone_trig_proc();
}
}
//Function Number: 68
setup_kill_drone_trig_proc()
{
if(isvehiclekilltrigger())
{
if(!isdefined(level.vehicle_kill_triggers))
{
level.vehicle_kill_triggers = [];
}
level.vehicle_kill_triggers[level.vehicle_kill_triggers.size] = self;
}
}
//Function Number: 69
isvehiclekilltrigger()
{
if(isdefined(self.classname) && issubstr(self.classname,"trigger_multiple") && isdefined(self.spawnflags) && self.spawnflags & 16)
{
return 1;
}
return 0;
}
//Function Number: 70
vehicleiscloaked()
{
return isdefined(self.cloakstate) && self.cloakstate < 1;
}
//Function Number: 71
thermalvision(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
self endon(param_00);
var_07 = 0;
disableorbitalthermal(self);
self visionsetthermalforplayer("default",0.25);
self setclientomnvar("ui_killstreak_optic",0);
if(isbot(self))
{
return;
}
self notifyonplayercommand("switch thermal","+actionslot 1");
thread playercleanupthermalvisioncommands(param_00);
for(;;)
{
self waittill("switch thermal");
if(!var_07)
{
enableorbitalthermal(self,param_00,param_01,param_02,param_03,param_04,param_05,param_06);
self setclientomnvar("ui_killstreak_optic",1);
self playlocalsound("paladin_toggle_flir_plr");
}
else
{
disableorbitalthermal(self);
self setclientomnvar("ui_killstreak_optic",0);
self playlocalsound("paladin_toggle_flir_plr");
}
var_07 = !var_07;
}
}
//Function Number: 72
playercleanupthermalvisioncommands(param_00)
{
self endon("disconnect");
self waittill(param_00);
self notifyonplayercommandremove("switch thermal","+actionslot 1");
}
//Function Number: 73
disableorbitalthermal(param_00)
{
param_00 thermalvisionoff();
param_00 notify("thermal_vision_off");
param_00 disablephysicaldepthoffieldscripting();
param_00.orbitalthermalmode = 0;
}
//Function Number: 74
enableorbitalthermal(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
param_00 endon("disconnect");
param_00 endon("death");
param_00 endon("faux_spawn");
param_00 endon(param_01);
if(!isdefined(param_00.opticsthermalenabled))
{
param_00.opticsthermalenabled = 0;
}
if(!isdefined(param_00.orbitalthermalmode))
{
param_00.orbitalthermalmode = 0;
}
param_00.orbitalthermalmode = 1;
while(param_00.opticsthermalenabled)
{
wait(0.05);
}
param_00 thermalvisionon();
param_00 enablephysicaldepthoffieldscripting(3);
param_00 thread setthermaldof(param_01,param_02,param_03,param_04,param_05,param_06,param_07);
}
//Function Number: 75
setthermaldof(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
self endon(param_00);
self endon("disconnect");
self endon("thermal_vision_off");
for(;;)
{
var_07 = self playerads();
var_08 = float_lerp(param_03,param_01,var_07);
var_09 = float_lerp(param_04,param_02,var_07);
self setphysicaldepthoffield(var_08,var_09,param_05,param_06);
wait(0.1);
}
}
//Function Number: 76
float_lerp(param_00,param_01,param_02)
{
return param_00 + param_02 * param_01 - param_00;
}
//Function Number: 77
patchheliloopnode(param_00,param_01)
{
var_02 = [];
var_03 = getentorstruct("heli_loop_start","targetname");
for(;;)
{
if(common_scripts\utility::array_contains(var_02,var_03))
{
break;
}
if(var_03.origin == param_00)
{
var_03.origin = param_01;
return;
}
var_02[var_02.size] = var_03;
var_03 = getentorstruct(var_03.target,"targetname");
}
}