Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

* (Aura Designer) Banner controls no longer overlap when the settings window is narrow. (PR #81 by Krathe)
* (Class Power) Fix Size, Colors, Position, and Show for Roles section headers showing as floating labels when Class Power Pips is disabled. (PR #82 by Krathe)
* Fix debuff icons remaining visible on frames after a unit dies. (PR #85 by Krathe)
* (Defensive Icons) Fix icon borders missing on one or more sides when Pixel Perfect is enabled. (PR #79 by Krathe)
* (Export Settings) Fix the "All" preset unchecking Pinned Frames, Aura Designer, and Auto Layouts. (PR #78 by Krathe)
* (Global Fonts) Fix the Affected Elements list missing entries and being clipped. (PR #76 by Krathe)
Expand Down
27 changes: 26 additions & 1 deletion Features/Auras.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2628,7 +2628,32 @@ end
function DF:UpdateAuraIconsDirect(frame, icons, auraType, maxAuras)
local unit = frame.unit
local db = DF:GetFrameDB(frame)


-- Dead/ghost units: hide all aura icons immediately. WoW does not fire
-- UNIT_AURA on death, so the cache may still hold pre-death auras —
-- suppress them visually rather than displaying stale data on a corpse.
if UnitIsDeadOrGhost(unit) then
for i = 1, #icons do
local icon = icons[i]
icon.auraData = nil
icon.testAuraData = nil
icon.expirationTime = nil
icon.auraDuration = nil
if icon.duration then icon.duration:Hide() end
if icon.expiringTint then icon.expiringTint:Hide() end
if icon.expiringBorderAlphaContainer then
icon.expiringBorderAlphaContainer:Hide()
if icon.expiringBorderPulse and icon.expiringBorderPulse:IsPlaying() then
icon.expiringBorderPulse:Stop()
end
end
icon:Hide()
end
local countKey = auraType == "BUFF" and "buffDisplayedCount" or "debuffDisplayedCount"
frame[countKey] = 0
return
end

-- Quick out: no cache = no approved auras = hide everything
local cache = DF.BlizzardAuraCache[unit]
local cacheSet = cache and (auraType == "BUFF" and cache.buffs or cache.debuffs)
Expand Down
9 changes: 9 additions & 0 deletions Frames/Update.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1062,11 +1062,20 @@ function DF:UpdateHealthFast(frame)
if DF.RestoreHealthBarFromReducedMax then DF:RestoreHealthBarFromReducedMax(frame) end
end
DF:ApplyDeadFade(frame, "Dead")
-- Clear aura icons on the first dead tick only. WoW doesn't fire
-- UNIT_AURA on death so the cache stays stale; flushing once is enough.
-- The edge-detect flag prevents re-running the full AD engine on every
-- subsequent UNIT_HEALTH tick while the unit stays dead (e.g. wipe spam).
if not frame.dfLastKnownDead then
frame.dfLastKnownDead = true
if DF.UpdateAuras_Enhanced then DF:UpdateAuras_Enhanced(frame) end
end
return
end

-- Unit is alive and connected - reset dead fade if it was applied
DF:ResetDeadFade(frame)
frame.dfLastKnownDead = nil
frame.dfLastKnownConnected = true

-- Clear resurrection icon if unit was pending a res and is now alive
Expand Down