Skip to main content

Options & settings

This page documents the player-tunable values and the on-disk settings shape. For the in-dialog walkthrough see the Options tab guide.

Option flags

nexBash.options holds the global boolean toggles. Defaults shown:

FlagDefaultEffect
noticestrueShow nexBash status notices (target swaps, area-cleared, nb output) in the client.
rageToRazetrueSpend battlerage to raze a target's shield instead of waiting it out.
skipNonPartyRoomstrueMove on instead of attacking when an unclaimed room already contains players outside your party.
swapOnShieldtrueWhen the current target raises a shield, switch to another valid target.
useMorimbuulfalseDraw morimbuul before engaging mobs that can web you.
loggingfalseEmit additional diagnostic log output. Dev-only; not surfaced in the dialog.

These flow into the per-tick decision context as ctx.config.*, so actions read them through the same gate they read everything else.

Battlerage reserves

nexBash.config.battlerage holds the rage buffers — how much rage to keep in reserve before a category of battlerage is allowed to spend. Defaults shown:

BufferDefaultMeaning
shieldBuffer17Rage kept available for a shield raze.
ccBuffer35Rage kept available for a crowd-control rage.
generalBuffer48Rage kept available for general battlerage.

The live "on battlerage balance" flag is runtime state, not config; the buffers above are composed with it into ctx.battlerage each tick. See Battlerage.

Persisted settings document

Settings live in the Nexus client variable store at nexusclient.variables().vars.nexBash4Settings. This is untrusted, user-editable JSON, so loading is a trust boundary: every load parses the blob through a Zod schema (tolerating loose forms — 0/1 for booleans, a scalar where a list is expected) and every save validates before writing, so a successful save always round-trips to a successful load.

Current shape (schemaVersion 2):

{
"schemaVersion": 2,
"updatedAt": "2026-06-25T12:00:00.000Z",
"options": { "notices": true, "rageToRaze": true, "skipNonPartyRooms": true, "swapOnShield": true, "useMorimbuul": false },
"battlerage": { "shieldBuffer": 17, "ccBuffer": 35, "generalBuffer": 48 },
"areas": {
// keyed by a stable areaKey derived from id (or name)
"id:137": {
"areaKey": "id:137",
"id": 137,
"name": "Tuar",
"areaTargets": ["a tuar warrior", "a tuar shaman"],
"npcs": { "a tuar shaman": { "canShield": true, "shouldCC": true } }
}
},
"strategies": {
// keyed by class id; each entry is a profile set (FEAT-05)
"magi": {
"activeProfile": "group",
"profiles": {
"default": {},
"group": { "order": { "primary": ["magi.stormhammer", "magi.erode"] } }
}
}
}
}

The snapshot is kept minimal: default-equal values, empty profile maps, and default-only classes are omitted, and activeProfile is omitted when it is the default. A persisted area entry mirrors the editable AreaSettings shape so the same schema validates a config-dialog draft.

Per-area fields

FieldMeaning
id / nameArea identity (scalar or list); areaKey is derived from these.
areaTargetsOrdered NPC names (the target priority list).
avoidTargetsNPC names whose presence makes nexBash skip the room.
npcsPer-NPC combat-flag overrides (see Area Configuration).
targetThresholdMax targets in a room before moving on.
stepDelay / startRoomOptional pacing and entry-room hints.

Per-strategy fields

A class entry is { activeProfile?, profiles }, where each profile is a sparse delta over the shipped class defaults:

Delta fieldMeaning
orderPer-lane full ordered catalog keys, present only when the lane differs from the shipped default. The order is the membership.
paramsPer-class config-knob overrides.
argsPer-action tuning overrides, keyed by catalog key then param.

A legacy v1 flat delta is tolerantly folded into { profiles: { default: <delta> } } on load. See Strategies and Profiles.

Migrations

The schema version is bumped only for shape changes, and the loader tolerates the prior shape where practical (the v1→v2 profile fold above). Because nexBash is pre-release with no installed user base, settings are not otherwise migrated.