Mercurial > wow > prospect-me
view ProspectMe_Tooltip.lua @ 20:4a10e5d1618c
Hardcoded the subclass detection in Legion - will work 100% in english clients, not so sure about non-english clients, so please report back if it breaks for you!
author | Geoff Brock <mischivin@gmail.com> |
---|---|
date | Sun, 04 Sep 2016 21:51:07 -0400 |
parents | e6eec48ecf14 |
children | 5cbaaee1e7db |
line wrap: on
line source
--PM_HERBSUBCLASS = select(6, GetAuctionItemSubClasses(6)) --PM_ORESUBCLASS = select(4, GetAuctionItemSubClasses(6)) --Hardcoded until I find a better solution now that GetAuctionItemSubClass() has changed PM_HERBSUBCLASS = "Herb" PM_ORESUBCLASS = "Metal & Stone" function PM_FormatPrice(value) local GSC_GOLD="ffffd100" local GSC_SILVER="ffe6e6e6" local GSC_COPPER="ffc8602c" local g, s, c local digits = 0 local gsc g = math.floor(value/10000) s = math.fmod(math.floor(value/100),100) c = math.fmod(value,100) digits = math.floor(math.log10(value)+1) if ( digits < 3 ) then gsc = string.format(" |c%s%2d|r", GSC_COPPER, c) elseif ( digits < 5 ) then gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_SILVER, s, GSC_COPPER, c) elseif ( digits < 7 ) then gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_GOLD, g, GSC_SILVER, s) elseif ( digits < 9 ) then gsc = string.format("|c%s%5d|r", GSC_GOLD, g) else gsc = string.format("|c%s%2.1fk|r", GSC_GOLD, g/1000) end return gsc end function PM_GetReturn(containerID) local averageReturn = 0 if PM_ResultsTable[containerID].timesProspected > 0 then for itemID, num in pairs(PM_ResultsTable[containerID]) do if itemID ~= "timesProspected" then averageReturn = averageReturn + PM_ItemTable[itemID].price * num end end averageReturn = averageReturn/PM_ResultsTable[containerID].timesProspected end return tonumber(string.format("%.0f", averageReturn)) end local cleared = true local function OnTooltipCleared(self) cleared = true end local function OnTooltipSetItem(self) if cleared then local name, tooltipLink = self:GetItem() if tooltipLink then local item = tooltipLink:match("Hitem:(%d+)") if PM_ResultsTable[item] then local lifetimeReturn = PM_GetReturn(item) --NumofEachQuality, Percent of Each Quality self:AddLine(" ") self:AddLine("Prospect Me",0.5,1,0.5) -- Subclass Detection is broken in Legion - may need to hard-code this or find another way of getting locatlizes subclass names. if PM_ItemTable[item].subclass == PM_ORESUBCLASS then self:AddLine("Times Prospected: " .. PM_ResultsTable[item].timesProspected) self:AddDoubleLine("Cost to Prospect: " .. PM_FormatPrice(5 * PM_ItemTable[item].price), " Average Return: " .. PM_FormatPrice(PM_GetReturn(item))) elseif PM_ItemTable[item].subclass == PM_HERBSUBCLASS then self:AddLine("Times Milled: " .. PM_ResultsTable[item].timesProspected) self:AddDoubleLine("Cost to Mill: " .. PM_FormatPrice(5 * PM_ItemTable[item].price), " Average Return: " .. PM_FormatPrice(PM_GetReturn(item))) end if lifetimeReturn-(5 * PM_ItemTable[item].price) > 0 then self:AddLine("Estimated Profit: " .. PM_FormatPrice(lifetimeReturn-(5 * PM_ItemTable[item].price))) self:AddLine(" ") else self:AddLine("No profit to be made",1,0,0) self:AddLine(" ") end if PM_Config.results then local t if IsAltKeyDown() == PM_Config.session then t = PM_ResultsTable self:AddDoubleLine("Lifetime Results","Hold/Release Alt to toggle",0.5,0.5,1,0.5,0.5,0.5) else t = PM_SessionTable self:AddDoubleLine("Session Results","Hold/Release Alt to toggle",0.5,0.5,1,0.5,0.5,0.5) end if t[item] then for q = 7, 0, -1 do for result, num in pairs(t[item]) do if result ~= "timesProspected" and PM_ItemTable[result].quality == q and PM_Config.qualities[q] then local p, n = "", "" if PM_Config.percent then p = num/t[item].timesProspected*100 if p < 10 then p = string.format("[%.1f%%]", p) else p = string.format("[%.0f%%]", p) end else p = "" end if PM_Config.number then n = "[" .. num .. "]" else n = "" end self:AddDoubleLine(p .. PM_ItemTable[result].link .. n, PM_FormatPrice(PM_ItemTable[result].price)) end end end end self:AddLine(" ") end end cleared = true end end end GameTooltip:HookScript("OnTooltipCleared", OnTooltipCleared) GameTooltip:HookScript("OnTooltipSetItem", OnTooltipSetItem)