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

319 lines
6.1 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: _weapon_pdrone.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 13
* Decompile Time: 229 ms
* Timestamp: 4/22/2024 2:24:59 AM
*******************************************************************/
//Function Number: 1
initialize()
{
setsaveddvar("vehHelicopterControlsAltitude",1);
precachemodel("tag_laser");
precacheitem("pdrone_weapon");
precacheitem("pdrone_weapon_bullet");
precacheshader("dpad_killstreak_remote_uav");
precacheshader("dpad_laser_designator");
}
//Function Number: 2
give_player_pdrone(param_00)
{
self.pdroneactive = 0;
self.pdronereturning = 0;
self setweaponhudiconoverride("actionslot4","dpad_killstreak_remote_uav");
self notifyonplayercommand("use_pdrone","+actionslot 4");
for(;;)
{
self waittill("use_pdrone");
if(self isthrowinggrenade())
{
continue;
}
if(!self.pdroneactive)
{
self allowfire(0);
var_01 = self getcurrentprimaryweapon();
self takeweapon(var_01);
self giveweapon("pdrone_weapon_bullet");
self switchtoweaponimmediate("pdrone_weapon_bullet");
self givemaxammo("pdrone_weapon_bullet");
wait_til_pdrone_launched();
self allowfire(1);
if(isdefined(self.pdrone_launched) && self.pdrone_launched)
{
self disableweaponswitch();
self disableoffhandweapons();
wait(1.75);
pdrone_launch(param_00);
self.pdrone_launched = undefined;
wait(0.25);
self enableoffhandweapons();
self enableweaponswitch();
}
self takeweapon("pdrone_weapon_bullet");
self giveweapon(var_01);
self switchtoweaponimmediate(var_01);
continue;
}
pdrone_return();
}
}
//Function Number: 3
pdrone_return()
{
var_00 = self;
var_01 = var_00.pdrone;
var_01 maps\_utility::ent_flag_clear("sentient_controlled");
var_00 notify("pdrone_returning");
var_01 thread pdrone_return_pathing();
var_01 waittill("goal");
var_01 delete();
var_00 notify("pdrone_returned");
}
//Function Number: 4
pdrone_return_pathing()
{
self endon("goal");
self.goalradius = 40;
self vehicle_setspeed(20,20,20);
self setlookatent(self.owner);
for(;;)
{
self setvehgoalpos(self.owner.origin + (0,0,84),0);
wait(0.05);
}
}
//Function Number: 5
wait_til_pdrone_launched()
{
self endon("death");
self endon("use_pdrone");
self endon("weapon_switch_started");
self notifyonplayercommand("launch_pdrone","+attack");
self waittill("launch_pdrone");
self.pdrone_launched = 1;
}
//Function Number: 6
pdrone_launch(param_00)
{
self.pdroneactive = 1;
var_01 = spawn_pdrone(param_00);
if(isdefined(var_01))
{
var_01 makeentitysentient(self.team);
var_01.team = self.team;
var_01.pov_mode = 0;
var_01.owner = self;
if(self.team == "allies")
{
var_01 maps\_vehicle::godon();
}
self.pdrone = var_01;
self notify("pdrone_launched");
self.pdrone = var_01;
var_01 thread pdrone_monitor_death();
}
}
//Function Number: 7
spawn_pdrone(param_00)
{
while(isdefined(param_00.available) && !param_00.available)
{
wait(0.05);
}
if(!isdefined(self))
{
return undefined;
}
param_00.available = 0;
param_00.script_team = self.team;
if(isplayer(self))
{
var_01 = self getplayerangles();
}
else
{
var_01 = self.angles;
}
var_02 = anglestoforward(var_01);
var_03 = anglestoup(var_01);
var_04 = var_02 * 24 + var_03 * 100;
if(var_04[2] < 80)
{
var_04 = var_04 + (0,0,80 - var_04[2]);
}
param_00.origin = self.origin + var_04;
param_00.angles = self.angles;
waittillframeend;
param_00.available = 1;
if(isdefined(self) && isalive(self))
{
return param_00 maps\_utility::spawn_vehicle();
}
return undefined;
}
//Function Number: 8
pdrone_monitor_death()
{
self waittill("death");
if(isdefined(self))
{
if(isdefined(self.owner))
{
self.owner.pdroneactive = 0;
}
}
}
//Function Number: 9
pd_laser_targeting_device(param_00)
{
param_00 endon("remove_laser_targeting_device");
param_00.lastusedweapon = undefined;
param_00.laserforceon = 0;
param_00 setweaponhudiconoverride("actionslot4","dpad_laser_designator");
param_00 notifyonplayercommand("use_laser","+actionslot 4");
param_00 notifyonplayercommand("fired_laser","+attack");
param_00 childthread pd_monitorlaseroff();
for(;;)
{
param_00 waittill("use_laser");
if(param_00.laserforceon || param_00 pd_shouldforcedisablelaser())
{
param_00 notify("cancel_laser");
param_00 laseroff();
param_00.laserforceon = 0;
wait(0.2);
param_00 allowfire(1);
}
else
{
param_00 laseron();
param_00 allowfire(0);
param_00.laserforceon = 1;
param_00 thread pd_laser_designate_target();
}
wait(0.05);
}
}
//Function Number: 10
pd_shouldforcedisablelaser()
{
var_00 = self getcurrentweapon();
if(var_00 == "rpg")
{
return 1;
}
if(var_00 == "c4")
{
return 1;
}
if(common_scripts\utility::string_starts_with(var_00,"gl"))
{
return 1;
}
if(var_00 == "pdrone_weapon_bullet")
{
return 1;
}
if(isdefined(level.laser_designator_disable_list) && isarray(level.laser_designator_disable_list))
{
foreach(var_02 in level.laser_designator_disable_list)
{
if(var_00 == var_02)
{
return 1;
}
}
}
if(self isreloading())
{
return 1;
}
if(self isthrowinggrenade())
{
return 1;
}
return 0;
}
//Function Number: 11
pd_monitorlaseroff()
{
for(;;)
{
if(pd_shouldforcedisablelaser() && isdefined(self.laserforceon) && self.laserforceon)
{
self notify("use_laser");
wait(2);
}
wait(0.05);
}
}
//Function Number: 12
pd_laser_designate_target()
{
self endon("cancel_laser");
self waittill("fired_laser");
var_00 = pd_get_laser_designated_trace();
var_01 = var_00["position"];
var_02 = var_00["entity"];
if(distance(self.origin,var_01) < 100000)
{
self notify("pdrone_defend_point",var_00);
}
else
{
iprintln("too far");
}
wait(0.05);
self notify("use_laser");
}
//Function Number: 13
pd_get_laser_designated_trace()
{
var_00 = self geteye();
var_01 = self getplayerangles();
var_02 = anglestoforward(var_01);
var_03 = var_00 + var_02 * 7000;
var_04 = bullettrace(var_00,var_03,0,self);
var_05 = var_04["entity"];
if(isdefined(var_05))
{
var_04["position"] = var_05.origin;
}
return var_04;
}