Files
IL-GSC/IW/PC/ALL/scripts/mp/killstreaks/_tank.gsc
2023-10-27 03:49:01 -04:00

2134 lines
37 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\killstreaks\_tank.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 78
* Decompile Time: 3709 ms
* Timestamp: 10/27/2023 12:29:45 AM
*******************************************************************/
//Function Number: 1
init()
{
}
//Function Number: 2
func_1082D(param_00,param_01,param_02)
{
var_03 = self method_83DA("tank",param_00);
var_03.health = 3000;
var_03.var_11568 = 1;
var_03.team = param_00.team;
var_03.pers["team"] = var_03.team;
var_03.var_222 = param_00;
var_03 setcandamage(1);
var_03.var_10B68 = 12;
var_03 thread func_51CB();
var_03 func_185E();
var_03.var_4D2E = ::func_3758;
return var_03;
}
//Function Number: 3
func_51CB()
{
self endon("death");
var_00 = self.origin[2];
for(;;)
{
if(var_00 - self.origin[2] > 2048)
{
self.health = 0;
self notify("death");
return;
}
wait(1);
}
}
//Function Number: 4
func_130E4(param_00)
{
return func_12907();
}
//Function Number: 5
func_12907()
{
if(isdefined(level.var_114E2) && level.var_114E2)
{
self iprintlnbold("Armor support unavailable.");
return 0;
}
if(!isdefined(getvehiclenode("startnode","targetname")))
{
self iprintlnbold("Tank is currently not supported in this level, bug your friendly neighborhood LD.");
return 0;
}
if(!vehicle_getspawnerarray().size)
{
return 0;
}
if(self.team == "allies")
{
var_00 = level.var_114E5["allies"] func_1082D(self,"vehicle_bradley");
}
else
{
var_00 = level.var_114E5["axis"] func_1082D(self,"vehicle_bmp");
}
var_00 func_10DF8();
return 1;
}
//Function Number: 6
func_10DF8(param_00)
{
var_01 = getvehiclenode("startnode","targetname");
var_02 = getvehiclenode("waitnode","targetname");
self.var_C053 = getvehiclenodearray("info_vehicle_node","classname");
level.var_114E2 = 1;
thread func_114E9(var_01,var_02);
thread func_114D9();
level.var_114B1 = self;
if(level.teambased)
{
var_03 = scripts\mp\objidpoolmanager::requestminimapid(1);
if(var_03 != -1)
{
scripts\mp\objidpoolmanager::minimap_objective_add(var_03,"invisible",(0,0,0));
scripts\mp\objidpoolmanager::minimap_objective_team(var_03,"allies");
}
level.var_114B1.var_C2B5["allies"] = var_03;
var_04 = scripts\mp\objidpoolmanager::requestminimapid(1);
if(var_04 != -1)
{
scripts\mp\objidpoolmanager::minimap_objective_add(var_04,"invisible",(0,0,0));
scripts\mp\objidpoolmanager::minimap_objective_team(var_04,"axis");
}
level.var_114B1.var_C2B5["axis"] = var_04;
var_05 = self.team;
level.var_114B1.team = var_05;
level.var_114B1.pers["team"] = var_05;
}
var_06 = spawnturret("misc_turret",self.origin,"abrams_minigun_mp");
var_06 linkto(self,"tag_engine_left",(0,0,-20),(0,0,0));
var_06 setmodel("sentry_minigun");
var_06.angles = self.angles;
var_06.var_222 = self.var_222;
var_06 method_81F5();
self.var_B6BD = var_06;
self.var_B6BD method_82D1(0);
var_07 = self.angles;
self.angles = (0,0,0);
var_08 = self gettagorigin("tag_flash");
self.angles = var_07;
var_09 = var_08 - self.origin;
thread func_136B0();
thread func_136B8();
self.var_118F3 = gettime();
var_0A = spawn("script_origin",self gettagorigin("tag_flash"));
var_0A linkto(self,"tag_origin",var_09,(0,0,0));
var_0A hide();
self.var_BEF5 = var_0A;
thread func_114E1();
thread func_5329();
thread func_114DF();
thread func_3E02();
thread func_13A78();
}
//Function Number: 7
func_136B0()
{
self endon("death");
self.var_222 endon("disconnect");
self.var_222 waittill("joined_team");
self.health = 0;
self notify("death");
}
//Function Number: 8
func_136B8()
{
self endon("death");
self.var_222 waittill("disconnect");
self.health = 0;
self notify("death");
}
//Function Number: 9
func_F6C4(param_00)
{
if(self.var_376 != param_00)
{
if(param_00 == "forward")
{
func_11096();
return;
}
func_11097();
}
}
//Function Number: 10
func_F6E3()
{
self endon("death");
self notify("path_abandoned");
while(isdefined(self.var_3C61))
{
wait(0.05);
}
var_00 = 2;
self method_83E5(var_00,10,10);
self.var_109C6 = "engage";
}
//Function Number: 11
func_F799()
{
self endon("death");
self notify("path_abandoned");
while(isdefined(self.var_3C61))
{
wait(0.05);
}
var_00 = 2;
self method_83E5(var_00,10,10);
self.var_109C6 = "engage";
}
//Function Number: 12
func_F85D()
{
self endon("death");
while(isdefined(self.var_3C61))
{
wait(0.05);
}
self method_83E5(self.var_10B68,10,10);
self.var_109C6 = "standard";
}
//Function Number: 13
func_F6ED()
{
self endon("death");
while(isdefined(self.var_3C61))
{
wait(0.05);
}
self method_83E5(15,15,15);
self.var_109C6 = "evade";
wait(1.5);
self method_83E5(self.var_10B68,10,10);
}
//Function Number: 14
func_F6B0()
{
self endon("death");
while(isdefined(self.var_3C61))
{
wait(0.05);
}
self method_83E5(5,5,5);
self.var_109C6 = "danger";
}
//Function Number: 15
func_11097()
{
func_4F52("tank changing direction at " + gettime());
self method_83E5(0,5,6);
self.var_3C61 = 1;
while(self.var_37A > 0)
{
wait(0.05);
}
wait(0.25);
self.var_3C61 = undefined;
func_4F52("tank done changing direction");
self.var_37D = "reverse";
self.var_376 = "reverse";
self method_83E5(self.var_10B68,5,6);
}
//Function Number: 16
func_11096()
{
func_4F52("tank changing direction at " + gettime());
self method_83E5(0,5,6);
self.var_3C61 = 1;
while(self.var_37A > 0)
{
wait(0.05);
}
wait(0.25);
self.var_3C61 = undefined;
func_4F52("tank done changing direction");
self.var_37D = "forward";
self.var_376 = "forward";
self method_83E5(self.var_10B68,5,6);
}
//Function Number: 17
func_3E02()
{
self endon("death");
var_00 = [];
var_01 = level.players;
self.var_C225 = 0;
for(;;)
{
foreach(var_03 in var_01)
{
if(!isdefined(var_03))
{
continue;
}
if(var_03.team == self.team)
{
wait(0.05);
continue;
}
var_04 = distance2d(var_03.origin,self.origin);
if(var_04 < 2048)
{
self.var_C225++;
}
wait(0.05);
}
if(isdefined(self.var_109C6) && self.var_109C6 == "evade" || self.var_109C6 == "engage")
{
self.var_C225 = 0;
continue;
}
if(self.var_C225 > 1)
{
thread func_F6B0();
}
else
{
thread func_F85D();
}
self.var_C225 = 0;
wait(0.05);
}
}
//Function Number: 18
func_114E9(param_00,param_01)
{
self endon("tankDestroyed");
self endon("death");
if(!isdefined(level.var_848E))
{
self startpath(param_00);
return;
}
self attachpath(param_00);
self startpath(param_00);
param_00 notify("trigger",self,1);
wait(0.05);
for(;;)
{
while(isdefined(self.var_3C61))
{
wait(0.05);
}
var_02 = func_7FFB();
if(isdefined(var_02))
{
self.var_6366 = var_02;
}
else
{
self.var_6366 = undefined;
}
wait(0.65);
}
}
//Function Number: 19
func_3758(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
if((param_01 == self || param_01 == self.var_B6BD || isdefined(param_01.pers) && param_01.pers["team"] == self.team) && param_01 != self.var_222 || param_04 == "MOD_MELEE")
{
return;
}
var_0C = func_B938(param_04,param_02,param_01);
self method_83DB(param_00,param_01,var_0C,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B);
}
//Function Number: 20
func_114D9()
{
self endon("death");
self.var_E1 = 0;
var_00 = self method_83DD();
var_01 = self.health;
var_02 = 0;
var_03 = 0;
var_04 = 0;
for(;;)
{
self waittill("damage",var_05,var_06,var_07,var_08,var_09);
if(isdefined(var_06.classname) && var_06.classname == "script_vehicle")
{
if(isdefined(self.var_2A9A) && self.var_2A9A != var_06)
{
self.var_72B8 = var_06;
thread func_698D();
}
}
else if(isplayer(var_06))
{
var_06 scripts\mp\_damagefeedback::func_12E84("hitHelicopter");
if(var_06 scripts\mp\_utility::_hasperk("specialty_armorpiercing"))
{
var_0A = var_05 * level.var_218B;
self.health = self.health - int(var_0A);
}
}
if(self.health <= 0)
{
self notify("death");
return;
}
else if(self.health < var_01 / 4 && var_04 == 0)
{
var_04 = 1;
}
else if(self.health < var_01 / 2 && var_03 == 0)
{
var_03 = 1;
}
else if(self.health < var_01 / 1.5 && var_02 == 0)
{
var_02 = 1;
}
if(var_05 > 1000)
{
func_89F2(var_06);
}
}
}
//Function Number: 21
func_89F2(param_00)
{
self endon("death");
var_01 = randomint(100);
if(isdefined(self.var_2A9A) && self.var_2A9A != param_00 && var_01 > 30)
{
var_02 = [];
var_02[0] = self.var_2A9A;
func_698D(1,self.var_2A9A);
thread func_1572(var_02);
return;
}
if(!isdefined(self.var_2A9A) && var_01 > 30)
{
var_02 = [];
var_02[0] = param_00;
thread func_1572(var_02);
return;
}
if(var_01 < 30)
{
playfx(level.var_114D8,self.origin);
thread func_F6ED();
return;
}
self method_80EB();
self playsound("bmp_fire");
}
//Function Number: 22
func_89D4(param_00)
{
self endon("death");
var_01 = func_DF30(param_00);
var_02 = distance(self.origin,param_00.origin);
if(randomint(4) < 3)
{
return;
}
if(var_01 == "front" && var_02 < 768)
{
thread func_F6ED();
return;
}
if(var_01 == "rear_side" || var_01 == "rear" && var_02 >= 768)
{
playfx(level.var_114D8,self.origin);
thread func_F6ED();
return;
}
if(var_01 == "rear" && var_02 < 768)
{
func_11097();
func_F6ED();
wait(4);
func_11096();
return;
}
if(var_01 == "front_side" || var_01 == "front")
{
playfx(level.var_114D8,self.origin);
func_11097();
func_F6ED();
wait(8);
func_11096();
return;
}
}
//Function Number: 23
func_DF30(param_00)
{
self endon("death");
param_00 endon("death");
param_00 endon("disconnect");
var_01 = anglestoforward(self.angles);
var_02 = param_00.origin - self.origin;
var_01 = var_01 * (1,1,0);
var_02 = var_02 * (1,1,0);
var_02 = vectornormalize(var_02);
var_01 = vectornormalize(var_01);
var_03 = vectordot(var_02,var_01);
if(var_03 > 0)
{
if(var_03 > 0.9)
{
return "front";
}
else
{
return "front_side";
}
}
else if(var_03 < -0.9)
{
return "rear";
}
else
{
return "rear_side";
}
param_00 iprintlnbold(var_03);
}
//Function Number: 24
func_13A78()
{
self endon("death");
for(;;)
{
var_00 = [];
var_01 = level.players;
foreach(var_03 in var_01)
{
if(!isdefined(var_03))
{
wait(0.05);
continue;
}
if(!func_9F97(var_03))
{
wait(0.05);
continue;
}
var_04 = var_03 getcurrentweapon();
if(issubstr(var_04,"at4") || issubstr(var_04,"stinger") || issubstr(var_04,"javelin"))
{
thread func_89D4(var_03);
wait(8);
}
wait(0.15);
}
}
}
//Function Number: 25
func_3E2E()
{
if(!isdefined(self.var_222) || !isdefined(self.var_222.pers["team"]) || self.var_222.pers["team"] != self.team)
{
self notify("abandoned");
return 0;
}
return 1;
}
//Function Number: 26
func_B938(param_00,param_01,param_02)
{
if(param_00 == "MOD_RIFLE_BULLET")
{
return param_01;
}
if(param_00 == "MOD_PISTOL_BULLET")
{
return param_01;
}
if(param_00 == "MOD_IMPACT")
{
return param_01;
}
if(param_00 == "MOD_MELEE")
{
return 0;
}
if(param_00 == "MOD_EXPLOSIVE_BULLET")
{
return param_01;
}
if(param_00 == "MOD_GRENADE")
{
return param_01 * 5;
}
if(param_00 == "MOD_GRENADE_SPLASH")
{
return param_01 * 5;
}
return param_01 * 10;
}
//Function Number: 27
func_5329()
{
self waittill("death");
if(level.teambased)
{
var_00 = level.var_114B1.team;
if(level.var_114B1.var_C2B5[var_00] != -1)
{
scripts\mp\objidpoolmanager::minimap_objective_state(level.var_114B1.var_C2B5[var_00],"invisible");
}
if(level.var_114B1.var_C2B5[level.var_C74B[var_00]] != -1)
{
scripts\mp\objidpoolmanager::minimap_objective_state(level.var_114B1.var_C2B5[level.var_C74B[var_00]],"invisible");
}
}
self notify("tankDestroyed");
self method_83E5(0,10,10);
level.var_114E2 = 0;
playfx(level.var_10888,self.origin);
playfx(level.var_114DD,self.origin);
func_E11C();
var_01 = spawn("script_model",self.origin);
var_01 setmodel("vehicle_m1a1_abrams_d_static");
var_01.angles = self.angles;
self.var_B6BD delete();
self delete();
wait(4);
var_01 delete();
}
//Function Number: 28
func_C53C()
{
self notify("onTargOrTimeOut");
self endon("onTargOrTimeOut");
self endon("turret_on_target");
self waittill("turret_pitch_clamped");
thread func_698D(0,self.var_2A9A);
}
//Function Number: 29
func_6D7A()
{
self endon("abandonedTarget");
self endon("killedTarget");
self endon("death");
self endon("targetRemoved");
self endon("lostLOS");
for(;;)
{
func_C53C();
if(!isdefined(self.var_2A9A))
{
continue;
}
var_00 = self gettagorigin("tag_flash");
var_01 = bullettrace(self.origin,var_00,0,self);
if(var_01["position"] != var_00)
{
thread func_698D(0,self.var_2A9A);
}
var_01 = bullettrace(var_00,self.var_2A9A.origin,1,self);
var_02 = distance(self.origin,var_01["position"]);
var_03 = distance(self.var_2A9A.origin,self.origin);
if(var_02 < 384 || var_02 + 256 < var_03)
{
wait(0.5);
if(var_02 > 384)
{
func_136F4();
self method_80EB();
self playsound("bmp_fire");
self.var_118F3 = gettime();
}
var_04 = func_DF30(self.var_2A9A);
thread func_698D(0,self.var_2A9A);
return;
}
func_136F4();
self method_80EB();
self playsound("bmp_fire");
self.var_118F3 = gettime();
}
}
//Function Number: 30
func_136F4()
{
self endon("abandonedTarget");
self endon("killedTarget");
self endon("death");
self endon("targetRemoved");
self endon("lostLOS");
var_00 = gettime() - self.var_118F3;
if(var_00 < 1499)
{
wait(1.5 - var_00 / 1000);
}
}
//Function Number: 31
func_114E1(param_00)
{
self endon("death");
self endon("leaving");
var_01 = [];
for(;;)
{
var_01 = [];
var_02 = level.players;
if(isdefined(self.var_72B8))
{
var_01 = [];
var_01[0] = self.var_72B8;
func_1572(var_01);
self.var_72B8 = undefined;
}
if(isdefined(level.var_8B55) && level.var_8B55.team != self.team && isalive(level.var_8B55))
{
if(func_9FF1(level.var_114B1))
{
var_01[var_01.size] = level.var_114B1;
}
}
if(isdefined(level.var_3F14) && level.var_3F14.team != self.team && isalive(level.var_3F14))
{
if(func_9FF1(level.var_3F14))
{
var_01[var_01.size] = level.var_3F14;
}
}
foreach(var_04 in var_02)
{
if(!isdefined(var_04))
{
wait(0.05);
continue;
}
if(isdefined(param_00) && var_04 == param_00)
{
continue;
}
if(func_9F97(var_04))
{
if(isdefined(var_04))
{
var_01[var_01.size] = var_04;
}
continue;
}
continue;
}
if(var_01.size > 0)
{
func_1572(var_01);
continue;
}
wait(1);
}
}
//Function Number: 32
func_1572(param_00)
{
self endon("death");
if(param_00.size == 1)
{
self.var_2A9A = param_00[0];
}
else
{
self.var_2A9A = func_7E05(param_00);
}
thread func_F6E3();
thread func_13B74(param_00);
self method_835C(self.var_2A9A);
func_6D7A();
thread func_F7B8();
}
//Function Number: 33
func_F7B8()
{
self endon("death");
func_F85D();
func_E17A();
self method_835C(self.var_BEF5);
}
//Function Number: 34
func_7E05(param_00)
{
self endon("death");
var_01 = self gettagorigin("tag_flash");
var_02 = self.origin;
var_03 = undefined;
var_04 = undefined;
var_05 = 0;
foreach(var_07 in param_00)
{
var_08 = abs(vectortoangles(var_07.origin - self.origin)[1]);
var_09 = abs(self gettagangles("tag_flash")[1]);
var_08 = abs(var_08 - var_09);
if(isdefined(level.var_3F14) && var_07 == level.var_3F14)
{
return var_07;
}
if(isdefined(level.var_8B55) && var_07 == level.var_8B55)
{
return var_07;
}
var_0A = var_07 getweaponslistitems();
foreach(var_0C in var_0A)
{
if(issubstr(var_0C,"at4") || issubstr(var_0C,"jav") || issubstr(var_0C,"c4"))
{
var_08 = var_08 - 40;
}
}
if(!isdefined(var_03))
{
var_03 = var_08;
var_04 = var_07;
continue;
}
if(var_03 > var_08)
{
var_03 = var_08;
var_04 = var_07;
}
}
return var_04;
}
//Function Number: 35
func_13B74(param_00)
{
self endon("abandonedTarget");
self endon("lostLOS");
self endon("death");
self endon("targetRemoved");
var_01 = self.var_2A9A;
var_01 endon("disconnect");
var_01 waittill("death");
self notify("killedTarget");
func_E17A();
func_F85D();
thread func_F7B8();
}
//Function Number: 36
func_698D(param_00,param_01)
{
self endon("death");
self notify("abandonedTarget");
func_F85D();
thread func_F7B8();
func_E17A();
if(isdefined(param_01))
{
self.var_275E = param_01;
func_275F();
}
if(isdefined(param_00) && param_00)
{
}
}
//Function Number: 37
func_275F()
{
self endon("death");
wait(1.5);
self.var_275E = undefined;
}
//Function Number: 38
func_E17A()
{
self notify("targetRemoved");
self.var_2A9A = undefined;
self.var_A9AF = undefined;
}
//Function Number: 39
func_9FF1(param_00)
{
if(distance2d(param_00.origin,self.origin) > 4096)
{
return 0;
}
if(distance(param_00.origin,self.origin) < 512)
{
return 0;
}
return func_12A8F(param_00,0);
}
//Function Number: 40
func_9F97(param_00)
{
self endon("death");
var_01 = distancesquared(param_00.origin,self.origin);
if(!level.teambased && isdefined(self.var_222) && param_00 == self.var_222)
{
return 0;
}
if(!isalive(param_00) || param_00.sessionstate != "playing")
{
return 0;
}
if(var_01 > 16777216)
{
return 0;
}
if(var_01 < 262144)
{
return 0;
}
if(!isdefined(param_00.pers["team"]))
{
return 0;
}
if(param_00 == self.var_222)
{
return 0;
}
if(level.teambased && param_00.pers["team"] == self.team)
{
return 0;
}
if(param_00.pers["team"] == "spectator")
{
return 0;
}
if(isdefined(param_00.var_10916) && gettime() - param_00.var_10916 / 1000 <= 5)
{
return 0;
}
if(param_00 scripts\mp\_utility::_hasperk("specialty_blindeye"))
{
return 0;
}
return self method_83D9(param_00.origin,1,self);
}
//Function Number: 41
func_12A8F(param_00,param_01)
{
var_02 = param_00 method_838A(self gettagorigin("tag_turret"),self);
if(var_02 < 0.7)
{
return 0;
}
if(isdefined(param_01) && param_01)
{
thread scripts\mp\_utility::drawline(param_00.origin,self gettagorigin("tag_turret"),10,(1,0,0));
}
return 1;
}
//Function Number: 42
func_9EA1(param_00)
{
self endon("death");
if(!isalive(param_00) || param_00.sessionstate != "playing")
{
return 0;
}
if(!isdefined(param_00.pers["team"]))
{
return 0;
}
if(param_00 == self.var_222)
{
return 0;
}
if(distancesquared(param_00.origin,self.origin) > 1048576)
{
return 0;
}
if(level.teambased && param_00.pers["team"] == self.team)
{
return 0;
}
if(param_00.pers["team"] == "spectator")
{
return 0;
}
if(isdefined(param_00.var_10916) && gettime() - param_00.var_10916 / 1000 <= 5)
{
return 0;
}
if(isdefined(self))
{
var_01 = self.var_B6BD.origin + (0,0,64);
var_02 = param_00 method_838A(var_01,self);
if(var_02 < 1)
{
return 0;
}
}
return 1;
}
//Function Number: 43
func_114DF()
{
self endon("death");
self endon("leaving");
var_00 = [];
for(;;)
{
var_00 = [];
var_01 = level.players;
for(var_02 = 0;var_02 <= var_01.size;var_02++)
{
if(func_9EA1(var_01[var_02]))
{
if(isdefined(var_01[var_02]))
{
var_00[var_00.size] = var_01[var_02];
}
}
else
{
continue;
}
wait(0.05);
}
if(var_00.size > 0)
{
func_1571(var_00);
return;
}
else
{
wait(0.5);
}
}
}
//Function Number: 44
func_7DFD(param_00)
{
self endon("death");
var_01 = self.origin;
var_02 = undefined;
var_03 = undefined;
foreach(var_05 in param_00)
{
var_06 = distance(self.origin,var_05.origin);
var_07 = var_05 getcurrentweapon();
if(issubstr(var_07,"at4") || issubstr(var_07,"jav") || issubstr(var_07,"c4") || issubstr(var_07,"smart") || issubstr(var_07,"grenade"))
{
var_06 = var_06 - 200;
}
if(!isdefined(var_02))
{
var_02 = var_06;
var_03 = var_05;
continue;
}
if(var_02 > var_06)
{
var_02 = var_06;
var_03 = var_05;
}
}
return var_03;
}
//Function Number: 45
func_1571(param_00)
{
self endon("death");
if(param_00.size == 1)
{
self.var_2A97 = param_00[0];
}
else
{
self.var_2A97 = func_7DFD(param_00);
}
if(distance2d(self.origin,self.var_2A97.origin) > 768)
{
thread func_F799();
}
self notify("acquiringMiniTarget");
self.var_B6BD method_8347(self.var_2A97,(0,0,64));
wait(0.15);
thread func_6D74();
thread func_13AD1(param_00);
thread func_13AD2(param_00);
thread func_13AD3(self.var_2A97);
}
//Function Number: 46
func_6D74()
{
self endon("death");
self endon("abandonedMiniTarget");
self endon("killedMiniTarget");
var_00 = undefined;
var_01 = gettime();
if(!isdefined(self.var_2A97))
{
return;
}
for(;;)
{
if(!isdefined(self.var_B6BD method_8166(1)))
{
if(!isdefined(var_00))
{
var_00 = gettime();
}
var_02 = gettime();
if(var_00 - var_02 > 1)
{
var_00 = undefined;
thread func_698C();
return;
}
wait(0.5);
continue;
}
if(gettime() > var_01 + 1000 && !isdefined(self.var_2A9A))
{
if(distance2d(self.origin,self.var_2A97.origin) > 768)
{
var_01[0] = self.var_2A97;
func_1572(var_05);
}
}
var_04 = randomintrange(10,16);
for(var_05 = 0;var_05 < var_04;var_05++)
{
self.var_B6BD method_837E();
wait(0.1);
}
wait(randomfloatrange(0.5,3));
}
}
//Function Number: 47
func_13AD1(param_00)
{
self endon("abandonedMiniTarget");
self endon("death");
if(!isdefined(self.var_2A97))
{
return;
}
self.var_2A97 waittill("death");
self notify("killedMiniTarget");
self.var_2A97 = undefined;
self.var_B6BD method_807E();
func_114DF();
}
//Function Number: 48
func_13AD2(param_00)
{
self endon("abandonedMiniTarget");
self endon("death");
for(;;)
{
if(!isdefined(self.var_2A97))
{
return;
}
var_01 = bullettrace(self.var_B6BD.origin,self.var_2A97.origin,0,self);
var_02 = distance(self.origin,var_01["position"]);
if(var_02 > 1024)
{
thread func_698C();
return;
}
wait(2);
}
}
//Function Number: 49
func_13AD3(param_00)
{
self endon("abandonedMiniTarget");
self endon("death");
self endon("killedMiniTarget");
for(;;)
{
var_01 = [];
var_02 = level.players;
for(var_03 = 0;var_03 <= var_02.size;var_03++)
{
if(func_9EA1(var_02[var_03]))
{
if(!isdefined(var_02[var_03]))
{
continue;
}
if(!isdefined(param_00))
{
return;
}
var_04 = distance(self.origin,param_00.origin);
var_05 = distance(self.origin,var_02[var_03].origin);
if(var_05 < var_04)
{
thread func_698C();
return;
}
}
wait(0.05);
}
wait(0.25);
}
}
//Function Number: 50
func_698C(param_00)
{
self notify("abandonedMiniTarget");
self.var_2A97 = undefined;
self.var_B6BD method_807E();
if(isdefined(param_00) && param_00)
{
return;
}
thread func_114DF();
}
//Function Number: 51
func_185E()
{
level.var_114E3[self getentitynumber()] = self;
}
//Function Number: 52
func_E11C()
{
level.var_114E3[self getentitynumber()] = undefined;
}
//Function Number: 53
func_7FFB()
{
var_00 = [];
foreach(var_02 in level.players)
{
if(var_02.team == "spectator")
{
continue;
}
if(var_02.team == self.team)
{
continue;
}
if(!isalive(var_02))
{
continue;
}
var_02.var_56E8 = 0;
var_00[var_00.size] = var_02;
}
if(!var_00.size)
{
return undefined;
}
for(var_04 = 0;var_04 < var_00.size;var_04++)
{
for(var_05 = var_04 + 1;var_05 < var_00.size;var_05++)
{
var_06 = distancesquared(var_00[var_04].origin,var_00[var_05].origin);
var_00[var_04].var_56E8 = var_00[var_04].var_56E8 + var_06;
var_00[var_05].var_56E8 = var_00[var_05].var_56E8 + var_06;
}
}
var_07 = var_00[0];
foreach(var_02 in var_00)
{
if(var_02.var_56E8 < var_07.var_56E8)
{
var_07 = var_02;
}
}
var_0A = var_07.origin;
var_0B = sortbydistance(level.var_848E,var_0A);
return var_0B[0];
}
//Function Number: 54
func_FAD8()
{
var_00 = [];
var_01 = [];
var_02 = [];
var_03 = [];
var_04 = getvehiclenode("startnode","targetname");
var_00[var_00.size] = var_04;
var_01[var_01.size] = var_04;
while(isdefined(var_04.target))
{
var_05 = var_04;
var_04 = getvehiclenode(var_04.target,"targetname");
var_04.var_D886 = var_05;
if(var_04 == var_00[0])
{
break;
}
var_00[var_00.size] = var_04;
if(!isdefined(var_04.target))
{
return;
}
}
var_00[0].var_2F45 = [];
var_00[0] thread func_897F("forward");
var_03[var_03.size] = var_00[0];
var_06 = getvehiclenodearray("branchnode","targetname");
foreach(var_08 in var_06)
{
var_04 = var_08;
var_00[var_00.size] = var_04;
var_01[var_01.size] = var_04;
while(isdefined(var_04.target))
{
var_05 = var_04;
var_04 = getvehiclenode(var_04.target,"targetname");
var_00[var_00.size] = var_04;
var_04.var_D886 = var_05;
if(!isdefined(var_04.target))
{
var_02[var_02.size] = var_04;
}
}
}
foreach(var_04 in var_00)
{
var_0B = 0;
foreach(var_0D in var_01)
{
if(var_0D == var_04)
{
continue;
}
if(var_0D.target == var_04.var_336)
{
continue;
}
if(isdefined(var_04.target) && var_04.target == var_0D.var_336)
{
continue;
}
if(distance2d(var_04.origin,var_0D.origin) > 80)
{
continue;
}
var_0D thread func_8982(var_04,"reverse");
var_0D.var_D886 = var_04;
if(!isdefined(var_04.var_2F45))
{
var_04.var_2F45 = [];
}
var_04.var_2F45[var_04.var_2F45.size] = var_0D;
var_0B = 1;
}
if(var_0B)
{
var_04 thread func_897F("forward");
}
var_0F = 0;
foreach(var_11 in var_02)
{
if(var_11 == var_04)
{
continue;
}
if(!isdefined(var_04.target))
{
continue;
}
if(var_04.target == var_11.var_336)
{
continue;
}
if(isdefined(var_11.target) && var_11.target == var_04.var_336)
{
continue;
}
if(distance2d(var_04.origin,var_11.origin) > 80)
{
continue;
}
var_11 thread func_8982(var_04,"forward");
var_11.var_BF2E = getvehiclenode(var_04.var_336,"targetname");
var_11.var_AB5D = distance(var_11.origin,var_04.origin);
if(!isdefined(var_04.var_2F45))
{
var_04.var_2F45 = [];
}
var_04.var_2F45[var_04.var_2F45.size] = var_11;
var_0F = 1;
}
if(var_0F)
{
var_04 thread func_897F("reverse");
}
if(var_0F || var_0B)
{
var_03[var_03.size] = var_04;
}
}
if(var_03.size < 3)
{
level notify("end_tankPathHandling");
return;
}
var_14 = [];
foreach(var_04 in var_00)
{
if(!isdefined(var_04.var_2F45))
{
continue;
}
var_14[var_14.size] = var_04;
}
foreach(var_18 in var_14)
{
var_04 = var_18;
var_19 = 0;
while(isdefined(var_04.target))
{
var_1A = var_04;
var_04 = getvehiclenode(var_04.target,"targetname");
var_19 = var_19 + distance(var_04.origin,var_1A.origin);
if(var_04 == var_18)
{
break;
}
if(isdefined(var_04.var_2F45))
{
break;
}
}
if(var_19 > 1000)
{
var_04 = var_18;
var_1B = 0;
while(isdefined(var_04.target))
{
var_1A = var_04;
var_04 = getvehiclenode(var_04.target,"targetname");
var_1B = var_1B + distance(var_04.origin,var_1A.origin);
if(var_1B < var_19 / 2)
{
continue;
}
var_04.var_2F45 = [];
var_04 thread func_897F("forward");
var_03[var_03.size] = var_04;
break;
}
}
}
level.var_848E = func_98A6(var_03);
foreach(var_04 in var_00)
{
if(!isdefined(var_04.var_848D))
{
var_04 thread func_C059();
}
}
}
//Function Number: 55
func_80B4(param_00)
{
var_01 = [];
foreach(var_04, var_03 in self.var_AD40)
{
if(self.var_AD17[var_04] != param_00)
{
continue;
}
var_01[var_01.size] = var_03;
}
return var_01[randomint(var_01.size)];
}
//Function Number: 56
func_7FE9(param_00,param_01)
{
var_02 = level.var_848E[self.var_848D];
var_03 = func_7732(var_02,param_00,undefined,param_01);
var_04 = var_03[0].var_7646;
var_05 = func_7732(var_02,param_00,undefined,level.var_C74A[param_01]);
var_06 = var_05[0].var_7646;
if(!getdvarint("tankDebug"))
{
var_06 = 9999999;
}
if(var_04 <= var_06)
{
return var_03[1];
}
}
//Function Number: 57
func_897F(param_00)
{
level endon("end_tankPathHandling");
for(;;)
{
self waittill("trigger",var_01,var_02);
var_03 = level.var_848E[self.var_848D];
var_01.var_205 = self;
var_04 = undefined;
if(isdefined(var_01.var_6366) && var_01.var_6366 != var_03)
{
var_04 = func_7FE9(var_01.var_6366,var_01.var_376);
if(!isdefined(var_04))
{
var_01 thread func_F6C4(level.var_C74A[var_01.var_376]);
}
}
if(!isdefined(var_04) || var_04 == var_03)
{
var_04 = var_03 func_80B4(var_01.var_376);
}
var_05 = var_03.var_AD41[var_04.var_848D];
if(var_01.var_376 == "forward")
{
var_06 = func_7FE8();
}
else
{
var_06 = func_809A();
}
if(var_06 != var_05)
{
var_01 startpath(var_05);
}
}
}
//Function Number: 58
func_8982(param_00,param_01)
{
for(;;)
{
self waittill("trigger",var_02);
if(var_02.var_376 != param_01)
{
continue;
}
func_4F52("tank starting path at join node: " + param_00.var_848D);
var_02 startpath(param_00);
}
}
//Function Number: 59
func_C059()
{
self.var_7334 = func_7EC4().var_848D;
self.var_E492 = func_80EF().var_848D;
for(;;)
{
self waittill("trigger",var_00,var_01);
var_00.var_205 = self;
var_00.var_7334 = self.var_7334;
var_00.var_E492 = self.var_E492;
if(!isdefined(self.target) || self.var_336 == "branchnode")
{
var_02 = "TRANS";
}
else
{
var_02 = "NODE";
}
if(isdefined(var_01))
{
func_4F50(self.origin,var_02,(1,0.5,0),1,2,100);
continue;
}
func_4F50(self.origin,var_02,(0,1,0),1,2,100);
}
}
//Function Number: 60
func_72EA(param_00,param_01,param_02)
{
param_01 endon("trigger");
param_00 endon("trigger");
param_02 endon("death");
var_03 = distancesquared(param_02.origin,param_01.origin);
var_04 = param_02.var_376;
func_4F50(param_00.origin + (0,0,30),"LAST",(0,0,1),0.5,1,100);
func_4F50(param_01.origin + (0,0,60),"NEXT",(0,1,0),0.5,1,100);
var_05 = 0;
for(;;)
{
wait(0.05);
if(var_04 != param_02.var_376)
{
func_4F52("tank missed node: reversing direction");
param_02 thread func_72EA(param_01,param_00,param_02);
return;
}
if(var_05)
{
func_4F52("... sending notify.");
param_01 notify("trigger",param_02,1);
return;
}
var_06 = distancesquared(param_02.origin,param_01.origin);
if(var_06 > var_03)
{
var_05 = 1;
func_4F52("tank missed node: forcing notify in one frame...");
}
var_03 = var_06;
}
}
//Function Number: 61
func_7EC4()
{
for(var_00 = self;!isdefined(var_00.var_848D);var_00 = var_00 func_7FE8())
{
}
return var_00;
}
//Function Number: 62
func_80EF()
{
for(var_00 = self;!isdefined(var_00.var_848D);var_00 = var_00 func_809A())
{
}
return var_00;
}
//Function Number: 63
func_7FE8()
{
if(isdefined(self.target))
{
return getvehiclenode(self.target,"targetname");
}
return self.var_BF2E;
}
//Function Number: 64
func_809A()
{
return self.var_D886;
}
//Function Number: 65
func_98A6(param_00)
{
var_01 = [];
foreach(var_03 in param_00)
{
var_04 = spawnstruct();
var_04.var_AD35 = [];
var_04.var_AD40 = [];
var_04.var_AD36 = [];
var_04.var_AD17 = [];
var_04.var_AD41 = [];
var_04.var_205 = var_03;
var_04.origin = var_03.origin;
var_04.var_848D = var_01.size;
var_03.var_848D = var_01.size;
func_4F50(var_04.origin + (0,0,80),var_04.var_848D,(1,1,1),0.65,2,100000);
var_01[var_01.size] = var_04;
}
foreach(var_03 in param_00)
{
var_07 = var_03.var_848D;
var_08 = getvehiclenode(var_03.target,"targetname");
var_09 = distance(var_03.origin,var_08.origin);
var_0A = var_08;
while(!isdefined(var_08.var_848D))
{
var_09 = var_09 + distance(var_08.origin,var_08.var_D886.origin);
if(isdefined(var_08.target))
{
var_08 = getvehiclenode(var_08.target,"targetname");
continue;
}
var_08 = var_08.var_BF2E;
}
var_01[var_07] func_17EC(var_01[var_08.var_848D],var_09,"forward",var_0A);
var_08 = var_03.var_D886;
var_09 = distance(var_03.origin,var_08.origin);
var_0A = var_08;
while(!isdefined(var_08.var_848D))
{
var_09 = var_09 + distance(var_08.origin,var_08.var_D886.origin);
var_08 = var_08.var_D886;
}
var_01[var_07] func_17EC(var_01[var_08.var_848D],var_09,"reverse",var_0A);
foreach(var_0C in var_03.var_2F45)
{
var_08 = var_0C;
var_09 = distance(var_03.origin,var_08.origin);
var_0A = var_08;
if(var_08.var_336 == "branchnode")
{
while(!isdefined(var_08.var_848D))
{
if(isdefined(var_08.target))
{
var_0D = getvehiclenode(var_08.target,"targetname");
}
else
{
var_0D = var_08.var_BF2E;
}
var_09 = var_09 + distance(var_08.origin,var_0D.origin);
var_08 = var_0D;
}
var_01[var_07] func_17EC(var_01[var_08.var_848D],var_09,"forward",var_0A);
continue;
}
while(!isdefined(var_08.var_848D))
{
var_09 = var_09 + distance(var_08.origin,var_08.var_D886.origin);
var_08 = var_08.var_D886;
}
var_01[var_07] func_17EC(var_01[var_08.var_848D],var_09,"reverse",var_0A);
}
}
return var_01;
}
//Function Number: 66
func_17EC(param_00,param_01,param_02,param_03)
{
self.var_AD40[param_00.var_848D] = param_00;
self.var_AD36[param_00.var_848D] = param_01;
self.var_AD17[param_00.var_848D] = param_02;
self.var_AD41[param_00.var_848D] = param_03;
var_04 = spawnstruct();
var_04.var_119D3 = param_00;
var_04.var_119D2 = param_00.var_848D;
var_04.var_AB5D = param_01;
var_04.var_F2 = param_02;
var_04.var_10DCD = param_03;
self.var_AD35[param_00.var_848D] = var_04;
}
//Function Number: 67
func_7732(param_00,param_01,param_02,param_03)
{
level.var_C62D = [];
level.var_428F = [];
var_04 = 0;
var_05 = [];
if(!isdefined(param_02))
{
param_02 = [];
}
param_01.var_7646 = 0;
param_01.var_877B = func_7F0A(param_01,param_00);
param_01.var_6A62 = param_01.var_7646 + param_01.var_877B;
func_184C(param_01);
var_06 = param_01;
for(;;)
{
foreach(var_08 in var_06.var_AD40)
{
if(scripts\common\utility::func_2286(param_02,var_08))
{
continue;
}
if(scripts\common\utility::func_2286(level.var_428F,var_08))
{
continue;
}
if(isdefined(param_03) && var_08.var_AD17[var_06.var_848D] != param_03)
{
continue;
}
if(!scripts\common\utility::func_2286(level.var_C62D,var_08))
{
func_1854(var_08);
var_08.var_C8F6 = var_06;
var_08.var_7646 = func_7EED(var_08,var_06);
var_08.var_877B = func_7F0A(var_08,param_00);
var_08.var_6A62 = var_08.var_7646 + var_08.var_877B;
if(var_08 == param_00)
{
var_04 = 1;
}
continue;
}
if(var_08.var_7646 < func_7EED(var_06,var_08))
{
continue;
}
var_08.var_C8F6 = var_06;
var_08.var_7646 = func_7EED(var_08,var_06);
var_08.var_6A62 = var_08.var_7646 + var_08.var_877B;
}
if(var_04)
{
break;
}
func_184C(var_06);
var_0A = level.var_C62D[0];
foreach(var_0C in level.var_C62D)
{
if(var_0C.var_6A62 > var_0A.var_6A62)
{
continue;
}
var_0A = var_0C;
}
func_184C(var_0A);
var_06 = var_0A;
}
var_06 = param_00;
while(var_06 != param_01)
{
var_05[var_05.size] = var_06;
var_06 = var_06.var_C8F6;
}
var_05[var_05.size] = var_06;
return var_05;
}
//Function Number: 68
func_1854(param_00)
{
param_00.var_C62E = level.var_C62D.size;
level.var_C62D[level.var_C62D.size] = param_00;
param_00.var_4290 = undefined;
}
//Function Number: 69
func_184C(param_00)
{
if(isdefined(param_00.var_4290))
{
return;
}
param_00.var_4290 = level.var_428F.size;
level.var_428F[level.var_428F.size] = param_00;
if(!scripts\common\utility::func_2286(level.var_C62D,param_00))
{
return;
}
level.var_C62D[param_00.var_C62E] = level.var_C62D[level.var_C62D.size - 1];
level.var_C62D[param_00.var_C62E].var_C62E = param_00.var_C62E;
level.var_C62D[level.var_C62D.size - 1] = undefined;
param_00.var_C62E = undefined;
}
//Function Number: 70
func_7F0A(param_00,param_01)
{
return distance(param_00.var_205.origin,param_01.var_205.origin);
}
//Function Number: 71
func_7EED(param_00,param_01)
{
return param_00.var_C8F6.var_7646 + param_00.var_AD36[param_01.var_848D];
}
//Function Number: 72
func_5B83(param_00)
{
for(var_01 = 1;var_01 < param_00.size;var_01++)
{
var_02 = param_00[var_01 - 1];
var_03 = param_00[var_01];
if(var_02.var_AD17[var_03.var_848D] == "reverse")
{
level thread func_5B7C(var_02.var_205.origin,var_03.var_205.origin,(1,0,0));
}
else
{
level thread func_5B7C(var_02.var_205.origin,var_03.var_205.origin,(0,1,0));
}
var_04 = var_02.var_AD41[var_03.var_848D];
level thread func_5B7C(var_02.var_205.origin + (0,0,4),var_04.origin + (0,0,4),(0,0,1));
if(var_02.var_AD17[var_03.var_848D] == "reverse")
{
while(!isdefined(var_04.var_848D))
{
var_05 = var_04;
var_04 = var_04.var_D886;
level thread func_5B7C(var_05.origin + (0,0,4),var_04.origin + (0,0,4),(0,1,1));
}
continue;
}
while(!isdefined(var_04.var_848D))
{
var_05 = var_04;
if(isdefined(var_04.target))
{
var_04 = getvehiclenode(var_04.target,"targetname");
continue;
}
var_04 = var_04.var_BF2E;
level thread func_5B7C(var_05.origin + (0,0,4),var_04.origin + (0,0,4),(0,1,1));
}
}
}
//Function Number: 73
func_5B79(param_00)
{
}
//Function Number: 74
func_5B7C(param_00,param_01,param_02)
{
level endon("endpath");
wait(0.05);
}
//Function Number: 75
func_4F52(param_00)
{
}
//Function Number: 76
func_4F51(param_00)
{
}
//Function Number: 77
func_4F50(param_00,param_01,param_02,param_03,param_04,param_05)
{
}
//Function Number: 78
func_5B8B()
{
}