From f9a9fe4ece644d988282187571066105e23d0914 Mon Sep 17 00:00:00 2001 From: terencehill Date: Thu, 15 Dec 2011 00:12:48 +0100 Subject: [PATCH] Show countdown waypoints for mega health and large armor when player is spectating --- qcsrc/client/waypointsprites.qc | 5 +++++ qcsrc/common/constants.qh | 1 + qcsrc/server/t_items.qc | 14 +++++++++++++- qcsrc/server/waypointsprites.qc | 7 ++++++- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/qcsrc/client/waypointsprites.qc b/qcsrc/client/waypointsprites.qc index 6d9b0ee8b..c8cac0df9 100644 --- a/qcsrc/client/waypointsprites.qc +++ b/qcsrc/client/waypointsprites.qc @@ -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) { diff --git a/qcsrc/common/constants.qh b/qcsrc/common/constants.qh index 21906dc41..c0637fbe1 100644 --- a/qcsrc/common/constants.qh +++ b/qcsrc/common/constants.qh @@ -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; diff --git a/qcsrc/server/t_items.qc b/qcsrc/server/t_items.qc index 49dcfc267..75642653b 100644 --- a/qcsrc/server/t_items.qc +++ b/qcsrc/server/t_items.qc @@ -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); diff --git a/qcsrc/server/waypointsprites.qc b/qcsrc/server/waypointsprites.qc index 0e6f2168b..5f9108f76 100644 --- a/qcsrc/server/waypointsprites.qc +++ b/qcsrc/server/waypointsprites.qc @@ -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; -- 2.39.2