// self.healthvalue
// self.armorvalue
// self.eaten
-// self.sameteam = player is on same team as local client
//
const float SHOWNAMES_FADESPEED = 4;
void Draw_ShowNames(entity ent)
if(ent.sv_entnum == player_localentnum && !cvar("chase_active"))
return;
- if(ent.eaten) // don't show names for prey
+ if(ent.predator) // don't show names for prey
return;
- if(ent.sameteam || (!ent.sameteam && cvar("hud_shownames_enemies")))
+ float sameteam;
+ if(teamplay && (GetPlayerColor(player_localentnum - 1) == GetPlayerColor(ent.sv_entnum - 1)))
+ sameteam = TRUE;
+
+ if(sameteam || (!sameteam && cvar("hud_shownames_enemies")))
{
ent.origin_z += cvar("hud_shownames_offset");
- if(!ent.sameteam)
+ // offset the name by player scale, decided by health
+ if(g_healthsize)
+ ent.origin_z -= (g_healthsize - ent.healthvalue) * cvar("hud_shownames_offset_healthsize");
+
+ if(!sameteam)
{
/* WIP, why does trace_ent != ent not work as intended here?
if(cvar("hud_shownames_enemies") != 2) // player has to point at enemy if so
}
}
- if(!ent.sameteam && trace_endpos != view_origin) // out of view, fade out
+ if(!sameteam && trace_endpos != view_origin) // out of view, fade out
ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * frametime);
else if(ent.healthvalue < 1) // dead player, fade out slowly
ent.alpha = max(0, ent.alpha - SHOWNAMES_FADESPEED * 0.25 * frametime);
drawfontscale = '1 1 0' * resize;
s = textShortenToWidth(s, namewidth, '1 1 0' * cvar("hud_shownames_fontsize"), stringwidth_colors);
- if(cvar("hud_shownames_status") && teamplay)
- if(ent.sameteam && ent.healthvalue > 0)
+ if(sameteam && ent.healthvalue > 0)
{
- if(ent.armorvalue)
- s = strcat(s, " (", ftos(ent.healthvalue), "|", ftos(ent.armorvalue), ")");
- else
- s = strcat(s, " (", ftos(ent.healthvalue), ")");
+ if(cvar("hud_shownames_status") > 2 && ent.armorvalue)
+ s = strcat(s, "^7 (^1+", ftos(ent.healthvalue), "^7|^2*", ftos(ent.armorvalue), "^7)");
+ else if(cvar("hud_shownames_status") > 1)
+ s = strcat(s, "^7 (^1+", ftos(ent.healthvalue), "^7)");
+
+ // if team healing is enabled, mark the team mate as possible to heal
+ if(cvar("hud_shownames_status") && ent.healthvalue < teamheal_max)
+ s = strcat(s, "^7 [^5HEAL^7]");
}
float width;
{
e.healthvalue = entcs.healthvalue;
e.armorvalue = entcs.armorvalue;
- e.sameteam = 1; /* (teamplay && (t == myteam)); */
- e.eaten = entcs.eaten;
+ e.predator = entcs.predator;
}
else
{
e.healthvalue = 2342;
e.armorvalue = 0;
- e.sameteam = 0;
- e.eaten = 0;
+ e.predator = 0;
}
e.origin = getplayerorigin(i);