3.6 KiB
CoA Bartender4
This is the CoA Guild 'Exiles' fork of Bartender4 by
Hendrik "Nevcairiel" Leppkes, vendored from Ascension's WotLK 3.3.5
Conquest of Azeroth (CoA) client
(/srv/add01/wow-ascension/Interface/AddOns/Bartender4,
upstream version 4.4.2-2-g3b02ee4).
What we patched
A single feature: paging conditionals can refer to shapeshift forms by name, not just by numeric stance index.
[aura:Beetle Form]6;1 -- equivalent to [stance:N]6;1
[form:Beetle Form]6;1
[stance:Beetle Form]6;1 -- non-numeric value also accepted
[stance:Beetle Form/Wasp Form]9 -- slash-lists work
[noaura:Beetle Form]2 -- negation works
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 https://github.com/Nevcairiel/Bartender4. The patch is small and the touched files are stable, so future merges should be mostly painless:
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
Deploying
rsync -a --delete \
--exclude=.git --exclude=.gitattributes --exclude='README-CoA.md' \
/home/sub/repos/coa/coa-bartender/ \
/srv/add01/wow-ascension/Interface/AddOns/Bartender4/
Same for wow-ptr. After deploy the in-game version string reads
4.4.2-2-g3b02ee4-coa1, so you can confirm the patched copy is loaded.
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.