From f8cfedfc069d3a8fe653cd779ec369f421a4979f Mon Sep 17 00:00:00 2001 From: Florian Berthold Date: Sat, 23 May 2026 16:01:06 +0200 Subject: [PATCH] fix(MultiCast): let CoA custom classes (Witchdoctor) get the totem bar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both MultiCastBar.lua and Options/MultiCastBar.lua hard-coded a class-mask gate of SHAMAN|HERO, which doesn't know about CoA custom classes. As a result, Witchdoctor (and any other CoA class the engine produces a totem bar for) never had Bartender's wrapper module register, leaving the totem bar un-skinned / un-configurable. Keep the original mask check as the fast path, but fall through and load the module when MultiCastActionBarFrame already exists — the engine only creates that frame for classes that actually use the totem bar, so it's a reliable class-agnostic test. --- Bartender4/MultiCastBar.lua | 9 +++++++-- Bartender4/Options/MultiCastBar.lua | 5 ++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Bartender4/MultiCastBar.lua b/Bartender4/MultiCastBar.lua index 1521061..fc138b2 100644 --- a/Bartender4/MultiCastBar.lua +++ b/Bartender4/MultiCastBar.lua @@ -7,9 +7,14 @@ if not HasMultiCastActionBar then return end local classMask = UnitClassMask("player") -if not bit.contains(EnumUtil.CombineMasks(Enum.ClassMask.SHAMAN, Enum.ClassMask.HERO), classMask) then +-- CoA: the SHAMAN/HERO mask check doesn't know about CoA custom classes +-- (e.g. Witchdoctor, which also uses the totem bar). Fall back to the +-- game-created MultiCastActionBarFrame: if the engine produced it for this +-- player, we wrap it regardless of class. +if not bit.contains(EnumUtil.CombineMasks(Enum.ClassMask.SHAMAN, Enum.ClassMask.HERO), classMask) + and not MultiCastActionBarFrame then return -end +end -- fetch upvalues local L = LibStub("AceLocale-3.0"):GetLocale("Bartender4") diff --git a/Bartender4/Options/MultiCastBar.lua b/Bartender4/Options/MultiCastBar.lua index ad6ee01..889a184 100644 --- a/Bartender4/Options/MultiCastBar.lua +++ b/Bartender4/Options/MultiCastBar.lua @@ -7,7 +7,10 @@ if not HasMultiCastActionBar then return end local classMask = UnitClassMask("player") -if not bit.contains(EnumUtil.CombineMasks(Enum.ClassMask.SHAMAN, Enum.ClassMask.HERO), classMask) then +-- CoA: see MultiCastBar.lua — same gate, same fallback so the options +-- panel is registered for custom classes (e.g. Witchdoctor) too. +if not bit.contains(EnumUtil.CombineMasks(Enum.ClassMask.SHAMAN, Enum.ClassMask.HERO), classMask) + and not MultiCastActionBarFrame then return end