From b0f7c776db54e005b9ae592416496e738378d4db Mon Sep 17 00:00:00 2001 From: Parnic Date: Sun, 12 May 2024 11:11:53 -0500 Subject: [PATCH] Fix the Vengeance module One of the return values of UnitAura is the Vengeance amount and the GameTooltip scanning thing is no longer working. --- IceHUD.lua | 16 ++++++++-------- changelog.md | 4 ++++ modules/Vengeance.lua | 31 +++---------------------------- this_version.md | 4 ++++ 4 files changed, 19 insertions(+), 36 deletions(-) diff --git a/IceHUD.lua b/IceHUD.lua index 6e38e85..cab3ed5 100644 --- a/IceHUD.lua +++ b/IceHUD.lua @@ -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 diff --git a/changelog.md b/changelog.md index 85c573b..7bd5997 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,9 @@ # Changelog +v1.14.42: + +- Fix Vengeance module in Cataclysm Classic + v1.14.41: - Fix swapped DK runes in Cataclysm Classic diff --git a/modules/Vengeance.lua b/modules/Vengeance.lua index 018f521..a318596 100644 --- a/modules/Vengeance.lua +++ b/modules/Vengeance.lua @@ -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 diff --git a/this_version.md b/this_version.md index 0d4f34e..85c96d1 100644 --- a/this_version.md +++ b/this_version.md @@ -1,5 +1,9 @@ # Changelog +v1.14.42: + +- Fix Vengeance module in Cataclysm Classic + v1.14.41: - Fix swapped DK runes in Cataclysm Classic