Selectable fire, with the modifiers on the choice
Every weapon has carried a fireMode since the packs were first built and nothing
read it: a musket could rip a ten-round burst and "rapid" bought a weapon nothing.
FIRE_MODE now gates the burst rules and carries its own attack modifier — slow +10%
and then you work for the next one, fast a second shot at -20% to both, rapid
bursts, beam +5% and it can be held on the target for damage instead of hits. The
gate lives in burstAttack too, so no macro can route round it. `fast` was on five
catalogue weapons and was not in the system's list of modes at all, so re-saving one
of them silently blanked it; the list is derived from the rule now.
burstAttack shipped complete and was reachable from nothing. It is the resolution
path the selector chooses, and takes the dialog's whole stack rather than charging
the player twice for the same burst.
Sights and lamps that apply themselves
A sight is graded by range band, so a telescopic sight is a -10% liability inside
ten metres and worth +20% at extreme, and it only counts if it fits. The band is
already known when the modifier is wanted, so nothing is selected and nothing is
forgotten. The dark costs something now; a carried lamp buys it back to dim, never
to daylight, and the card says it shows them exactly where you are. A migration
fits gear that predates the fields, matched on the stamped key rather than by name.
The damage card
The last card still wearing Foundry's stock dice styling — it posted a bare Roll and
let the core template dress it. It renders through the module's own card now, with
the Roll still on the message so dice stay inspectable.
A rail instead of a strip
Eight tabs across an 820px sheet compressed to 11px type. They run down the side
now, one line each, with counts as badges; the sheet is 152px wider to pay for it.
Also fixed: any weapon with a Coherence cost could not be attacked with AT ALL — the
handler re-read the weapon after an await, when currentTarget is already null, and the
attack died on a TypeError with nothing shown. And the duplicate-rule guard failed an
honest table because FIRE_MODE and speedBands share two key names; it wants a majority
now, and prints partial overlaps rather than swallowing them.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A Foundry VTT game system: Basic Roleplaying d100 in a drab British agency that
deals with crossings, where reality keeps a record of what belongs where and can be
made to get it wrong.
Contents:
- rules.mjs as the single authority for every rule formula, with 40 rules and 132
spot-checked values. Nothing may restate a formula it defines.
- 25 postings, each with a key characteristic, trained skills, talents and its own
kit; a 175-item catalogue across four eras; 231 generated icons.
- Reaction Lanes initiative, re-rolled every round including the first.
- Coherence, and the Quiet Arts, which only ever arrive from a crossing gone wrong.
- Graded defences: only a critical stops a critical.
- Borrowed Authority — access as a record rather than a hacking roll.
- A case generator, and a rules journal generated from rules.mjs so the book cannot
drift from the code.
Built compendia are committed so a remote Foundry needs only the files.
node_modules is not; `npm install` restores it for rebuilding content.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>