From 2c239d20d1a3f0d4cac19a08cb30a722ab049b41 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Thu, 11 Mar 2010 11:16:20 +0000 Subject: [PATCH] color item names in the log only color objects when known git-svn-id: http://svn.net-core.org/repos/t-engine4@401 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/engine/Entity.lua | 16 +++++++------ game/engine/interface/ActorInventory.lua | 18 +++++++-------- game/engine/utils.lua | 9 +++++++- game/modules/tome/class/Object.lua | 23 +++++++++++-------- game/modules/tome/class/Player.lua | 4 ++-- game/modules/tome/data/general/npcs/ghoul.lua | 4 ++-- 6 files changed, 43 insertions(+), 31 deletions(-) diff --git a/game/engine/Entity.lua b/game/engine/Entity.lua index fa9fabe553..607736f5a1 100644 --- a/game/engine/Entity.lua +++ b/game/engine/Entity.lua @@ -117,14 +117,16 @@ function _M:resolve(t, last) end -- Finish resolving stuff - if t == self and last then - -- Handle ided if possible - if self.resolveIdentify then self:resolveIdentify() end + if t == self then + if last then + if self.resolveLevel then self:resolveLevel() end - if self.resolveLevel then self:resolveLevel() end - - if self.unique and type(self.unique) == "boolean" then - self.unique = self.name + if self.unique and type(self.unique) == "boolean" then + self.unique = self.name + end + else + -- Handle ided if possible + if self.resolveIdentify then self:resolveIdentify() end end end end diff --git a/game/engine/interface/ActorInventory.lua b/game/engine/interface/ActorInventory.lua index 656c37f82e..53cc8d83ba 100644 --- a/game/engine/interface/ActorInventory.lua +++ b/game/engine/interface/ActorInventory.lua @@ -95,9 +95,9 @@ function _M:pickupFloor(i, vocal) game.level.map:removeObject(self.x, self.y, i) o:check("on_pickup", self) - if vocal then game.logSeen(self, "%s picks up: %s.", self.name:capitalize(), o:getName()) end + if vocal then game.logSeen(self, "%s picks up: %s.", self.name:capitalize(), o:getName{do_color=true}) end elseif not prepickup then - if vocal then game.logSeen(self, "%s has no room for: %s.", self.name:capitalize(), o:getName()) end + if vocal then game.logSeen(self, "%s has no room for: %s.", self.name:capitalize(), o:getName{do_color=true}) end end else if vocal then game.logSeen(self, "There is nothing to pickup there.") end @@ -146,7 +146,7 @@ function _M:dropFloor(inven, item, vocal, all) end if o:check("on_drop", self) then return end game.level.map:addObject(self.x, self.y, o) - if vocal then game.logSeen(self, "%s drops on the floor: %s.", self.name:capitalize(), o:getName()) end + if vocal then game.logSeen(self, "%s drops on the floor: %s.", self.name:capitalize(), o:getName{do_color=true}) end end --- Show inventory dialog @@ -223,26 +223,26 @@ end function _M:wearObject(o, replace, vocal) local inven = o:wornInven() if not inven then - if vocal then game.logSeen(self, "%s is not wearable.", o:getName()) end + if vocal then game.logSeen(self, "%s is not wearable.", o:getName{do_color=true}) end return false end local ok, err = self:canWearObject(o) if not ok then - if vocal then game.logSeen(self, "%s can not wear: %s (%s).", self.name:capitalize(), o:getName(), err) end + if vocal then game.logSeen(self, "%s can not wear: %s (%s).", self.name:capitalize(), o:getName{do_color=true}, err) end return false end if self:addObject(inven, o) then - if vocal then game.logSeen(self, "%s wears: %s.", self.name:capitalize(), o:getName()) end + if vocal then game.logSeen(self, "%s wears: %s.", self.name:capitalize(), o:getName{do_color=true}) end return true elseif o.offslot and self:getInven(o.offslot) and #(self:getInven(o.offslot)) < self:getInven(o.offslot).max then - if vocal then game.logSeen(self, "%s wears: %s.", self.name:capitalize(), o:getName()) end + if vocal then game.logSeen(self, "%s wears: %s.", self.name:capitalize(), o:getName{do_color=true}) end -- Warning: assume there is now space self:addObject(self:getInven(o.offslot), o) elseif replace then local ro = self:removeObject(inven, 1, true) - if vocal then game.logSeen(self, "%s wears: %s.", self.name:capitalize(), o:getName()) end + if vocal then game.logSeen(self, "%s wears: %s.", self.name:capitalize(), o:getName{do_color=true}) end -- Can we stack the old and new one ? if o:stack(ro) then ro = true end @@ -251,7 +251,7 @@ function _M:wearObject(o, replace, vocal) self:addObject(inven, o) return ro else - if vocal then game.logSeen(self, "%s can not wear: %s.", self.name:capitalize(), o:getName()) end + if vocal then game.logSeen(self, "%s can not wear: %s.", self.name:capitalize(), o:getName{do_color=true}) end return false end end diff --git a/game/engine/utils.lua b/game/engine/utils.lua index 496b92f342..20826af991 100644 --- a/game/engine/utils.lua +++ b/game/engine/utils.lua @@ -190,13 +190,20 @@ getmetatable(tmps).__index.drawColorString = function(s, font, str, x, y, r, g, r = r or 255 g = g or 255 b = b or 255 + local oldr, oldg, oldb = r, g, b for i, v in ipairs(list) do local _, _, nr, ng, nb = v:find("^#(%x%x)(%x%x)(%x%x)#") local _, _, col = v:find("^#([A-Z_]+)#") if nr and ng and nb then + oldr, oldg, oldb = r, g, b r, g, b = nr:parseHex(), ng:parseHex(), nb:parseHex() elseif col then - r, g, b = colors[col].r, colors[col].g, colors[col].b + if col == "LAST" then + r, g, b = oldr, oldg, oldb + else + oldr, oldg, oldb = r, g, b + r, g, b = colors[col].r, colors[col].g, colors[col].b + end else local w, h = font:size(v) s:drawString(font, v, x, y, r, g, b) diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua index 43ad9bd842..51dce4c06d 100644 --- a/game/modules/tome/class/Object.lua +++ b/game/modules/tome/class/Object.lua @@ -78,9 +78,10 @@ end --- Gets the color in which to display the object in lists function _M:getDisplayColor() - if self.egoed then return {0, 255, 128} - elseif self.unique then return {255, 255, 0} - else return {255, 255, 255} + if not self:isIdentified() then return {255, 255, 255}, "#FFFFFF#" end + if self.egoed then return {0, 255, 128}, "#00FF80#" + elseif self.unique then return {255, 255, 0}, "#FFFF00#" + else return {255, 255, 255}, "#FFFFFF#" end end @@ -103,19 +104,21 @@ function _M:getName(t) end) end - if qty == 1 or t.no_count then - return name + if not t.do_color then + if qty == 1 or t.no_count then return name + else return qty.." "..name + end else - return qty.." "..name + local _, c = self:getDisplayColor() + if qty == 1 or t.no_count then return c..name.."#LAST#" + else return c..qty.." "..name.."#LAST#" + end end end --- Gets the full desc of the object function _M:getDesc() - local c = "" - if self.egoed then c = "#00FF80#" - elseif self.unique then c = "#FFFF00#" - end + local _, c = self:getDisplayColor() local desc = { c..self:getName().."#FFFFFF#", self.desc } local reqs = self:getRequirementDesc(game.player) diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua index a67572a2a8..2edcba7093 100644 --- a/game/modules/tome/class/Player.lua +++ b/game/modules/tome/class/Player.lua @@ -70,7 +70,7 @@ function _M:move(x, y, force) if obj and game.level.map:getObject(self.x, self.y, 2) then game.logSeen(self, "There is more than one objects lying here.") elseif obj then - game.logSeen(self, "There is an item here: "..obj:getName()) + game.logSeen(self, "There is an item here: %s", obj:getName{do_color=true}) end end @@ -275,7 +275,7 @@ function _M:playerUseItem(object, item) o.multicharge = o.multicharge - 1 else self:removeObject(self:getInven(self.INVEN_INVEN), item) - game.log("You have no more "..o:getName{no_count=true}) + game.log("You have no more %s", o:getName{no_count=true, do_color=true}) self:sortInven() end end diff --git a/game/modules/tome/data/general/npcs/ghoul.lua b/game/modules/tome/data/general/npcs/ghoul.lua index b6de65d2f2..42966fc6a6 100644 --- a/game/modules/tome/data/general/npcs/ghoul.lua +++ b/game/modules/tome/data/general/npcs/ghoul.lua @@ -10,11 +10,11 @@ newEntity{ body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, drops = resolvers.drops{chance=70, nb=1, {type="money"}, {} }, autolevel = "ghoul", - ai = "dumb_talented_simple", ai_state = { talent_in=4, }, + ai = "dumb_talented_simple", ai_state = { talent_in=2, }, energy = { mod=1 }, stats = { str=14, dex=12, mag=10, con=12 }, - tmasteries = resolvers.tmasteries{ ["technique/other"]=0.3, }, + tmasteries = resolvers.tmasteries{ ["technique/other"]=1, }, blind_immune = 1, see_invisible = 2, -- GitLab