Skip to main content

Battlerage

Battlerage is a second, parallel decision track. Where the primary lane fires on each game prompt, the battlerage lane fires when your rage changes — and it uses the same first-valid selection over an ordered lane gated by pure canExecute checks (see the decision model).

The rage lane

A class's battlerage lane is an ordered list of Rage actions. A Rage is an Action with extra metadata:

FieldMeaning
rageThe rage cost to use it.
cdCooldown in seconds.
balanceWhether it consumes battlerage balance.
afflictionThe affliction it applies, if any.
comboAfflictions that must be present for a combo rage.
razeWhether it strips a shield.
couplingWhen it fires relative to the attack: preAttack or auto.

Edit the lane in the Class Configuration tab's Battlerages sub-tab. Classes without a battlerage lane simply omit that sub-tab.

Reserves (buffers)

You don't want nexBash to dump all your rage on minor damage and then be unable to raze a shield. The three reserves keep rage in hand for the things that matter. Set them on the Options tab:

ReserveDefaultKeeps rage for
Shield Buffer17A shield raze.
CC Buffer35A crowd-control rage.
General Buffer48General battlerage.

A reserve is a floor, not a cost: a rage in a category is only allowed to spend while your rage is above the matching reserve. These are read by the rage gates through ctx.battlerage.{shieldBuffer, ccBuffer, generalBuffer}.

Live battlerage state

Beyond the reserves, the rage gates read live flags each tick via ctx.battlerage:

FactMeaning
balanceYou are on battlerage balance (ready to use a balance-consuming rage).
freerageThe free-rage defence is up — rage ignores cost and reserves.
maticAutomatic curing is active — battlerage is suppressed.
razeReadyA battlerage raze is legal right now (so the balance-raze stands down).

nexBash keeps these current by reading the game's own recovery lines and GMCP. Recovery text like "You can use another Battlerage ability again…" is folded into the owned battlerage state through the observe boundary, and each named ability's individual cooldown is tracked the same way.

Coupling: when a rage fires

A rage's coupling decides its timing:

  • preAttack — fires before the attack on the same prompt. Razes and the sensitivity opener use this so the attack lands into the new state.
  • auto — fires autonomously on a rage/freerage change, independent of the attack.

Rage and razing shields

When a target raises a shield, nexBash can break it in two ways: wait it out, or spend rage to raze. The Use rage to raze option (Options) enables the rage path, gated by the Shield Buffer so it won't starve a more important rage. If a battlerage raze is queued, the balance-raze path stands down (ctx.battlerage.razeReady) so the shield isn't double-handled. Pair this with the Swap on shield option and per-NPC Can Shield / Can Raze flags to control shield behavior precisely.

Inspecting battlerage

nexBash.state.battlerage;
// { balance, shieldBuffer, ccBuffer, generalBuffer }

nexBash.debug();
// logs each battlerage candidate with its rage cost, availability, and balance