coa: register dispel spells for 21 CoA custom classes

Three gaps closed for CoA custom-class players:

1. DCR_init.lua C_Player:IsCustomClass() branches were stubs printing
   "CoA is not currently supported". Filled both branches (SpellsToUse +
   Spells dictionary) with 11 dispel spell IDs covering 10 CoA classes
   (Chronomancer, Cultist, Templar, Venomancer, Pyromancer, Ranger,
   Bloodmage, Runemaster, Starcaller, Witch Hunter). The other 11 CoA
   classes have no dedicated player-cast dispel in coa-db.

2. Dcr_Raid.lua ClassNumTo{LName,UName} were hardcoded to indices
   11..21 (vanilla 10 + HERO). Append every additional CLASS_SORT_ORDER
   token starting at 22 — append-only so existing DecursiveDB skip /
   priority numeric keys stay valid. CoA-class units in raids now get
   priority/skip lookups instead of silent nil-guarded no-ops.

3. Bumped toc Version to Asc-1.1.0-coa.

Spell IDs sourced from coa-db (mind_of_ascension_talent + class_spell)
filtered to effect_id=38 (DISPEL) with misc_value in {1,2,3,4} (Magic,
Curse, Disease, Poison).

PopulateListFrame XML buttons (Dcr_lists.xml) for the 21 CoA classes
deferred — needs UI rework (frame is already near-full at 11 buttons).
Skip/priority lists still work without these populate-by-class
shortcuts.
This commit is contained in:
2026-05-10 05:31:59 +02:00
parent 28f87cf432
commit 32324ff732
3 changed files with 56 additions and 6 deletions
+28 -2
View File
@@ -194,8 +194,6 @@ DC.ClassNumToLName = {
[21] = LC[DC.CLASS_HERO],
}
DC.ClassLNameToNum = D:tReverse(DC.ClassNumToLName);
DC.ClassNumToUName = {
[11] = DC.CLASS_DRUID,
[12] = DC.CLASS_HUNTER,
@@ -210,6 +208,34 @@ DC.ClassNumToUName = {
[21] = DC.CLASS_HERO,
}
-- CoA: append every RAID_CLASS_COLORS entry not already mapped above (idx 22+).
-- Iterate CLASS_SORT_ORDER for stable ordering across sessions; fall back to
-- pairs() only if CLASS_SORT_ORDER is unavailable. Append-only preserves the
-- numeric keys baked into DecursiveDB skip/priority lists from older configs.
do
local existing = {}
for _, v in pairs(DC.ClassNumToUName) do existing[v] = true end
local order = _G.CLASS_SORT_ORDER
if not order then
order = {}
for class in pairs(_G.RAID_CLASS_COLORS or {}) do
order[#order + 1] = class
end
end
local idx = 22
for _, class in ipairs(order) do
if not existing[class] then
DC.ClassNumToLName[idx] = LC[class] or class
DC.ClassNumToUName[idx] = class
existing[class] = true
idx = idx + 1
end
end
end
DC.ClassLNameToNum = D:tReverse(DC.ClassNumToLName);
DC.ClassUNameToNum = D:tReverse(DC.ClassNumToUName);