comparison Modules/QuickAuctions.lua @ 19:67f4151d535c

Expanded the queue system to calculate what the new QA threshold would be and to consider buying items from vendors. It also sets a threshold so that items with less than 5g profit will not be crafted. I will turn this into an option later.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Sun, 04 Jul 2010 07:24:12 -0700
parents c7b3585c73df
children ff9a698caebc
comparison
equal deleted inserted replaced
18:c7b3585c73df 19:67f4151d535c
33 _, link= GetItemInfo(link) 33 _, link= GetItemInfo(link)
34 34
35 self:UpdateQAGroup(QAAPI:GetItemGroup(link)) 35 self:UpdateQAGroup(QAAPI:GetItemGroup(link))
36 end 36 end
37 37
38 addon.profit_margin = 1.15
39 addon.minimum_profit = 50000
40
41 local function calculateQAThreshold(copper)
42 if copper == 0 then
43 copper = 1
44 end
45
46 -- add my minimum profit margin
47 copper = copper * addon.profit_margin
48
49 -- Adding the cost of mailing every item once.
50 copper = copper + 30
51
52 -- add AH Cut
53 local keep = 1 - addon:GetAHCut()
54 return copper/keep
55 end
56
38 function addon:UpdateQAGroup(groupName) 57 function addon:UpdateQAGroup(groupName)
39 if not addon.IsQAEnabled() then 58 if not addon.IsQAEnabled() then
40 return 59 return
41 end 60 end
42 if groupName then 61 if groupName then
46 local _, itemCost= ItemAuditor:GetItemCost(link, 0) 65 local _, itemCost= ItemAuditor:GetItemCost(link, 0)
47 66
48 threshold = max(threshold, itemCost) 67 threshold = max(threshold, itemCost)
49 end 68 end
50 69
51 if threshold == 0 then 70 threshold = calculateQAThreshold(threshold)
52 threshold = 1
53 end
54
55 -- add my minimum profit margin
56 threshold = threshold * 1.10
57
58 -- Adding the cost of mailing every item once.
59 threshold = threshold + 30
60
61 -- add AH Cut
62 local keep = 1 - addon:GetAHCut()
63 threshold = threshold/keep
64 71
65 QAAPI:SetGroupThreshold(groupName, ceil(threshold)) 72 QAAPI:SetGroupThreshold(groupName, ceil(threshold))
66 end 73 end
67 end 74 end
68 75
90 itemId = LSW.scrollData[itemId]["scrollID"] 97 itemId = LSW.scrollData[itemId]["scrollID"]
91 end 98 end
92 99
93 local skillName, skillType, numAvailable, isExpanded, altVerb = GetTradeSkillInfo(i) 100 local skillName, skillType, numAvailable, isExpanded, altVerb = GetTradeSkillInfo(i)
94 local recipeLink = GetTradeSkillRecipeLink(i) 101 local recipeLink = GetTradeSkillRecipeLink(i)
95 local stackSize = 0 102 local stackSize = 1
96 if recipeLink ~= nil then 103 if recipeLink ~= nil then
97 _, itemLink= GetItemInfo(itemId) 104 _, itemLink= GetItemInfo(itemId)
98 local QAGroup = QAAPI:GetItemGroup(itemLink) 105 local QAGroup = QAAPI:GetItemGroup(itemLink)
99 if QAGroup ~= nil then 106 if QAGroup ~= nil then
100 stackSize = QAAPI:GetGroupPostCap(QAGroup) * QAAPI:GetGroupPerAuction(QAGroup) 107 stackSize = QAAPI:GetGroupPostCap(QAGroup) * QAAPI:GetGroupPerAuction(QAGroup)
101 stackSize = stackSize / GetTradeSkillNumMade(i) 108 stackSize = stackSize / GetTradeSkillNumMade(i)
109
110 -- bonus
111 stackSize = ceil(stackSize *1.25)
102 end 112 end
103 113
104 local count = Altoholic:GetItemCount(itemId) 114 local count = Altoholic:GetItemCount(itemId)
105 115
106 if count < stackSize then 116 if count < stackSize and itemLink ~= nil then
107 local found, _, skillString = string.find(recipeLink, "^|%x+|H(.+)|h%[.+%]") 117 local found, _, skillString = string.find(recipeLink, "^|%x+|H(.+)|h%[.+%]")
108 local _, skillId = strsplit(":", skillString ) 118 local _, skillId = strsplit(":", skillString )
109 119
110 120 local toQueue = stackSize - count
111 local totalCost = 0 121 local newCost = 0
112 for reagentId = 1, GetTradeSkillNumReagents(i) do 122 for reagentId = 1, GetTradeSkillNumReagents(i) do
113 _, _, reagentCount = GetTradeSkillReagentInfo(i, reagentId); 123 _, _, reagentCount = GetTradeSkillReagentInfo(i, reagentId);
114 reagentLink = GetTradeSkillReagentItemLink(i, reagentId) 124 reagentLink = GetTradeSkillReagentItemLink(i, reagentId)
115 125 newCost = newCost + addon:GetReagentCost(reagentLink, reagentCount)
116 totalCost = totalCost + addon:GetReagentCost(reagentLink, reagentCount)
117 end 126 end
118 127
128 local currentInvested, _, currentCount = addon:GetItemCost(itemLink)
129 local newThreshold = (newCost + currentInvested) / (currentCount + toQueue)
130
131
132 newThreshold = calculateQAThreshold(newThreshold)
119 local currentPrice = GetAuctionBuyout(itemLink) or 0 133 local currentPrice = GetAuctionBuyout(itemLink) or 0
120 134
121 local toQueue = stackSize - count 135
122 -- bonus? 136 -- bonus?
123 137
124 if totalCost < currentPrice then 138 if newThreshold < currentPrice and (currentPrice - newThreshold) > addon.minimum_profit then
125 self:Debug(format("Adding %s x%s to skillet queue.", itemLink, toQueue)) 139 self:Debug(format("Adding %s x%s to skillet queue. Profit: %s",
140 itemLink,
141 toQueue,
142 addon:FormatMoney(currentPrice - newThreshold)
143 ))
126 self:AddToQueue(skillId,i, toQueue) 144 self:AddToQueue(skillId,i, toQueue)
127 else 145 else
128 self:Debug(format("Skipping %s. Would cost %s to craft and sell for %s", itemLink, addon:FormatMoney(totalCost), addon:FormatMoney(currentPrice))) 146 self:Debug(format("Skipping %s x%s. Would lose %s ", itemLink, toQueue, addon:FormatMoney(currentPrice - newThreshold)))
129 end 147 end
130 end 148 end
131 end 149 end
132 end 150 end
133 151
134 152
135 end 153 end
136 154
137 function addon:GetReagentCost(link, total) 155 function addon:GetReagentCost(link, total)
138 local totalCost = 0 156 local totalCost = 0
157
158 if Skillet:VendorSellsReagent(link) then
159 local _, _, _, _, _, _, _, _, _, _, itemVendorPrice = GetItemInfo (link);
160 totalCost = itemVendorPrice * total
161 total = 0
162 end
163
164
139 local investedTotal, investedPerItem, count = addon:GetItemCost(link) 165 local investedTotal, investedPerItem, count = addon:GetItemCost(link)
140 166
141 if count > 0 then 167 if count > 0 then
142 if total <= count then 168 if total <= count then
143 totalCost = investedPerItem * total 169 totalCost = investedPerItem * total