Fix the Vengeance module

One of the return values of UnitAura is the Vengeance amount and the GameTooltip scanning thing is no longer working.
This commit is contained in:
Parnic
2024-05-12 11:11:53 -05:00
parent c425206748
commit b0f7c776db
4 changed files with 19 additions and 36 deletions

View File

@ -486,7 +486,7 @@ end
function IceHUD:GetAuraCount(auraType, unit, ability, onlyMine, matchByName)
if not unit or not ability then
return 0
return 0, nil
end
if unit == "main hand weapon" or unit == "off hand weapon" then
@ -494,21 +494,21 @@ function IceHUD:GetAuraCount(auraType, unit, ability, onlyMine, matchByName)
= GetWeaponEnchantInfo()
if unit == "main hand weapon" and hasMainHandEnchant then
return mainHandCharges
return mainHandCharges, nil
elseif unit == "off hand weapon" and hasOffHandEnchant then
return offHandCharges
return offHandCharges, nil
end
return 0
return 0, nil
end
-- Support for Spell IDs
if (IceHUD.GetPlayerAuraBySpellID and tonumber(ability) ~= nil) then
local aura = C_UnitAuras.GetPlayerAuraBySpellID(ability)
if aura ~= nil then
return aura.applications
return aura.applications, nil
else
return 0
return 0, nil
end
end
@ -522,7 +522,7 @@ function IceHUD:GetAuraCount(auraType, unit, ability, onlyMine, matchByName)
while name do
if (not matchByName and string.match(texture:upper(), ability:upper()))
or (matchByName and string.match(name:upper(), ability:upper())) then
return applications
return applications, i
end
i = i + 1
@ -533,7 +533,7 @@ function IceHUD:GetAuraCount(auraType, unit, ability, onlyMine, matchByName)
end
end
return 0
return 0, nil
end
do

View File

@ -1,5 +1,9 @@
# Changelog
v1.14.42:
- Fix Vengeance module in Cataclysm Classic
v1.14.41:
- Fix swapped DK runes in Cataclysm Classic

View File

@ -50,41 +50,16 @@ end
-- scan the tooltip and extract the vengeance value
do
-- making these local as they're not used anywhere else
local regions = {}
local spellName = GetSpellInfo(VENGEANCE_SPELL_ID)
local tooltipBuffer = CreateFrame("GameTooltip","tooltipBuffer",nil,"GameTooltipTemplate")
tooltipBuffer:SetOwner(WorldFrame, "ANCHOR_NONE")
-- suggested by Antiarc as a way to repopulate the same table instead of repeatedly creating a new one
local function makeTable(t, ...)
wipe(t)
for i = 1, select("#", ...) do
t[i] = select(i, ...)
end
end
function Vengeance.prototype:UpdateCurrent(event, unit)
if (unit and (unit ~= self.unit)) then
return
end
local name = UnitAura(self.unit, spellName)
if name then
-- Buff found, copy it into the buffer for scanning
tooltipBuffer:ClearLines()
tooltipBuffer:SetUnitBuff(self.unit, name)
-- Grab all regions, stuff em into our table
makeTable(regions, tooltipBuffer:GetRegions())
-- Convert FontStrings to strings, replace anything else with ""
for i=1, #regions do
local region = regions[i]
regions[i] = region:GetObjectType() == "FontString" and region:GetText() or ""
end
-- Find the number, save it
self.current = tonumber(string.match(table.concat(regions),"%d+")) or 0
local _, idx = IceHUD:GetBuffCount(self.unit, spellName, true, true)
if idx then
self.current = select(17, UnitAura(self.unit, idx))
else
self.current = 0
end

View File

@ -1,5 +1,9 @@
# Changelog
v1.14.42:
- Fix Vengeance module in Cataclysm Classic
v1.14.41:
- Fix swapped DK runes in Cataclysm Classic