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)