/******************************************************************* * Decompiled By: Bog * Decompiled File: maps\mp\_entityheadicons.gsc * Game: Call of Duty: Modern Warfare 3 * Platform: PC * Function Count: 10 * Decompile Time: 176 ms * Timestamp: 10/27/2023 2:14:58 AM *******************************************************************/ //Function Number: 1 init() { if(isdefined(level.initedentityheadicons)) { return; } level.initedentityheadicons = 1; game["entity_headicon_allies"] = maps\mp\gametypes\_teams::init("allies"); game["entity_headicon_axis"] = maps\mp\gametypes\_teams::init("axis"); precacheshader(game["entity_headicon_allies"]); precacheshader(game["entity_headicon_axis"]); if(!level.teambased) { } } //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) { 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(!isplayer(param_00) && param_00 == "none") { foreach(var_0D, var_0C in self.entityheadicons) { if(isdefined(var_0C)) { var_0C destroy(); } self.entityheadicons[var_0D] = 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_0C = newclienthudelem(param_03); self.entityheadicons[param_02.guid] = var_0D; } else { if(isdefined(self.entityheadicons[param_03])) { self.entityheadicons[param_03] destroy(); self.entityheadicons[param_03] = undefined; } if(param_04 == "") { return; } foreach(var_0E in self.entityheadicons) { if(var_10 == "axis" || var_10 == "allies") { continue; } var_0F = maps\mp\_utility::getplayerforguid(var_10); if(var_0F.team == param_01) { self.entityheadicons[var_10] destroy(); self.entityheadicons[var_10] = undefined; } } var_0C = newteamhudelem(param_01); self.entityheadicons[param_01] = var_0C; } if(!isdefined(param_04) || !isdefined(param_05)) { param_04 = 10; param_05 = 10; } var_0C.archived = param_06; var_0C.x = self.origin[0] + param_03[0]; var_0C.y = self.origin[1] + param_03[1]; var_0C.z = self.origin[2] + param_03[2]; var_0C.alpha = 0.85; var_0C setshader(param_02,param_04,param_05); var_0C setwaypoint(param_08,param_09,param_0A,var_0B); var_0C thread keeppositioned(self,param_03,param_07); thread destroyiconsondeath(); if(isplayer(param_01)) { var_0C thread destroyonownerdisconnect(param_01); } if(isplayer(self)) { var_0C thread destroyonownerdisconnect(self); } return var_0C; } //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) { if(!level.teambased) { return; } if(!isdefined(self.entityheadiconteam)) { self.entityheadiconteam = "none"; self.entityheadicon = undefined; } var_02 = 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_03 = newteamhudelem(param_00); var_03.archived = 1; var_03.x = self.origin[0] + self.entityheadiconoffset[0]; var_03.y = self.origin[1] + self.entityheadiconoffset[1]; var_03.z = self.origin[2] + self.entityheadiconoffset[2]; var_03.alpha = 0.8; var_03 setshader(var_02,10,10); var_03 setwaypoint(0,0,0,1); self.entityheadicon = var_03; thread keepiconpositioned(); thread destroyheadiconsondeath(); } //Function Number: 7 setplayerheadicon(param_00,param_01) { if(level.teambased) { return; } 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_02 = param_00.team; self.entityheadiconteam = var_02; if(isdefined(param_01)) { self.entityheadiconoffset = param_01; } else { self.entityheadiconoffset = (0,0,0); } var_03 = game["entity_headicon_" + var_02]; var_04 = newclienthudelem(param_00); var_04.archived = 1; var_04.x = self.origin[0] + self.entityheadiconoffset[0]; var_04.y = self.origin[1] + self.entityheadiconoffset[1]; var_04.z = self.origin[2] + self.entityheadiconoffset[2]; var_04.alpha = 0.8; var_04 setshader(var_03,10,10); var_04 setwaypoint(0,0,0,1); self.entityheadicon = var_04; thread keepiconpositioned(); thread destroyheadiconsondeath(); } //Function Number: 8 keepiconpositioned() { self endon("kill_entity_headicon_thread"); self endon("death"); var_00 = self.origin; for(;;) { if(var_00 != self.origin) { updateheadiconorigin(); var_00 = 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() { 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]; }