feat(resource bars): opt-in extended Brewmaster stagger bar - #1807
Draft
diEBirne wants to merge 3 commits into
Draft
feat(resource bars): opt-in extended Brewmaster stagger bar#1807diEBirne wants to merge 3 commits into
diEBirne wants to merge 3 commits into
Conversation
added 3 commits
August 28, 2026 16:42
The stagger bar stops at max health (or the Stagger Full % ceiling), so a Brewmaster cannot tell 120% stagger from 400%. Behind a Brewmaster-only toggle that is off by default, the bar now spans a configurable Scale of 100% steps, each step gets its own fill color, and optional divider lines mark the boundaries. The feature lives in the existing class-resource paths: the bar ceiling is derived from Scale where staggerCeilingPercent was read, the step color slots into the stagger color chain behind the buff / dark theme / recolor-text priorities, and the divider lines reuse ApplyResourceBarTicks and the bar's tick overlay with their own texture pool. No new runtime file, frame, event or OnUpdate, and while the toggle is off nothing in the feature is read. Scale never writes staggerCeilingPercent, so the stored ceiling applies again unchanged once the toggle goes off; the Stagger Full % input is locked, not cleared, while Extended Stagger is on.
Keep each Lua 5.1 color swatch bound to its own scale step, refresh the stock ceiling lock immediately, and invalidate divider layout when orientation or UI scale changes.
Update the shared threshold context when its frame is built so Extended Stagger can lock or unlock Stagger Full % immediately while the popup is open.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Adds an opt-in display mode for the Brewmaster stagger bar, off by default.
Stagger can already exceed 100% of max health, but the bar stops filling there, so everything above that point looks identical. With Brewmaster Monk Extended Stagger Bar enabled, the bar spans
Scalesteps of 100% max health (Scale 2-6, default 4). Each step gets its own fill color, and optional divider lines mark the step boundaries. The bar text still shows the real percentage of max health.New rows in Class Resource (Brewmaster only):
Brewmaster Monk Extended Stagger BartoggleScaleslider (2-6), with aScale Dividerscog for line visibility, thickness and colorScale Colorsmulti-swatch, one color per 100% step. Steps above the currentScaleare locked.Relationship to the existing
Stagger Full %(staggerCeilingPercent): both decide how far the bar fills, so they must not fight each other. While Extended Stagger is on,Scalesupplies the effective ceiling andStagger Full %in Threshold Settings is locked with an explanatory tooltip. The stored value is never written to, and it applies again unchanged the moment the toggle goes off.Interaction with existing stagger coloring while enabled: the step colors replace threshold and multi-band coloring, since the steps already define the color bands. Dark Theme behaves exactly as it does today.
How was it tested?
Client 12.1.0.69497, EllesmereUI 9.0.7, Brewmaster Monk.
In game:
Stagger Full %and hash lines behave exactly as before.Show Divider Linesoff.Stagger Full %locks while on, unlocks live when the toggle flips with the Threshold Settings popup open, and its stored value is unchanged afterwards./reloadand relog persistence./console scriptErrors 1.Screenshots
Options with the feature on at Scale 4. Steps 5 and 6 are locked because they sit above the current Scale:
Bar at 260% of max health, Scale 4. The fill uses the 200-300% step color and the dividers sit at 100 / 200 / 300%:
Checklist
brewExtendedStaggerBardefaults tofalse. With it off, the bar,Stagger Full %, threshold/band coloring and hash lines behave exactly as they do on 9.0.7.OnUpdateand no timer. The stagger branch reads one boolean; while it is false no divider texture is ever created and the color path is untouched.The divider layout is memoized on scale, width, color, bar size, orientation, reverse fill and pixel multiplier, so
UNIT_POWER_FREQUENTdoes not rebuild it. That memo is deliberately separate from the sharedsb._tickState: the hash-line call overwrites that one, and both pools would otherwise rebuild several times a second. Divider textures use their own pool inside the existing tick overlay, so the user's hash lines keep their own color and width.HookScript/hooksecurefunconly, neverSetScripton Blizzard frames - no Blizzard or secure frame is touched; every frame and texture here is EUI-owned. Secret values keep the existing handling: the step color reuses the samestaggerPctthe current threshold path already computes, including its last-known-good cache.Opening as a draft: I know feature requests are halted until a few weeks after 12.1 launch. The concept was discussed with Ellesmere on Discord beforehand, so this is here for whenever the freeze lifts, with no expectation of a merge before then.