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 mischivin@62: local neg = false mischivin@62: mischivin@62: --if value is negative, record it and get the absolute value so log10 works mischivin@62: if value < 0 then mischivin@62: neg = true mischivin@62: value = math.abs(value) mischivin@62: end mischivin@62: 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@62: --if the original number was negative, add the symbol back in mischivin@62: if neg then mischivin@62: gsc = "|cffff0000(|r" .. gsc .. "|cffff0000)|r" mischivin@62: end 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@48: if ProspectMe.Results[item].TimesProspected < 100 then mischivin@48: color = "|cffff0000" mischivin@48: elseif ProspectMe.Results[item].TimesProspected < 200 then mischivin@48: color = "|cffffff00" mischivin@48: else mischivin@48: color = "|cff00ff00" mischivin@48: end mischivin@48: mischivin@48: -- SKill Text Block "" mischivin@48: local skilltext mischivin@46: if spellid == 225902 or spellid == 225904 or subclass == ProspectMe.Vars.ORE then mischivin@48: skilltext = "Prospected" mischivin@46: elseif spellid == 210116 or subclass == ProspectMe.Vars.HERB then mischivin@48: skilltext = "Milled" mischivin@42: else mischivin@48: skilltext = "Processed" mischivin@48: end mischivin@48: self:AddDoubleLine("Prospect Me","Times " .. skilltext .. ": " .. color .. ProspectMe.Results[item].TimesProspected,1,0.82,0,1,1,1) mischivin@48: self:AddLine(" ") mischivin@48: mischivin@48: -- Economics Text Block mischivin@58: if ProspectMe.Config.ShowEconomics then mischivin@58: local spelltext mischivin@58: if spellid == 225902 or spellid == 225904 then mischivin@58: spelltext = "Mass Prospect" mischivin@58: elseif spellid == 210116 then mischivin@58: spelltext = "Mass Mill" mischivin@58: elseif subclass == ProspectMe.Vars.ORE then mischivin@58: spelltext = "Prospect" mischivin@58: elseif subclass == ProspectMe.Vars.HERB then mischivin@58: spelltext = "Mill" mischivin@58: else mischivin@58: spelltext = "Process" mischivin@58: end mischivin@58: if spellid then mischivin@58: ctp = price * 20 mischivin@58: lifetimeReturn = lifetimeReturn * 4 mischivin@58: end mischivin@58: local profit = lifetimeReturn - ctp mischivin@58: local margin = (lifetimeReturn / ctp * 100) - 100 mischivin@58: self:AddDoubleLine("Estimated Profit: " .. ProspectMe.FormatPrice(profit), "Cost to " .. spelltext .. ": " .. ProspectMe.FormatPrice(ctp),1,1,1,1,1,1) mischivin@58: if margin < 15 then mischivin@58: color = "|cffff0000" mischivin@58: elseif margin < 30 then mischivin@58: color = "|cffffff00" mischivin@58: else mischivin@58: color = "|cff00ff00" mischivin@58: end mischivin@58: self:AddDoubleLine("Margin: " .. color .. string.format("[%.1f%%]", margin), "Average Return: " .. ProspectMe.FormatPrice(lifetimeReturn),1,1,1,1,1,1) mischivin@58: self:AddLine(" ") mischivin@42: end mischivin@48: mischivin@48: -- Results Text Block mischivin@58: local quals = ProspectMe.Config.ShowQualities mischivin@58: if quals.Junk or quals.Common or quals.Uncommon or quals.Rare or quals.Epic then mischivin@58: local hint = true mischivin@58: local tab mischivin@58: if IsAltKeyDown() == ProspectMe.Config.PerSession then mischivin@58: tab = ProspectMe.Results mischivin@58: self:AddDoubleLine("Lifetime Results","Hold Alt to display",1,0.82,0,0.5,0.5,0.5) mischivin@58: else mischivin@58: tab = ProspectMe.Session mischivin@58: self:AddDoubleLine("Session Results","Hold Alt to display",1,0.82,0,0.5,0.5,0.5) mischivin@58: end mischivin@58: if tab[item] then mischivin@58: for q = 7, 0, -1 do mischivin@58: for result, num in pairs(tab[item]) do mischivin@58: if result ~= "TimesProspected" and select(3, GetItemInfo(result)) == q and ProspectMe.Config.ShowQualities[Quality[q]] then mischivin@58: hint = false mischivin@58: local p, n = "", "" mischivin@58: if ProspectMe.Config.ShowPercent then mischivin@58: p = num/tab[item].TimesProspected*100 mischivin@58: if p < 10 then mischivin@58: p = string.format("|cffffffff[%.1f%%] ", p) mischivin@58: else mischivin@58: p = string.format("|cffffffff[%.0f%%] ", p) mischivin@58: end Vynn@0: else mischivin@58: p = "" Vynn@0: end mischivin@58: if ProspectMe.Config.ShowNumber then mischivin@58: n = "|cffffffffx" .. num mischivin@58: else mischivin@58: n = "" mischivin@58: end mischivin@58: self:AddDoubleLine(p .. select(2, GetItemInfo(result)) .. n, ProspectMe.FormatPrice(ProspectMe.GetItemValue(result))) Vynn@0: end Vynn@0: end Vynn@0: end Vynn@0: end mischivin@58: if hint then mischivin@58: if spellid == 225902 or spellid == 225904 or subclass == ProspectMe.Vars.ORE then mischivin@58: self:AddLine("|cffffffffTry Prospecting some ore to see your results!") mischivin@58: elseif spellid == 210116 or subclass == ProspectMe.Vars.HERB then mischivin@58: self:AddLine("|cffffffffTry Milling some plants to see your results!") mischivin@58: else mischivin@69: self:AddLine("|cffffffffTry processing some material to see your results!") mischivin@58: end mischivin@58: end mischivin@58: 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)