mischivin@20
|
1 --PM_HERBSUBCLASS = select(6, GetAuctionItemSubClasses(6))
|
mischivin@20
|
2 --PM_ORESUBCLASS = select(4, GetAuctionItemSubClasses(6))
|
mischivin@20
|
3
|
mischivin@20
|
4 --Hardcoded until I find a better solution now that GetAuctionItemSubClass() has changed
|
mischivin@20
|
5 PM_HERBSUBCLASS = "Herb"
|
mischivin@20
|
6 PM_ORESUBCLASS = "Metal & Stone"
|
Vynn@0
|
7
|
Vynn@0
|
8 function PM_FormatPrice(value)
|
Vynn@0
|
9
|
Vynn@0
|
10 local GSC_GOLD="ffffd100"
|
Vynn@0
|
11 local GSC_SILVER="ffe6e6e6"
|
Vynn@0
|
12 local GSC_COPPER="ffc8602c"
|
Vynn@0
|
13
|
Vynn@0
|
14 local g, s, c
|
Vynn@0
|
15 local digits = 0
|
Vynn@0
|
16 local gsc
|
Vynn@0
|
17
|
Vynn@0
|
18 g = math.floor(value/10000)
|
Vynn@0
|
19 s = math.fmod(math.floor(value/100),100)
|
Vynn@0
|
20 c = math.fmod(value,100)
|
Vynn@0
|
21
|
Vynn@0
|
22
|
Vynn@0
|
23 digits = math.floor(math.log10(value)+1)
|
Vynn@0
|
24
|
Vynn@0
|
25 if ( digits < 3 ) then
|
Vynn@0
|
26 gsc = string.format(" |c%s%2d|r", GSC_COPPER, c)
|
Vynn@0
|
27 elseif ( digits < 5 ) then
|
Vynn@0
|
28 gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_SILVER, s, GSC_COPPER, c)
|
Vynn@0
|
29 elseif ( digits < 7 ) then
|
Vynn@0
|
30 gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_GOLD, g, GSC_SILVER, s)
|
Vynn@0
|
31 elseif ( digits < 9 ) then
|
Vynn@0
|
32 gsc = string.format("|c%s%5d|r", GSC_GOLD, g)
|
Vynn@0
|
33 else
|
Vynn@0
|
34 gsc = string.format("|c%s%2.1fk|r", GSC_GOLD, g/1000)
|
Vynn@0
|
35 end
|
Vynn@0
|
36
|
Vynn@0
|
37 return gsc
|
Vynn@0
|
38 end
|
Vynn@0
|
39
|
Vynn@0
|
40 function PM_GetReturn(containerID)
|
Vynn@0
|
41 local averageReturn = 0
|
Vynn@0
|
42 if PM_ResultsTable[containerID].timesProspected > 0 then
|
Vynn@0
|
43 for itemID, num in pairs(PM_ResultsTable[containerID]) do
|
Vynn@0
|
44 if itemID ~= "timesProspected" then
|
Vynn@0
|
45 averageReturn = averageReturn + PM_ItemTable[itemID].price * num
|
Vynn@0
|
46 end
|
Vynn@0
|
47 end
|
Vynn@0
|
48 averageReturn = averageReturn/PM_ResultsTable[containerID].timesProspected
|
Vynn@0
|
49 end
|
Vynn@0
|
50 return tonumber(string.format("%.0f", averageReturn))
|
Vynn@0
|
51 end
|
Vynn@0
|
52
|
Vynn@0
|
53 local cleared = true
|
Vynn@0
|
54 local function OnTooltipCleared(self)
|
Vynn@0
|
55 cleared = true
|
Vynn@0
|
56 end
|
Vynn@0
|
57
|
Vynn@0
|
58 local function OnTooltipSetItem(self)
|
Vynn@0
|
59 if cleared then
|
Vynn@0
|
60 local name, tooltipLink = self:GetItem()
|
Vynn@0
|
61 if tooltipLink then
|
Vynn@0
|
62 local item = tooltipLink:match("Hitem:(%d+)")
|
Vynn@0
|
63 if PM_ResultsTable[item] then
|
mischivin@13
|
64 local lifetimeReturn = PM_GetReturn(item)
|
Vynn@0
|
65 --NumofEachQuality, Percent of Each Quality
|
Vynn@0
|
66 self:AddLine(" ")
|
Vynn@0
|
67 self:AddLine("Prospect Me",0.5,1,0.5)
|
mischivin@20
|
68 -- Subclass Detection is broken in Legion - may need to hard-code this or find another way of getting locatlizes subclass names.
|
Vynn@0
|
69 if PM_ItemTable[item].subclass == PM_ORESUBCLASS then
|
Vynn@0
|
70 self:AddLine("Times Prospected: " .. PM_ResultsTable[item].timesProspected)
|
Vynn@0
|
71 self:AddDoubleLine("Cost to Prospect: " .. PM_FormatPrice(5 * PM_ItemTable[item].price), " Average Return: " .. PM_FormatPrice(PM_GetReturn(item)))
|
Vynn@0
|
72 elseif PM_ItemTable[item].subclass == PM_HERBSUBCLASS then
|
Vynn@0
|
73 self:AddLine("Times Milled: " .. PM_ResultsTable[item].timesProspected)
|
Vynn@0
|
74 self:AddDoubleLine("Cost to Mill: " .. PM_FormatPrice(5 * PM_ItemTable[item].price), " Average Return: " .. PM_FormatPrice(PM_GetReturn(item)))
|
Vynn@0
|
75
|
Vynn@0
|
76 end
|
mischivin@13
|
77 if lifetimeReturn-(5 * PM_ItemTable[item].price) > 0 then
|
mischivin@13
|
78 self:AddLine("Estimated Profit: " .. PM_FormatPrice(lifetimeReturn-(5 * PM_ItemTable[item].price)))
|
Vynn@0
|
79 self:AddLine(" ")
|
Vynn@0
|
80 else
|
Vynn@0
|
81 self:AddLine("No profit to be made",1,0,0)
|
Vynn@0
|
82 self:AddLine(" ")
|
Vynn@0
|
83 end
|
Vynn@0
|
84 if PM_Config.results then
|
Vynn@0
|
85 local t
|
Vynn@0
|
86 if IsAltKeyDown() == PM_Config.session then
|
Vynn@0
|
87 t = PM_ResultsTable
|
Vynn@0
|
88 self:AddDoubleLine("Lifetime Results","Hold/Release Alt to toggle",0.5,0.5,1,0.5,0.5,0.5)
|
Vynn@0
|
89 else
|
Vynn@0
|
90 t = PM_SessionTable
|
Vynn@0
|
91 self:AddDoubleLine("Session Results","Hold/Release Alt to toggle",0.5,0.5,1,0.5,0.5,0.5)
|
Vynn@0
|
92 end
|
Vynn@0
|
93 if t[item] then
|
Vynn@0
|
94 for q = 7, 0, -1 do
|
Vynn@0
|
95 for result, num in pairs(t[item]) do
|
Vynn@0
|
96 if result ~= "timesProspected" and PM_ItemTable[result].quality == q and PM_Config.qualities[q] then
|
Vynn@0
|
97 local p, n = "", ""
|
Vynn@0
|
98 if PM_Config.percent then
|
Vynn@0
|
99 p = num/t[item].timesProspected*100
|
Vynn@0
|
100 if p < 10 then
|
Vynn@0
|
101 p = string.format("[%.1f%%]", p)
|
Vynn@0
|
102 else
|
Vynn@0
|
103 p = string.format("[%.0f%%]", p)
|
Vynn@0
|
104 end
|
Vynn@0
|
105 else
|
Vynn@0
|
106 p = ""
|
Vynn@0
|
107 end
|
Vynn@0
|
108 if PM_Config.number then
|
Vynn@0
|
109 n = "[" .. num .. "]"
|
Vynn@0
|
110 else
|
Vynn@0
|
111 n = ""
|
Vynn@0
|
112 end
|
Vynn@0
|
113 self:AddDoubleLine(p .. PM_ItemTable[result].link .. n, PM_FormatPrice(PM_ItemTable[result].price))
|
Vynn@0
|
114 end
|
Vynn@0
|
115 end
|
Vynn@0
|
116 end
|
Vynn@0
|
117 end
|
Vynn@0
|
118 self:AddLine(" ")
|
Vynn@0
|
119 end
|
Vynn@0
|
120 end
|
Vynn@0
|
121 cleared = true
|
Vynn@0
|
122 end
|
Vynn@0
|
123 end
|
Vynn@0
|
124 end
|
Vynn@0
|
125
|
Vynn@0
|
126 GameTooltip:HookScript("OnTooltipCleared", OnTooltipCleared)
|
Vynn@0
|
127 GameTooltip:HookScript("OnTooltipSetItem", OnTooltipSetItem) |