diff --git a/ShadowedUnitFrames/ShadowedUnitFrames.toc b/ShadowedUnitFrames/ShadowedUnitFrames.toc index be67824..61eaa58 100644 --- a/ShadowedUnitFrames/ShadowedUnitFrames.toc +++ b/ShadowedUnitFrames/ShadowedUnitFrames.toc @@ -2,7 +2,7 @@ ## Title: Shadowed Unit Frames ## Notes: An apple a day keeps the raptor away, or so they say ## Author: Shadowed -## Version: v3.3.0 +## Version: v3.3.0-coa.2 ## SavedVariables: ShadowedUFDB ## OptionalDeps: Ace3, LibSharedMedia-3.0, LibHealComm-4.0, AceGUI-3.0-SharedMediaWidgets ## X-Curse-Packaged-Version: v3.2.12 diff --git a/ShadowedUnitFrames/modules/auras.lua b/ShadowedUnitFrames/modules/auras.lua index 847e972..db32685 100644 --- a/ShadowedUnitFrames/modules/auras.lua +++ b/ShadowedUnitFrames/modules/auras.lua @@ -26,18 +26,18 @@ local COA_CLASS_DISPELS = { } local function getCoaDispels() if playerCoaDispels ~= nil then return playerCoaDispels end - local cp = _G.C_Player - if not cp or not cp.IsCustomClass then - -- C_Player not yet initialised (called before PLAYER_LOGIN); don't - -- cache — retry on the next scan so we pick it up once in-world. + -- Trust the COA_CLASS_DISPELS table directly: it only contains custom-class + -- tokens, so any token-match implies the player IS a dispelling custom + -- class. Avoids C_Player.IsCustomClass timing/availability issues (the + -- API isn't reliable for every class on every login — Witchdoctor in + -- particular was getting cached as false on raid frames). + local _, token = UnitClass("player") + if not token or token == "" then + -- UnitClass not ready yet (very early init); don't cache — retry on + -- the next scan so we pick it up once in-world. return nil end - if cp:IsCustomClass() then - local _, token = UnitClass("player") - playerCoaDispels = token and COA_CLASS_DISPELS[token] or false - else - playerCoaDispels = false - end + playerCoaDispels = COA_CLASS_DISPELS[token] or false return playerCoaDispels end -- Expose for other modules (highlight.lua) so the dispel set stays single-source.