changeset 94:4ec8611d9466

Fixed Enchanting. I was not getting the ItemID correctly, so enchants could not be mapped to the scrolls they were to created Changed snatch to only add each item once and to only add a snatch for items you don't have API: Added haveMaterials to the item and need to the reagents that get passed to queue destinations. This is in preparation for building a shopping list module.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Wed, 11 Aug 2010 23:48:23 -0700
parents 693f664aad2b
children 63823b6b5e28
files CHANGELOG.txt Modules/AuctionHouse.lua Modules/Crafting.lua Modules/Utils.lua
diffstat 4 files changed, 34 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGELOG.txt	Wed Aug 11 22:16:59 2010 -0700
+++ b/CHANGELOG.txt	Wed Aug 11 23:48:23 2010 -0700
@@ -4,6 +4,9 @@
 - Fixed a bug where postage was being counted more than once if you send mail and then open mail in the same session.
 - Added a warning when sending items with value to characters on other accounts.
 - Added '/ia snatch'. This new command works with your queue (/ia crafting) to replace your snatch list with the materials you need for crafting. NOTE: Auctioneer requires visiting the AH before you can modify the snatch list.
+- Fixed Enchanting. I was not getting the ItemID correctly, so enchants could not be mapped to the scrolls they were to created
+- Changed snatch to only add each item once and to only add a snatch for items you don't have
+- API: Added haveMaterials to the item and need to the reagents that get passed to queue destinations. This is in preparation for building a shopping list module.
 
 2010-08-10  Asa Ayers  <Asa.Ayers@Gmail.com>
 
--- a/Modules/AuctionHouse.lua	Wed Aug 11 22:16:59 2010 -0700
+++ b/Modules/AuctionHouse.lua	Wed Aug 11 23:48:23 2010 -0700
@@ -105,10 +105,16 @@
 	end
 	clearSnatch()
 
+	local snatchList = {}
 	local function Export(data)
-		for id, reagent in pairs(data.reagents) do
-			ItemAuditor:Print("Adding %s for %s", reagent.link, Utils.FormatMoney(reagent.price))
-			Snatch.AddSnatch(reagent.link, reagent.price)
+		if not data.haveMaterials then
+			for id, reagent in pairs(data.reagents) do
+				if reagent.need > 0 and not snatchList[reagent.link] then
+					snatchList[reagent.link] = true
+					ItemAuditor:Print("Adding %s for %s", reagent.link, Utils.FormatMoney(reagent.price))
+					Snatch.AddSnatch(reagent.link, reagent.price)
+				end
+			end
 		end
 	end
 	ItemAuditor:UpdateCraftingTable()
--- a/Modules/Crafting.lua	Wed Aug 11 22:16:59 2010 -0700
+++ b/Modules/Crafting.lua	Wed Aug 11 23:48:23 2010 -0700
@@ -389,6 +389,8 @@
 						name = reagentName,
 						count = reagentCount,
 						price = self:GetReagentCost(reagentLink, reagentCount),
+						need = 0, -- This will get populated after the decisions have been made. it can't
+						-- be done before that because highest profit items get priority on materials.
 					}
 					totalCost  = totalCost + self:GetReagentCost(reagentLink, reagentCount)
 				end
@@ -420,6 +422,23 @@
 		end
 	end
 	table.sort(realData, function(a, b) return a.profit*a.queue > b.profit*b.queue end)
+
+	local numOwned = {}
+	for key, data in pairs(realData) do
+		data.haveMaterials = true
+		for id, reagent in pairs(data.reagents) do
+			if not numOwned[reagent.link] then
+				numOwned[reagent.link] = ItemAuditor:GetItemCount(ItemAuditor:GetIDFromLink(reagent.link))
+			end
+			numOwned[reagent.link] = numOwned[reagent.link] - reagent.count
+
+			if numOwned[reagent.link] < 0 then
+				data.haveMaterials = false
+				reagent.need = min(reagent.count, abs(numOwned[reagent.link]))
+			end
+		end
+	end
+
 	if craftingTable then
 		craftingTable:SetFilter(tableFilter)
 		self:RefreshCraftingTable()
--- a/Modules/Utils.lua	Wed Aug 11 22:16:59 2010 -0700
+++ b/Modules/Utils.lua	Wed Aug 11 23:48:23 2010 -0700
@@ -76,6 +76,9 @@
 		if itemLink ~= nil then
 			local _, _, _, _, itemID = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
 			tmp_item_cache[item] = tonumber(itemID)
+		else
+			local _, _, _, _, itemID = string.find(item, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
+			tmp_item_cache[item] = tonumber(itemID)
 		end
 	end
 	
@@ -87,9 +90,7 @@
 				tmp_item_cache[item] = tonumber(itemID)
 			end
 		end
-		
 	end
-	
 	return tmp_item_cache[item]
 end