tooltip cleanup

This commit is contained in:
Spit
2025-04-29 14:56:17 +03:00
parent 9b628213f6
commit 645433024f
+55 -58
View File
@@ -6,12 +6,12 @@ local GetItemInfo = GetItemInfo
local GREY = "|cff999999" local GREY = "|cff999999"
local WrappingLines = { local WrappingLines = {
["Set: %s"] = gsub("^"..ITEM_SET_BONUS, " %%s", ""), ["Set: %s"] = gsub("^" .. ITEM_SET_BONUS, " %%s", ""), -- "^Set:"
["(%d) Set: %s"] = gsub(gsub(ITEM_SET_BONUS_GRAY, "%(%%d%)", "^%%(%%d%%)"), " %%s", ""), ["(%d) Set: %s"] = gsub(gsub(ITEM_SET_BONUS_GRAY, "%(%%d%)", "^%%(%%d%%)"), " %%s", ""), -- "^%(%d%) Set:"
["Effect: %s"] = gsub("^"..ITEM_SPELL_EFFECT, " %%s", ""), ["Effect: %s"] = gsub("^" .. ITEM_SPELL_EFFECT, " %%s", ""), -- "^Effect:"
["Equip:"] = "^"..ITEM_SPELL_TRIGGER_ONEQUIP, ["Equip:"] = "^" .. ITEM_SPELL_TRIGGER_ONEQUIP, -- "^Equip:"
["Chance on hit:"] = "^"..ITEM_SPELL_TRIGGER_ONPROC, ["Chance on hit:"] = "^" .. ITEM_SPELL_TRIGGER_ONPROC, -- "^Chance on hit:"
["Use:"] = "^"..ITEM_SPELL_TRIGGER_ONUSE, ["Use:"] = "^" .. ITEM_SPELL_TRIGGER_ONUSE, -- "^Use:"
} }
local lines = {} local lines = {}
@@ -24,8 +24,8 @@ local function AddSourceLine(tooltip, sourceStr)
local numLines = tooltip:NumLines() local numLines = tooltip:NumLines()
local left, right local left, right
local leftText, rightText local leftText, rightText
local rL, gL, bL local leftR, leftG, leftB
local rR, gR, bR local rightR, rightG, rightB
local wrap local wrap
for i in pairs(lines) do for i in pairs(lines) do
@@ -39,26 +39,28 @@ local function AddSourceLine(tooltip, sourceStr)
right = getglobal(name .. "TextRight" .. i) right = getglobal(name .. "TextRight" .. i)
leftText = left:GetText() leftText = left:GetText()
rightText = right:IsShown() and right:GetText() rightText = right:IsShown() and right:GetText()
rL, gL, bL = left:GetTextColor() leftR, leftG, leftB = left:GetTextColor()
rR, gR, bR = right:GetTextColor() rightR, rightG, rightB = right:GetTextColor()
lines[i][1] = leftText lines[i][1] = leftText
lines[i][2] = rightText lines[i][2] = rightText
lines[i][3] = rL lines[i][3] = leftR
lines[i][4] = gL lines[i][4] = leftG
lines[i][5] = bL lines[i][5] = leftB
lines[i][6] = rR lines[i][6] = rightR
lines[i][7] = gR lines[i][7] = rightG
lines[i][8] = bR lines[i][8] = rightB
end end
if not lines[1][1] then return end if not lines[1][1] then
return
end
tooltip:SetText(lines[1][1], lines[1][3], lines[1][4], lines[1][5], 1, false) tooltip:SetText(lines[1][1], lines[1][3], lines[1][4], lines[1][5], 1, false)
if numLines < 28 then if numLines < 28 then
tooltip:AddLine(sourceStr) tooltip:AddLine(sourceStr)
elseif lines[2][1] then elseif lines[2][1] then
lines[2][1] = sourceStr.."\n"..lines[2][1] lines[2][1] = sourceStr .. "\n" .. lines[2][1]
end end
for i = 2, getn(lines) do for i = 2, getn(lines) do
@@ -83,7 +85,7 @@ local function AddSourceLine(tooltip, sourceStr)
tooltip:Show() tooltip:Show()
end end
local sets = { local Sets = {
["SpiritofEskhandar"] = true, ["SpiritofEskhandar"] = true,
["HakkariBlades"] = true, ["HakkariBlades"] = true,
["PrimalBlessing"] = true, ["PrimalBlessing"] = true,
@@ -97,7 +99,7 @@ local sets = {
["Tabards"] = true, ["Tabards"] = true,
} }
local professions = { local Professions = {
["Apprentice"] = true, ["Apprentice"] = true,
["Journeyman"] = true, ["Journeyman"] = true,
["Expert"] = true, ["Expert"] = true,
@@ -144,29 +146,28 @@ local function ExtendTooltip(tooltip)
return return
end end
local tooltipName = tooltip:GetName() local tooltipName = tooltip:GetName()
local line2 = getglobal(tooltipName .. "TextLeft2")
local craftSpell, source, sourceStr, dropRate local craftSpell, source, sourceStr, dropRate
local isCraft, isWBLoot, isPvP, isRepReward, isSetPiece, isWorldEvent = false, false, false, false, false, false local isCraft, isWBLoot, isPvP, isRepReward, isSetPiece, isWorldEvent = false, false, false, false, false, false
local itemID = tonumber(tooltip.itemID) local itemID = tonumber(tooltip.itemID)
if itemID and itemID ~= 51217 then -- 51217 Fashion Coin if itemID and itemID ~= 51217 then -- 51217 Fashion Coin
if itemID ~= lastItemID then if itemID ~= lastItemID then
for row = 1, tooltip:NumLines() do for row = 1, tooltip:NumLines() do
local rowtext = getglobal(tooltipName.."TextLeft"..row):GetText() local rowtext = getglobal(tooltipName .. "TextLeft" .. row):GetText()
-- skip items that state which rep they require -- skip items that state which rep they require
if strfind(rowtext or "", "", 1, true) then if strfind(rowtext or "", "", 1, true) then
return return
end end
end end
-- first check if its craftable item -- first check if its craftable item
for k,v in pairs(GetSpellInfoAtlasLootDB["craftspells"]) do for k, v in pairs(GetSpellInfoAtlasLootDB["craftspells"]) do
if v["craftItem"] == itemID then if v["craftItem"] == itemID then
craftSpell = "s"..tostring(k) craftSpell = "s" .. tostring(k)
break break
end end
end end
for k, v in pairs(GetSpellInfoAtlasLootDB["enchants"]) do for k, v in pairs(GetSpellInfoAtlasLootDB["enchants"]) do
if v["item"] and v["item"] == itemID then if v["item"] and v["item"] == itemID then
craftSpell = "e"..tostring(k) craftSpell = "e" .. tostring(k)
break break
end end
end end
@@ -176,15 +177,15 @@ local function ExtendTooltip(tooltip)
end end
for k2, v2 in pairs(AtlasLoot_Data["AtlasLootCrafting"][k1]) do for k2, v2 in pairs(AtlasLoot_Data["AtlasLootCrafting"][k1]) do
if v2[1] ~= 0 and v2[1] ~= "" then if v2[1] ~= 0 and v2[1] ~= "" then
if (v2[1] == craftSpell or v2[1] == itemID) and SetPartialMatch(professions, k1) then if (v2[1] == craftSpell or v2[1] == itemID) and SetPartialMatch(Professions, k1) then
source = k1 source = k1
isCraft = true isCraft = true
dropRate = AtlasLoot_FixText(v2[4] or "") or "" dropRate = AtlasLoot_FixText(v2[4] or "") or ""
dropRate = gsub(dropRate or "", "\124cff%x%x%x%x%x%x", "") dropRate = gsub(dropRate or "", "\124c%x%x%x%x%x%x%x%x", "")
local skill = "" local skill = ""
_, _, dropRate, skill = strfind(dropRate or "", "("..AL["Skill:"]..") (%d+)") _, _, dropRate, skill = strfind(dropRate or "", "(" .. AL["Skill:"] .. ") (%d+)")
if dropRate and skill then if dropRate and skill then
dropRate = skill ~= "300" and dropRate.." "..skill.."+" or dropRate.." "..skill dropRate = skill ~= "300" and dropRate .. " " .. skill .. "+" or dropRate .. " " .. skill
lastDropRate = dropRate lastDropRate = dropRate
else else
lastDropRate = nil lastDropRate = nil
@@ -196,11 +197,11 @@ local function ExtendTooltip(tooltip)
end end
-- check if its world boss loot -- check if its world boss loot
if not isCraft then if not isCraft then
for k1,v1 in pairs(AtlasLoot_Data["AtlasLootWBItems"]) do for k1, v1 in pairs(AtlasLoot_Data["AtlasLootWBItems"]) do
if source then if source then
break break
end end
for k2,v2 in pairs(AtlasLoot_Data["AtlasLootWBItems"][k1]) do for k2, v2 in pairs(AtlasLoot_Data["AtlasLootWBItems"][k1]) do
if v2[1] == itemID then if v2[1] == itemID then
source = k1 source = k1
isWBLoot = true isWBLoot = true
@@ -217,11 +218,11 @@ local function ExtendTooltip(tooltip)
end end
-- check if its a pvp reward -- check if its a pvp reward
if not isCraft and not isWBLoot then if not isCraft and not isWBLoot then
for k1,v1 in pairs(AtlasLoot_Data["AtlasLootGeneralPvPItems"]) do for k1, v1 in pairs(AtlasLoot_Data["AtlasLootGeneralPvPItems"]) do
if source then if source then
break break
end end
for k2,v2 in pairs(AtlasLoot_Data["AtlasLootGeneralPvPItems"][k1]) do for k2, v2 in pairs(AtlasLoot_Data["AtlasLootGeneralPvPItems"][k1]) do
if v2[1] == itemID then if v2[1] == itemID then
source = k1 source = k1
isPvP = true isPvP = true
@@ -234,11 +235,11 @@ local function ExtendTooltip(tooltip)
-- check if its a rep reward -- check if its a rep reward
-- bgs -- bgs
if not isCraft and not isWBLoot and not isPvP then if not isCraft and not isWBLoot and not isPvP then
for k1,v1 in pairs(AtlasLoot_Data["AtlasLootBGItems"]) do for k1, v1 in pairs(AtlasLoot_Data["AtlasLootBGItems"]) do
if source then if source then
break break
end end
for k2,v2 in pairs(AtlasLoot_Data["AtlasLootBGItems"][k1]) do for k2, v2 in pairs(AtlasLoot_Data["AtlasLootBGItems"][k1]) do
if v2[1] == itemID then if v2[1] == itemID then
source = k1 source = k1
isRepReward = true isRepReward = true
@@ -253,15 +254,15 @@ local function ExtendTooltip(tooltip)
end end
end end
-- factions -- factions
for k1,v1 in pairs(AtlasLoot_Data["AtlasLootRepItems"]) do for k1, v1 in pairs(AtlasLoot_Data["AtlasLootRepItems"]) do
if source then if source then
break break
end end
for k2,v2 in pairs(AtlasLoot_Data["AtlasLootRepItems"][k1]) do for k2, v2 in pairs(AtlasLoot_Data["AtlasLootRepItems"][k1]) do
if v2[1] == itemID then if v2[1] == itemID then
source = k1 source = k1
isRepReward = true isRepReward = true
if v2[5] and v2[5] ~= "" --[[and source ~= "Darkmoon" and not strfind(source, "Cenarion",1,true)]] then if v2[5] and v2[5] ~= "" then
dropRate = v2[5] dropRate = v2[5]
lastDropRate = dropRate lastDropRate = dropRate
else else
@@ -274,15 +275,15 @@ local function ExtendTooltip(tooltip)
end end
-- check if its a set piece -- check if its a set piece
if not isCraft and not isWBLoot and not isPvP and not isRepReward then if not isCraft and not isWBLoot and not isPvP and not isRepReward then
for k1,v1 in pairs(AtlasLoot_Data["AtlasLootSetItems"]) do for k1, v1 in pairs(AtlasLoot_Data["AtlasLootSetItems"]) do
if source then if source then
break break
end end
for k2,v2 in pairs(AtlasLoot_Data["AtlasLootSetItems"][k1]) do for k2, v2 in pairs(AtlasLoot_Data["AtlasLootSetItems"][k1]) do
if v2[1] == itemID then if v2[1] == itemID then
source = k1 source = k1
isSetPiece = true isSetPiece = true
if (SetContains(sets, source) or strfind(source, "WorldEpics",1,true)) then if (SetContains(Sets, source) or strfind(source, "WorldEpics", 1, true)) then
source = nil source = nil
isSetPiece = false isSetPiece = false
end end
@@ -294,11 +295,11 @@ local function ExtendTooltip(tooltip)
end end
-- check world events -- check world events
if not isCraft and not isWBLoot and not isPvP and not isRepReward and not isSetPiece then if not isCraft and not isWBLoot and not isPvP and not isRepReward and not isSetPiece then
for k1,v1 in pairs(AtlasLoot_Data["AtlasLootWorldEvents"]) do for k1, v1 in pairs(AtlasLoot_Data["AtlasLootWorldEvents"]) do
if source then if source then
break break
end end
for k2,v2 in pairs(AtlasLoot_Data["AtlasLootWorldEvents"][k1]) do for k2, v2 in pairs(AtlasLoot_Data["AtlasLootWorldEvents"][k1]) do
if v2[1] == itemID then if v2[1] == itemID then
source = k1 source = k1
isWorldEvent = true isWorldEvent = true
@@ -315,11 +316,11 @@ local function ExtendTooltip(tooltip)
end end
-- check if its a dungeon/raid loot -- check if its a dungeon/raid loot
if not isCraft and not isWBLoot and not isPvP and not isRepReward and not isWorldEvent and not isSetPiece then if not isCraft and not isWBLoot and not isPvP and not isRepReward and not isWorldEvent and not isSetPiece then
for k1,v1 in pairs(AtlasLoot_Data["AtlasLootItems"]) do for k1, v1 in pairs(AtlasLoot_Data["AtlasLootItems"]) do
if source then if source then
break break
end end
for k2,v2 in pairs(AtlasLoot_Data["AtlasLootItems"][k1]) do for k2, v2 in pairs(AtlasLoot_Data["AtlasLootItems"][k1]) do
if v2[1] == itemID then if v2[1] == itemID then
if k1 ~= "VanillaKeys" then if k1 ~= "VanillaKeys" then
source = k1 source = k1
@@ -335,11 +336,11 @@ local function ExtendTooltip(tooltip)
end end
end end
-- check containers -- check containers
for k1,v1 in pairs(AtlasLoot_Data["AtlasLootItems"]) do for k1, v1 in pairs(AtlasLoot_Data["AtlasLootItems"]) do
if source then if source then
break break
end end
for k2,v2 in pairs(AtlasLoot_Data["AtlasLootItems"][k1]) do for k2, v2 in pairs(AtlasLoot_Data["AtlasLootItems"][k1]) do
if source then if source then
break break
end end
@@ -364,7 +365,7 @@ local function ExtendTooltip(tooltip)
lastSourceStr = nil lastSourceStr = nil
return return
end end
for k,v in pairs(AtlasLoot_TableNames) do for k, v in pairs(AtlasLoot_TableNames) do
if k == source then if k == source then
sourceStr = AtlasLoot_TableNames[k][1] sourceStr = AtlasLoot_TableNames[k][1]
lastSourceStr = sourceStr lastSourceStr = sourceStr
@@ -376,25 +377,21 @@ local function ExtendTooltip(tooltip)
return return
end end
-- if line2:GetText() then
local str local str
if dropRate then if dropRate then
str = GREY..sourceStr.." ("..dropRate..")|r" str = GREY .. sourceStr .. " (" .. dropRate .. ")|r"
else else
str = GREY..sourceStr.."|r" str = GREY .. sourceStr .. "|r"
end end
AddSourceLine(tooltip, str) AddSourceLine(tooltip, str)
-- end
elseif lastSourceStr then elseif lastSourceStr then
-- if line2:GetText() then
local str local str
if lastDropRate then if lastDropRate then
str = GREY..lastSourceStr.." ("..lastDropRate..")|r" str = GREY .. lastSourceStr .. " (" .. lastDropRate .. ")|r"
else else
str = GREY..lastSourceStr.."|r" str = GREY .. lastSourceStr .. "|r"
end end
AddSourceLine(tooltip, str) AddSourceLine(tooltip, str)
-- end
end end
end end
end end
@@ -407,7 +404,7 @@ local function GetItemIDByName(name)
if name ~= lastSearchName then if name ~= lastSearchName then
for itemID = 1, 99999 do for itemID = 1, 99999 do
local itemName = GetItemInfo(itemID) local itemName = GetItemInfo(itemID)
if (itemName and itemName == name) then if itemName and itemName == name then
lastSearchID = itemID lastSearchID = itemID
break break
end end
@@ -585,7 +582,7 @@ AtlasLootTip.HookAddonOrVariable = function(addon, func)
lurker:RegisterEvent("ADDON_LOADED") lurker:RegisterEvent("ADDON_LOADED")
lurker:RegisterEvent("VARIABLES_LOADED") lurker:RegisterEvent("VARIABLES_LOADED")
lurker:RegisterEvent("PLAYER_ENTERING_WORLD") lurker:RegisterEvent("PLAYER_ENTERING_WORLD")
lurker:SetScript("OnEvent",function() lurker:SetScript("OnEvent", function()
if IsAddOnLoaded(addon) or getglobal(addon) then if IsAddOnLoaded(addon) or getglobal(addon) then
this:func() this:func()
this:UnregisterAllEvents() this:UnregisterAllEvents()