mischivin@36: local Quality = { [0] = "Junk", [1]= "Common", [2] = "Uncommon", [3] = "Rare", [4] = "Epic", } Vynn@0: mischivin@36: local function Initialize() mischivin@36: ProspectMe.FormatPrice = function (value) Vynn@0: mischivin@36: local GSC_GOLD="ffffd100" mischivin@36: local GSC_SILVER="ffe6e6e6" mischivin@36: local GSC_COPPER="ffc8602c" Vynn@0: mischivin@36: local g, s, c mischivin@36: local digits = 0 mischivin@36: local gsc Vynn@0: mischivin@36: g = math.floor(value/10000) mischivin@36: s = math.fmod(math.floor(value/100),100) mischivin@36: c = math.fmod(value,100) Vynn@0: Vynn@0: mischivin@36: digits = math.floor(math.log10(value)+1) Vynn@0: mischivin@36: if ( digits < 3 ) then mischivin@36: gsc = string.format(" |c%s%2d|r", GSC_COPPER, c) mischivin@36: elseif ( digits < 5 ) then mischivin@36: gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_SILVER, s, GSC_COPPER, c) mischivin@36: elseif ( digits < 7 ) then mischivin@36: gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_GOLD, g, GSC_SILVER, s) mischivin@36: elseif ( digits < 9 ) then mischivin@36: gsc = string.format("|c%s%5d|r", GSC_GOLD, g) mischivin@36: else mischivin@36: gsc = string.format("|c%s%2.1fk|r", GSC_GOLD, g/1000) mischivin@36: end mischivin@36: mischivin@36: return gsc Vynn@0: end Vynn@0: mischivin@36: ProspectMe.GetReturn = function (containerID) mischivin@36: local averageReturn = 0 mischivin@36: if ProspectMe.Results[containerID].TimesProspected > 0 then mischivin@36: for itemID, num in pairs(ProspectMe.Results[containerID]) do mischivin@36: if itemID ~= "TimesProspected" then mischivin@36: averageReturn = averageReturn + ProspectMe.GetItemValue(itemID) * num mischivin@36: end Vynn@0: end mischivin@36: averageReturn = averageReturn/ProspectMe.Results[containerID].TimesProspected Vynn@0: end mischivin@36: return tonumber(string.format("%.0f", averageReturn)) Vynn@0: end Vynn@0: end Vynn@0: Vynn@0: local cleared = true Vynn@0: local function OnTooltipCleared(self) Vynn@0: cleared = true Vynn@0: end Vynn@0: Vynn@0: local function OnTooltipSetItem(self) Vynn@0: if cleared then mischivin@39: local tooltipLink = select(2, self:GetItem()) mischivin@39: local spellid = select(3, self:GetSpell()) mischivin@39: local item = nil mischivin@39: if spellid == 225902 then mischivin@39: item = 123918 mischivin@39: elseif spellid == 225904 then mischivin@39: item = 123919 mischivin@39: elseif spellid == 210116 then mischivin@39: item = 128304 mischivin@39: elseif tooltipLink then mischivin@39: item = tonumber(tooltipLink:match("Hitem:(%d+)")) mischivin@39: spellid = nil mischivin@39: else mischivin@39: item = nil mischivin@39: spellid = nil mischivin@39: end mischivin@39: if item then mischivin@36: if ProspectMe.Results[item] then mischivin@36: local price = ProspectMe.GetItemValue(item) mischivin@36: local lifetimeReturn = ProspectMe.GetReturn(item) mischivin@41: local subclass = select(7,GetItemInfo(item)) mischivin@47: local ctp = price * 5 Vynn@0: --NumofEachQuality, Percent of Each Quality Vynn@0: self:AddLine(" ") mischivin@47: local color mischivin@47: if ProspectMe.Results[item].TimesProspected < 100 then mischivin@47: color = "|cffff0000" mischivin@47: elseif ProspectMe.Results[item].TimesProspected < 200 then mischivin@47: color = "|cffffff00" mischivin@47: else mischivin@47: color = "|cff00ff00" mischivin@47: end mischivin@46: if spellid == 225902 or spellid == 225904 or subclass == ProspectMe.Vars.ORE then mischivin@47: self:AddDoubleLine("Prospect Me","Times Prospected: " .. color .. ProspectMe.Results[item].TimesProspected,0.5,1,0.5,0.5,0.5,1) mischivin@46: elseif spellid == 210116 or subclass == ProspectMe.Vars.HERB then mischivin@47: self:AddDoubleLine("Prospect Me","Times Milled: " .. color .. ProspectMe.Results[item].TimesProspected,0.5,1,0.5,0.5,0.5,1) mischivin@42: else mischivin@47: self:AddDoubleLine("Prospect Me","Times Processed: " .. color .. ProspectMe.Results[item].TimesProspected,0.5,1,0.5,0.5,0.5,1) mischivin@42: end mischivin@39: if spellid then mischivin@39: ctp = price * 20 mischivin@39: lifetimeReturn = lifetimeReturn * 4 mischivin@39: end mischivin@39: if spellid == 225902 or spellid == 225904 then mischivin@39: self:AddDoubleLine("Cost to Mass Prospect: " .. ProspectMe.FormatPrice(ctp), " Average Return: " .. ProspectMe.FormatPrice(lifetimeReturn)) mischivin@39: elseif spellid == 210116 then mischivin@39: self:AddDoubleLine("Cost to Mass Mill: " .. ProspectMe.FormatPrice(ctp), " Average Return: " .. ProspectMe.FormatPrice(lifetimeReturn)) mischivin@46: elseif subclass == ProspectMe.Vars.ORE then mischivin@39: self:AddDoubleLine("Cost to Prospect: " .. ProspectMe.FormatPrice(ctp), " Average Return: " .. ProspectMe.FormatPrice(lifetimeReturn)) mischivin@46: elseif subclass == ProspectMe.Vars.HERB then mischivin@39: self:AddDoubleLine("Cost to Mill: " .. ProspectMe.FormatPrice(ctp), " Average Return: " .. ProspectMe.FormatPrice(lifetimeReturn)) mischivin@39: else mischivin@39: self:AddDoubleLine("Cost to Process: " .. ProspectMe.FormatPrice(ctp), " Average Return: " .. ProspectMe.FormatPrice(lifetimeReturn)) mischivin@39: end mischivin@46: self:AddLine(" ") mischivin@47: local profit = lifetimeReturn - ctp mischivin@47: local margin = (lifetimeReturn / ctp * 100) - 100 mischivin@46: if margin > 30 then mischivin@47: self:AddLine("Estimated Profit: " .. ProspectMe.FormatPrice(profit) .. "\nMargin: |cff00ff00" .. string.format("[%.1f%%]", margin)) mischivin@46: elseif margin > 15 then mischivin@47: self:AddLine("Estimated Profit: " .. ProspectMe.FormatPrice(profit) .. "\nMargin: |cffffff00" .. string.format("[%.1f%%]", margin)) mischivin@46: elseif margin > 0 then mischivin@47: self:AddLine("Estimated Profit: " .. ProspectMe.FormatPrice(profit) .. "\nMargin: |cffff0000" .. string.format("[%.1f%%]", margin)) Vynn@0: else Vynn@0: self:AddLine("No profit to be made",1,0,0) Vynn@0: end mischivin@46: self:AddLine(" ") mischivin@36: local t mischivin@36: if IsAltKeyDown() == ProspectMe.Config.PerSession then mischivin@36: t = ProspectMe.Results mischivin@36: self:AddDoubleLine("Lifetime Results","Hold/Release Alt to toggle",0.5,0.5,1,0.5,0.5,0.5) mischivin@36: else mischivin@36: t = ProspectMe.Session mischivin@36: self:AddDoubleLine("Session Results","Hold/Release Alt to toggle",0.5,0.5,1,0.5,0.5,0.5) mischivin@36: end mischivin@36: if t[item] then mischivin@36: for q = 7, 0, -1 do mischivin@36: for result, num in pairs(t[item]) do mischivin@36: if result ~= "TimesProspected" and select(3, GetItemInfo(result)) == q and ProspectMe.Config.ShowQualities[Quality[q]] then mischivin@36: local p, n = "", "" mischivin@36: if ProspectMe.Config.ShowPercent then mischivin@36: p = num/t[item].TimesProspected*100 mischivin@36: if p < 10 then mischivin@36: p = string.format("[%.1f%%]", p) Vynn@0: else mischivin@36: p = string.format("[%.0f%%]", p) Vynn@0: end mischivin@36: else mischivin@36: p = "" Vynn@0: end mischivin@36: if ProspectMe.Config.ShowNumber then mischivin@36: n = "[" .. num .. "]" mischivin@36: else mischivin@36: n = "" mischivin@36: end mischivin@36: self:AddDoubleLine(p .. select(2, GetItemInfo(result)) .. n, ProspectMe.FormatPrice(ProspectMe.GetItemValue(result))) Vynn@0: end Vynn@0: end Vynn@0: end mischivin@39: --self:AddLine(" ") Vynn@0: end Vynn@0: end Vynn@0: cleared = true Vynn@0: end Vynn@0: end Vynn@0: end Vynn@0: Vynn@0: GameTooltip:HookScript("OnTooltipCleared", OnTooltipCleared) mischivin@36: GameTooltip:HookScript("OnTooltipSetItem", OnTooltipSetItem) mischivin@36: ItemRefTooltip:HookScript("OnTooltipCleared", OnTooltipCleared) mischivin@36: ItemRefTooltip:HookScript("OnTooltipSetItem", OnTooltipSetItem) mischivin@36: mischivin@36: local frame = CreateFrame("FRAME", "ProspectMe_Value") mischivin@36: frame:RegisterEvent("VARIABLES_LOADED") mischivin@36: --frame:SetScript("OnEvent", EventHandler) mischivin@36: frame:SetScript("OnEvent", Initialize)