Commit Graph

13 Commits

Author SHA1 Message Date
florian.berthold 83bbe12a87 feat(dispels): include 4 more CoA classes in raid-frame dispel filter
COA_CLASS_DISPELS was missing Sun Cleric, Primalist (WILDWALKER token),
Witchdoctor, and Tinker — so members of those classes saw no dispel
highlighting on raid frames despite being able to cleanse. Sourced
dispel types from coa-decursive's DCR_init.lua spell map (Sanctify,
Soothing Touch, Cleansing Idol, Nanobot Cleanser), which is verified
against gameplay rather than DBC misc_value.

Also adds inline display-name comments for MONK / PROPHET / WILDWALKER
since the in-game class names don't match the internal tokens.
2026-05-25 11:23:42 +02:00
florian.berthold f8214b6b6c fix(libs): pick up coa-ace3 9583952 (AceDB falsy-defaults PR #10 backport)
Re-sync after coa-ace3 9583952 backported WoWUIDev/Ace3 PR #10 which fixes
the AceDB-3.0 simple-value defaults metatable: previously falsy defaults
like ["*"] = false read back as nil because of `k2~=nil and v or nil`
short-circuiting. Now they round-trip correctly.
2026-05-24 19:31:45 +02:00
florian.berthold 5d9749a920 fix: include CoA custom classes in portrait/totems/raid-grouping
portrait.lua: guard CLASS_ICON_TCOORDS[classToken] lookup. CoA custom
classes (Witchdoctor, Templar, …) have no entry in the vanilla
CLASS_ICON_TCOORDS table, so the old SetTexCoord call crashed with a
nil-index whenever a custom-class unit was shown. Cache the lookup
into a local and fall through to blank texture on miss.

totems.lua: file-level class gate registered the totem bar only for
SHAMAN (and a 1-slot DK guardian variant), locking out Witchdoctor and
any future CoA totem class. Probe MAX_TOTEMS > 1 / HasMultiCastActionBar
(Bartender's pattern) and register without a class filter when the
player has the multi-cast totem bar, so any CoA totem class picks it up.

units.lua: raid-header groupingOrder was the hardcoded 10-class vanilla
string, which dumped the 11 CoA custom classes into an unsorted tail
when GROUP BY CLASS was active. Build the order dynamically from
RAID_CLASS_COLORS (CoA populates this with all 21 classes via the
CUSTOM_CLASS_COLORS mechanism) at the call site.
2026-05-24 17:39:05 +02:00
florian.berthold ede7d2b23d chore(libs): sync shared LibStub-registered libs to canonical highest
Bumps in this fork:
  - LibSharedMedia-3.0

Brings these libs in line with the highest version any Exiles fork currently
bundles, so LibStub resolution is predictable regardless of load order.
2026-05-24 17:07:54 +02:00
florian.berthold da942631f0 chore(libs): sync Ace3 to coa-ace3 (WoWUIDev master @ 52e5f2c)
Bring every embedded Ace3 / CallbackHandler / LibStub copy in line with the
canonical Exiles/coa-ace3 bundle so LibStub resolution is predictable across
all Exiles forks regardless of which addons are enabled.

Libraries updated in this fork:
  AceConfig-3.0          3  (2 → 3)
  AceConfigCmd-3.0       14  (12 → 14)
  AceConfigDialog-3.0    92  (48 → 92)
  AceConfigRegistry-3.0  22  (12 → 22)
  AceDB-3.0              33  (21 → 33)
  AceDBOptions-3.0       15  (12 → 15)
  AceGUI-3.0             41  (33 → 41)
  CallbackHandler-1.0    8  (5 → 8)
  LibStub                2
2026-05-23 13:42:19 +02:00
florian.berthold 48ebec985b coa: fix CoA dispel detection timing in SUF aura scan
Previous approach baked playerCoaDispels into group.coaRaidFilter during
OnLayoutApplied, which can fire before PLAYER_LOGIN when C_Player isn't
ready yet — Venomancer and other CoA classes got cached as false and
never re-evaluated.

Fix: move all CoA logic into scan() itself so it runs on every
PLAYER_ENTERING_WORLD update. getCoaDispels() no longer caches when
C_Player is unavailable (returns nil without storing), so the first
successful in-world call populates it correctly.

updateGroup() is restored to its original form — no group.coaRaidFilter.
scan() intercepts filter=="HARMFUL|RAID", calls getCoaDispels(), and if
a dispel set is found strips |RAID and applies the per-type check inline.
2026-05-17 10:52:50 +02:00
florian.berthold 9679966f37 coa: fix "Show curable only" debuff filter for CoA custom classes
UnitAura "HARMFUL|RAID" only honours vanilla class dispel knowledge in
the 3.3.5 client — CoA custom classes (Chronomancer, Monk/Templar,
Prophet/Venomancer, etc.) were silently filtered to zero debuffs.

Fix: in updateGroup(), detect CoA dispellers via C_Player:IsCustomClass()
and store their per-class dispel set on group.coaRaidFilter instead of
appending |RAID.  scan() skips debuffs whose auraType is not in that
set, preserving contiguous button layout with no gaps.

Class → dispel types (sourced from coa-decursive):
  CHRONOMANCER  Magic/Curse/Disease/Poison (Roll Back 804490)
  MONK          Magic/Disease/Poison (Rebuke 525051)
  PROPHET       Poison (Antivenom 800905; curse-dispel doesn't fire)
  PYROMANCER    Disease/Poison
  RANGER        Disease/Poison
  CULTIST       Curse
  SONOFARUGAL   Curse
  SPIRITMAGE    Magic
  STARCALLER    Magic
  WITCHHUNTER   Curse
2026-05-17 06:08:34 +02:00
florian.berthold 464facd309 Bump version to v3.3.0
Carries the CoAClassColors.lua patch on top of upstream v3.2.12.
2026-05-08 23:44:58 +02:00
florian.berthold b0b4b702bb Bump version to v3.2.12-coa1
Marks this fork as carrying the CoAClassColors.lua patch, so users can
tell at a glance (e.g. via /reload addon list) that they are running the
guild-patched build. Suffix follows the coa-omen convention
(3.0.9-coa1).
2026-05-08 23:43:00 +02:00
florian.berthold 089454f937 Add CoAClassColors.lua: mirror RAID_CLASS_COLORS into profile
SUF stores class colors in a private ShadowUF.db.profile.classColors
table seeded only with the vanilla 10 in defaultlayout.lua. On the
Voljin/CoA client _G.RAID_CLASS_COLORS is populated by FrameXML with
22 additional tokens (HERO + 21 CoA customs), but those never reach
SUF, so a guildmate's CoA-class health bar falls through to the
percent gradient.

New file post-hooks ShadowUF:OnInitialize, ProfileReset and
ProfilesChanged to copy any RAID_CLASS_COLORS entry the active
profile is missing into profile.classColors. Idempotent — only fills
nil keys, so user customisations and SUF's stock vanilla-10 values
win.

Source of truth is the live client's table, populated in
patch-B.MPQ → SharedXML/SharedConstants.lua, so the addon stays in
sync with whatever palette the realm ships without a hardcoded copy.
2026-05-08 22:48:42 +02:00
Jakob Roberts 06e8e33f77 Add LOW strata to health bars (#1)
The strata was defaulting much higher than it should be and was overlapping with other frames such as the character pane.  This was applying to all bars including raid, player, and party.
2025-08-27 12:36:58 -07:00
andrew6180 3dada108b9 missing files 2024-12-23 06:56:21 -07:00
Icarium d40388b8b7 Init 2023-03-02 12:15:00 +01:00