IL-GSC/AW/PC/MP/maps/mp/_entityheadicons.gsc
2023-10-27 03:49:01 -04:00

457 lines
8.5 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps/mp/_entityheadicons.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 10
* Decompile Time: 158 ms
* Timestamp: 10/27/2023 1:48:37 AM
*******************************************************************/
//Function Number: 1
init()
{
if(isdefined(level.initedentityheadicons))
{
return;
}
level.initedentityheadicons = 1;
if(level.multiteambased)
{
foreach(var_01 in level.teamnamelist)
{
var_02 = "entity_headicon_" + var_01;
game[var_02] = maps\mp\gametypes\_teams::mt_getteamheadicon(var_01);
precacheshader(game[var_02]);
}
return;
}
game["entity_headicon_allies"] = maps\mp\gametypes\_teams::getteamheadicon("allies");
game["entity_headicon_axis"] = maps\mp\gametypes\_teams::getteamheadicon("axis");
precacheshader(game["entity_headicon_allies"]);
precacheshader(game["entity_headicon_axis"]);
}
//Function Number: 2
setheadicon(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(maps\mp\_utility::isgameparticipant(param_00) && !isplayer(param_00))
{
return;
}
if(!isdefined(self.entityheadicons))
{
self.entityheadicons = [];
}
if(!isdefined(param_05))
{
param_05 = 1;
}
if(!isdefined(param_06))
{
param_06 = 0.05;
}
if(!isdefined(param_07))
{
param_07 = 1;
}
if(!isdefined(param_08))
{
param_08 = 1;
}
if(!isdefined(param_09))
{
param_09 = 0;
}
if(!isdefined(param_0A))
{
param_0A = 1;
}
if(!isdefined(param_0B))
{
param_0B = "";
}
if(!isplayer(param_00) && param_00 == "none")
{
foreach(var_0E, var_0D in self.entityheadicons)
{
if(isdefined(var_0D))
{
var_0D destroy();
}
self.entityheadicons[var_0E] = undefined;
}
return;
}
if(isplayer(param_03))
{
if(isdefined(self.entityheadicons[param_03.guid]))
{
self.entityheadicons[param_03.guid] destroy();
self.entityheadicons[param_03.guid] = undefined;
}
if(param_04 == "")
{
return;
}
if(isdefined(self.entityheadicons[param_03.team]))
{
self.entityheadicons[param_03.team] destroy();
self.entityheadicons[param_03.team] = undefined;
}
var_0D = newclienthudelem(param_03);
self.entityheadicons[param_02.guid] = var_0E;
}
else
{
if(isdefined(self.entityheadicons[param_03]))
{
self.entityheadicons[param_03] destroy();
self.entityheadicons[param_03] = undefined;
}
if(param_04 == "")
{
return;
}
foreach(var_0F in self.entityheadicons)
{
if(var_11 == "axis" || var_11 == "allies")
{
continue;
}
var_10 = maps\mp\_utility::getplayerforguid(var_11);
if(var_10.team == param_01)
{
self.entityheadicons[var_11] destroy();
self.entityheadicons[var_11] = undefined;
}
}
var_0D = newteamhudelem(param_01);
self.entityheadicons[param_01] = var_0D;
}
if(!isdefined(param_04) || !isdefined(param_05))
{
param_04 = 10;
param_05 = 10;
}
var_0D.archived = param_06;
var_0D.alpha = 0.85;
var_0D setshader(param_02,param_04,param_05);
var_0D setwaypoint(param_08,param_09,param_0A,param_0B);
if(var_0C == "")
{
var_0D.x = self.origin[0] + param_03[0];
var_0D.y = self.origin[1] + param_03[1];
var_0D.z = self.origin[2] + param_03[2];
var_0D thread keeppositioned(self,param_03,param_07);
}
else
{
var_0D.x = param_03[0];
var_0D.y = param_03[1];
var_0D.z = param_03[2];
var_0D settargetent(self,var_0C);
}
thread destroyiconsondeath();
if(isplayer(param_01))
{
var_0D thread destroyonownerdisconnect(param_01);
}
if(isplayer(self))
{
var_0D thread destroyonownerdisconnect(self);
}
return var_0D;
}
//Function Number: 3
destroyonownerdisconnect(param_00)
{
self endon("death");
param_00 waittill("disconnect");
self destroy();
}
//Function Number: 4
destroyiconsondeath()
{
self notify("destroyIconsOnDeath");
self endon("destroyIconsOnDeath");
self waittill("death");
foreach(var_01 in self.entityheadicons)
{
if(!isdefined(var_01))
{
continue;
}
var_01 destroy();
}
}
//Function Number: 5
keeppositioned(param_00,param_01,param_02)
{
self endon("death");
param_00 endon("death");
param_00 endon("disconnect");
var_03 = param_00.origin;
for(;;)
{
if(!isdefined(param_00))
{
return;
}
if(var_03 != param_00.origin)
{
var_03 = param_00.origin;
self.x = var_03[0] + param_01[0];
self.y = var_03[1] + param_01[1];
self.z = var_03[2] + param_01[2];
}
if(param_02 > 0.05)
{
self.alpha = 0.85;
self fadeovertime(param_02);
self.alpha = 0;
}
wait(param_02);
}
}
//Function Number: 6
setteamheadicon(param_00,param_01,param_02,param_03)
{
if(!level.teambased)
{
return;
}
if(!isdefined(param_02))
{
param_02 = "";
}
if(!isdefined(self.entityheadiconteam))
{
self.entityheadiconteam = "none";
self.entityheadicon = undefined;
}
if(isdefined(param_03) && param_03 == 0)
{
var_04 = undefined;
}
var_05 = game["entity_headicon_" + param_00];
self.entityheadiconteam = param_00;
if(isdefined(param_01))
{
self.entityheadiconoffset = param_01;
}
else
{
self.entityheadiconoffset = (0,0,0);
}
self notify("kill_entity_headicon_thread");
if(param_00 == "none")
{
if(isdefined(self.entityheadicon))
{
self.entityheadicon destroy();
}
return;
}
var_06 = newteamhudelem(param_00);
var_06.archived = 1;
var_06.alpha = 0.8;
var_06 setshader(var_05,10,10);
var_06 setwaypoint(0,0,0,1);
self.entityheadicon = var_06;
if(!isdefined(param_03))
{
if(param_02 == "")
{
var_06.x = self.origin[0] + self.entityheadiconoffset[0];
var_06.y = self.origin[1] + self.entityheadiconoffset[1];
var_06.z = self.origin[2] + self.entityheadiconoffset[2];
thread keepiconpositioned();
}
else
{
var_06.x = self.entityheadiconoffset[0];
var_06.y = self.entityheadiconoffset[1];
var_06.z = self.entityheadiconoffset[2];
var_06 settargetent(self,param_02);
}
}
else
{
var_07 = anglestoup(self.angles);
var_08 = self.origin + var_07 * 28;
if(param_02 == "")
{
var_06.x = var_08[0];
var_06.y = var_08[1];
var_06.z = var_08[2];
thread keepiconpositioned(param_03);
}
else
{
var_06.x = var_08[0];
var_06.y = var_08[1];
var_06.z = var_08[2];
var_06 settargetent(self,param_02);
}
}
thread destroyheadiconsondeath();
}
//Function Number: 7
setplayerheadicon(param_00,param_01,param_02)
{
if(level.teambased)
{
return;
}
if(!isdefined(param_02))
{
param_02 = "";
}
if(!isdefined(self.entityheadiconteam))
{
self.entityheadiconteam = "none";
self.entityheadicon = undefined;
}
self notify("kill_entity_headicon_thread");
if(!isdefined(param_00))
{
if(isdefined(self.entityheadicon))
{
self.entityheadicon destroy();
}
return;
}
var_03 = param_00.team;
self.entityheadiconteam = var_03;
if(isdefined(param_01))
{
self.entityheadiconoffset = param_01;
}
else
{
self.entityheadiconoffset = (0,0,0);
}
var_04 = game["entity_headicon_" + var_03];
var_05 = newclienthudelem(param_00);
var_05.archived = 1;
var_05.alpha = 0.8;
var_05 setshader(var_04,10,10);
var_05 setwaypoint(0,0,0,1);
self.entityheadicon = var_05;
if(param_02 == "")
{
var_05.x = self.origin[0] + self.entityheadiconoffset[0];
var_05.y = self.origin[1] + self.entityheadiconoffset[1];
var_05.z = self.origin[2] + self.entityheadiconoffset[2];
thread keepiconpositioned();
}
else
{
var_05.x = self.entityheadiconoffset[0];
var_05.y = self.entityheadiconoffset[1];
var_05.z = self.entityheadiconoffset[2];
var_05 settargetent(self,param_02);
}
thread destroyheadiconsondeath();
}
//Function Number: 8
keepiconpositioned(param_00)
{
self endon("kill_entity_headicon_thread");
self endon("death");
var_01 = self.origin;
for(;;)
{
if(var_01 != self.origin)
{
updateheadiconorigin(param_00);
var_01 = self.origin;
}
wait(0.05);
}
}
//Function Number: 9
destroyheadiconsondeath()
{
self endon("kill_entity_headicon_thread");
self waittill("death");
if(!isdefined(self.entityheadicon))
{
return;
}
self.entityheadicon destroy();
}
//Function Number: 10
updateheadiconorigin(param_00)
{
if(!isdefined(param_00))
{
self.entityheadicon.x = self.origin[0] + self.entityheadiconoffset[0];
self.entityheadicon.y = self.origin[1] + self.entityheadiconoffset[1];
self.entityheadicon.z = self.origin[2] + self.entityheadiconoffset[2];
return;
}
var_01 = anglestoup(self.angles);
var_02 = self.origin + var_01 * 28;
self.entityheadicon.x = var_02[0];
self.entityheadicon.y = var_02[1];
self.entityheadicon.z = var_02[2];
}