mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
1951 lines
40 KiB
Plaintext
1951 lines
40 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: 3629.gsc
|
|
* Game: Call of Duty: Infinite Warfare
|
|
* Platform: PC
|
|
* Function Count: 73
|
|
* Decompile Time: 37 ms
|
|
* Timestamp: 10/27/2023 12:30:58 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
func_112B5()
|
|
{
|
|
precachemodel("veh_mil_air_un_pocketdrone");
|
|
precachemodel("veh_mil_air_un_pocketdrone_dyn");
|
|
precachemodel("veh_mil_air_un_pocketdrone_shotdown_flight_body_dangle");
|
|
precachemodel("veh_mil_air_un_pocketdrone_shotdown_crash_body_dangle");
|
|
precachemodel("veh_mil_air_un_pocketdrone_timeout_crash_body_4fan");
|
|
precacheitem("supportdrone_trophy_turret");
|
|
precacheitem("supportdrone");
|
|
precacheitem("supportdrone_up2");
|
|
precacheshader("hud_icon_wireless");
|
|
precacheshader("overlay_static");
|
|
precacheshader("icon_ability_drone");
|
|
precacheshader("cb_remotemissile_target_hostile");
|
|
setdvarifuninitialized("support_drone_debug",0);
|
|
setdvarifuninitialized("scan_ability",1);
|
|
level._effect["drone_thruster"] = loadfx("vfx/iw7/core/equipment/drone/vfx_drone_down_thrust_child.vfx");
|
|
level._effect["drone_damaged_loop"] = loadfx("vfx/iw7/core/equipment/drone/vfx_drone_damage_malfunction_loop.vfx");
|
|
level._effect["drone_trophy_laser"] = loadfx("vfx/iw7/core/equipment/drone/vfx_drone_muzzle_flash_trophy_r.vfx");
|
|
level._effect["drone_trophy_pop"] = loadfx("vfx/iw7/core/equipment/drone/vfx_drone_trophy_pop.vfx");
|
|
level._effect["drone_shotdown_air_damage"] = loadfx("vfx/iw7/core/equipment/drone/vfx_drone_death_shotdown.vfx");
|
|
level._effect["drone_death_hit_ground"] = loadfx("vfx/iw7/core/equipment/drone/vfx_drone_death.vfx");
|
|
level.player scripts\sp\_utility::func_65E0("player_support_drone_active");
|
|
level.player scripts\sp\_utility::func_65E0("support_drone_spawning");
|
|
level.var_5C19 = [91,83,108,72];
|
|
level.var_5C18 = 0;
|
|
level.player.var_5CA6 = [];
|
|
level.player.var_5C6E = 0;
|
|
level.player.var_5C4F = 0;
|
|
level.player.var_4C29 = [];
|
|
level.player thread func_5BE1();
|
|
scripts\sp\_utility::func_9189("default_supdrone",2,"default");
|
|
}
|
|
|
|
//Function Number: 2
|
|
func_5138()
|
|
{
|
|
scripts\sp\_utility::func_228A(level.player.var_5CA6);
|
|
level.player.var_5CA6 = scripts\common\utility::func_22BC(level.player.var_5CA6);
|
|
}
|
|
|
|
//Function Number: 3
|
|
func_5C9E()
|
|
{
|
|
self endon("death");
|
|
self endon("support_drone_think");
|
|
var_00 = func_129A();
|
|
for(;;)
|
|
{
|
|
self waittill("secondary_equipment_change");
|
|
waittillframeend;
|
|
if(!isdefined(scripts\sp\_utility::func_7C3D()) || scripts\sp\_utility::func_7C3D() != var_00)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
scripts\common\utility::func_6E2A("secondary_equipment_in_use");
|
|
self notify("drone_unequipped");
|
|
}
|
|
|
|
//Function Number: 4
|
|
func_112BB()
|
|
{
|
|
self endon("death");
|
|
self endon("drone_unequipped");
|
|
self notify("support_drone_think");
|
|
self endon("support_drone_think");
|
|
thread func_5C9E();
|
|
var_00 = func_112B8();
|
|
for(;;)
|
|
{
|
|
level.var_112B9 = 0;
|
|
for(;;)
|
|
{
|
|
self waittill("grenade_fire",var_01,var_02);
|
|
if(var_02 == "supportdrone" || var_02 == "supportdrone_up2")
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!func_385A())
|
|
{
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
level.player scripts\sp\_utility::func_65E8("support_drone_spawning");
|
|
level.player scripts\sp\_utility::func_65E1("support_drone_spawning");
|
|
scripts\common\utility::flag_set("secondary_equipment_in_use");
|
|
level.player scripts\common\utility::func_1C6E(0);
|
|
level.player scripts\sp\_utility::func_65E1("player_support_drone_active");
|
|
if(!getdvarint("player_sustainAmmo",0))
|
|
{
|
|
var_03 = self method_80FB(func_129A());
|
|
self setweaponammoclip(func_129A(),var_03 - 1);
|
|
}
|
|
|
|
self notify("offhand_fired");
|
|
var_04 = func_112BA(var_00);
|
|
var_04.var_D384 = func_7B15();
|
|
var_04.var_9180 = var_04.var_D384;
|
|
self.var_4C29[var_04.var_D384] = spawnstruct();
|
|
self.var_4C29[var_04.var_D384].var_5BD7 = var_04;
|
|
self.var_4C29[var_04.var_D384].var_51BA = 0;
|
|
self.var_4C29[var_04.var_D384].var_9A96 = 1;
|
|
self.var_4C29[var_04.var_D384].var_C7B4 = 0;
|
|
func_F377(var_04.var_9180,"active");
|
|
func_5C32(var_04.var_9180,var_04.var_1E41);
|
|
level.player scripts\common\utility::func_1C6E(1);
|
|
scripts\common\utility::func_6E2A("secondary_equipment_in_use");
|
|
level.player thread scripts\sp\_utility::func_65DE("support_drone_spawning",0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
func_5BE1()
|
|
{
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
var_00 = 0;
|
|
for(var_01 = 0;var_01 < 5;var_01++)
|
|
{
|
|
if(isdefined(self.var_4C29[var_01]) && self.var_4C29[var_01].var_51BA == 1)
|
|
{
|
|
self.var_4C29[var_01] = undefined;
|
|
level notify("drone_max_cleanup");
|
|
var_00 = 1;
|
|
}
|
|
}
|
|
|
|
if(var_00)
|
|
{
|
|
var_02 = 0;
|
|
for(var_01 = 0;var_01 < 5;var_01++)
|
|
{
|
|
if(isdefined(self.var_4C29[var_01]) && isdefined(self.var_4C29[var_01].var_5BD7))
|
|
{
|
|
self.var_4C29[var_01].var_5BD7.var_D384 = var_02;
|
|
var_02++;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(level.player.var_5C6E > 0)
|
|
{
|
|
level.player.var_5C6E = level.player.var_5C6E - 0.05;
|
|
}
|
|
|
|
if(level.player.var_5C4F > 0)
|
|
{
|
|
level.player.var_5C4F = level.player.var_5C4F - 0.05;
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
func_7AC7()
|
|
{
|
|
if(isdefined(self.var_5CB3))
|
|
{
|
|
return 5;
|
|
}
|
|
|
|
return 3;
|
|
}
|
|
|
|
//Function Number: 7
|
|
func_7B32()
|
|
{
|
|
var_00 = 0;
|
|
for(var_01 = 0;var_01 < func_7AC7();var_01++)
|
|
{
|
|
if(isdefined(self.var_4C29[var_01]))
|
|
{
|
|
var_00++;
|
|
}
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 8
|
|
func_7B15()
|
|
{
|
|
for(var_00 = 0;var_00 < func_7AC7();var_00++)
|
|
{
|
|
if(!isdefined(self.var_4C29[var_00]))
|
|
{
|
|
return var_00;
|
|
}
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
//Function Number: 9
|
|
func_385A()
|
|
{
|
|
if(!self method_843C() || self method_81B8() || !scripts\common\utility::func_9EC1() || !scripts\common\utility::func_9EBF())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = self method_80FB(func_129A());
|
|
if(var_00 <= 0)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(func_7B32() >= func_7AC7() - 1)
|
|
{
|
|
thread func_C808();
|
|
while(func_7B32() > func_7AC7() - 1)
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 10
|
|
func_C808()
|
|
{
|
|
if(!isdefined(level.player.var_4C29))
|
|
{
|
|
return;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
var_00 = undefined;
|
|
var_01 = undefined;
|
|
for(var_02 = 0;var_02 < 5;var_02++)
|
|
{
|
|
if(!isdefined(level.player.var_4C29[var_02]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(level.player.var_4C29[var_02].var_E0EC) && level.player.var_4C29[var_02].var_E0EC)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(level.player.var_4C29[var_02].var_9A96) && level.player.var_4C29[var_02].var_9A96)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_00) || level.player.var_4C29[var_02].var_5BD7.var_1E41 < var_00)
|
|
{
|
|
var_00 = level.player.var_4C29[var_02].var_5BD7.var_1E41;
|
|
var_01 = var_02;
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_01))
|
|
{
|
|
level.player.var_4C29[var_01].var_5BD7 notify("timeout");
|
|
level.player.var_4C29[var_01].var_E0EC = 1;
|
|
break;
|
|
}
|
|
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
func_112BA(param_00)
|
|
{
|
|
var_01 = getentarray("support_drone_spawner","targetname");
|
|
var_02 = var_01[0];
|
|
level.player thread scripts\sp\_utility::func_CE2F("support_drone_activate");
|
|
self notify("drone_spawned");
|
|
var_03 = level.player getplayerangles();
|
|
var_04 = scripts\common\utility::func_6EE1(var_03);
|
|
var_05 = level.player geteye();
|
|
var_06 = anglestoup(var_03);
|
|
var_07 = anglestoup(var_04);
|
|
var_08 = anglestoforward(var_04);
|
|
var_09 = 24;
|
|
var_0A = 24;
|
|
var_0B = var_05;
|
|
var_0C = scripts\common\trace::func_DCED(var_05,var_05 + var_06 * var_0A + var_09,undefined,scripts\common\trace::func_4956(1));
|
|
if(var_0C["fraction"] != 1)
|
|
{
|
|
var_0C = scripts\common\trace::func_DCED(var_05,var_05 + var_07 * var_0A + var_09,undefined,scripts\common\trace::func_4956(1));
|
|
if(var_0C["fraction"] != 1)
|
|
{
|
|
var_0B = var_05 + var_07 * var_0A * var_0C["fraction"];
|
|
}
|
|
else
|
|
{
|
|
var_0B = var_05 + var_07 * var_0A;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_0B = var_05 + var_06 * var_0A;
|
|
}
|
|
|
|
var_02.origin = var_0B;
|
|
var_02.angles = var_04;
|
|
var_0D = var_02 scripts\sp\_utility::func_10808();
|
|
var_0D method_83D0(#animtree);
|
|
var_0D method_81F1("allies");
|
|
var_0D method_81FA(1);
|
|
var_0D method_834E("equipment");
|
|
var_0D setcandamage(1);
|
|
var_0D scripts\sp\_vehicle::func_8441();
|
|
var_0D method_839E();
|
|
var_0D.var_6DA5 = 0;
|
|
var_0D.var_C181 = 0;
|
|
level.player.var_112AB = var_0D;
|
|
var_0D.var_50 = 0.5;
|
|
var_0D.var_B00E = spawn("script_origin",(0,0,0));
|
|
var_0D method_8305(var_0D.var_B00E);
|
|
var_0D.var_D630 = undefined;
|
|
scripts\common\utility::array_thread(param_00,::func_112B7,var_0D);
|
|
var_0D notify("stop_kicking_up_dust");
|
|
var_0D.var_2654 = 0;
|
|
var_0D.var_1E41 = 20;
|
|
var_0D makeunusable();
|
|
var_0D thread func_5C1F();
|
|
var_0D thread func_5C4B(1,1);
|
|
if(!isdefined(var_0D.var_B435))
|
|
{
|
|
var_0D.var_B435 = 100;
|
|
}
|
|
|
|
var_0D.var_1280E = 0;
|
|
var_0D thread func_112BC();
|
|
var_0D thread func_5C30();
|
|
var_0D thread func_5C55();
|
|
var_0D thread func_5C59();
|
|
var_0D thread func_5C5C();
|
|
var_0D thread func_5C3F();
|
|
var_0D thread func_5BED();
|
|
var_0D thread func_5C37();
|
|
var_0D thread func_5BF0();
|
|
var_0D method_82A4(%equip_pocket_drone_hover_loop);
|
|
return var_0D;
|
|
}
|
|
|
|
//Function Number: 12
|
|
func_11719(param_00)
|
|
{
|
|
param_00 endon("death");
|
|
iprintlnbold("Dpad Up: hover");
|
|
iprintlnbold("Dpad Left: damaged");
|
|
iprintlnbold("Dpad Right: death");
|
|
level.player notifyonplayercommand("dpadup","+actionslot 1");
|
|
level.player notifyonplayercommand("dpaddown","+actionslot 2");
|
|
level.player notifyonplayercommand("dpadleft","+actionslot 3");
|
|
for(;;)
|
|
{
|
|
var_01 = level.player scripts\common\utility::func_13734("dpadup","dpaddown","dpadleft");
|
|
if(var_01 == "dpadup")
|
|
{
|
|
iprintlnbold("hover");
|
|
param_00 method_82A4(%equip_pocket_drone_hover_loop);
|
|
}
|
|
else if(var_01 == "dpadleft")
|
|
{
|
|
iprintlnbold("damaged");
|
|
param_00 method_82A4(%equip_pocket_drone_damaged_loop);
|
|
}
|
|
else if(var_01 == "dpaddown")
|
|
{
|
|
iprintlnbold("death");
|
|
param_00 method_82A4(%equip_pocket_drone_death_loop);
|
|
}
|
|
|
|
wait(0.25);
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
func_5C30()
|
|
{
|
|
if(isdefined(self.var_C93D))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(self.team == "allies")
|
|
{
|
|
scripts\sp\_utility::func_9196(3,0,0,"default_supdrone");
|
|
self.var_5CDB scripts\sp\_utility::func_9196(3,0,0,"default_supdrone");
|
|
return;
|
|
}
|
|
|
|
if(self.team == "axis")
|
|
{
|
|
scripts\sp\_utility::func_9196(1,0,0,"default_supdrone");
|
|
self.var_5CDB scripts\sp\_utility::func_9196(1,0,0,"default_supdrone");
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
func_112BC()
|
|
{
|
|
foreach(var_01 in self.var_B6BD)
|
|
{
|
|
var_01 method_835E("allies");
|
|
var_01.var_5041 = "manual";
|
|
var_01 method_830F("manual");
|
|
var_01 method_83C7();
|
|
var_01 method_82FB(90);
|
|
var_01 method_8330(90);
|
|
var_01 method_8353(90);
|
|
var_01 method_82B6(90);
|
|
var_01 method_82C9(0,"yaw");
|
|
var_01 method_82C9(0,"pitch");
|
|
}
|
|
|
|
self.var_5CDB = self.var_B6BD[0];
|
|
self.var_B6BD[0] show();
|
|
self.var_5CAF = ::func_5C0F;
|
|
}
|
|
|
|
//Function Number: 15
|
|
func_5C37()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
var_00 = 0;
|
|
for(;;)
|
|
{
|
|
if(func_D2DD())
|
|
{
|
|
var_00 = 1;
|
|
}
|
|
else if(level.player.ignoreme)
|
|
{
|
|
var_00 = 1;
|
|
}
|
|
else
|
|
{
|
|
var_00 = 0;
|
|
}
|
|
|
|
self.ignoreme = var_00;
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
func_5C4B(param_00,param_01)
|
|
{
|
|
if(isdefined(param_00) && param_00)
|
|
{
|
|
thread func_5BD8();
|
|
}
|
|
|
|
if(isdefined(param_01) && param_01)
|
|
{
|
|
thread func_5BDD();
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
func_5C3F()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
wait(100);
|
|
self notify("timeout");
|
|
}
|
|
|
|
//Function Number: 18
|
|
func_5BF0()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
var_00 = scripts\common\utility::func_13734("no_ammo","lethal_damage","timeout","vr_delete");
|
|
if(isdefined(level.player.var_4C29[self.var_9180].var_9A96) && level.player.var_4C29[self.var_9180].var_9A96)
|
|
{
|
|
while(level.player.var_4C29[self.var_9180].var_9A96)
|
|
{
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
thread func_F378(self.var_9180,"off");
|
|
if(var_00 == "no_ammo")
|
|
{
|
|
wait(1);
|
|
thread func_5BF5(1);
|
|
return;
|
|
}
|
|
|
|
if(var_00 == "lethal_damage")
|
|
{
|
|
thread func_5BF6();
|
|
return;
|
|
}
|
|
|
|
if(var_00 == "timeout")
|
|
{
|
|
thread func_5BF5();
|
|
return;
|
|
}
|
|
|
|
if(var_00 == "vr_delete")
|
|
{
|
|
thread func_5BF7();
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
func_5BF5(param_00)
|
|
{
|
|
self notify("death_anim");
|
|
if(isdefined(param_00) && param_00 == 1)
|
|
{
|
|
func_F377(self.var_9180,"noammo");
|
|
}
|
|
else
|
|
{
|
|
func_F377(self.var_9180,"destroyed");
|
|
}
|
|
|
|
scripts\sp\_utility::func_9193("default_supdrone");
|
|
self.var_5CDB scripts\sp\_utility::func_9193("default_supdrone");
|
|
self playsound("support_drone_engine_mvmt_death");
|
|
self method_82A4(%equip_pocket_drone_death_loop);
|
|
thread func_5C0C("veh_mil_air_un_pocketdrone_timeout_crash_body_4fan");
|
|
}
|
|
|
|
//Function Number: 20
|
|
func_5BF7()
|
|
{
|
|
self notify("death_anim");
|
|
func_F377(self.var_9180,"destroyed");
|
|
scripts\sp\_utility::func_9193("default_supdrone");
|
|
self.var_5CDB scripts\sp\_utility::func_9193("default_supdrone");
|
|
scripts\common\utility::func_136F7();
|
|
if(isdefined(self.var_B00E))
|
|
{
|
|
self.var_B00E delete();
|
|
}
|
|
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 21
|
|
func_5BF6()
|
|
{
|
|
self notify("death_anim");
|
|
func_F377(self.var_9180,"destroyed");
|
|
scripts\sp\_utility::func_9193("default_supdrone");
|
|
self.var_5CDB scripts\sp\_utility::func_9193("default_supdrone");
|
|
self playsound("support_drone_engine_mvmt_death");
|
|
self method_82A4(%equip_pocket_drone_death_loop);
|
|
if(isdefined(self.var_A964))
|
|
{
|
|
var_00 = self.var_A964;
|
|
}
|
|
else
|
|
{
|
|
var_00 = anglestoright(level.player getplayerangles());
|
|
}
|
|
|
|
if(var_00 == (0,0,0))
|
|
{
|
|
var_00 = (1,0,0);
|
|
}
|
|
|
|
var_01 = anglestoup(vectortoangles(var_00));
|
|
playfx(level._effect["drone_shotdown_air_damage"],self.origin,var_00,var_01);
|
|
self setmodel("veh_mil_air_un_pocketdrone_shotdown_flight_body_dangle");
|
|
thread func_5C0C("veh_mil_air_un_pocketdrone_shotdown_crash_body_dangle");
|
|
}
|
|
|
|
//Function Number: 22
|
|
func_5C0C(param_00)
|
|
{
|
|
var_01 = anglestoforward(self.angles + (45,0,0) + (0,randomfloat(360),0));
|
|
var_02 = scripts\common\trace::func_DCED(self.origin,self.origin + var_01 * 999999,undefined,scripts\common\trace::func_4956(1));
|
|
var_03 = distance(self.origin,var_02["position"]);
|
|
var_04 = 0.43;
|
|
var_05 = var_03 * var_04;
|
|
self method_8316(var_05);
|
|
thread func_5C0D();
|
|
self method_830A(60,60);
|
|
self.angles = (45,45,0);
|
|
self method_8362(var_02["position"],0);
|
|
self waittill("near_goal");
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_06 = 0.05681818;
|
|
var_07 = self vehicle_getvelocity();
|
|
var_08 = var_07 * var_06;
|
|
var_09 = 2.5;
|
|
var_0A = spawn("script_model",self.origin + var_08);
|
|
var_0A setmodel(param_00);
|
|
var_0A hide();
|
|
var_0A.angles = self gettagangles("j_body");
|
|
wait(0.05);
|
|
var_0A show();
|
|
var_0A physicslaunchserver(var_0A.origin,var_07 * var_09);
|
|
if(isdefined(self.var_B00E))
|
|
{
|
|
self.var_B00E delete();
|
|
}
|
|
|
|
self delete();
|
|
var_0B = 0.1;
|
|
var_0C = 64;
|
|
var_0D = var_0B * var_05 / var_0C;
|
|
wait(var_0D);
|
|
var_0A playsound("support_drone_engine_mvmt_death_impact_hit");
|
|
playfx(level._effect["drone_death_hit_ground"],var_0A.origin,anglestoforward(var_0A.angles),anglestoup(var_0A.angles));
|
|
level.player.var_5CA6 = scripts\common\utility::func_22BC(level.player.var_5CA6);
|
|
if(level.player.var_5CA6.size >= 5)
|
|
{
|
|
level.player.var_5CA6[0] delete();
|
|
level.player.var_5CA6 = scripts\common\utility::func_22BC(level.player.var_5CA6);
|
|
}
|
|
|
|
level.player.var_5CA6[level.player.var_5CA6.size] = var_0A;
|
|
var_0A thread func_5BE7();
|
|
}
|
|
|
|
//Function Number: 23
|
|
func_5BE7()
|
|
{
|
|
level.player endon("death");
|
|
self endon("death");
|
|
self endon("entitydeleted");
|
|
for(;;)
|
|
{
|
|
if(distance(level.player.origin,self.origin) > 2200)
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait(1);
|
|
}
|
|
|
|
level.player.var_5CA6 = scripts\common\utility::func_22A9(level.player.var_5CA6,self);
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 24
|
|
func_5C0D()
|
|
{
|
|
self endon("death");
|
|
self endon("near_goal");
|
|
self method_83E5(30,8,8);
|
|
wait(0.5);
|
|
if(isdefined(self))
|
|
{
|
|
self method_83E5(30,25,25);
|
|
}
|
|
}
|
|
|
|
//Function Number: 25
|
|
func_5C55()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
thread func_5C44();
|
|
self method_82F6(2,10,10);
|
|
self method_8379("instant");
|
|
self method_8316(64);
|
|
self method_83E5(50,50,100);
|
|
self.var_8435 = (0,0,level.var_5C19[level.var_5C18]);
|
|
level.var_5C18++;
|
|
if(level.var_5C18 >= level.var_5C19.size)
|
|
{
|
|
level.var_5C18 = 0;
|
|
}
|
|
|
|
var_00 = 1;
|
|
var_01 = (-3000,-3000,-3000);
|
|
var_02 = (-3000,-3000,-3000);
|
|
func_5C57(var_02);
|
|
for(;;)
|
|
{
|
|
wait(0.05);
|
|
var_03 = undefined;
|
|
self.var_6FFF = 0;
|
|
var_04 = func_5C52();
|
|
if(var_04 == "follow")
|
|
{
|
|
var_05 = scripts\common\utility::func_5D14(level.player.origin,8);
|
|
if(func_5C56(var_05))
|
|
{
|
|
var_03 = func_5C54();
|
|
var_02 = var_05;
|
|
func_5C57(var_02);
|
|
}
|
|
else
|
|
{
|
|
var_03 = var_01;
|
|
func_5C5A(var_02);
|
|
}
|
|
}
|
|
else if(var_04 == "combat")
|
|
{
|
|
self.var_BE7A = scripts\sp\_utility::func_22BB(self.var_BE7A);
|
|
if(isdefined(self.var_1155E) && isalive(self.var_1155E) && level.player.var_5C4F > 0)
|
|
{
|
|
var_03 = var_01;
|
|
}
|
|
else
|
|
{
|
|
var_03 = func_5C53(var_01);
|
|
}
|
|
}
|
|
|
|
if(var_01 == var_03)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01 = var_03;
|
|
thread func_5C61(var_03);
|
|
}
|
|
}
|
|
|
|
//Function Number: 26
|
|
func_5C54()
|
|
{
|
|
var_00 = anglestoforward(level.player.angles);
|
|
var_01 = anglestoright(level.player.angles);
|
|
var_02 = scripts\common\utility::func_5D14(level.player.origin,8);
|
|
var_03 = self.var_8435[2];
|
|
var_04 = var_02 + (0,0,var_03);
|
|
var_05 = scripts\common\trace::func_DCED(var_02,var_04,undefined,scripts\common\trace::func_4956(1));
|
|
if(var_05["fraction"] != 1)
|
|
{
|
|
var_04 = var_02 + (0,0,var_05["fraction"] * var_03 - 10);
|
|
}
|
|
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
thread scripts\common\utility::func_5B4B(var_02,var_04,0,1,1,0.1);
|
|
}
|
|
|
|
var_06 = 1;
|
|
var_07 = 1;
|
|
if(self.var_D384 == 1)
|
|
{
|
|
var_07 = -1;
|
|
}
|
|
else if(self.var_D384 == 2)
|
|
{
|
|
var_06 = -1;
|
|
}
|
|
else if(self.var_D384 >= 3)
|
|
{
|
|
var_06 = -1;
|
|
var_07 = -1;
|
|
}
|
|
|
|
var_08 = 115 * var_06 + self.var_8435[0];
|
|
var_09 = 45 * var_07 + self.var_8435[1];
|
|
var_0A = var_04 + var_00 * var_08 + var_01 * var_09;
|
|
var_05 = scripts\common\trace::func_DCED(var_04,var_0A,undefined,scripts\common\trace::func_4956(1));
|
|
if(var_05["fraction"] != 1)
|
|
{
|
|
var_0B = vectornormalize(var_0A - var_04);
|
|
var_0C = distance(var_0A,var_04);
|
|
var_0A = var_04 + var_0B * var_05["fraction"] * var_0C - 10;
|
|
}
|
|
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
thread scripts\common\utility::func_5B4B(var_04,var_0A,0,1,1,0.1);
|
|
}
|
|
|
|
var_0D = var_0A;
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
thread scripts\common\utility::func_5B4B(var_0D,var_0D + (0,0,16),0,0,1,0.1);
|
|
}
|
|
|
|
var_0E = scripts\common\trace::func_DCF1(self.origin,var_0D,undefined,scripts\common\trace::func_4956(1));
|
|
if(var_0E)
|
|
{
|
|
self.var_6FFF = 1;
|
|
}
|
|
else if(getdvarint("support_drone_debug"))
|
|
{
|
|
thread scripts\common\utility::func_5B4B(self.origin,var_0D,1,0,0,0.1);
|
|
}
|
|
|
|
var_0F = scripts\common\utility::func_5D14(var_0D,0);
|
|
var_10 = getclosestpointonnavmesh(var_0F);
|
|
var_11 = 1;
|
|
if(distance(var_0F,var_10) > 8)
|
|
{
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
thread scripts\common\utility::func_5B4B(var_0F,var_0F + (0,0,16),1,0,0,0.25);
|
|
thread scripts\common\utility::func_5B4B(var_10,var_10 + (0,0,16),0,1,0,0.25);
|
|
}
|
|
|
|
if(!self.var_6FFF)
|
|
{
|
|
var_11 = 0;
|
|
}
|
|
}
|
|
|
|
var_12 = var_0D;
|
|
if(!var_11)
|
|
{
|
|
if(distance(var_02,var_10) > distance(var_02,var_0F))
|
|
{
|
|
var_12 = var_04;
|
|
}
|
|
else
|
|
{
|
|
var_12 = (var_10[0],var_10[1],var_04[2]);
|
|
}
|
|
}
|
|
|
|
self.var_1D55 = var_03;
|
|
return var_12;
|
|
}
|
|
|
|
//Function Number: 27
|
|
func_5C57(param_00)
|
|
{
|
|
self.var_4B2E = 6;
|
|
self.var_4B2F = param_00;
|
|
}
|
|
|
|
//Function Number: 28
|
|
func_5C5A(param_00)
|
|
{
|
|
var_01 = 4.88;
|
|
self.var_4B2E = min(self.var_4B2E + var_01,128);
|
|
if(self.var_4B2E != 128)
|
|
{
|
|
var_02 = self.origin - param_00;
|
|
var_02 = vectornormalize((var_02[0],var_02[1],0));
|
|
self.var_4B2F = self.var_4B2F + var_02 * distance2d(self.origin,param_00) / 2 * 0.8 * 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 29
|
|
func_5C56(param_00)
|
|
{
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
thread scripts\sp\_utility::func_5B29(self.var_4B2F + (0,0,16),self.var_4B2E,(1,0,0),1,0,1);
|
|
}
|
|
|
|
if(distance(param_00,self.var_4B2F) >= self.var_4B2E)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 30
|
|
func_5C51()
|
|
{
|
|
self.var_4B2E = 0;
|
|
}
|
|
|
|
//Function Number: 31
|
|
func_5C53(param_00)
|
|
{
|
|
var_01 = self.var_8435[2];
|
|
var_02 = scripts\common\utility::func_5D14(level.player.origin,5);
|
|
var_02 = var_02 + (0,0,var_01);
|
|
var_03 = [];
|
|
var_04 = [];
|
|
foreach(var_06 in self.var_BE7A)
|
|
{
|
|
var_03[var_03.size] = var_06.origin + (0,0,var_01);
|
|
var_04[var_04.size] = var_06.origin + (0,0,var_01);
|
|
}
|
|
|
|
for(var_08 = 0;var_08 < int(self.var_BE7A.size * 1.5);var_08++)
|
|
{
|
|
var_03[var_03.size] = var_02;
|
|
}
|
|
|
|
var_09 = averagepoint(var_03);
|
|
var_0A = averagepoint(var_04);
|
|
var_0B = (0,0,0);
|
|
if(var_0A == var_02)
|
|
{
|
|
var_0B = level.player.angles;
|
|
}
|
|
else
|
|
{
|
|
var_0B = vectortoangles(vectornormalize(var_0A - var_02));
|
|
}
|
|
|
|
var_0C = vectornormalize(var_0A - var_02);
|
|
var_0D = distance(var_09,var_02);
|
|
if(var_0D > 700)
|
|
{
|
|
var_09 = var_02 + var_0C * 700;
|
|
}
|
|
|
|
var_0E = anglestoright(var_0B);
|
|
var_0F = 90;
|
|
if(self.var_D384 == 0)
|
|
{
|
|
var_09 = var_09 + var_0E * var_0F / 2;
|
|
}
|
|
else if(self.var_D384 == 1)
|
|
{
|
|
var_09 = var_09 - var_0E * var_0F / 2;
|
|
}
|
|
else if(self.var_D384 == 2)
|
|
{
|
|
var_09 = var_09 + var_0E * var_0F * 1.5;
|
|
}
|
|
else if(self.var_D384 >= 3)
|
|
{
|
|
var_09 = var_09 - var_0E * var_0F * 1.5;
|
|
}
|
|
|
|
if(isdefined(self.var_1155E) && isalive(self.var_1155E))
|
|
{
|
|
var_10 = vectornormalize(self.var_1155E.origin + (0,0,var_01) - var_09);
|
|
var_11 = distance(self.var_1155E.origin + (0,0,var_01),var_09) / 4;
|
|
if(var_11 > 100)
|
|
{
|
|
var_11 = 100;
|
|
}
|
|
|
|
var_09 = var_09 + var_10 * var_11;
|
|
}
|
|
|
|
if(distancesquared(var_09,param_00) < 2500)
|
|
{
|
|
return param_00;
|
|
}
|
|
else
|
|
{
|
|
level.player.var_5C4F = randomfloatrange(0.2,2.5);
|
|
}
|
|
|
|
var_12 = scripts\common\trace::func_DCF1(self.origin,var_09,undefined,scripts\common\trace::func_4956(1));
|
|
if(var_12)
|
|
{
|
|
self.var_6FFF = 1;
|
|
}
|
|
else if(getdvarint("support_drone_debug"))
|
|
{
|
|
thread scripts\common\utility::func_5B4B(self.origin,var_09,1,0,0,0.1);
|
|
}
|
|
|
|
var_13 = scripts\common\utility::func_5D14(var_09,0);
|
|
var_14 = getclosestpointonnavmesh(var_13);
|
|
var_15 = 1;
|
|
if(distance(var_13,var_14) > 8)
|
|
{
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
thread scripts\common\utility::func_5B4B(var_13,var_13 + (0,0,16),1,0,0,0.25);
|
|
thread scripts\common\utility::func_5B4B(var_14,var_14 + (0,0,16),0,1,0,0.25);
|
|
}
|
|
|
|
if(!self.var_6FFF)
|
|
{
|
|
var_15 = 0;
|
|
}
|
|
}
|
|
|
|
var_16 = var_09;
|
|
if(!var_15)
|
|
{
|
|
var_16 = (var_14[0],var_14[1],var_14[2] + var_01);
|
|
}
|
|
|
|
self.var_1D55 = var_01;
|
|
return var_16;
|
|
}
|
|
|
|
//Function Number: 32
|
|
func_5C52()
|
|
{
|
|
if(func_D2DD())
|
|
{
|
|
return "follow";
|
|
}
|
|
|
|
self.var_BE7A = scripts\sp\_utility::func_22BB(self.var_BE7A);
|
|
if(self.var_BE7A.size > 0)
|
|
{
|
|
return "combat";
|
|
}
|
|
|
|
return "follow";
|
|
}
|
|
|
|
//Function Number: 33
|
|
func_5C61(param_00)
|
|
{
|
|
self notify("new_path");
|
|
self endon("new_path");
|
|
self endon("death");
|
|
if(self.var_6FFF == 1)
|
|
{
|
|
self method_8362(param_00,1);
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
thread scripts\common\utility::func_5B4B(self.origin,param_00,0,1,0,0.25);
|
|
}
|
|
|
|
scripts\common\utility::waittill_any_3("near_goal","goal");
|
|
return;
|
|
}
|
|
|
|
var_01 = scripts\common\utility::func_5D14(self.origin,0) + (0,0,8);
|
|
var_02 = param_00 - (0,0,self.var_1D55);
|
|
var_03 = level.player method_8428(var_01,var_02);
|
|
var_04 = self.origin;
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
foreach(var_06 in var_03)
|
|
{
|
|
thread scripts\common\utility::func_5B4B(var_04,var_06,0,1,0,0.25);
|
|
var_04 = var_06;
|
|
}
|
|
}
|
|
|
|
foreach(var_06 in var_03)
|
|
{
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
}
|
|
|
|
if(isdefined(self.var_1D55))
|
|
{
|
|
var_06 = var_06 + (0,0,self.var_1D55);
|
|
}
|
|
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
}
|
|
|
|
self method_8362(var_06,1);
|
|
scripts\common\utility::waittill_any_3("near_goal","goal");
|
|
}
|
|
}
|
|
|
|
//Function Number: 34
|
|
func_5C44()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
if(isdefined(self.var_1155E) && isalive(self.var_1155E))
|
|
{
|
|
self.var_B00E.origin = self.var_1155E gettagorigin("j_Spine4");
|
|
self.var_5CDB method_81D9();
|
|
}
|
|
else
|
|
{
|
|
var_00 = level.player geteye();
|
|
var_01 = anglestoforward(level.player getplayerangles());
|
|
var_02 = var_00 + var_01 * 5000;
|
|
var_03 = scripts\common\trace::func_DCED(var_00,var_02,level.player);
|
|
self.var_B00E.origin = var_03["position"];
|
|
self.var_5CDB method_81D8();
|
|
}
|
|
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
}
|
|
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 35
|
|
func_5C1F()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
if(!isdefined(self.var_BE7A))
|
|
{
|
|
self.var_BE7A = [];
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
var_00 = [];
|
|
foreach(var_02 in function_0072("axis"))
|
|
{
|
|
if(func_64EA(var_02) && !issubstr(var_02.classname,"c12"))
|
|
{
|
|
var_00[var_00.size] = var_02;
|
|
}
|
|
}
|
|
|
|
if(self.var_BE7A.size == 0 && var_00.size > 0)
|
|
{
|
|
self notify("found_enemies");
|
|
}
|
|
else if(self.var_BE7A.size > 0 && var_00.size == 0)
|
|
{
|
|
self notify("no_enemies");
|
|
}
|
|
|
|
self.var_BE7A = var_00;
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 36
|
|
func_64EA(param_00)
|
|
{
|
|
if(!isalive(param_00) || param_00 scripts\sp\_utility::func_58DA())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(distance(param_00.origin,self.origin) > 1200)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isdefined(param_00.var_1CAC))
|
|
{
|
|
return param_00.var_1CAC;
|
|
}
|
|
|
|
if(param_00.ignoreme)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 37
|
|
func_5C22()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
var_00 = randomfloatrange(-10,10);
|
|
var_01 = randomfloatrange(-10,10);
|
|
var_02 = randomfloatrange(-10,10);
|
|
self.var_8435 = (var_01,var_02,var_00);
|
|
wait(randomfloatrange(2,4));
|
|
}
|
|
}
|
|
|
|
//Function Number: 38
|
|
func_112B8()
|
|
{
|
|
var_00 = getentarray("drone_point_of_interest","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_03 = scripts\common\utility::getstructarray(var_02.target,"targetname");
|
|
foreach(var_05 in var_03)
|
|
{
|
|
var_06 = var_05.origin[2];
|
|
var_05.var_8D12 = (0,0,var_06);
|
|
var_05.origin = (var_05.origin[0],var_05.origin[1],0);
|
|
}
|
|
|
|
var_02.var_D62F = var_03;
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 39
|
|
func_112B7(param_00)
|
|
{
|
|
if(!func_1310A())
|
|
{
|
|
return;
|
|
}
|
|
|
|
param_00 endon("death");
|
|
var_01 = 4000;
|
|
for(;;)
|
|
{
|
|
scripts\common\utility::func_6E5A("stealth_spotted");
|
|
self waittill("trigger");
|
|
if(isdefined(param_00.var_D630))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 = gettime();
|
|
var_03 = randomintrange(2500,5000);
|
|
param_00.var_D630 = scripts\common\utility::random(self.var_D62F);
|
|
while(level.player istouching(self))
|
|
{
|
|
if(scripts\common\utility::flag("stealth_spotted"))
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(gettime() - var_02 <= var_03)
|
|
{
|
|
param_00.var_D630 = scripts\common\utility::random(self.var_D62F);
|
|
var_03 = randomintrange(2500,5000);
|
|
}
|
|
|
|
wait(0.1);
|
|
}
|
|
|
|
param_00.var_D630 = undefined;
|
|
}
|
|
}
|
|
|
|
//Function Number: 40
|
|
func_5BED()
|
|
{
|
|
self endon("death");
|
|
var_00 = 0;
|
|
var_01 = 0;
|
|
for(;;)
|
|
{
|
|
self waittill("damage",var_02,var_03,var_04,var_05,var_06);
|
|
var_00 = var_00 + var_02;
|
|
self.var_A964 = var_04;
|
|
if(var_00 > 600 && !var_01)
|
|
{
|
|
thread func_5C05();
|
|
var_01 = 1;
|
|
}
|
|
|
|
if(var_00 > 1200)
|
|
{
|
|
self notify("lethal_damage");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 41
|
|
func_5C05()
|
|
{
|
|
self method_82A4(%equip_pocket_drone_damaged_loop);
|
|
scripts\sp\_utility::func_75C4("drone_damaged_loop","tag_origin");
|
|
scripts\common\utility::waittill_any_3("death","death_anim");
|
|
if(isdefined(self))
|
|
{
|
|
scripts\sp\_utility::func_75F8("drone_damaged_loop","tag_origin");
|
|
}
|
|
}
|
|
|
|
//Function Number: 42
|
|
func_5BD8()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
self endon("entitydeleted");
|
|
if(!scripts\sp\_utility::func_65DF("target_timeout"))
|
|
{
|
|
scripts\sp\_utility::func_65E0("target_timeout");
|
|
}
|
|
|
|
if(!scripts\sp\_utility::func_65DF("target_killed_wait"))
|
|
{
|
|
scripts\sp\_utility::func_65E0("target_killed_wait");
|
|
}
|
|
|
|
self.var_2654 = 1;
|
|
childthread func_5BE6();
|
|
thread func_5BE5();
|
|
wait(2);
|
|
for(;;)
|
|
{
|
|
self waittill("new_target_enemy");
|
|
self playsound("support_drone_engine_mvmt_fast");
|
|
childthread func_5C98(self.var_1155E);
|
|
}
|
|
}
|
|
|
|
//Function Number: 43
|
|
func_5BE5()
|
|
{
|
|
scripts\common\utility::waittill_any_3("death_anim","death","entitydeleted");
|
|
func_F378(self.var_9180,"off");
|
|
}
|
|
|
|
//Function Number: 44
|
|
func_5BE6()
|
|
{
|
|
wait(2);
|
|
for(;;)
|
|
{
|
|
wait(0.05);
|
|
var_00 = 0;
|
|
var_01 = 0;
|
|
while(level.player.var_5C6E > 0)
|
|
{
|
|
scripts\common\utility::func_136F7();
|
|
}
|
|
|
|
while(func_D2DD())
|
|
{
|
|
wait(0.25);
|
|
}
|
|
|
|
if(self.var_BE7A.size == 0)
|
|
{
|
|
self waittill("found_enemies");
|
|
continue;
|
|
}
|
|
|
|
if((isdefined(self.var_1155E) && !isalive(self.var_1155E) || self.var_1155E scripts\sp\_utility::func_58DA()) || scripts\sp\_utility::func_65DB("target_killed_wait"))
|
|
{
|
|
var_01 = 1;
|
|
}
|
|
|
|
if(!var_01 || scripts\sp\_utility::func_65DB("target_timeout"))
|
|
{
|
|
var_00 = 1;
|
|
}
|
|
|
|
if(var_00)
|
|
{
|
|
var_02 = func_5C1C(self.var_1155E);
|
|
if(!isdefined(var_02))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
level.player.var_5C6E = randomfloatrange(0.5,1.5);
|
|
if(isdefined(self.var_1155E) && var_02 == self.var_1155E)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
self notify("stop_hud");
|
|
self.var_1155E = var_02;
|
|
var_02 notify("drone_targeting");
|
|
self notify("new_target_enemy");
|
|
thread func_5BEB();
|
|
scripts\sp\_utility::func_65DD("target_timeout");
|
|
scripts\sp\_utility::func_65E1("target_killed_wait");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 45
|
|
func_5C1C(param_00)
|
|
{
|
|
self.var_BE7A = scripts\sp\_utility::func_22BB(self.var_BE7A);
|
|
if(self.var_BE7A.size == 0)
|
|
{
|
|
return undefined;
|
|
}
|
|
|
|
var_01 = [];
|
|
foreach(var_03 in self.var_BE7A)
|
|
{
|
|
if(!isdefined(var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_03.var_1CAC))
|
|
{
|
|
if(var_03.var_1CAC)
|
|
{
|
|
var_01[var_01.size] = var_03;
|
|
}
|
|
else
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_03.ignoreme) && var_03.ignoreme)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01[var_01.size] = var_03;
|
|
}
|
|
|
|
if(var_01.size == 0)
|
|
{
|
|
return undefined;
|
|
}
|
|
|
|
var_05 = [];
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(func_5BE9(var_03))
|
|
{
|
|
var_05[var_05.size] = var_03;
|
|
}
|
|
}
|
|
|
|
var_08 = var_05;
|
|
if(var_08.size == 0)
|
|
{
|
|
return undefined;
|
|
}
|
|
|
|
if(isdefined(param_00) && scripts\common\utility::func_2286(var_08,param_00))
|
|
{
|
|
return param_00;
|
|
}
|
|
|
|
var_09 = var_08[randomint(var_08.size)];
|
|
return var_09;
|
|
}
|
|
|
|
//Function Number: 46
|
|
func_5BE9(param_00)
|
|
{
|
|
var_01 = 0;
|
|
var_02 = scripts\common\trace::func_DCED(self.origin,param_00 gettagorigin("j_head"),undefined,scripts\common\trace::func_4956(1));
|
|
if(var_02["fraction"] == 1)
|
|
{
|
|
var_01 = 1;
|
|
}
|
|
|
|
if(isalive(level.player) && var_01 == 0)
|
|
{
|
|
var_02 = scripts\common\trace::func_DCED(level.player geteye(),param_00 gettagorigin("j_head"),undefined,scripts\common\trace::func_4956(1));
|
|
if(var_02["fraction"] == 1)
|
|
{
|
|
var_01 = 1;
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 47
|
|
func_5C98(param_00)
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
self endon("new_target_enemy");
|
|
self endon("target_enemy_died");
|
|
childthread func_5C60(param_00);
|
|
thread func_5C01(param_00);
|
|
wait(0.5);
|
|
while(isdefined(param_00) && isalive(param_00))
|
|
{
|
|
if(self.var_1280E)
|
|
{
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
var_01 = self.var_5CDB gettagorigin("tag_flash");
|
|
var_02 = param_00 gettagorigin("j_Spine4");
|
|
var_03 = cos(90);
|
|
if(!scripts\common\utility::func_13D90(var_01,self.var_5CDB gettagangles("tag_flash"),var_02,var_03))
|
|
{
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
var_04 = ["j_Head","j_Spine4","j_SpineLower"];
|
|
if(param_00.var_238F == "seeker")
|
|
{
|
|
var_04 = scripts\common\utility::func_22A9(var_04,"j_SpineLower");
|
|
}
|
|
|
|
var_05 = undefined;
|
|
foreach(var_07 in var_04)
|
|
{
|
|
if(getdvarint("support_drone_debug"))
|
|
{
|
|
thread scripts\common\utility::func_5B4B(var_01,param_00 gettagorigin(var_07),0.7,0,0,0.1);
|
|
}
|
|
|
|
var_08 = scripts\common\trace::func_DCEE(var_01,param_00 gettagorigin(var_07),self);
|
|
if(!isdefined(var_08["entity"]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_08["entity"] == level.player)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(var_08["entity"] == param_00)
|
|
{
|
|
var_05 = param_00 gettagorigin(var_07);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!isdefined(var_05))
|
|
{
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
var_0A = var_05 - param_00.origin;
|
|
self.var_5CDB method_8347(param_00,var_0A);
|
|
self thread [[ self.var_5CAF ]]();
|
|
wait(1.2);
|
|
thread func_5C89();
|
|
}
|
|
|
|
self.var_1155E = undefined;
|
|
}
|
|
|
|
//Function Number: 48
|
|
func_5C89()
|
|
{
|
|
self notify("new_target_timeout");
|
|
self endon("new_target_timeout");
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
self endon("new_target_enemy");
|
|
wait(3);
|
|
scripts\sp\_utility::func_65E1("target_timeout");
|
|
}
|
|
|
|
//Function Number: 49
|
|
func_5C60(param_00)
|
|
{
|
|
thread scripts\sp\_utility::func_CE2F("support_drone_lockon");
|
|
func_F378(self.var_9180,"lockon",param_00);
|
|
}
|
|
|
|
//Function Number: 50
|
|
func_5C01(param_00)
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
self endon("new_target_enemy");
|
|
param_00 scripts\common\utility::waittill_any_3("death","entitydeleted","death_anim");
|
|
self notify("target_enemy_died");
|
|
self.var_1155E = undefined;
|
|
scripts\sp\_utility::func_65E8("target_killed_wait");
|
|
func_F378(self.var_9180,"off");
|
|
}
|
|
|
|
//Function Number: 51
|
|
func_5BDD()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
self.var_11AD3 = [];
|
|
thread func_5C9C();
|
|
for(;;)
|
|
{
|
|
self.var_11AD3 = scripts\common\utility::func_22BC(self.var_11AD3);
|
|
if(self.var_11AD3.size <= 0)
|
|
{
|
|
level waittill("enemy_grenade_fire",var_00);
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
if(self.var_1280E)
|
|
{
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
foreach(var_00 in self.var_11AD3)
|
|
{
|
|
var_02 = distance(var_00.origin,self.origin);
|
|
if(var_02 <= 800)
|
|
{
|
|
thread func_5C9B(var_00);
|
|
self.var_11AD3 = scripts\common\utility::func_22A9(self.var_11AD3,var_00);
|
|
break;
|
|
}
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 52
|
|
func_5C9C()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
level waittill("enemy_grenade_fire",var_00);
|
|
self.var_11AD3 = scripts\common\utility::array_add(self.var_11AD3,var_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 53
|
|
func_5C9B(param_00)
|
|
{
|
|
self.var_1280E = 1;
|
|
thread scripts\common\utility::func_CD7F("support_drone_trophy_scan");
|
|
wait(0.5);
|
|
if(!isdefined(param_00))
|
|
{
|
|
self.var_1280E = 0;
|
|
return;
|
|
}
|
|
|
|
self notify("trophy_system_engaged");
|
|
thread scripts\common\utility::func_11018("support_drone_trophy_scan");
|
|
self playsound("support_drone_trophy_fire");
|
|
var_01 = vectornormalize(param_00.origin - self.var_5CDB gettagorigin("tag_flash"));
|
|
function_02E0(level._effect["drone_trophy_laser"],self.var_5CDB gettagorigin("tag_flash"),vectortoangles(var_01),param_00.origin);
|
|
playfx(level._effect["drone_trophy_pop"],param_00.origin);
|
|
function_0178("support_drone_trophy_impact",param_00.origin);
|
|
param_00 delete();
|
|
self.var_1280E = 0;
|
|
}
|
|
|
|
//Function Number: 54
|
|
func_5C0F()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
self endon("new_target_enemy");
|
|
var_00 = self.var_1155E;
|
|
func_F378(self.var_9180,"fire");
|
|
self.var_1E41 = self.var_1E41 - 1;
|
|
func_5C32(self.var_9180,self.var_1E41);
|
|
if(self.var_1E41 <= 0)
|
|
{
|
|
self notify("no_ammo");
|
|
}
|
|
|
|
var_01 = var_00 gettagorigin("j_spine4");
|
|
var_02 = var_01 - var_00.origin;
|
|
var_03 = 4;
|
|
for(var_04 = 0;var_04 < var_03;var_04++)
|
|
{
|
|
if(self.var_1E41 <= 0)
|
|
{
|
|
wait(0.1);
|
|
}
|
|
|
|
thread func_5C10();
|
|
self.var_5CDB method_837E();
|
|
wait(0.1);
|
|
}
|
|
|
|
wait(0.05);
|
|
if(isdefined(var_00) && !isalive(var_00) || var_00 scripts\sp\_utility::func_58DA())
|
|
{
|
|
func_F378(self.var_9180,"kill");
|
|
}
|
|
}
|
|
|
|
//Function Number: 55
|
|
func_5BEB()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
self endon("new_target_enemy");
|
|
for(;;)
|
|
{
|
|
wait(0.05);
|
|
if(!isdefined(self.var_1155E) || !isalive(self.var_1155E) || self.var_1155E scripts\sp\_utility::func_58DA())
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
wait(1.6);
|
|
scripts\sp\_utility::func_65DD("target_killed_wait");
|
|
}
|
|
|
|
//Function Number: 56
|
|
func_5C12()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
thread scripts\sp\_utility::func_CD81("support_drone_windup","tag_origin");
|
|
wait(0.5);
|
|
scripts\common\utility::func_5127(0.15,::scripts\common\utility::func_11018,"support_drone_windup");
|
|
self.var_1E41 = self.var_1E41 - 1;
|
|
func_5C32(self.var_9180,self.var_1E41);
|
|
if(self.var_1E41 <= 0)
|
|
{
|
|
self notify("no_ammo");
|
|
}
|
|
|
|
var_00 = 1;
|
|
for(var_01 = 0;var_01 < var_00;var_01++)
|
|
{
|
|
if(self.var_1E41 <= 0)
|
|
{
|
|
wait(0.1);
|
|
}
|
|
|
|
self.var_5CDB method_837E();
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 57
|
|
func_5C10()
|
|
{
|
|
self endon("death_anim");
|
|
self endon("death");
|
|
self notify("firing");
|
|
self endon("firing");
|
|
if(!self.var_6DA5)
|
|
{
|
|
self.var_6DA5 = 1;
|
|
}
|
|
|
|
wait(1);
|
|
self.var_6DA5 = 0;
|
|
}
|
|
|
|
//Function Number: 58
|
|
func_5C59()
|
|
{
|
|
thread scripts\common\utility::func_CD7F("support_drone_engine");
|
|
thread scripts\common\utility::func_CD7F("support_drone_close_lyr");
|
|
scripts\common\utility::waittill_any_3("death","death_anim");
|
|
if(isdefined(self))
|
|
{
|
|
func_5C58("support_drone_engine","support_drone_close_lyr");
|
|
}
|
|
}
|
|
|
|
//Function Number: 59
|
|
func_5C58(param_00,param_01)
|
|
{
|
|
self notify("stop sound" + param_00);
|
|
self notify("stop sound" + param_01);
|
|
}
|
|
|
|
//Function Number: 60
|
|
func_5C5C()
|
|
{
|
|
scripts\sp\_utility::func_75C4("drone_thruster","j_fan_front_le");
|
|
scripts\sp\_utility::func_75C4("drone_thruster","j_fan_front_ri");
|
|
scripts\sp\_utility::func_75C4("drone_thruster","j_fan_rear_le");
|
|
scripts\sp\_utility::func_75C4("drone_thruster","j_fan_rear_ri");
|
|
scripts\common\utility::waittill_any_3("death","death_anim");
|
|
if(isdefined(self))
|
|
{
|
|
func_5C5B();
|
|
}
|
|
}
|
|
|
|
//Function Number: 61
|
|
func_5C5B()
|
|
{
|
|
scripts\sp\_utility::func_75F8("drone_thruster","j_fan_front_le");
|
|
scripts\sp\_utility::func_75F8("drone_thruster","j_fan_front_ri");
|
|
scripts\sp\_utility::func_75F8("drone_thruster","j_fan_rear_le");
|
|
scripts\sp\_utility::func_75F8("drone_thruster","j_fan_rear_ri");
|
|
}
|
|
|
|
//Function Number: 62
|
|
func_9C6F()
|
|
{
|
|
if(!isdefined(level.player.var_4C29))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(level.player.var_4C29.size <= 0)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 63
|
|
get_all_drones()
|
|
{
|
|
var_00 = [];
|
|
for(var_01 = 0;var_01 < 5;var_01++)
|
|
{
|
|
if(isdefined(level.player.var_4C29[var_01]) && isdefined(level.player.var_4C29[var_01].var_5BD7) && isalive(level.player.var_4C29[var_01].var_5BD7))
|
|
{
|
|
var_00 = scripts\common\utility::array_add(var_00,level.player.var_4C29[var_01].var_5BD7);
|
|
}
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 64
|
|
func_A5B9()
|
|
{
|
|
if(!isdefined(level.player.var_4C29) || level.player.var_4C29.size == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
foreach(var_01 in level.player.var_4C29)
|
|
{
|
|
var_01.var_5BD7 notify("lethal_damage");
|
|
}
|
|
}
|
|
|
|
//Function Number: 65
|
|
func_5139()
|
|
{
|
|
if(!isdefined(level.player.var_4C29) || level.player.var_4C29.size == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
foreach(var_01 in level.player.var_4C29)
|
|
{
|
|
var_01.var_5BD7 notify("vr_delete");
|
|
}
|
|
}
|
|
|
|
//Function Number: 66
|
|
func_1310A()
|
|
{
|
|
return level.player scripts\sp\_utility::func_65DF("stealth_enabled") && level.player scripts\sp\_utility::func_65DB("stealth_enabled");
|
|
}
|
|
|
|
//Function Number: 67
|
|
func_D2DD()
|
|
{
|
|
if(func_1310A())
|
|
{
|
|
return !scripts\common\utility::flag("stealth_spotted");
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 68
|
|
func_F378(param_00,param_01,param_02)
|
|
{
|
|
if(param_01 == "lockon")
|
|
{
|
|
setomnvar("ui_supdrone_reticle_" + param_00 + "_target_ent",param_02);
|
|
setomnvar("ui_supdrone_reticle_" + param_00 + "_lock_state",1);
|
|
scripts\common\utility::func_C0A6(0.05,::setomnvar,"ui_supdrone_reticle_" + param_00 + "_lock_state",0);
|
|
return;
|
|
}
|
|
|
|
if(param_01 == "fire")
|
|
{
|
|
setomnvar("ui_supdrone_reticle_" + param_00 + "_lock_state",2);
|
|
scripts\common\utility::func_C0A6(0.05,::setomnvar,"ui_supdrone_reticle_" + param_00 + "_lock_state",0);
|
|
return;
|
|
}
|
|
|
|
if(param_01 == "kill")
|
|
{
|
|
setomnvar("ui_supdrone_reticle_" + param_00 + "_lock_state",3);
|
|
scripts\common\utility::func_C0A6(0.05,::setomnvar,"ui_supdrone_reticle_" + param_00 + "_lock_state",0);
|
|
return;
|
|
}
|
|
|
|
if(param_01 == "off")
|
|
{
|
|
setomnvar("ui_supdrone_reticle_" + param_00 + "_target_ent",undefined);
|
|
setomnvar("ui_supdrone_reticle_" + param_00 + "_lock_state",0);
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 69
|
|
func_F377(param_00,param_01)
|
|
{
|
|
if(param_01 == "active")
|
|
{
|
|
setomnvarbit("ui_supdrone_bits",param_00,1);
|
|
setomnvar("ui_supdrone_state_" + param_00,1);
|
|
level.player.var_4C29[param_00].var_9A96 = 1;
|
|
level.player scripts\common\utility::func_5127(1.5,::func_F424,param_00);
|
|
return;
|
|
}
|
|
|
|
if(param_01 == "destroyed")
|
|
{
|
|
setomnvar("ui_supdrone_state_" + param_00,2);
|
|
scripts\common\utility::func_C0A6(1.5,::setomnvarbit,"ui_supdrone_bits",param_00,0);
|
|
level.player.var_4C29[param_00].var_C7B4 = 1;
|
|
level.player scripts\common\utility::func_5127(1.5,::func_F4B1,param_00);
|
|
return;
|
|
}
|
|
|
|
if(param_01 == "noammo")
|
|
{
|
|
setomnvar("ui_supdrone_state_" + param_00,3);
|
|
scripts\common\utility::func_C0A6(1.5,::setomnvarbit,"ui_supdrone_bits",param_00,0);
|
|
level.player.var_4C29[param_00].var_C7B4 = 1;
|
|
level.player scripts\common\utility::func_5127(1.5,::func_F4B1,param_00);
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 70
|
|
func_5C32(param_00,param_01)
|
|
{
|
|
param_01 = scripts\common\utility::func_116D7(param_01 < 0,0,param_01);
|
|
setomnvar("ui_supdrone_ammo_" + param_00,param_01);
|
|
}
|
|
|
|
//Function Number: 71
|
|
func_F424(param_00)
|
|
{
|
|
level.player.var_4C29[param_00].var_9A96 = 0;
|
|
}
|
|
|
|
//Function Number: 72
|
|
func_F4B1(param_00)
|
|
{
|
|
level.player.var_4C29[param_00].var_C7B4 = 0;
|
|
level.player.var_4C29[param_00].var_51BA = 1;
|
|
}
|
|
|
|
//Function Number: 73
|
|
func_129A()
|
|
{
|
|
if(isdefined(level.player.var_5CB3) && level.player.var_5CB3 == 1)
|
|
{
|
|
return "supportdrone_up2";
|
|
}
|
|
|
|
return "supportdrone";
|
|
} |