feat: CoA class colors for the 21 Ascension custom classes
Adds CoAClassColors.lua which merges 22 entries (HERO + 21 custom) into _G.RAID_CLASS_COLORS at file-load time, before Omen.lua takes its local snapshot. Vanilla 10 are left untouched. !ClassColors is also folded in if loaded. Fixes: Omen bars rendering generic dbBar.BarColor for all CoA classes because Omen.lua:1629 looks up RAID_CLASS_COLORS[class] keyed on the file_string returned by UnitClass(), and PROPHET / MONK / FLESHWARDEN / etc. don't exist in stock Blizzard tables.
This commit is contained in:
+115
@@ -0,0 +1,115 @@
|
||||
# coa-omen
|
||||
|
||||
CoA-patched fork of [Omen3](https://www.curseforge.com/wow/addons/omen-threat-meter)
|
||||
3.0.9 (the version Ascension's Bronzebeard realm ships in
|
||||
`Interface/AddOns/Omen/`). Adds class-color entries for the 21
|
||||
Ascension custom classes plus the HERO archetype, so the threat-meter
|
||||
bars render in a class-tinted color instead of falling back to the
|
||||
generic neutral fill.
|
||||
|
||||
## What we changed
|
||||
|
||||
| File | Type | Why |
|
||||
|-----------------------|--------|-----|
|
||||
| `CoAClassColors.lua` | new | Merges 22 CoA `file_string` entries into `_G.RAID_CLASS_COLORS` (and `_G.CUSTOM_CLASS_COLORS` if `!ClassColors` is loaded). Vanilla 10 are left untouched. |
|
||||
| `Omen.toc` | edit | Loads `CoAClassColors.lua` before `Omen.lua`. Version bumped to `3.0.9-coa1`. |
|
||||
| `.gitattributes` | new | `* -text` — preserves upstream CRLF so future merges from Curse stay tidy. |
|
||||
|
||||
`Omen.lua` itself is unchanged. The bug we're fixing is in
|
||||
`Omen.lua:1629` —
|
||||
|
||||
```lua
|
||||
(dbBar.UseClassColors and (RAID_CLASS_COLORS[class] or (class == "PET" and dbBar.PetBarColor))) or
|
||||
```
|
||||
|
||||
— where `class` is the second return of `UnitClass(unit)`, i.e. the
|
||||
ChrClasses.dbc `file_string`. For CoA classes that's `PROPHET` /
|
||||
`MONK` / `FLESHWARDEN` / etc., none of which exist in stock
|
||||
`RAID_CLASS_COLORS`, so the lookup is `nil`, the `and/or` chain
|
||||
collapses, and every CoA-class bar gets `dbBar.BarColor` regardless
|
||||
of `UseClassColors`. We just populate the table — no Omen logic
|
||||
changes needed.
|
||||
|
||||
## Class color table
|
||||
|
||||
The 22 added file-strings are below. The CoA names on the right are
|
||||
the in-game display names (slugs at `db.exil.es/class/<slug>`); the
|
||||
file-strings on the left are what `UnitClass()` actually returns.
|
||||
|
||||
| file_string | CoA class | Hex |
|
||||
|----------------|------------------|----------|
|
||||
| HERO | (all-class) | #FFD100 |
|
||||
| BARBARIAN | Barbarian | #C1666B |
|
||||
| WITCHDOCTOR | Witch Doctor | #80C7B1 |
|
||||
| DEMONHUNTER | Felsworn | #A330C9 |
|
||||
| WITCHHUNTER | Witch Hunter | #B8B0A0 |
|
||||
| STORMBRINGER | Stormbringer | #4ED9FF |
|
||||
| FLESHWARDEN | Knight of Xoroth | #5C2E73 |
|
||||
| GUARDIAN | Guardian | #4A9D59 |
|
||||
| MONK | Templar | #00FFBA |
|
||||
| SONOFARUGAL | Bloodmage | #AA1F1F |
|
||||
| RANGER | Ranger | #5E8C3A |
|
||||
| CHRONOMANCER | Chronomancer | #D68A3A |
|
||||
| NECROMANCER | Necromancer | #4D7A5A |
|
||||
| PYROMANCER | Pyromancer | #FF6A00 |
|
||||
| CULTIST | Cultist | #7A40B8 |
|
||||
| STARCALLER | Starcaller | #79C8D6 |
|
||||
| SUNCLERIC | Sun Cleric | #F2C14E |
|
||||
| TINKER | Tinker | #C47C4F |
|
||||
| PROPHET | Venomancer | #B8D246 |
|
||||
| REAPER | Reaper | #6E3A8A |
|
||||
| WILDWALKER | Primalist | #8B6F47 |
|
||||
| SPIRITMAGE | Runemaster | #6FB6E0 |
|
||||
|
||||
The colors are sensible thematic defaults, not extracted from the
|
||||
client. To override them for one player, drop a `!ClassColors` config
|
||||
in (the addon is already an OptionalDep of Omen). To override globally
|
||||
in this fork, edit `CoAClassColors.lua`.
|
||||
|
||||
## Deploying
|
||||
|
||||
```bash
|
||||
rsync -a --delete --exclude=.git --exclude='README*.md' \
|
||||
/home/sub/repos/coa/coa-omen/ \
|
||||
/srv/add01/wow-ascension/Interface/AddOns/Omen/
|
||||
```
|
||||
|
||||
Then in-game: `/reload` (or full client restart). Confirm with the
|
||||
Bartender4-style version check — open Omen options, the title bar
|
||||
should read `Omen3 3.0.9-coa1`.
|
||||
|
||||
## Verifying in-game
|
||||
|
||||
`/run print(RAID_CLASS_COLORS["PROPHET"] and RAID_CLASS_COLORS["PROPHET"].colorStr or "missing")`
|
||||
|
||||
Should print `ff` followed by the hex of `#B8D246` (i.e.
|
||||
`ffb8d246`). Repeat for any custom class. If a key prints `missing`,
|
||||
either `CoAClassColors.lua` didn't load (check the addon list) or
|
||||
the file-string was different from what's in the table.
|
||||
|
||||
To dump every class color the client knows about:
|
||||
|
||||
```
|
||||
/run for k,v in pairs(RAID_CLASS_COLORS) do print(k, v.colorStr) end
|
||||
```
|
||||
|
||||
## Merging upstream
|
||||
|
||||
Stock upstream Omen has a `* text=auto` `.gitattributes` that
|
||||
normalises CRLF; we override with `* -text` so future merges don't
|
||||
produce noise diffs.
|
||||
|
||||
```bash
|
||||
git remote add upstream https://github.com/Nevcairiel/Omen.git
|
||||
git fetch upstream
|
||||
git merge --no-ff upstream/master
|
||||
```
|
||||
|
||||
…then resolve `Omen.toc` (preserve our `## CoA patches ##` block at
|
||||
the bottom) and commit.
|
||||
|
||||
## Repo
|
||||
|
||||
- Gitea: <https://git.sub-net.at/coa/coa-omen>
|
||||
- Default branch: `master` (Sub-Net Gitea pre-receive hook rejects
|
||||
`main`).
|
||||
Reference in New Issue
Block a user