]> de.git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/client/shownames.qc
Only show the health and armor of team mates, not enemies. Sadly, the health of all...
[voretournament/voretournament.git] / data / qcsrc / client / shownames.qc
index 7dac25a5254eca2a6fbc741d023fe17b7a724c39..fe8f768423e350e741fbf4d12cc63443cfe24694 100644 (file)
@@ -3,7 +3,6 @@
 // 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)
@@ -17,7 +16,11 @@ void Draw_ShowNames(entity ent)
        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");
 
@@ -25,7 +28,7 @@ void Draw_ShowNames(entity ent)
                if(g_healthsize)
                        ent.origin_z -= (g_healthsize - ent.healthvalue) * cvar("hud_shownames_offset_healthsize");
 
-               if(!ent.sameteam)
+               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
@@ -64,7 +67,7 @@ void Draw_ShowNames(entity ent)
                        }
                }
 
-               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);
@@ -127,13 +130,17 @@ void Draw_ShowNames(entity ent)
                        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(cvar("hud_shownames_status"))
+                       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 team healing is enabled, mark the team mate as possible to heal
+                               if(ent.healthvalue < teamheal_max)
+                                       s = strcat(s, " [HEAL]");
                        }
 
                        float width;
@@ -174,14 +181,12 @@ void Draw_ShowNames_All()
                {
                        e.healthvalue = entcs.healthvalue;
                        e.armorvalue = entcs.armorvalue;
-                       e.sameteam = 1; /* (teamplay && (t == myteam)); */
                        e.predator = entcs.predator;
                }
                else
                {
                        e.healthvalue = 2342;
                        e.armorvalue = 0;
-                       e.sameteam = 0;
                        e.predator = 0;
                }