CoA Bartender4 ============== This is the CoA Guild 'Exiles' fork of [Bartender4][upstream] by Hendrik "Nevcairiel" Leppkes, vendored from Ascension's WotLK 3.3.5 Conquest of Azeroth (CoA) client (upstream version `4.4.2-2-g3b02ee4`). [upstream]: https://github.com/Nevcairiel/Bartender4 What we patched --------------- A single feature: paging conditionals can refer to **shapeshift forms by name**, not just by numeric stance index. This will change Bar 1 into like Bar 5 or Bar 9 ``` Bar 1 [noform]1;1 [aura:Beetle Form]5;1 [aura:Spider Form]9;1 Bar 2 [noform]2;2 [aura:Beetle Form]7;2 [aura:Spider Form]10;2 ``` Three keywords are accepted equivalently when the value is a non-numeric form name: `aura:`, `form:`, `stance:` (and their `no…:` negations). All resolve via `GetShapeshiftFormInfo()` and get rewritten to `[stance:N]` before the string reaches Blizzard's secure macro parser. This covers every Venomancer / Wildkin / etc. CoA custom-class form, plus stock Druid / Warrior / DK / Priest forms — anything that lives in the shapeshift bar. Non-form auras (regular buffs) cannot be expressed as a stance index and are out of scope. Why upstream can't accept this patch as-is ------------------------------------------ `SecureCmdOptionParse` is hardcoded in the WoW client; addons cannot register new conditional keywords into it. Our translation pass runs *before* `RegisterStateDriver`, rewriting `[aura:Name]` to `[stance:N]` at addon scope. That works on a private server with predictable form sets, but upstream serves multiple expansions and clients where the keyword `aura` may eventually mean something different (or be reserved by Blizzard) — so it stays a fork patch. Files we touched ---------------- | File | Change | |---|---| | `Bartender4.toc` | Version `…-coa1`, loads `CoAAuraConditionals.lua`, Notes appended | | `StateBar.lua` | 3-line guard before `RegisterStateDriver` calls our translator | | `CoAAuraConditionals.lua` | New file — the translator + `UPDATE_SHAPESHIFT_FORMS` re-apply | | `.gitattributes` | `* -text` so we don't normalise upstream CRLF (keeps merges clean) | Pulling future upstream releases -------------------------------- Upstream lives at . The patch is small and the touched files are stable, so future merges should be mostly painless: ```bash git remote add upstream https://github.com/Nevcairiel/Bartender4.git git fetch upstream git merge upstream/master # or whatever upstream's default is # resolve trivial conflicts in StateBar.lua + Bartender4.toc luac -p StateBar.lua CoAAuraConditionals.lua ``` Verifying it works ------------------ In-game, run any of: ``` /run print(SecureCmdOptionParse("[stance:Beetle Form]yes;no")) /run print(SecureCmdOptionParse("[aura:Beetle Form]yes;no")) ``` Both should print **`no`** even when in Beetle Form, because Blizzard's parser still doesn't understand the names — but Bartender4's paging **will** work, because the translator rewrites the string before handing it to the state driver. To verify *that*, set up paging as `[aura:Beetle Form]6;1` in Bar 1 → State Configuration → Custom, shift into Beetle Form, and watch Bar 1 swap to page 6.