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

1043 lines
24 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps/mp/_tracking_drone.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 48
* Decompile Time: 748 ms
* Timestamp: 10/27/2023 1:49:31 AM
*******************************************************************/
//Function Number: 1
watchtrackingdroneusage()
{
self endon("spawned_player");
self endon("disconnect");
self endon("death");
self endon("faux_spawn");
if(!isdefined(level.trackingdronesettings))
{
trackingdroneinit();
}
for(;;)
{
self waittill("grenade_fire",var_00,var_01);
var_02 = maps\mp\_utility::strip_suffix(var_01,"_lefthand");
if(var_02 == "tracking_drone_mp")
{
var_00 thread destroy_tracking_drone_in_water();
wait(0.5);
if(!isremovedentity(var_00) && isdefined(var_00))
{
self.trackingdronestartposition = var_00.origin;
self.trackingdronestartangles = var_00.angles;
var_00 deletetrackingdrone();
if(!prevent_tracking_drone_in_water(self.trackingdronestartposition))
{
tryusetrackingdrone(var_01);
}
}
}
}
}
//Function Number: 2
trackingdroneinit()
{
level.trackingdronemaxperplayer = 1;
level.trackingdronesettings = spawnstruct();
level.trackingdronesettings.timeout = 20;
level.trackingdronesettings.explosivetimeout = 30;
level.trackingdronesettings.health = 999999;
level.trackingdronesettings.maxhealth = 60;
level.trackingdronesettings.vehicleinfo = "vehicle_tracking_drone_mp";
level.trackingdronesettings.modelbase = "npc_drone_tracking";
level.trackingdronesettings.fxid_sparks = loadfx("vfx/sparks/direct_hack_stun");
level.trackingdronesettings.fxid_laser_glow = loadfx("vfx/lights/tracking_drone_laser_blue");
level.trackingdronesettings.fxid_explode = loadfx("vfx/explosion/tracking_drone_explosion");
level.trackingdronesettings.fxid_lethalexplode = loadfx("vfx/explosion/frag_grenade_default");
level.trackingdronesettings.fxid_warning = loadfx("vfx/lights/light_tracking_drone_blink_warning");
level.trackingdronesettings.fxid_enemy_light = loadfx("vfx/lights/light_tracking_drone_blink_enemy");
level.trackingdronesettings.fxid_friendly_light = loadfx("vfx/lights/light_tracking_drone_blink_friendly");
level.trackingdronesettings.fxid_thruster_down = loadfx("vfx/distortion/tracking_drone_distortion_down");
level.trackingdronesettings.fxid_thruster_up = loadfx("vfx/distortion/tracking_drone_distortion_up");
level.trackingdronesettings.fxid_engine_distort = loadfx("vfx/distortion/tracking_drone_distortion_hemi");
level.trackingdronesettings.sound_explode = "veh_tracking_drone_explode";
level.trackingdronesettings.sound_lock = "veh_tracking_drone_lock_lp";
level.trackingdrones = [];
foreach(var_01 in level.players)
{
var_01.is_being_tracked = 0;
}
level thread ontrackingplayerconnect();
level.trackingdronetimeout = level.trackingdronesettings.timeout;
level.explosivedronetimeout = level.trackingdronesettings.explosivetimeout;
level.trackingdronedebugposition = 0;
level.trackingdronedebugpositionforward = 65;
level.trackingdronedebugpositionheight = 0;
}
//Function Number: 3
tryusetrackingdrone(param_00)
{
var_01 = 1;
if(maps\mp\_utility::isusingremote())
{
return 0;
}
else if(exceededmaxtrackingdrones())
{
self iprintlnbold(&"MP_AIR_SPACE_TOO_CROWDED");
return 0;
}
else if(maps\mp\_utility::currentactivevehiclecount() >= maps\mp\_utility::maxvehiclesallowed() || level.fauxvehiclecount + var_01 >= maps\mp\_utility::maxvehiclesallowed())
{
self iprintlnbold(&"MP_AIR_SPACE_TOO_CROWDED");
return 0;
}
if(!isdefined(self.trackingdronearray))
{
self.trackingdronearray = [];
}
if(self.trackingdronearray.size)
{
self.trackingdronearray = common_scripts\utility::array_removeundefined(self.trackingdronearray);
if(self.trackingdronearray.size >= level.trackingdronemaxperplayer)
{
if(isdefined(self.trackingdronearray[0]))
{
self.trackingdronearray[0] thread trackingdrone_leave();
}
}
}
maps\mp\_utility::incrementfauxvehiclecount();
var_02 = createtrackingdrone(param_00);
if(!isdefined(var_02))
{
maps\mp\_utility::decrementfauxvehiclecount();
return 0;
}
var_02.weaponname = param_00;
self.trackingdronearray[self.trackingdronearray.size] = var_02;
level.trackingdrones = common_scripts\utility::array_removeundefined(level.trackingdrones);
level.trackingdrones[level.trackingdrones.size] = var_02;
thread starttrackingdrone(var_02);
return 1;
}
//Function Number: 4
createtrackingdrone(param_00,param_01,param_02,param_03,param_04)
{
if(!isdefined(param_01))
{
param_01 = 0;
}
if(!param_01)
{
var_05 = self geteye();
var_06 = anglestoforward(self getplayerangles());
var_07 = self getplayerangles();
var_06 = anglestoforward(var_07);
var_08 = anglestoright(var_07);
var_09 = var_06 * 50;
var_0A = var_08 * 0;
var_0B = 80;
switch(self getstance())
{
case "stand":
break;
case "crouch":
break;
case "prone":
break;
}
}
}
//Function Number: 5
idletargetmover(param_00)
{
self endon("disconnect");
level endon("game_ended");
param_00 endon("death");
var_01 = anglestoforward(self.angles);
for(;;)
{
if(maps\mp\_utility::isreallyalive(self) && !maps\mp\_utility::isusingremote() && anglestoforward(self.angles) != var_01)
{
var_01 = anglestoforward(self.angles);
var_02 = self.origin + var_01 * -100 + (0,0,40);
param_00 moveto(var_02,0.5);
}
wait(0.5);
}
}
//Function Number: 6
trackingdrone_lightfx(param_00,param_01)
{
param_01 endon("disconnect");
playfxontagforclients(param_00,self,"fx_light_1",param_01);
wait(0.05);
playfxontagforclients(param_00,self,"fx_light_2",param_01);
wait(0.05);
playfxontagforclients(param_00,self,"fx_light_3",param_01);
wait(0.05);
playfxontagforclients(param_00,self,"fx_light_4",param_01);
}
//Function Number: 7
trackingdrone_enemy_lightfx()
{
self endon("death");
foreach(var_01 in level.players)
{
if(isdefined(var_01) && issentient(var_01) && issentient(self) && var_01.team != self.team)
{
childthread trackingdrone_lightfx(level.trackingdronesettings.fxid_enemy_light,var_01);
wait(0.2);
}
}
}
//Function Number: 8
trackingdrone_friendly_lightfx()
{
self endon("death");
foreach(var_01 in level.players)
{
if(isdefined(var_01) && issentient(var_01) && issentient(self) && var_01.team == self.team)
{
childthread trackingdrone_lightfx(level.trackingdronesettings.fxid_friendly_light,var_01);
wait(0.2);
}
}
thread watchconnectedplayfx();
thread watchjoinedteamplayfx();
}
//Function Number: 9
drone_thrusterfx()
{
self endon("death");
foreach(var_01 in level.players)
{
wait(0.1);
if(isdefined(var_01) && isdefined(self) && isdefined(level.trackingdronesettings.fxid_thruster_down))
{
playfxontagforclients(level.trackingdronesettings.fxid_thruster_down,self,"fx_thruster_down_F",var_01);
}
wait(0.1);
if(isdefined(var_01) && isdefined(self) && isdefined(level.trackingdronesettings.fxid_thruster_down))
{
playfxontagforclients(level.trackingdronesettings.fxid_thruster_down,self,"fx_thruster_down_K",var_01);
}
wait(0.1);
if(isdefined(var_01) && isdefined(self) && isdefined(level.trackingdronesettings.fxid_thruster_down))
{
playfxontagforclients(level.trackingdronesettings.fxid_thruster_down,self,"fx_thruster_down_L",var_01);
}
wait(0.1);
if(isdefined(var_01) && isdefined(self) && isdefined(level.trackingdronesettings.fxid_thruster_down))
{
playfxontagforclients(level.trackingdronesettings.fxid_thruster_down,self,"fx_thruster_down_R",var_01);
}
wait(0.1);
if(isdefined(var_01) && isdefined(self) && isdefined(level.trackingdronesettings.fxid_engine_distort))
{
playfxontagforclients(level.trackingdronesettings.fxid_engine_distort,self,"TAG_WEAPON",var_01);
}
wait(0.25);
}
for(;;)
{
level waittill("connected",var_01);
var_01 waittill("spawned_player");
wait(0.1);
if(isdefined(var_01) && isdefined(self) && isdefined(level.trackingdronesettings.fxid_thruster_down))
{
playfxontagforclients(level.trackingdronesettings.fxid_thruster_down,self,"fx_thruster_down_F",var_01);
}
wait(0.1);
if(isdefined(var_01) && isdefined(self) && isdefined(level.trackingdronesettings.fxid_thruster_down))
{
playfxontagforclients(level.trackingdronesettings.fxid_thruster_down,self,"fx_thruster_down_K",var_01);
}
wait(0.1);
if(isdefined(var_01) && isdefined(self) && isdefined(level.trackingdronesettings.fxid_thruster_down))
{
playfxontagforclients(level.trackingdronesettings.fxid_thruster_down,self,"fx_thruster_down_L",var_01);
}
wait(0.1);
if(isdefined(var_01) && isdefined(self) && isdefined(level.trackingdronesettings.fxid_thruster_down))
{
playfxontagforclients(level.trackingdronesettings.fxid_thruster_down,self,"fx_thruster_down_R",var_01);
}
wait(0.1);
playfxontagforclients(level.trackingdronesettings.fxid_engine_distort,self,"TAG_WEAPON",var_01);
wait(0.25);
}
}
//Function Number: 10
watchconnectedplayfx()
{
self endon("death");
for(;;)
{
level waittill("connected",var_00);
var_00 waittill("spawned_player");
if(isdefined(var_00) && var_00.team == self.team)
{
childthread trackingdrone_lightfx(level.trackingdronesettings.fxid_friendly_light,var_00);
wait(0.2);
}
}
}
//Function Number: 11
watchjoinedteamplayfx()
{
self endon("death");
for(;;)
{
level waittill("joined_team",var_00);
var_00 waittill("spawned_player");
if(isdefined(var_00) && var_00.team == self.team)
{
childthread trackingdrone_lightfx(level.trackingdronesettings.fxid_friendly_light,var_00);
wait(0.2);
}
}
}
//Function Number: 12
starttrackingdrone(param_00)
{
level endon("game_ended");
param_00 endon("death");
param_00 thread trackingdrone_followtarget();
param_00 thread aud_drone_start_jets();
if(isdefined(param_00.type))
{
if(param_00.type == "explosive_drone")
{
param_00 thread checkforexplosivegoal();
return;
}
if(param_00.type == "tracking_drone" && !isdefined(level.ishorde))
{
param_00 thread trackingdrone_highlighttarget();
return;
}
}
}
//Function Number: 13
checkforexplosivegoal()
{
level endon("game_ended");
level endon("host_migration_begin");
self endon("death");
self endon("leaving");
for(;;)
{
common_scripts\utility::waittill_any("goal","near_goal","hit_goal");
if(self.trackedplayer != self.owner && maps\mp\_utility::isreallyalive(self.trackedplayer))
{
var_00 = distancesquared(self.trackedplayer.origin,self.origin);
if(var_00 <= 16384)
{
self notify("exploding");
thread blowupdronesequence();
break;
}
}
}
}
//Function Number: 14
blowupdronesequence()
{
var_00 = 2;
var_01 = undefined;
if(isdefined(self.owner))
{
var_01 = self.owner;
}
if(isdefined(self))
{
thread turnondangerlights();
self playsound("drone_warning_beap");
}
wait(var_00);
if(isdefined(self))
{
self playsound("drone_bomb_explosion");
var_02 = anglestoup(self.angles);
var_03 = anglestoforward(self.angles);
playfx(level.trackingdronesettings.fxid_lethalexplode,self.origin,var_03,var_02);
if(isdefined(var_01))
{
self radiusdamage(self.origin,256,1000,25,var_01,"MOD_EXPLOSIVE","killstreak_missile_strike_mp");
}
else
{
self radiusdamage(self.origin,256,1000,25,undefined,"MOD_EXPLOSIVE","killstreak_missile_strike_mp");
}
self notify("death");
}
}
//Function Number: 15
turnondangerlights()
{
if(isdefined(self))
{
stopfxontag(level.trackingdronesettings.fxid_enemy_light,self,"tag_fx_beacon_0");
stopfxontag(level.trackingdronesettings.fxid_enemy_light,self,"tag_fx_beacon_1");
stopfxontag(level.trackingdronesettings.fxid_enemy_light,self,"tag_fx_beacon_2");
stopfxontag(level.trackingdronesettings.fxid_friendly_light,self,"tag_fx_beacon_0");
stopfxontag(level.trackingdronesettings.fxid_friendly_light,self,"tag_fx_beacon_1");
stopfxontag(level.trackingdronesettings.fxid_friendly_light,self,"tag_fx_beacon_2");
}
wait(0.05);
if(isdefined(self))
{
playfxontag(level.trackingdronesettings.fxid_warning,self,"tag_fx_beacon_0");
playfxontag(level.trackingdronesettings.fxid_warning,self,"tag_fx_beacon_1");
}
wait(0.15);
if(isdefined(self))
{
playfxontag(level.trackingdronesettings.fxid_warning,self,"tag_fx_beacon_2");
}
}
//Function Number: 16
trackingdrone_followtarget()
{
level endon("game_ended");
level endon("host_migration_begin");
self endon("death");
self endon("leaving");
self endon("exploding");
if(!isdefined(self.owner))
{
thread trackingdrone_leave();
return;
}
self.owner endon("disconnect");
self endon("owner_gone");
self vehicle_setspeed(self.followspeed,10,10);
self.previoustrackedplayer = self.owner;
self.trackedplayer = undefined;
if(isdefined(level.ishorde) && level.ishorde)
{
self.trackedplayer = self.owner;
}
for(;;)
{
if(isdefined(self.stunned) && self.stunned)
{
wait(0.5);
continue;
}
if(isdefined(self.owner) && isalive(self.owner))
{
var_00 = self.maxtrackingrange * self.maxtrackingrange;
var_01 = var_00;
if(!isdefined(level.ishorde))
{
if(!isdefined(self.trackedplayer) || self.trackedplayer == self.owner)
{
foreach(var_03 in level.players)
{
if(isdefined(var_03) && isalive(var_03) && var_03.team != self.team && !var_03 maps\mp\_utility::_hasperk("specialty_blindeye"))
{
var_04 = distancesquared(self.origin,var_03.origin);
if(var_04 < var_01)
{
var_01 = var_04;
self.trackedplayer = var_03;
thread watchplayerdeathdisconnect(var_03);
}
}
}
}
}
if(!isdefined(self.trackedplayer))
{
self.trackedplayer = self.owner;
}
if(isdefined(self.trackedplayer))
{
trackingdrone_movetoplayer(self.trackedplayer);
}
if(self.trackedplayer != self.previoustrackedplayer)
{
stophighlightingplayer(self.previoustrackedplayer);
self.previoustrackedplayer = self.trackedplayer;
}
}
wait(1);
}
}
//Function Number: 17
watchplayerdeathdisconnect(param_00)
{
self endon("death");
self endon("leaving");
self endon("exploding");
param_00 common_scripts\utility::waittill_any("death","disconnect","faux_spawn","joined_team");
if(isdefined(param_00))
{
if(param_00.is_being_tracked == 1)
{
if(!isalive(param_00))
{
param_00.died_being_tracked = 1;
}
thread trackingdrone_leave();
return;
}
self.trackedplayer = undefined;
}
}
//Function Number: 18
trackingdrone_movetoplayer(param_00)
{
level endon("game_ended");
self endon("death");
self endon("leaving");
self.owner endon("death");
self.owner endon("disconnect");
self endon("owner_gone");
self notify("trackingDrone_moveToPlayer");
self endon("trackingDrone_moveToPlayer");
var_01 = 0;
var_02 = 0;
var_03 = 0;
if(isdefined(level.ishorde) && level.ishorde)
{
var_01 = 0;
var_02 = 30;
switch(param_00 getstance())
{
case "stand":
break;
case "crouch":
break;
case "prone":
break;
}
}
}
//Function Number: 19
trackingdrone_stopmovement()
{
self setvehgoalpos(self.origin,1);
self.intransit = 0;
self.inactive = 1;
}
//Function Number: 20
trackingdrone_changeowner(param_00)
{
maps\mp\_utility::incrementfauxvehiclecount();
var_01 = param_00 createtrackingdrone(self.weaponname,1,self.origin,self.angles);
if(!isdefined(var_01))
{
maps\mp\_utility::decrementfauxvehiclecount();
return 0;
}
if(!isdefined(param_00.trackingdronearray))
{
param_00.trackingdronearray = [];
}
param_00.trackingdronearray[param_00.trackingdronearray.size] = var_01;
level.trackingdrones = common_scripts\utility::array_removeundefined(level.trackingdrones);
level.trackingdrones[level.trackingdrones.size] = var_01;
param_00 thread starttrackingdrone(var_01);
if(isdefined(level.trackingdronesettings.fxid_sparks))
{
stopfxontag(level.trackingdronesettings.fxid_sparks,self,self.fx_tag0);
}
removetrackingdrone();
return 1;
}
//Function Number: 21
trackingdrone_highlighttarget()
{
level endon("game_ended");
self endon("death");
self endon("leaving");
if(!isdefined(self.owner))
{
thread trackingdrone_leave();
return;
}
self.owner endon("disconnect");
self.owner endon("joined_team");
self.owner endon("joined_spectators");
self.lasertag = spawn("script_model",self.origin);
self.lasertag setmodel("tag_laser");
if(isdefined(self.trackedplayer))
{
self.lasertag.origin = self gettagorigin("tag_weapon");
var_00 = 20;
var_01 = (randomfloat(var_00),randomfloat(var_00),randomfloat(var_00)) - (10,10,10);
var_02 = 65;
switch(self.trackedplayer getstance())
{
case "stand":
break;
case "crouch":
break;
case "prone":
break;
}
}
}
//Function Number: 22
starthighlightingplayer(param_00)
{
self.lasertag laseron("tracking_drone_laser");
playfxontag(level.trackingdronesettings.fxid_laser_glow,self.lasertag,"tag_laser");
if(isdefined(level.trackingdronesettings.sound_lock))
{
self playloopsound(level.trackingdronesettings.sound_lock);
}
param_00 setperk("specialty_radararrow",1,0);
if(param_00.is_being_tracked == 0)
{
param_00.is_being_tracked = 1;
param_00.trackedbyplayer = self.owner;
}
}
//Function Number: 23
stophighlightingplayer(param_00)
{
if(isdefined(self.lasertag))
{
self.lasertag laseroff();
stopfxontag(level.trackingdronesettings.fxid_laser_glow,self.lasertag,"tag_laser");
}
if(isdefined(param_00))
{
if(isdefined(level.trackingdronesettings.sound_lock))
{
self stoploopsound();
}
if(param_00 hasperk("specialty_radararrow",1))
{
param_00 unsetperk("specialty_radararrow",1);
}
param_00 notify("player_not_tracked");
param_00.is_being_tracked = 0;
param_00.trackedbyplayer = undefined;
}
}
//Function Number: 24
ontrackingplayerconnect()
{
level endon("game_ended");
for(;;)
{
level waittill("connected",var_00);
var_00.is_being_tracked = 0;
foreach(var_00 in level.players)
{
if(!isdefined(var_00.is_being_tracked))
{
var_00.is_being_tracked = 0;
}
}
}
}
//Function Number: 25
trackingdrone_watchforgoal()
{
level endon("game_ended");
self endon("death");
self endon("leaving");
self.owner endon("death");
self.owner endon("disconnect");
self endon("owner_gone");
self notify("trackingDrone_watchForGoal");
self endon("trackingDrone_watchForGoal");
var_00 = common_scripts\utility::waittill_any_return("goal","near_goal","hit_goal");
self.intransit = 0;
self.inactive = 0;
self notify("hit_goal");
}
//Function Number: 26
trackingdrone_watchdeath()
{
level endon("game_ended");
self endon("gone");
self waittill("death");
thread trackingdronedestroyed();
}
//Function Number: 27
trackingdrone_watchtimeout()
{
level endon("game_ended");
level endon("host_migration_begin");
self endon("death");
self.owner endon("disconnect");
self endon("owner_gone");
var_00 = level.trackingdronetimeout;
if(self.type == "explosive_drone")
{
var_00 = level.explosivedronetimeout;
}
wait(var_00);
thread trackingdrone_leave();
}
//Function Number: 28
trackingdrone_watchownerloss()
{
level endon("game_ended");
self endon("death");
self endon("leaving");
self.owner common_scripts\utility::waittill_any("disconnect","joined_team","joined_spectators");
self notify("owner_gone");
thread trackingdrone_leave();
}
//Function Number: 29
trackingdrone_watchownerdeath()
{
level endon("game_ended");
self endon("death");
self endon("leaving");
for(;;)
{
self.owner waittill("death");
thread trackingdrone_leave();
}
}
//Function Number: 30
trackingdrone_watchtargetdisconnect()
{
level endon("game_ended");
level endon("host_migration_begin");
self endon("death");
self endon("leaving");
self.owner endon("death");
self.owner endon("disconnect");
self endon("owner_gone");
self notify("trackingDrone_watchTargetDisconnect");
self endon("trackingDrone_watchTargetDisconnect");
self.trackedplayer waittill("disconnect");
stophighlightingplayer(self.trackedplayer);
trackingdrone_movetoplayer(self.owner);
}
//Function Number: 31
trackingdrone_watchroundend()
{
level endon("game_ended");
self endon("death");
self endon("leaving");
self.owner endon("disconnect");
self endon("owner_gone");
level common_scripts\utility::waittill_any("round_end_finished","game_ended");
thread trackingdrone_leave();
}
//Function Number: 32
trackingdrone_watchhostmigration()
{
level endon("game_ended");
self endon("death");
self endon("leaving");
self.owner endon("death");
self.owner endon("disconnect");
self endon("owner_gone");
level waittill("host_migration_begin");
stophighlightingplayer(self.trackedplayer);
trackingdrone_stopmovement();
maps\mp\gametypes\_hostmigration::waittillhostmigrationdone();
thread trackingdrone_changeowner(self.owner);
}
//Function Number: 33
trackingdrone_leave()
{
self endon("death");
self notify("leaving");
stophighlightingplayer(self.trackedplayer);
trackingdroneexplode();
}
//Function Number: 34
ontrackingdronedeath(param_00,param_01,param_02,param_03)
{
self notify("death");
}
//Function Number: 35
trackingdrone_watchdisable()
{
self endon("death");
self.owner endon("disconnect");
level endon("game_ended");
for(;;)
{
self waittill("emp_damage",var_00,var_01);
thread trackingdrone_stunned();
}
}
//Function Number: 36
trackingdrone_stunned()
{
self notify("trackingDrone_stunned");
self endon("trackingDrone_stunned");
self endon("death");
self.owner endon("disconnect");
level endon("game_ended");
trackingdrone_stunbegin();
wait(10);
trackingdrone_stunend();
}
//Function Number: 37
trackingdrone_stunbegin()
{
if(self.stunned)
{
return;
}
self.stunned = 1;
if(isdefined(level.trackingdronesettings.fxid_sparks))
{
playfxontag(level.trackingdronesettings.fxid_sparks,self,self.fx_tag0);
}
thread stophighlightingplayer(self.trackedplayer);
self.trackedplayer = undefined;
self.previoustrackedplayer = self.owner;
thread trackingdrone_stopmovement();
}
//Function Number: 38
trackingdrone_stunend()
{
if(isdefined(level.trackingdronesettings.fxid_sparks))
{
killfxontag(level.trackingdronesettings.fxid_sparks,self,self.fx_tag0);
}
self.stunned = 0;
self.inactive = 0;
}
//Function Number: 39
trackingdronedestroyed()
{
if(!isdefined(self))
{
return;
}
stophighlightingplayer(self.trackedplayer);
trackingdrone_stunend();
trackingdroneexplode();
}
//Function Number: 40
trackingdroneexplode()
{
if(isdefined(level.trackingdronesettings.fxid_explode))
{
playfx(level.trackingdronesettings.fxid_explode,self.origin);
}
if(isdefined(level.trackingdronesettings.sound_explode))
{
self playsound(level.trackingdronesettings.sound_explode);
}
self notify("explode");
removetrackingdrone();
}
//Function Number: 41
deletetrackingdrone()
{
if(!isremovedentity(self) && isdefined(self))
{
if(isdefined(self.attractor))
{
missile_deleteattractor(self.attractor);
}
self delete();
}
}
//Function Number: 42
removetrackingdrone()
{
maps\mp\_utility::decrementfauxvehiclecount();
if(isdefined(self.owner) && isdefined(self.owner.trackingdrone))
{
self.owner.trackingdrone = undefined;
}
if(isdefined(self.lasertag))
{
self.lasertag delete();
}
deletetrackingdrone();
}
//Function Number: 43
addtotrackingdronelist()
{
level.trackingdrones[self getentitynumber()] = self;
}
//Function Number: 44
removefromtrackingdronelistondeath()
{
var_00 = self getentitynumber();
self waittill("death");
level.trackingdrones[var_00] = undefined;
level.trackingdrones = common_scripts\utility::array_removeundefined(level.trackingdrones);
}
//Function Number: 45
exceededmaxtrackingdrones()
{
if(level.trackingdrones.size >= maps\mp\_utility::maxvehiclesallowed())
{
return 1;
}
return 0;
}
//Function Number: 46
aud_drone_start_jets()
{
self playloopsound("veh_tracking_drone_jets_lp");
}
//Function Number: 47
destroy_tracking_drone_in_water()
{
self endon("death");
if(!isdefined(level.water_triggers))
{
return;
}
for(;;)
{
foreach(var_01 in level.water_triggers)
{
if(self istouching(var_01))
{
if(isdefined(level.trackingdronesettings.fxid_explode))
{
playfx(level.trackingdronesettings.fxid_explode,self.origin);
}
if(isdefined(level.trackingdronesettings.sound_explode))
{
self playsound(level.trackingdronesettings.sound_explode);
}
deletetrackingdrone();
}
}
wait(0.05);
}
}
//Function Number: 48
prevent_tracking_drone_in_water(param_00)
{
if(!isdefined(level.water_triggers))
{
return 0;
}
foreach(var_02 in level.water_triggers)
{
if(ispointinvolume(param_00,var_02))
{
return 1;
}
}
return 0;
}