mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
1220 lines
29 KiB
Plaintext
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);
|
|
}
|
|
} |