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