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