From 550ce2769f661447f7a33197226baa69239fa609 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Sun, 13 Mar 2011 11:37:08 +0000 Subject: [PATCH] Dropping (destroying) and item from the inventory will correctly update inventory git-svn-id: http://svn.net-core.org/repos/t-engine4@3010 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/modules/tome/class/Player.lua | 4 +++- game/modules/tome/dialogs/UseItemDialog.lua | 17 +++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua index ecaf6facc9..09fa5b3273 100644 --- a/game/modules/tome/class/Player.lua +++ b/game/modules/tome/class/Player.lua @@ -633,7 +633,7 @@ function _M:showEquipInven(title, filter, action) end) end -function _M:doDrop(inven, item) +function _M:doDrop(inven, item, on_done) if game.zone.wilderness then Dialog:yesnoLongPopup("Warning", "You cannot drop items on the world map.\nIf you drop it, it will be lost forever.", 300, function(ret) -- The test is reversed because the buttons are reversed, to prevent mistakes @@ -642,6 +642,7 @@ function _M:doDrop(inven, item) game.logPlayer(self, "You destroy %s.", o:getName{do_colour=true, do_count=true}) self:sortInven() self:useEnergy() + if on_done then on_done() end end end, "Cancel", "Destroy") return @@ -650,6 +651,7 @@ function _M:doDrop(inven, item) self:sortInven(inven) self:useEnergy() self.changed = true + if on_done then on_done() end end function _M:doWear(inven, item, o) diff --git a/game/modules/tome/dialogs/UseItemDialog.lua b/game/modules/tome/dialogs/UseItemDialog.lua index c35a558587..70aeda86c1 100644 --- a/game/modules/tome/dialogs/UseItemDialog.lua +++ b/game/modules/tome/dialogs/UseItemDialog.lua @@ -60,13 +60,18 @@ function _M:use(item) local act = item.action local stop = false - if act == "use" then self.actor:playerUseItem(self.object, self.item, self.inven, self.onuse) stop = true - elseif act == "drop" then self.actor:doDrop(self.inven, self.item) - elseif act == "wear" then self.actor:doWear(self.inven, self.item, self.object) - elseif act == "takeoff" then self.actor:doTakeoff(self.inven, self.item, self.object) + if act == "use" then + self.actor:playerUseItem(self.object, self.item, self.inven, self.onuse) stop = true + self.onuse(self.inven, self.item, self.object, stop) + elseif act == "drop" then + self.actor:doDrop(self.inven, self.item, function() self.onuse(self.inven, self.item, self.object, stop) end) + elseif act == "wear" then + self.actor:doWear(self.inven, self.item, self.object) + self.onuse(self.inven, self.item, self.object, stop) + elseif act == "takeoff" then + self.actor:doTakeoff(self.inven, self.item, self.object) + self.onuse(self.inven, self.item, self.object, stop) end - - self.onuse(self.inven, self.item, self.object, stop) end function _M:generateList() -- GitLab