Mercurial > wow > itemauditor
comparison Modules/QuickAuctions.lua @ 68:2d65db19d3ce
Fixed a bug with the crafting threshold options. Updated /ia queue so that it is a shortcut to using /ia crafting and then clicking export.
| author | Asa Ayers <Asa.Ayers@Gmail.com> |
|---|---|
| date | Wed, 28 Jul 2010 11:37:43 -0700 |
| parents | b6c30a5156f9 |
| children | 3930518cb8d9 |
comparison
equal
deleted
inserted
replaced
| 67:b6c30a5156f9 | 68:2d65db19d3ce |
|---|---|
| 1 local ItemAuditor = select(2, ...) | 1 local ItemAuditor = select(2, ...) |
| 2 local QuickAuctions= ItemAuditor:NewModule("QuickAuctions") | 2 local QuickAuctions= ItemAuditor:NewModule("QuickAuctions") |
| 3 local Crafting = ItemAuditor:GetModule("Crafting") | 3 local Crafting = ItemAuditor:GetModule("Crafting") |
| 4 local Utils = ItemAuditor:GetModule("Utils") | |
| 4 | 5 |
| 5 --[[ | 6 --[[ |
| 6 This is simply for compatibility while I change the QA API. Once | 7 This is simply for compatibility while I change the QA API. Once |
| 7 my changes get merged into the main project, this can go away. | 8 my changes get merged into the main project, this can go away. |
| 8 ]] | 9 ]] |
| 114 end | 115 end |
| 115 return 0 | 116 return 0 |
| 116 end | 117 end |
| 117 Crafting.RegisterCraftingDecider('IA QuickAuctions', isProfitable) | 118 Crafting.RegisterCraftingDecider('IA QuickAuctions', isProfitable) |
| 118 | 119 |
| 119 --[[ | 120 |
| 120 This is based on KTQ | |
| 121 ]] | |
| 122 function ItemAuditor:Queue() | 121 function ItemAuditor:Queue() |
| 123 if LSW == nil then | 122 local function Export(data) |
| 124 self:Print("This feature requires LilSparky's Workshop.") | 123 ItemAuditor:Print(format("Adding %s x%s to skillet queue. Profit: %s", |
| 125 return | 124 data.link, |
| 126 end | 125 data.queue, |
| 127 if Skillet == nil then | 126 Utils.FormatMoney(data.profit) |
| 128 self:Print("This feature requires Skillet.") | |
| 129 return | |
| 130 end | |
| 131 if GetAuctionBuyout ~= nil then | |
| 132 elseif AucAdvanced and AucAdvanced.Version then | |
| 133 else | |
| 134 self:Print("This feature requires Auctionator, Auctioneer, AuctionLite, or AuctionMaster.") | |
| 135 return | |
| 136 end | |
| 137 | |
| 138 | |
| 139 if ItemAuditor.IsQAEnabled() then | |
| 140 self:Debug("Auction Threshold: %d%%", self:GetAuctionThreshold()*100 ) | |
| 141 end | |
| 142 self:Debug(format("Crafting Threshold: %s", self:FormatMoney(self:GetCraftingThreshold()))) | |
| 143 local profitableItems = {} | |
| 144 local profitableIndex = 1 | |
| 145 local numChecked = 0 | |
| 146 | |
| 147 for i = 1, GetNumTradeSkills() do | |
| 148 local itemLink = GetTradeSkillItemLink(i) | |
| 149 local itemId = Skillet:GetItemIDFromLink(itemLink) | |
| 150 | |
| 151 --Figure out if its an enchant or not | |
| 152 _, _, _, _, altVerb = GetTradeSkillInfo(i) | |
| 153 if LSW.scrollData[itemId] ~= nil and altVerb == 'Enchant' then | |
| 154 -- Ask LSW for the correct scroll | |
| 155 itemId = LSW.scrollData[itemId]["scrollID"] | |
| 156 end | |
| 157 | |
| 158 local skillName, skillType, numAvailable, isExpanded, altVerb = GetTradeSkillInfo(i) | |
| 159 local recipeLink = GetTradeSkillRecipeLink(i) | |
| 160 local stackSize = 1 | |
| 161 if recipeLink ~= nil then | |
| 162 _, itemLink= GetItemInfo(itemId) | |
| 163 | |
| 164 | |
| 165 -- if QA isn't enabled, this will just return nil | |
| 166 local QAGroup = nil | |
| 167 if ItemAuditor.IsQAEnabled() then | |
| 168 QAGroup = QAAPI:GetItemGroup(itemLink) | |
| 169 if QAGroup ~= nil then | |
| 170 local threshold, postCap, perAuction = QAAPI:GetGroupConfig(QAGroup) | |
| 171 stackSize = postCap * perAuction | |
| 172 stackSize = stackSize / GetTradeSkillNumMade(i) | |
| 173 | |
| 174 -- bonus | |
| 175 stackSize = ceil(stackSize *1.25) | |
| 176 end | |
| 177 end | |
| 178 | |
| 179 local count = Altoholic:GetItemCount(itemId) | |
| 180 | |
| 181 if count < stackSize and itemLink ~= nil then | |
| 182 local found, _, skillString = string.find(recipeLink, "^|%x+|H(.+)|h%[.+%]") | |
| 183 local _, skillId = strsplit(":", skillString ) | |
| 184 | |
| 185 local toQueue = stackSize - count | |
| 186 local newCost = 0 | |
| 187 for reagentId = 1, GetTradeSkillNumReagents(i) do | |
| 188 _, _, reagentCount = GetTradeSkillReagentInfo(i, reagentId); | |
| 189 reagentLink = GetTradeSkillReagentItemLink(i, reagentId) | |
| 190 newCost = newCost + ItemAuditor:GetReagentCost(reagentLink, reagentCount) | |
| 191 end | |
| 192 | |
| 193 local currentInvested, _, currentCount = ItemAuditor:GetItemCost(itemLink) | |
| 194 local newThreshold = (newCost + currentInvested) / (currentCount + toQueue) | |
| 195 | |
| 196 if ItemAuditor.IsQAEnabled() then | |
| 197 newThreshold = calculateQAThreshold(newThreshold) | |
| 198 else | |
| 199 -- if quick auctions isn't enabled, this will cause the decision to rely | |
| 200 -- completly on the crafting threshold | |
| 201 newThreshold = 0 | |
| 202 end | |
| 203 local currentPrice = ItemAuditor:GetAuctionPrice(itemLink) or 0 | |
| 204 numChecked = numChecked + 1 | |
| 205 | |
| 206 if newThreshold < currentPrice and (currentPrice - newCost) > self:GetCraftingThreshold() then | |
| 207 | |
| 208 profitableItems[profitableIndex] = { | |
| 209 itemLink = itemLink, | |
| 210 SkillID = skillId, | |
| 211 Index = i, | |
| 212 toQueue = toQueue, | |
| 213 profit = (currentPrice - newCost) * toQueue | |
| 214 } | |
| 215 profitableIndex = profitableIndex + 1 | |
| 216 else | |
| 217 local skipMessage = format("Skipping %s x%s. Profit: %s ", itemLink, toQueue, ItemAuditor:FormatMoney(currentPrice - newCost)) | |
| 218 if ItemAuditor.db.profile.messages.queue_skip then | |
| 219 self:Print(skipMessage) | |
| 220 else | |
| 221 self:Debug(format("Skipping %s x%s. Profit: %s ", itemLink, toQueue, ItemAuditor:FormatMoney(currentPrice - newCost))) | |
| 222 end | |
| 223 end | |
| 224 end | |
| 225 end | |
| 226 end | |
| 227 local numAdded = 0 | |
| 228 table.sort(profitableItems, function(a, b) return a.profit > b.profit end) | |
| 229 for key, data in pairs(profitableItems) do | |
| 230 self:Print(format("Adding %s x%s to skillet queue. Profit: %s", | |
| 231 data.itemLink, | |
| 232 data.toQueue, | |
| 233 self:FormatMoney(data.profit) | |
| 234 )) | 127 )) |
| 235 self:AddToQueue(data.SkillID, data.Index, data.toQueue) | 128 Crafting.ExportToSkillet(data) |
| 236 numAdded = numAdded +1 | 129 end |
| 237 end | 130 ItemAuditor:UpdateCraftingTable() |
| 238 self:Print(format("%d items checked", numChecked)) | 131 Crafting.Export(Export) |
| 239 self:Print(format("%d queued", numAdded)) | |
| 240 end | 132 end |
| 241 | 133 |
| 242 function ItemAuditor:GetReagentCost(link, total) | 134 function ItemAuditor:GetReagentCost(link, total) |
| 243 local totalCost = 0 | 135 local totalCost = 0 |
| 244 | 136 |
