fix(MultiCast): nil-safe Enum.ClassMask guard so file-load can't crash for custom classes
This commit is contained in:
@@ -7,11 +7,14 @@ if not HasMultiCastActionBar then return end
|
|||||||
|
|
||||||
local classMask = UnitClassMask("player")
|
local classMask = UnitClassMask("player")
|
||||||
|
|
||||||
-- CoA: the SHAMAN/HERO mask check doesn't know about CoA custom classes
|
-- CoA: Enum.ClassMask only knows vanilla classes (SHAMAN/HERO); custom classes
|
||||||
-- (e.g. Witchdoctor, which also uses the totem bar). Fall back to the
|
-- (e.g. Witchdoctor) won't match. EnumUtil/Enum.ClassMask may also be nil on
|
||||||
-- game-created MultiCastActionBarFrame: if the engine produced it for this
|
-- this client. Guard both: if the mask API is unavailable OR the player's class
|
||||||
-- player, we wrap it regardless of class.
|
-- isn't in the vanilla set, fall through to the MultiCastActionBarFrame check —
|
||||||
if not bit.contains(EnumUtil.CombineMasks(Enum.ClassMask.SHAMAN, Enum.ClassMask.HERO), classMask)
|
-- if the engine created the bar for this player we wrap it regardless of class.
|
||||||
|
local _vanillaMask = EnumUtil and Enum and Enum.ClassMask
|
||||||
|
and EnumUtil.CombineMasks(Enum.ClassMask.SHAMAN, Enum.ClassMask.HERO)
|
||||||
|
if _vanillaMask and not bit.contains(_vanillaMask, classMask)
|
||||||
and not MultiCastActionBarFrame then
|
and not MultiCastActionBarFrame then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -7,9 +7,12 @@ if not HasMultiCastActionBar then return end
|
|||||||
|
|
||||||
local classMask = UnitClassMask("player")
|
local classMask = UnitClassMask("player")
|
||||||
|
|
||||||
-- CoA: see MultiCastBar.lua — same gate, same fallback so the options
|
-- CoA: see MultiCastBar.lua — same gate, same fallback so the options panel is
|
||||||
-- panel is registered for custom classes (e.g. Witchdoctor) too.
|
-- registered for custom classes (e.g. Witchdoctor) too. Guard EnumUtil /
|
||||||
if not bit.contains(EnumUtil.CombineMasks(Enum.ClassMask.SHAMAN, Enum.ClassMask.HERO), classMask)
|
-- Enum.ClassMask for nil in case they are absent on this client.
|
||||||
|
local _vanillaMask = EnumUtil and Enum and Enum.ClassMask
|
||||||
|
and EnumUtil.CombineMasks(Enum.ClassMask.SHAMAN, Enum.ClassMask.HERO)
|
||||||
|
if _vanillaMask and not bit.contains(_vanillaMask, classMask)
|
||||||
and not MultiCastActionBarFrame then
|
and not MultiCastActionBarFrame then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user