]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Show countdown waypoints for mega health and large armor when player is spectating
authorterencehill <piuntn@gmail.com>
Wed, 14 Dec 2011 23:12:48 +0000 (00:12 +0100)
committerterencehill <piuntn@gmail.com>
Thu, 15 Dec 2011 11:42:52 +0000 (12:42 +0100)
qcsrc/client/waypointsprites.qc
qcsrc/common/constants.qh
qcsrc/server/t_items.qc
qcsrc/server/waypointsprites.qc

index 6d9b0ee8bd7fee0f2112cf77686f6a25111dce6b..c8cac0df9fd62c21e37eedb50d7688d5f683cf5d 100644 (file)
@@ -212,6 +212,8 @@ float spritelookupblinkvalue(string s)
                case "ons-cp-atck-blue": return 2;
                case "ons-cp-dfnd-red":  return 0.5;
                case "ons-cp-dfnd-blue": return 0.5;
+               case "item_health_mega": return 2;
+               case "item_armor_large": return 2;
                case "item-invis":       return 2;
                case "item-extralife":   return 2;
                case "item-speed":       return 2;
@@ -308,6 +310,8 @@ string spritelookuptext(string s)
                case "dom-blue": return _("Control point");
                case "dom-yellow": return _("Control point");
                case "dom-pink": return _("Control point");
+               case "item_health_mega": return _("Mega Health");
+               case "item_armor_large": return _("Large Armor");
                case "item-invis": return _("Invisibility");
                case "item-extralife": return _("Extra life");
                case "item-speed": return _("Speed");
@@ -410,6 +414,7 @@ void Draw_WaypointSprite()
        // choose the sprite
        switch(self.rule)
        {
+               case SPRITERULE_SPECTATOR:
                case SPRITERULE_DEFAULT:
                        if(self.team)
                        {
index 21906dc4192710c6551847974ea0121565a8fcdc..c0637fbe14c18b461ad30ae1871886d31fde3059 100644 (file)
@@ -121,6 +121,7 @@ const float ENT_CLIENT_VEHICLE = 60;
 
 const float SPRITERULE_DEFAULT = 0;
 const float SPRITERULE_TEAMPLAY = 1;
+const float SPRITERULE_SPECTATOR = 2;
 
 const float RADARICON_NONE = 0;
 const float RADARICON_FLAG = 1;
index 49dcfc26788a96d6e9a5c0655cb24290dea71b80..75642653bb08597d14e1dc26f85e1101a19cf5e6 100644 (file)
@@ -314,6 +314,14 @@ void Item_RespawnCountdown (void)
                                {
                                        case IT_STRENGTH:   name = "item-strength"; rgb = '0 0 1'; break;
                                        case IT_INVINCIBLE: name = "item-shield"; rgb = '1 0 1'; break;
+                                       case IT_HEALTH:
+                                               if (self.classname == "item_health_mega")
+                                                       {name = "item_health_mega"; rgb = '1 0 0';}
+                                               break;
+                                       case IT_ARMOR:
+                                               if (self.classname == "item_armor_large")
+                                                       {name = "item_armor_large"; rgb = '0 1 0';}
+                                               break;
                                }
                        }
                        switch(self.items)
@@ -325,7 +333,11 @@ void Item_RespawnCountdown (void)
                        {
                                WaypointSprite_Spawn(name, 0, 0, self, '0 0 64', world, 0, self, waypointsprite_attached, TRUE, RADARICON_POWERUP, rgb);
                                if(self.waypointsprite_attached)
+                               {
+                                       if (self.items == IT_HEALTH || self.items == IT_ARMOR)
+                                               WaypointSprite_UpdateRule(self.waypointsprite_attached, 0, SPRITERULE_SPECTATOR);
                                        WaypointSprite_UpdateBuildFinished(self.waypointsprite_attached, time + ITEM_RESPAWN_TICKS);
+                               }
                        }
                }
                sound (self, CH_TRIGGER, "misc/itemrespawncountdown.wav", VOL_BASE, ATTN_NORM); // play respawn sound
@@ -339,7 +351,7 @@ void Item_RespawnCountdown (void)
 
 void Item_ScheduleRespawnIn(entity e, float t)
 {
-       if(e.flags & FL_POWERUP)
+       if(e.flags & FL_POWERUP || self.classname == "item_armor_large" || self.classname == "item_health_mega")
        {
                e.think = Item_RespawnCountdown;
                e.nextthink = time + max(0, t - ITEM_RESPAWN_TICKS);
index 0e6f2168b863b50c94a7c49dd20659a9315ed879..5f9108f76fa32c52be77271324faf0c52f1d939c 100644 (file)
@@ -193,7 +193,12 @@ float WaypointSprite_visible_for_player(entity e)
                        return FALSE;
 
        // team waypoints
-       if(self.team && self.rule == SPRITERULE_DEFAULT)
+       if(self.rule == SPRITERULE_SPECTATOR)
+       {
+               if(e.classname == "player")
+                       return FALSE;
+       }
+       else if(self.team && self.rule == SPRITERULE_DEFAULT)
        {
                if(self.team != e.team)
                        return FALSE;