Skip to main content

Events

nexBash communicates over the Nexus eventStream global — the canonical listener interface for cross-package integrations. Other packages subscribe the same way they would to any Nexus topic:

eventStream.registerEvent(
"nexbash4.target.selected",
(target) => {
console.log("nexBash engaged", target.name);
},
{ id: "my-package:target-selected", tags: ["my-package"] },
);

All listeners nexBash itself registers are tagged ["nexBash"] (plus a more specific tag) so they can be bulk-removed across machine restarts, strategy switches, and area changes.

Topics nexBash emits

These nexbash4.* topics are nexBash's outbound contract. An integration may rely on them.

Target and combat

TopicPayloadEmitted when
nexbash4.target.selectedthe chosen target objectA target is selected to engage.
nexbash4.target.gotShieldthe targetThe active target raised a shield.
nexbash4.npc.lostShieldthe razed NPCA combatant's shield came down (raze or observed loss).
nexbash4.target.lostnoneThe active target left the room or died.
nexbash4.target.slainnoneThe active target was killed.

Area and run

TopicPayloadEmitted when
nexbash4.started{ area }A run went live. Fires once per run (not on an actor-reuse restart), so it pairs 1:1 with nexbash4.stopped.
nexbash4.stopped{ area, summary }A run went inert on any route — manual stop(), a STOP event, or area-clear self-completion. Fires once per run; summary is the final { kills, gold, elapsedMs } scoreboard.
nexbash4.area.clearedthe active AreaThe bashing run completed (for routed areas). Precedes the run's nexbash4.stopped.
nexbash4.room.clearedGMCP.Room.InfoThe current room holds no targets — a fresh room with nothing spawned yet, or the last target just died. Fires every time checkingForTargets confirms this, so it may repeat for the same room.
nexbash4.discovery.recorded{ areaKey, areaName, npc, field, value, source }A new mob observation was recorded mid-run, such as an observed damage range.
nexbash4.discovery.report{ reason, area, discoveries }A run ended (reason is "manualStop" or "areaClear"); reports the run's discoveries.
nexbash4.quest.chain.completenoneA scripted quest chain finished.

Effect timers

The transient-effect expiry timers (bloodcloak, maya, deathcape) emit a scoped lifecycle topic per timer id:

TopicEmitted when
nexbash4.timer.started.<id>The timer started or re-armed.
nexbash4.timer.reset.<id>The timer was reset.
nexbash4.timer.stopped.<id>The timer elapsed (the effect winds down).

<id> is bloodcloak, maya, or deathcape. nexBash listens to its own *.stopped.<id> topics to mark the matching effect unavailable.

Topics nexBash reacts to

nexBash is primarily a consumer of host state. It subscribes to the following topics from nexSys4, nexMap, and the raw Nexus/GMCP stream. These are listed for context — they are owned by those packages, not by nexBash.

Always-on (application level)

TopicnexBash's reaction
nexsys4.system.class.changedRe-select the class strategy.
nexmap4.area.changedResolve and apply the area for the new location.
IRE.Misc.AchievementUpdate the session kill count and re-arm effect timers.
IRE.Target.InfoUpdate the active target's HP.
nexSkillMatch.<skill>Track crowd-control landing on a target (stormbolt, dilation, ague, scorch, psidaze, deaden, temperance, stagnate, cleanseaura).
nexsys4.aff.got / nexsys4.aff.lostDrive the bloodcloak → bloodshield automation.
nexsys4.def.got.bloodshield / .lost.bloodshieldDrive the bloodcloak automation.
PromptEventOne-shot Loki affliction probe and gold collection.
nexbash4.target.selectedPre-draw morimbuul and run per-area target customizations.

Combat-scoped (only while a run is live)

The bash machine subscribes these only in its combat state and tears them down on exit:

TopicnexBash's reaction
PromptEventPer-prompt attack selection.
battlerageUpdate / nexsys4.def.got.freerage / nexsys4.system.rage.changedRe-run autonomous battlerage selection.
nexSkillMatchTrack razes and battlerage ability/balance consumption.
IRE.Display.ButtonActionsTrack per-ability battlerage availability.
nexsys4.item.room.added / .removedDetect a mob entering or the target leaving/dying.
nexmap4.room.changed / nexmap4.pathing.start / nexmap4.pathing.completeDrive room re-scan and pathing updates.
Room.PlayersRe-evaluate room contest and target count.
nexsys4.system.paused / .unpausedPause / resume the run.
nexsys4.def.got.shield / .got.prismatic / nexsys4.aff.got.aeonSuspend offence and clear offence queues.

Contract notes

  • battlerageUpdate is an internal signal nexBash raises to poke its own rage re-evaluation; it is not a nexbash4.* topic and is not a stable integration point.
  • Effect-timer topics are scoped by id; subscribe to the specific nexbash4.timer.stopped.bloodcloak form, not a wildcard.
  • nexBash never freezes, clones, or deletes from the global GMCP object — it is the shared source of truth for the whole client.