Skip to content

Commit

Permalink
Fix the Vengeance module
Browse files Browse the repository at this point in the history
One of the return values of UnitAura is the Vengeance amount and the GameTooltip scanning thing is no longer working.
  • Loading branch information
parnic committed May 12, 2024
1 parent c425206 commit b0f7c77
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 36 deletions.
16 changes: 8 additions & 8 deletions IceHUD.lua
Original file line number Diff line number Diff line change
Expand Up @@ -486,29 +486,29 @@ 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
local hasMainHandEnchant, mainHandExpiration, mainHandCharges, mainHandEnchantID, hasOffHandEnchant, offHandExpiration, offHandCharges, offHandEnchantID
= 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

Expand All @@ -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
Expand All @@ -533,7 +533,7 @@ function IceHUD:GetAuraCount(auraType, unit, ability, onlyMine, matchByName)
end
end

return 0
return 0, nil
end

do
Expand Down
4 changes: 4 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

v1.14.42:

- Fix Vengeance module in Cataclysm Classic

v1.14.41:

- Fix swapped DK runes in Cataclysm Classic
Expand Down
31 changes: 3 additions & 28 deletions modules/Vengeance.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions this_version.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

v1.14.42:

- Fix Vengeance module in Cataclysm Classic

v1.14.41:

- Fix swapped DK runes in Cataclysm Classic
Expand Down

0 comments on commit b0f7c77

Please sign in to comment.