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

1220 lines
29 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: _pdrone_player.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 69
* Decompile Time: 1059 ms
* Timestamp: 4/22/2024 2:05:18 AM
*******************************************************************/
//Function Number: 1
_precache()
{
precachemodel("vehicle_sniper_drone_outerparts");
precachemodel("vehicle_vm_sniper_drone");
precachemodel("vehicle_pdrone_player");
precachemodel("dem_tablet_pc_01");
precachemodel("worldhands_atlas_pmc_smp");
precacheshader("overlay_static_digital");
precacheshader("s1_pdrone_player_overlay");
precacheshader("ugv_vignette_overlay");
}
//Function Number: 2
_anims_player()
{
level.scr_model["drone_deploy_player_arms"] = "worldhands_atlas_pmc_smp";
level.scr_animtree["drone_deploy_player_arms"] = #animtree;
level.scr_anim["drone_deploy_player_arms"]["deploy"] = %assault_drone_deploy_vm;
level.scr_anim["drone_deploy_player_arms"]["use"] = %rec_drone_deploy_vm;
level.scr_anim["drone_deploy_player_arms"]["stop_use"] = %rec_drone_deploy_out_vm;
}
//Function Number: 3
_anims_drone()
{
level.scr_model["drone_deploy_drone"] = "vehicle_pdrone_player";
level.scr_animtree["drone_deploy_drone"] = #animtree;
level.scr_anim["drone_deploy_drone"]["deploy"] = %assault_drone_deploy;
}
//Function Number: 4
_anims_proxy()
{
level.scr_animtree["drone_player_proxy"] = #animtree;
level.scr_anim["drone_player_proxy"]["loop"][0] = %pdrone_player_proxy_idle;
}
//Function Number: 5
_anims()
{
_anims_player();
_anims_drone();
_anims_proxy();
}
//Function Number: 6
_fx()
{
level._effect["pdrone_large_death_explosion"] = loadfx("vfx/explosion/vehicle_pdrone_large_explosion");
}
//Function Number: 7
main(param_00,param_01,param_02)
{
maps\_vehicle::build_template("pdrone_player",param_00,param_01,param_02);
maps\_vehicle::build_localinit(::init_local);
maps\_vehicle::build_team("allies");
maps\_vehicle::build_life(10000,0,10000);
maps\_vehicle::build_turret("pdrone_player_turret_sp","tag_origin","vehicle_sniper_drone_turret_mp",undefined,"manual",0.2,0,0,(0,0,0));
_precache();
_anims();
_fx();
}
//Function Number: 8
init_local()
{
thread start_player_pdrone_audio();
}
//Function Number: 9
start_player_pdrone_audio()
{
var_00 = spawnstruct();
var_00.preset_name = "pdrone_player";
var_01 = ::vehicle_scripts\_pdrone_player_aud::snd_pdrone_player_constructor;
soundscripts\_snd::snd_message("snd_register_vehicle",var_00.preset_name,var_01);
soundscripts\_snd::snd_message("snd_start_vehicle",var_00);
}
//Function Number: 10
pdrone_deploy_check(param_00,param_01,param_02)
{
if(!isdefined(param_00))
{
param_00 = 125;
}
if(!isdefined(param_01))
{
param_01 = 10;
}
if(!isdefined(param_02))
{
param_02 = 45;
}
var_03 = level.player geteye();
var_04 = 1;
var_05 = common_scripts\utility::flat_angle(level.player getgunangles());
var_06 = 0;
for(var_07 = 0;var_07 <= 5;var_07++)
{
var_08 = (1,0,0);
var_09 = var_05;
switch(var_07)
{
case 1:
var_09 = (-1 * param_02,var_09[1] - param_01,0);
var_08 = (0,1,0);
break;
case 2:
var_09 = (0,var_09[1] - param_01,0);
var_08 = (0,0,1);
break;
case 3:
var_09 = (0,var_09[1] + param_01,0);
var_08 = (1,1,1);
break;
case 4:
var_09 = (-1 * param_02,var_09[1] + param_01,0);
var_08 = (0,0,0);
break;
case 5:
var_09 = (-1 * param_02,var_09[1] - param_01,0);
var_08 = (1,1,0);
break;
}
var_0A = var_03 + anglestoforward(var_09) * param_00;
var_0B = playerphysicstrace(var_03,var_0A);
var_0C = length(var_0B - var_0A);
var_04 = var_0C == 0;
}
return var_04;
}
//Function Number: 11
pdrone_deploy(param_00,param_01,param_02)
{
var_03 = maps\_utility::spawn_anim_model("drone_deploy_player_arms",level.player.origin);
var_04 = maps\_utility::spawn_anim_model("drone_deploy_drone",level.player.origin);
var_05 = level.player common_scripts\utility::spawn_tag_origin();
level.player enableinvulnerability();
level.player maps\_shg_utility::setup_player_for_scene();
var_06 = common_scripts\utility::spawn_tag_origin();
var_06 linkto(var_03,"tag_player",(0,0,0),(0,0,0));
if(level.player getstance() == "prone")
{
while(level.player getstance() != "crouch")
{
level.player setstance("crouch");
wait 0.05;
}
var_07 = 49;
}
var_07 = 0;
if(level.player getstance() == "crouch")
{
var_07 = 20;
}
level.player.dronedeploystance = level.player getstance();
var_03.origin = level.player.origin - (0,0,var_07);
var_04.origin = level.player.origin - (0,0,var_07);
var_05.origin = level.player.origin - (0,0,var_07);
var_05 maps\_anim::anim_first_frame_solo(var_03,"deploy");
soundscripts\_snd::snd_message("snd_player_drone_deploy",var_04);
var_03 hide();
var_08 = 0.5;
level.player playerlinktoblend(var_06,"tag_origin",var_08);
wait(var_08);
var_03 show();
thread introscreen_fade_in();
var_05 maps\_anim::anim_single([var_03,var_04],"deploy");
var_09 = param_00 maps\_utility::spawn_vehicle();
var_09 setmodel("vehicle_pdrone_player");
if(isdefined(param_02))
{
var_09 vehicle_teleport(param_02.origin,param_02.angles);
}
else
{
var_09 vehicle_teleport(var_04.origin,var_04.angles);
}
level.player unlink();
var_03 delete();
var_04 delete();
var_05 delete();
level.player maps\_shg_utility::setup_player_for_gameplay();
level.player disableinvulnerability();
if(isdefined(param_01) && param_01)
{
var_09 thread pdrone_orient_to_closest_ai_target();
}
return var_09;
}
//Function Number: 12
pdrone_orient_to_closest_target(param_00)
{
if(!isdefined(param_00) || param_00.size == 0)
{
return;
}
var_01 = common_scripts\utility::getclosest(self.origin,param_00,100000);
if(isdefined(var_01) && isalive(var_01))
{
var_02 = var_01.origin - self.origin;
var_03 = vectortoangles(var_02);
self vehicle_teleport(self.origin,var_03);
}
}
//Function Number: 13
pdrone_orient_to_closest_ai_target()
{
pdrone_orient_to_closest_target(getaiarray("axis"));
}
//Function Number: 14
pdrone_orient_to_closest_ent_target()
{
var_00 = [];
foreach(var_02 in getarraykeys(self.ent_targets))
{
var_00 = common_scripts\utility::array_combine(var_00,getentarray(self.ent_targets[var_02],var_02));
}
pdrone_orient_to_closest_target(var_00);
}
//Function Number: 15
introscreen_fade_in()
{
wait(4);
thread maps\_introscreen::introscreen_generic_fade_in("black",0.4,0.3,0.3);
}
//Function Number: 16
_pdrone_stop_use_anim()
{
var_00 = maps\_utility::spawn_anim_model("drone_deploy_player_arms",level.player.origin);
var_01 = level.player common_scripts\utility::spawn_tag_origin();
level.player playerlinktoabsolute(var_00,"tag_player");
var_01 maps\_anim::anim_single_solo(var_00,"stop_use");
level.player unlink();
var_02 = level.player getdroptofloorposition(level.player.origin + (0,0,60));
if(isdefined(var_02))
{
level.player setorigin(var_02);
}
var_00 delete();
var_01 delete();
}
//Function Number: 17
_get_if_defined_or_default(param_00,param_01)
{
if(isdefined(param_00))
{
return param_00;
}
return param_01;
}
//Function Number: 18
_pdrone_player_proxy_delicate_flower(param_00)
{
self endon("death");
param_00 endon("death");
for(;;)
{
param_00 waittill("damage",var_01,var_02);
if(isplayer(var_02) && var_01 > 50)
{
break;
}
}
self.player_proxy_took_damage = 1;
pdrone_player_force_exit();
}
//Function Number: 19
_pdrone_player_proxy(param_00)
{
var_01 = getent("pdrone_player_proxy","targetname");
var_02 = var_01 maps\_utility::spawn_ai(1);
var_02.animname = "drone_player_proxy";
var_02.name = "Mitchell";
var_02.no_ai = 1;
var_02 maps\_utility::gun_remove();
var_02.ignoreme = 1;
var_02.ignoreall = 1;
var_02.team = "axis";
var_02.no_friendly_fire_penalty = 1;
var_02 disableaimassist();
var_02 thread maps\_utility::magic_bullet_shield(1);
var_02 hudoutlineenable(3,1,1);
var_02 attach("dem_tablet_pc_01","tag_weapon_left");
var_03 = self.saved.return_tag;
if(isdefined(param_00))
{
var_03 = param_00;
}
self.player_proxy = var_02;
self.player_proxy_org = var_03;
childthread _pdrone_player_proxy_delicate_flower(var_02);
var_02 forceteleport(var_03.origin,var_03.angles);
var_03 maps\_anim::anim_loop_solo(var_02,"loop","stop_loop");
}
//Function Number: 20
_pdrone_player_proxy_clear()
{
if(isdefined(self.player_proxy))
{
self.player_proxy_org notify("stop_loop");
if(isdefined(self.magic_bullet_shield) && self.magic_bullet_shield)
{
maps\_utility::stop_magic_bullet_shield();
}
self.player_proxy hide();
self.player_proxy common_scripts\utility::delaycall(0.1,::delete);
}
}
//Function Number: 21
pdrone_player_use(param_00,param_01,param_02,param_03)
{
param_00.saved = spawnstruct();
param_00.data = spawnstruct();
param_00.data.volumes_targetname = param_01;
param_00.team = level.player.team;
param_00.time = param_02;
param_00.is_pdrone = 1;
param_00.turret = param_00.mgturret[0];
param_00.turret hide();
if(isdefined(param_03))
{
param_00.losing_connection_multipler = param_03;
}
else
{
param_00.losing_connection_multipler = 1.5;
}
param_00.data.player_command_for_exit = "stance";
if(!level.player usinggamepad())
{
param_00.data.player_command_for_exit = "activate";
}
}
//Function Number: 22
pdrone_player_spawn(param_00,param_01,param_02,param_03)
{
var_04 = maps\_vehicle::spawn_vehicle_from_targetname(param_00);
pdrone_player_use(var_04,param_01,param_02,param_03);
return var_04;
}
//Function Number: 23
_save_dvars()
{
self.saved.vehhelicoptercontrolsaltitude = getdvarint("vehHelicopterControlsAltitude",1);
self.saved.vehhelicoptercontrolsystem = getdvarint("vehHelicopterControlSystem",1);
self.saved.r_hudoutlineenable = getdvar("r_hudoutlineenable",0);
self.saved.r_hudoutlinepostmode = getdvar("r_hudoutlinepostmode",0);
self.saved.r_hudoutlinehalolumscale = getdvar("r_hudoutlinehalolumscale",0);
self.saved.r_hudoutlinehaloblurradius = getdvar("r_hudoutlinehaloblurradius",0);
self.saved.aim_turnrate_pitch = getdvarint("aim_turnrate_pitch");
self.saved.aim_turnrate_yaw = getdvarint("aim_turnrate_yaw");
self.saved.playerhealth_regularregendelay = level.player.gs.playerhealth_regularregendelay;
self.saved.longregentime = level.player.gs.longregentime;
}
//Function Number: 24
_reset_dvars()
{
setsaveddvar("vehHelicopterControlsAltitude",self.saved.vehhelicoptercontrolsaltitude);
setsaveddvar("vehHelicopterControlSystem",self.saved.vehhelicoptercontrolsystem);
setsaveddvar("r_hudoutlineenable",self.saved.r_hudoutlineenable);
setsaveddvar("r_hudoutlinepostmode",self.saved.r_hudoutlinepostmode);
setsaveddvar("r_hudoutlinehalolumscale",self.saved.r_hudoutlinehalolumscale);
setsaveddvar("r_hudoutlinehaloblurradius",self.saved.r_hudoutlinehaloblurradius);
setsaveddvar("aim_turnrate_pitch",self.saved.aim_turnrate_pitch);
setsaveddvar("aim_turnrate_yaw",self.saved.aim_turnrate_yaw);
level.player.gs.playerhealth_regularregendelay = self.saved.playerhealth_regularregendelay;
level.player.gs.longregentime = self.saved.playerhealth_regularregendelay;
}
//Function Number: 25
_set_dvars()
{
setsaveddvar("vehHelicopterControlsAltitude",1);
setsaveddvar("vehHelicopterControlSystem",1);
setsaveddvar("r_hudoutlineenable",1);
setsaveddvar("r_hudoutlinepostmode",2);
setsaveddvar("r_hudoutlinehalolumscale",1);
setsaveddvar("r_hudoutlinehaloblurradius",0.7);
setsaveddvar("aim_turnrate_pitch",100);
setsaveddvar("aim_turnrate_yaw",130);
level.player.gs.playerhealth_regularregendelay = level.player.gs.playerhealth_regularregendelay / 500;
level.player.gs.longregentime = level.player.gs.longregentime / 500;
}
//Function Number: 26
_vmodel_anims(param_00,param_01)
{
self useanimtree(#animtree);
var_02 = getanimlength(param_01);
for(;;)
{
self setanimknob(param_00);
level.player waittill("weapon_fired");
if(1)
{
level.player.rumble_entity.intensity = level.player.rumble_entity.intensity + 0.1;
}
while(level.player attackbuttonpressed())
{
self setanimknobrestart(param_01);
wait(var_02 / 6);
}
if(1)
{
level.player.rumble_entity.intensity = level.player.rumble_entity.intensity - 0.1;
}
}
}
//Function Number: 27
_debug_vector_to_string(param_00)
{
return "( " + param_00[0] + " , " + param_00[1] + ", " + param_00[2] + " )";
}
//Function Number: 28
_vmodel_sway()
{
for(;;)
{
var_00 = self vehicle_getbodyvelocity();
var_01 = length(var_00);
if(1)
{
if(var_01 > 100)
{
if(!isdefined(self.movement_rumble))
{
level.player.rumble_entity.intensity = level.player.rumble_entity.intensity + 0.01;
self.movement_rumble = 1;
}
}
else if(isdefined(self.movement_rumble))
{
level.player.rumble_entity.intensity = level.player.rumble_entity.intensity - 0.01;
self.movement_rumble = undefined;
}
}
var_02 = 400;
var_03 = 0;
var_04 = 0;
var_05 = 4;
if(var_00[1] < 0)
{
var_06 = clamp(var_00[1] * -1,0,var_02);
var_03 = var_06 / var_02;
}
else if(var_00[1] > 0)
{
var_07 = clamp(var_00[1],0,var_02);
var_04 = var_07 / var_02;
}
var_08 = -1 * var_03 * var_05 + var_04 * var_05;
var_09 = 0;
var_0A = 0;
var_0B = 1;
if(var_00[0] < 0)
{
var_0C = clamp(var_00[0] * -1,0,var_02);
var_09 = var_0C / var_02;
}
else if(var_00[0] > 0)
{
var_0D = clamp(var_00[0],0,var_02);
var_0A = var_0D / var_02;
}
var_0E = -1 * var_09 * var_0B + var_0A * var_0B;
self.vmodelbarrel unlinkfromplayerview(level.player);
self.vmodelouter unlinkfromplayerview(level.player);
self.vmodelbarrel linktoplayerview(level.player,"tag_origin",(-5,0,-1.75),(var_0E,0,var_08),1);
self.vmodelouter linktoplayerview(level.player,"tag_origin",(6,0,-3),(var_0E,0,var_08),1);
wait 0.05;
}
}
//Function Number: 29
_vmodel_enter()
{
var_00 = spawn("script_model",self.origin);
var_00 setmodel("vehicle_sniper_drone_outerparts");
var_00 linktoplayerview(level.player,"tag_origin",(6,0,-3),(0,0,0),1);
var_00 childthread _vmodel_anims(%sniper_drone_outerparts_idle,%sniper_drone_outerparts_fire);
self.vmodelouter = var_00;
var_01 = spawn("script_model",self.origin);
var_01 setmodel("vehicle_vm_sniper_drone");
var_01 linktoplayerview(level.player,"tag_origin",(-5,0,-1.75),(0,0,0),1);
var_01 childthread _vmodel_anims(%sniper_drone_vm_idle,%sniper_drone_vm_fire);
self.vmodelbarrel = var_01;
childthread _vmodel_sway();
}
//Function Number: 30
_vmodel_exit()
{
self.vmodelouter unlinkfromplayerview(level.player);
self.vmodelouter delete();
self.vmodelbarrel unlinkfromplayerview(level.player);
self.vmodelbarrel delete();
}
//Function Number: 31
_monitor_threat_count()
{
for(;;)
{
setomnvar("ui_assaultdrone_threat_count",self.hud_targets.size);
self waittill("update_threat_count");
}
}
//Function Number: 32
_reduce_hud_target_count_on_death(param_00)
{
param_00 common_scripts\utility::waittill_either("death","fake_death");
self.hud_targets = common_scripts\utility::array_remove(self.hud_targets,param_00);
self.hud_targets = maps\_utility::remove_dead_from_array(self.hud_targets);
self notify("update_threat_count");
if(self.hud_targets.size == 0)
{
self notify("all_threats_eliminated");
}
}
//Function Number: 33
_sethudoutline(param_00)
{
param_00 hudoutlineenable(1,1,0);
childthread _reduce_hud_target_count_on_death(param_00);
}
//Function Number: 34
_sethudoutline_on_spawn(param_00)
{
for(;;)
{
param_00 waittill("spawned",var_01);
self.hud_targets = common_scripts\utility::array_add(self.hud_targets,var_01);
_sethudoutline(var_01);
}
}
//Function Number: 35
_mark_newlyspawned()
{
var_00 = common_scripts\utility::array_combine(getspawnerarray(),vehicle_getspawnerarray());
foreach(var_02 in var_00)
{
childthread _sethudoutline_on_spawn(var_02);
}
}
//Function Number: 36
_set_hudoutline_on_enemies()
{
self.hud_targets = getaiarray("axis");
self.hud_allies = getaiarray("allies");
if(isdefined(self.vehicle_targets))
{
var_00 = [];
foreach(var_02 in getarraykeys(self.vehicle_targets))
{
var_00 = common_scripts\utility::array_combine(var_00,getentarray(self.vehicle_targets[var_02],var_02));
}
self.hud_targets = common_scripts\utility::array_combine(self.hud_targets,var_00);
}
if(isdefined(self.ent_targets))
{
var_04 = [];
foreach(var_02 in getarraykeys(self.ent_targets))
{
var_04 = common_scripts\utility::array_combine(var_04,getentarray(self.ent_targets[var_02],var_02));
}
self.hud_targets = common_scripts\utility::array_combine(self.hud_targets,var_04);
}
foreach(var_08 in self.hud_targets)
{
_sethudoutline(var_08);
}
childthread _mark_newlyspawned();
childthread _monitor_threat_count();
foreach(var_0B in self.hud_allies)
{
var_0B hudoutlineenable(6,1,0);
}
}
//Function Number: 37
_remove_hudoutline_on_enemies()
{
var_00 = common_scripts\utility::array_combine(self.hud_targets,self.hud_allies);
foreach(var_02 in var_00)
{
if(isdefined(var_02) && !isremovedentity(var_02))
{
var_02 hudoutlinedisable();
}
}
}
//Function Number: 38
pdrone_player_enter(param_00,param_01,param_02)
{
level.player endon("drone_exit");
_save_dvars();
_set_dvars();
level.cansave = 0;
level.player enableinvulnerability();
if(isdefined(param_00) && param_00)
{
childthread _pdrone_player_proxy(param_01);
}
if(!isdefined(param_01))
{
self.saved.return_tag = level.player common_scripts\utility::spawn_tag_origin();
}
else
{
self.saved.return_tag = param_01;
}
self.no_threat_return_node = param_02;
level.player maps\_utility::teleport_player(self);
level.player drivevehicleandcontrolturret(self,0);
if(1)
{
level.player.rumble_entity = maps\_utility::get_rumble_ent("steady_rumble");
level.player.rumble_entity.intensity = 0.088;
}
self.turret useby(level.player);
self.turret makeunusable();
level.player disableturretdismount();
level.player.is_driving_pdrone = 1;
self hide();
self makeentitysentient("allies");
_vmodel_enter();
maps\_shg_utility::hide_player_hud();
_setup_overlay_static();
_setup_hud();
thread _remove_hud_on_death();
_set_hudoutline_on_enemies();
childthread _listen_drone_input();
}
//Function Number: 39
pdrone_player_is_driving()
{
return isdefined(level.player.is_driving_pdrone) && level.player.is_driving_pdrone;
}
//Function Number: 40
_pdrone_player_exit_return_control()
{
wait(0.2);
level.player maps\_shg_utility::setup_player_for_gameplay();
level.player freezecontrols(0);
}
//Function Number: 41
pdrone_player_death()
{
wait(0.25);
var_00 = self gettagorigin("tag_origin");
radiusdamage(var_00,256,250,50,level.player);
playfx(common_scripts\utility::getfx("pdrone_large_death_explosion"),var_00);
soundscripts\_snd::snd_message("pdrone_death_explode");
}
//Function Number: 42
pdrone_player_exit(param_00)
{
pdrone_player_force_exit();
_remove_drone_control();
level.cansave = 1;
maps\_shg_utility::show_player_hud();
level.player freezecontrols(1);
level.player maps\_shg_utility::setup_player_for_scene();
if(isalive(level.player))
{
thread maps\_introscreen::introscreen_generic_fade_in("black",0.1,0.3,0.3);
wait(0.35);
_pdrone_player_proxy_clear();
_remove_hud();
_remove_overlay_static();
_reset_dvars();
if(1)
{
level.player stoprumble("steady_rumble");
if(isdefined(level.player.rumble_entity))
{
level.player.rumble_entity delete();
}
}
if(level.player.is_driving_pdrone)
{
level.player drivevehicleandcontrolturretoff(self);
level.player.is_driving_pdrone = 0;
self.turret delete();
}
level.player disableinvulnerability();
_vmodel_exit();
_remove_hudoutline_on_enemies();
if(isdefined(self.no_threat_return_node) && self.hud_targets.size < 2)
{
self.saved.return_tag = self.no_threat_return_node;
}
if(isdefined(self.saved.return_tag))
{
level.player maps\_utility::teleport_player(self.saved.return_tag);
}
if(isdefined(self.player_proxy_took_damage) && self.player_proxy_took_damage)
{
var_01 = level.player.health * 0.2 / level.player.damagemultiplier;
level.player dodamage(var_01,self.origin,level.player);
}
if(self.customhealth <= 0 && distance(self.saved.return_tag.origin,self.origin) > 150)
{
thread pdrone_player_death();
}
if(isdefined(param_00) && param_00)
{
_pdrone_stop_use_anim();
}
thread _pdrone_player_exit_return_control();
}
}
//Function Number: 43
_make_overlay(param_00,param_01,param_02,param_03)
{
var_04 = newclienthudelem(level.player);
var_04.x = 0;
var_04.y = 0;
if(param_02)
{
var_04.horzalign = "fullscreen";
var_04.vertalign = "fullscreen";
}
else
{
var_04.horzalign = "center";
var_04.vertalign = "middle";
}
var_04.sort = param_03;
var_04 setshader(param_00,640,480);
var_04.alpha = param_01;
return var_04;
}
//Function Number: 44
_setup_overlay_static()
{
self.overlaystatic = _make_overlay("overlay_static_digital",0,1,0);
}
//Function Number: 45
_setup_hud()
{
setomnvar("ui_assaultdrone_toggle",1);
}
//Function Number: 46
_remove_overlay_static()
{
self.overlaystatic destroy();
}
//Function Number: 47
_remove_hud()
{
setomnvar("ui_assaultdrone_toggle",0);
}
//Function Number: 48
_remove_hud_on_death()
{
level waittill("missionfailed");
if(isdefined(self) && pdrone_player_is_driving())
{
_remove_hud();
}
}
//Function Number: 49
_set_overlay_static_alpha(param_00)
{
self.overlaystatic.alpha = param_00;
}
//Function Number: 50
_manage_timer(param_00)
{
var_01 = param_00;
var_02 = 0.05;
while(var_01 >= 0)
{
setomnvar("ui_assaultdrone_countdown",param_00 - var_01);
wait(var_02);
var_01 = var_01 - var_02;
}
pdrone_player_force_exit();
}
//Function Number: 51
_do_a_lil_damage_and_heal(param_00)
{
if(!isdefined(param_00))
{
return;
}
level.player dodamage(1,param_00.origin,param_00);
}
//Function Number: 52
_monitor_volume_array()
{
level.player endon("drone_exit");
var_00 = 1;
var_01 = common_scripts\utility::spawn_tag_origin();
for(;;)
{
var_01.origin = self.origin;
var_01.angles = self.angles;
var_02 = var_01 getistouchingentities(self.data.volume_array);
if(!isdefined(var_02) || !isarray(var_02) || var_02.size == 0)
{
var_03 = 50 * var_00;
self notify("damage",var_03);
var_00 = var_00 * self.losing_connection_multipler;
setomnvar("ui_assaultdrone_connection",0);
}
else
{
if(var_00 > 1)
{
var_00 = var_00 / self.losing_connection_multipler;
var_00 = max(1,var_00);
}
setomnvar("ui_assaultdrone_connection",1);
}
wait(0.25);
}
}
//Function Number: 53
_monitor_damage()
{
for(;;)
{
self waittill("damage",var_00,var_01);
thread _do_a_lil_damage_and_heal(var_01);
self.lastdamageat = gettime();
self.customhealth = self.customhealth - var_00;
if(self.customhealth <= 0)
{
self notify("custom_death");
break;
}
}
}
//Function Number: 54
_monitor_regen()
{
self.disableregen = 0;
for(;;)
{
if(!self.disableregen && gettime() - self.lastdamageat > 1000)
{
self.customhealth = min(self.customhealth + 10,self.custommaxhealth);
}
wait 0.05;
}
}
//Function Number: 55
_monitor_static()
{
self.extra_static = 0;
for(;;)
{
var_00 = 1 - self.customhealth / self.custommaxhealth;
var_00 = var_00 * 0.3;
var_00 = var_00 + self.extra_static;
_set_overlay_static_alpha(var_00);
wait 0.05;
}
}
//Function Number: 56
_monitor_touch()
{
for(;;)
{
self waittill("touch",var_00);
if(isai(var_00))
{
self notify("damage",4000);
if(isdefined(var_00.targetname) && issubstr(var_00.targetname,"pdrone_player_proxy"))
{
var_00 dodamage(100,self.origin,level.player);
}
else if(var_00.team != "allies")
{
var_00 kill();
}
}
wait 0.05;
}
}
//Function Number: 57
_bootup_static()
{
self.extra_static = 0.5;
while(self.extra_static > 0)
{
wait(0.15);
self.extra_static = self.extra_static - 0.05;
}
self.extra_static = 0;
}
//Function Number: 58
_monitor_health()
{
self.custommaxhealth = 4000;
self.customhealth = self.custommaxhealth;
self.lastdamageat = gettime();
childthread _monitor_damage();
childthread _monitor_regen();
childthread _monitor_static();
childthread _bootup_static();
childthread _monitor_touch();
if(isdefined(self.data.volumes_targetname))
{
self.data.volume_array = getentarray(self.data.volumes_targetname,"targetname");
childthread _monitor_volume_array();
}
self waittill("custom_death");
var_00 = 0.3;
while(var_00 <= 1)
{
var_00 = var_00 + 0.05;
_set_overlay_static_alpha(var_00);
wait 0.05;
}
pdrone_player_force_exit();
}
//Function Number: 59
_monitor_controls()
{
self endon("monitor_controls_end");
var_00 = spawnstruct();
self.controlcheck = var_00;
var_00 maps\_utility::ent_flag_init("move_done");
var_00 maps\_utility::ent_flag_init("steer_done");
var_00 maps\_utility::ent_flag_init("attack_done");
var_00 maps\_utility::ent_flag_init("ads_done");
var_00 maps\_utility::ent_flag_init("up_done");
var_00 maps\_utility::ent_flag_init("down_done");
while(!var_00 maps\_utility::ent_flag("move_done") || !var_00 maps\_utility::ent_flag("steer_done") || !var_00 maps\_utility::ent_flag("attack_done") || !var_00 maps\_utility::ent_flag("ads_done") || !var_00 maps\_utility::ent_flag("up_done") || !var_00 maps\_utility::ent_flag("down_done"))
{
var_01 = level.player getnormalizedmovement();
if(length(var_01) > 0.1)
{
var_00 maps\_utility::ent_flag_set("move_done");
}
var_01 = level.player getnormalizedcameramovements();
if(length(var_01) > 0.1 || !level.player usinggamepad())
{
var_00 maps\_utility::ent_flag_set("steer_done");
}
if(level.player attackbuttonpressed())
{
var_00 maps\_utility::ent_flag_set("attack_done");
}
if(level.player adsbuttonpressed())
{
var_00 maps\_utility::ent_flag_set("ads_done");
}
if(level.player fragbuttonpressed())
{
var_00 maps\_utility::ent_flag_set("up_done");
}
if(level.player secondaryoffhandbuttonpressed())
{
var_00 maps\_utility::ent_flag_set("down_done");
}
wait 0.05;
}
}
//Function Number: 60
_show_contols()
{
childthread _monitor_controls();
setomnvar("ui_assaultdrone_controls",0);
setomnvar("ui_assaultdrone_controls_exit",0);
wait(1);
var_00 = self.controlcheck;
setomnvar("ui_assaultdrone_controls",1);
var_00 maps\_utility::ent_flag_wait("move_done");
var_00 maps\_utility::ent_flag_wait("steer_done");
setomnvar("ui_assaultdrone_controls",0);
wait(1);
setomnvar("ui_assaultdrone_controls",2);
var_00 maps\_utility::ent_flag_wait("attack_done");
var_00 maps\_utility::ent_flag_wait("ads_done");
setomnvar("ui_assaultdrone_controls",0);
wait(1);
setomnvar("ui_assaultdrone_controls_exit",1);
setomnvar("ui_assaultdrone_controls",3);
var_00 maps\_utility::ent_flag_wait("up_done");
var_00 maps\_utility::ent_flag_wait("down_done");
setomnvar("ui_assaultdrone_controls",0);
}
//Function Number: 61
pdrone_player_loop()
{
level.player endon("drone_exit");
level.player endon("death");
childthread _monitor_health();
childthread _show_contols();
if(isdefined(self.time) && self.time > 0)
{
childthread _manage_timer(self.time);
}
for(;;)
{
self.maxhealth = 500000;
self.health = self.maxhealth;
wait 0.05;
}
}
//Function Number: 62
pdrone_player_get_current_fov()
{
return self.data.current_fov;
}
//Function Number: 63
pdrone_player_force_exit()
{
if(!isdefined(self.is_pdrone))
{
return;
}
level.player notify("drone_exit");
}
//Function Number: 64
pdrone_player_add_vehicle_target(param_00,param_01)
{
if(!isdefined(self.vehicle_targets))
{
self.vehicle_targets = [];
}
self.vehicle_targets[param_00] = param_01;
}
//Function Number: 65
pdrone_player_add_ent_target(param_00,param_01)
{
if(!isdefined(self.ent_targets))
{
self.ent_targets = [];
}
self.ent_targets[param_00] = param_01;
}
//Function Number: 66
_listen_for_hold_to_exit_set_flags(param_00)
{
for(;;)
{
level.player waittill("hold_to_exit_start");
param_00 maps\_utility::ent_flag_set("exit_button_pressed");
level.player waittill("hold_to_exit_stop");
param_00 maps\_utility::ent_flag_clear("exit_button_pressed");
}
}
//Function Number: 67
_listen_for_hold_to_exit()
{
var_00 = spawnstruct();
var_00 maps\_utility::ent_flag_init("exit_button_pressed");
childthread _listen_for_hold_to_exit_set_flags(var_00);
for(;;)
{
var_00 maps\_utility::ent_flag_wait("exit_button_pressed");
var_01 = 0;
while(var_00 maps\_utility::ent_flag("exit_button_pressed"))
{
if(var_01 >= 1 || !level.player usinggamepad())
{
level.player notify("drone_exit");
break;
}
wait 0.05;
var_01 = var_01 + 0.05;
}
}
}
//Function Number: 68
_listen_drone_input()
{
level.player notifyonplayercommand("weapon_fired","+attack");
if(isdefined(self.data.player_command_for_exit))
{
wait(2);
level.player notifyonplayercommand("hold_to_exit_start","+" + self.data.player_command_for_exit);
level.player notifyonplayercommand("hold_to_exit_stop","-" + self.data.player_command_for_exit);
childthread _listen_for_hold_to_exit();
}
}
//Function Number: 69
_remove_drone_control()
{
if(isdefined(self.data.player_command_for_exit))
{
notifyoncommandremove("hold_to_exit_start","+" + self.data.player_command_for_exit);
notifyoncommandremove("hold_to_exit_stop","-" + self.data.player_command_for_exit);
}
}