Files
IL-GSC/MW3/PC/SP/animscripts/squadmanager.gsc
InfinityLoader d559c1d414 Added MW3 Scripts
2023-10-27 03:47:01 -04:00

823 lines
14 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\squadmanager.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 32
* Decompile Time: 556 ms
* Timestamp: 10/27/2023 2:18:49 AM
*******************************************************************/
//Function Number: 1
func_0A5E()
{
if(isdefined(level.var_A5F) && level.var_A5F)
{
return;
}
anim.var_A60 = [];
anim.var_A61 = [];
anim.var_A62 = [];
anim.var_A63 = [];
anim.var_A64 = 0;
anim.var_A5F = 1;
}
//Function Number: 2
func_0A65(param_00,param_01)
{
level.var_A62[param_00] = spawnstruct();
var_02 = level.var_A62[param_00];
var_02.var_A66 = param_00;
var_02.team = func_0A7D(param_01);
var_02.var_A67 = 0;
var_02.origin = undefined;
var_02.forward = undefined;
var_02.enemy = undefined;
var_02.var_A69 = 0;
var_02.var_A6A = 0;
var_02.members = [];
var_02.var_A6C = [];
var_02.var_A6D = 0;
var_02.var_A6E = [];
var_02.var_A6F = [];
var_02.var_A70 = [];
var_02.var_A71 = [];
var_02.var_A72 = [];
var_02.var_A73 = [];
var_02.var_A74 = [];
var_02.var_A75 = level.var_A63.size;
var_02 func_0A9F("combat",0.75);
var_02 func_0A9F("cover",0.75);
var_02 func_0A9F("move",0.75);
var_02 func_0A9F("stop",0.75);
var_02 func_0A9F("death",0.75);
var_02 func_0A9F("suppressed",0.75);
var_02 func_0A9F("attacking",0.5);
level.var_A63[level.var_A63.size] = var_02;
var_02 func_0A94();
level notify("squad created " + param_00);
anim notify("squad created " + param_00);
for(var_03 = 0;var_03 < level.var_A60.size;var_03++)
{
var_04 = level.var_A60[var_03];
var_02 thread [[ var_04 ]]();
}
for(var_03 = 0;var_03 < level.var_A63.size;var_03++)
{
level.var_A63[var_03] func_0A94();
}
var_02 thread func_0A89();
var_02 thread func_0A8A();
var_02 thread func_0A88();
var_02 thread func_0A9A();
return var_02;
}
//Function Number: 3
func_0A76(param_00)
{
if(param_00 == "axis" || param_00 == "team3" || param_00 == "allies")
{
return;
}
var_01 = level.var_A62[param_00].var_A75;
var_02 = level.var_A62[param_00];
var_02 notify("squad_deleting");
while(var_02.members.size)
{
var_02.members[0] func_0A7E(var_02.members[0].team);
}
level.var_A63[var_01] = level.var_A63[level.var_A63.size - 1];
level.var_A63[var_01].var_A75 = var_01;
level.var_A63[level.var_A63.size - 1] = undefined;
level.var_A62[param_00] = undefined;
level notify("squad deleted " + param_00);
anim notify("squad deleted " + param_00);
for(var_03 = 0;var_03 < level.var_A63.size;var_03++)
{
level.var_A63[var_03] func_0A94();
}
}
//Function Number: 4
func_0A77()
{
var_00 = "auto" + level.var_A64;
level.var_A64++;
return var_00;
}
//Function Number: 5
func_0A78(param_00)
{
if(!isdefined(param_00))
{
if(isdefined(self.var_A79))
{
param_00 = self.var_A79;
}
else
{
param_00 = self.team;
}
}
if(!isdefined(level.var_A62[param_00]))
{
anim func_0A65(param_00,self);
}
var_01 = level.var_A62[param_00];
self.var_A7A = var_01;
}
//Function Number: 6
func_0A7B()
{
self endon("death");
wait 10;
if(!isdefined(self.var_A79))
{
var_00 = self.team + self.script_flanker;
}
else
{
var_00 = self.var_A79 + self.script_flanker;
}
func_0A7E(var_00);
}
//Function Number: 7
func_0A7D(param_00)
{
var_01 = "allies";
if(param_00.team == "axis" || param_00.team == "neutral" || param_00.team == "team3")
{
var_01 = param_00.team;
}
return var_01;
}
//Function Number: 8
func_0A7E(param_00)
{
if(!isdefined(param_00))
{
if(isdefined(self.script_flanker))
{
thread func_0A7B();
}
if(isdefined(self.var_A79))
{
param_00 = self.var_A79;
}
else
{
param_00 = self.team;
}
}
if(!isdefined(level.var_A62[param_00]))
{
anim func_0A65(param_00,self);
}
var_01 = level.var_A62[param_00];
if(isdefined(self.var_A7A))
{
if(self.var_A7A == var_01)
{
return;
}
else
{
func_0A84();
}
}
self.var_A7F = 0;
self.var_A80 = 0;
self.var_A7A = var_01;
self.var_A81 = var_01.members.size;
var_01.members[self.var_A81] = self;
var_01.var_A6A = var_01.members.size;
if(isdefined(level.loadoutcomplete))
{
if(self.team == "allies" && animscripts/battlechatter::func_A83())
{
func_0A86();
}
}
for(var_02 = 0;var_02 < self.var_A7A.var_A6F.size;var_02++)
{
var_03 = self.var_A7A.var_A6F[var_02];
self thread [[ var_03 ]](self.var_A7A.var_A66);
}
thread func_0A8D();
thread func_0A8B();
}
//Function Number: 9
func_0A84()
{
var_00 = self.var_A7A;
var_01 = -1;
if(isdefined(self))
{
var_01 = self.var_A81;
}
else
{
for(var_02 = 0;var_02 < var_00.members.size;var_02++)
{
if(var_00.members[var_02] == self)
{
var_01 = var_02;
}
}
}
if(var_01 != var_00.members.size - 1)
{
var_03 = var_00.members[var_00.members.size - 1];
var_00.members[var_01] = var_03;
if(isdefined(var_03))
{
var_03.var_A81 = var_01;
}
}
var_00.members[var_00.members.size - 1] = undefined;
var_00.var_A6A = var_00.members.size;
if(isdefined(self.var_A85))
{
func_0A87();
}
for(var_02 = 0;var_02 < self.var_A7A.var_A71.size;var_02++)
{
var_04 = self.var_A7A.var_A71[var_02];
self thread [[ var_04 ]](var_00.var_A66);
}
if(var_00.var_A6A == 0)
{
func_0A76(var_00.var_A66);
}
if(isdefined(self))
{
self.var_A7A = undefined;
self.var_A81 = undefined;
}
self notify("removed from squad");
}
//Function Number: 10
func_0A86()
{
var_00 = self.var_A7A;
if(isdefined(self.var_A85))
{
return;
}
self.var_A85 = var_00.var_A6C.size;
var_00.var_A6C[self.var_A85] = self;
var_00.var_A6D = var_00.var_A6C.size;
}
//Function Number: 11
func_0A87()
{
var_00 = self.var_A7A;
var_01 = -1;
if(isdefined(self))
{
var_01 = self.var_A85;
}
else
{
for(var_02 = 0;var_02 < var_00.var_A6C.size;var_02++)
{
if(var_00.var_A6C[var_02] == self)
{
var_01 = var_02;
}
}
}
if(var_01 != var_00.var_A6C.size - 1)
{
var_03 = var_00.var_A6C[var_00.var_A6C.size - 1];
var_00.var_A6C[var_01] = var_03;
if(isdefined(var_03))
{
var_03.var_A85 = var_01;
}
}
var_00.var_A6C[var_00.var_A6C.size - 1] = undefined;
var_00.var_A6D = var_00.var_A6C.size;
if(isdefined(self))
{
self.var_A85 = undefined;
}
}
//Function Number: 12
func_0A88()
{
if(!isdefined(level.loadoutcomplete))
{
anim waittill("loadout complete");
}
for(var_00 = 0;var_00 < self.members.size;var_00++)
{
if(self.members[var_00] animscripts/battlechatter::func_A83())
{
self.members[var_00] func_0A86();
}
}
}
//Function Number: 13
func_0A89()
{
for(;;)
{
anim waittill("squadupdate",var_00);
switch(var_00)
{
case "squadlist":
func_0A94();
break;
case "combat":
func_0A90();
break;
case "origin":
updateorigin();
break;
case "forward":
func_0A8E();
break;
}
}
}
//Function Number: 14
func_0A8A()
{
anim endon("squad deleted " + self.var_A66);
for(;;)
{
func_0A93();
wait 0.1;
}
}
//Function Number: 15
func_0A8B()
{
self endon("removed from squad");
self waittill("death",var_00);
if(isdefined(self))
{
self.attacker = var_00;
}
func_0A84();
}
//Function Number: 16
func_0A8D()
{
self endon("removed from squad");
for(;;)
{
self waittill("enemy");
if(!isdefined(self.enemy))
{
self.var_A7A notify("squadupdate","combat");
}
else
{
self.var_A7A.var_A69 = 1;
}
wait 0.05;
}
}
//Function Number: 17
func_0A8E()
{
if(isdefined(self.enemy))
{
self.forward = vectornormalize(self.enemy.origin - self.origin);
return;
}
var_00 = (0,0,0);
var_01 = 0;
for(var_02 = 0;var_02 < self.members.size;var_02++)
{
if(!isalive(self.members[var_02]))
{
continue;
}
var_00 = var_00 + anglestoforward(self.members[var_02].angles);
var_01++;
}
if(var_01)
{
self.forward = (var_00[0] / var_01,var_00[1] / var_01,var_00[2] / var_01);
return;
}
self.forward = var_00;
}
//Function Number: 18
updateorigin()
{
var_00 = (0,0,0);
var_01 = 0;
for(var_02 = 0;var_02 < self.members.size;var_02++)
{
if(!isalive(self.members[var_02]))
{
continue;
}
var_00 = var_00 + self.members[var_02].origin;
var_01++;
}
if(var_01)
{
self.origin = (var_00[0] / var_01,var_00[1] / var_01,var_00[2] / var_01);
return;
}
self.origin = var_00;
}
//Function Number: 19
func_0A90()
{
self.var_A69 = 0;
for(var_00 = 0;var_00 < level.var_A63.size;var_00++)
{
self.var_A6E[level.var_A63[var_00].var_A66].var_A91 = 0;
}
for(var_00 = 0;var_00 < self.members.size;var_00++)
{
if(isdefined(self.members[var_00].enemy) && isdefined(self.members[var_00].enemy.var_A7A) && self.members[var_00].var_A80 > 0)
{
self.var_A6E[self.members[var_00].enemy.var_A7A.var_A66].var_A91 = 1;
}
}
}
//Function Number: 20
func_0A92()
{
var_00 = undefined;
for(var_01 = 0;var_01 < self.members.size;var_01++)
{
if(isdefined(self.members[var_01].enemy) && isdefined(self.members[var_01].enemy.var_A7A))
{
if(!isdefined(var_00))
{
var_00 = self.members[var_01].enemy.var_A7A;
continue;
}
if(self.members[var_01].enemy.var_A7A.var_A6A > var_00.var_A6A)
{
var_00 = self.members[var_01].enemy.var_A7A;
}
}
}
self.enemy = var_00;
}
//Function Number: 21
func_0A93()
{
var_00 = (0,0,0);
var_01 = 0;
var_02 = undefined;
var_03 = 0;
func_0A90();
for(var_04 = 0;var_04 < self.members.size;var_04++)
{
if(!isalive(self.members[var_04]))
{
continue;
}
var_00 = var_00 + self.members[var_04].origin;
var_01++;
if(isdefined(self.members[var_04].enemy) && isdefined(self.members[var_04].enemy.var_A7A))
{
if(!isdefined(var_02))
{
var_02 = self.members[var_04].enemy.var_A7A;
continue;
}
if(self.members[var_04].enemy.var_A7A.var_A6A > var_02.var_A6A)
{
var_02 = self.members[var_04].enemy.var_A7A;
}
}
}
if(var_01)
{
self.origin = (var_00[0] / var_01,var_00[1] / var_01,var_00[2] / var_01);
}
else
{
self.origin = var_00;
}
self.var_A69 = var_03;
self.enemy = var_02;
func_0A8E();
}
//Function Number: 22
func_0A94()
{
for(var_00 = 0;var_00 < level.var_A63.size;var_00++)
{
if(!isdefined(self.var_A6E[level.var_A63[var_00].var_A66]))
{
self.var_A6E[level.var_A63[var_00].var_A66] = spawnstruct();
self.var_A6E[level.var_A63[var_00].var_A66].var_A91 = 0;
}
for(var_01 = 0;var_01 < self.var_A73.size;var_01++)
{
var_02 = self.var_A73[var_01];
self thread [[ var_02 ]](level.var_A63[var_00].var_A66);
}
}
}
//Function Number: 23
func_0A95(param_00,param_01,param_02,param_03)
{
self endon("death");
if(!isdefined(param_02))
{
param_02 = (0,0,0);
}
if(!isdefined(param_03))
{
param_03 = (1,0,0);
}
for(var_04 = 0;var_04 < param_01 * 2;var_04++)
{
if(!isalive(self))
{
return;
}
var_05 = self getshootatpos() + (0,0,10) + param_02;
wait 0.05;
}
}
//Function Number: 24
func_0A96(param_00)
{
switch(param_00)
{
case "move":
case "combat":
case "death":
case "stop":
self.a.var_A98 = param_00;
break;
case "grenadecower":
case "pain":
break;
case "stalingrad_cover_crouch":
case "concealment_stand":
case "concealment_prone":
case "concealment_crouch":
case "cover_wide_right":
case "cover_wide_left":
case "cover_prone":
case "cover_stand":
case "cover_left":
case "cover_crouch":
case "cover_right":
self.a.var_A98 = "cover";
break;
case "l33t truckride combat":
case "aim":
self.a.var_A98 = "combat";
break;
}
}
//Function Number: 25
func_0A99()
{
func_0AA4("combat");
func_0AA4("cover");
func_0AA4("move");
func_0AA4("stop");
func_0AA4("death");
func_0AA4("suppressed");
func_0AA4("attacking");
for(var_00 = 0;var_00 < self.members.size;var_00++)
{
if(!isalive(self.members[var_00]))
{
continue;
}
func_0AA5(self.members[var_00]);
func_0AA6(self.members[var_00],"suppressed");
func_0AA6(self.members[var_00],"combat");
func_0AA6(self.members[var_00],"attacking");
func_0AA6(self.members[var_00],"cover");
}
}
//Function Number: 26
func_0A9A()
{
anim endon("squad deleted " + self.var_A66);
var_00 = 0.05;
for(;;)
{
for(var_01 = 0;var_01 < self.members.size;var_01++)
{
if(!isalive(self.members[var_01]))
{
continue;
}
self.members[var_01] func_0A9B(var_00);
self.members[var_01] func_0A9C(var_00);
}
wait var_00;
}
}
//Function Number: 27
func_0A9B(param_00)
{
if(isdefined(self.lastenemysightpos))
{
if(self.var_A80 < 0)
{
self.var_A80 = param_00;
}
else
{
self.var_A80 = self.var_A80 + param_00;
}
self.var_A7F = gettime();
return;
}
else if(self issuppressed())
{
self.var_A80 = self.var_A80 + param_00;
return;
}
if(self.var_A80 > 0)
{
self.var_A80 = 0 - param_00;
return;
}
self.var_A80 = self.var_A80 - param_00;
}
//Function Number: 28
func_0A9C(param_00)
{
if(self.var_A9D)
{
if(self.var_A9E < 0)
{
self.var_A9E = param_00;
}
else
{
self.var_A9E = self.var_A9E + param_00;
}
return;
}
if(self.var_A9E > 0)
{
self.var_A9E = 0 - param_00;
return;
}
self.var_A9E = self.var_A9E - param_00;
}
//Function Number: 29
func_0A9F(param_00,param_01)
{
self.var_AA0[param_00] = spawnstruct();
self.var_AA0[param_00].var_AA1 = param_01;
self.var_AA0[param_00].var_AA2 = 0;
self.var_AA0[param_00].var_AA3 = 0;
}
//Function Number: 30
func_0AA4(param_00)
{
self.var_AA0[param_00].var_AA2 = 0;
self.var_AA0[param_00].var_AA3 = 0;
}
//Function Number: 31
func_0AA5(param_00)
{
self.var_AA0[param_00.a.var_A98].var_AA3++;
if(self.var_AA0[param_00.a.var_A98].var_AA3 > self.var_AA0[param_00.a.var_A98].var_AA1 * self.members.size)
{
self.var_AA0[param_00.a.var_A98].var_AA2 = 1;
}
}
//Function Number: 32
func_0AA6(param_00,param_01)
{
switch(param_01)
{
case "suppressed":
if(param_00.var_A9E > 1)
{
self.var_AA0[param_01].var_AA3++;
}
break;
case "combat":
if(param_00.var_A80 > 0)
{
self.var_AA0[param_01].var_AA3++;
}
break;
case "attacking":
if(gettime() < param_00.a.lastshoottime + 2000)
{
self.var_AA0[param_01].var_AA3++;
}
break;
case "cover":
if(!param_00 animscripts/battlechatter::func_AA8())
{
self.var_AA0[param_01].var_AA3++;
}
break;
}
if(self.var_AA0[param_01].var_AA3 > self.var_AA0[param_01].var_AA1 * self.members.size)
{
self.var_AA0[param_01].var_AA2 = 1;
}
}