A shield is the one piece of armour you hold, and it protects you exactly as much as
you are currently holding it up. Raised, its points apply to what it covers and it can
parry on a new Shield skill. Lowered, it is weight. The price of keeping it up is that
it occupies a hand and you are shooting around it: -20% to your own ranged attacks,
printed on the card like everything else. Only one shield goes up at a time.
Seven of them, 2-point buckler to 6-point ballistic shield; the pavise and barrier
plate cover legs too because they are walls you carry.
`degradation` finally does something — it has been on every armour item since the packs
were first built and was read by nothing. A blow costs the shield a point of wear for
every step it stood above an ordinary success, so an ordinary hit costs nothing, a
special 1 and a critical 2. At its limit it comes apart, drops, and will not be raised
again.
Two defects found by driving the real functions rather than reading the diff, both
introduced by this change:
- Every shield defence quietly rolled DODGE. "shield" passed through
defenceTypeAllowed unchanged, so neither parry branch matched and it fell through.
Invisible in the card; it showed up as eight rolls at a supposed 85% returning six
failures. Taking a blow on the shield IS a parry, so it is now a flag on a parry
rather than a defence type of its own.
- The wear rule was unreachable: it fired only on a clean stop, but under graded
defences only a critical fully stops a critical, so a shield would never have taken
a scratch. Wear is for what the shield ABSORBED — dragging a critical down to a
special is exactly when shields splinter.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Asking for the type of armour per location turned out not to be a display request.
Every equipped piece added its points to EVERY location, so a Brodie helmet protected
your shins and a cuirass protected your skull — with a catalogue containing sallets,
lobster-tail helmets and three cuirasses, that could not be printed without the sheet
saying something visibly false.
Armour now declares coverage as a named set rather than a list of locations, because a
piece has to fit whatever body wears it: all, torso, torsoArms, torsoLimbs, head. The
sets expand to location KINDS, so a cuirass covers a baseline torso and a vesh trunk
and ridge without either knowing the other exists. Unstated coverage is `all`, so
anything that does not declare behaves as everything did before. Eighteen of the
twenty-five catalogue pieces are not whole-body and now say so.
The trap was double counting: hitLocationRoll subtracted the global worn total PLUS
the body's own armour at that location, which was right while armour was global and
becomes a double count the moment a location knows its own pieces. It reads the
location's total and nothing else, verified by firing fourteen hits of 10 damage
across every location and asserting damage applied == 10 - that location's armour.
A single ARMOUR number no longer exists, so the header shows the torso with "0-8 by
location" beside it when the rest of you is not that. This is a real difficulty
change: limbs are frequently bare and limbs are 12 of 20 on the melee table.
Coherence moves out of the derived strip into the vitals at hit-point size, with its
band under it and the box reddening as it falls.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was no way to ready a weapon. The strip under the characteristics reads
`equipped`, and the only toggle-equipped control on the sheet was on the ARMOUR list —
a weapon could only be readied by opening its item sheet and finding the tickbox
there. The weapons table now carries the same toggle, the row is tinted when readied,
and a line above the table says what the control does.
The tab runs in the order it is used: weapons, armour, defend, reaction, body last.
Weapons lead with 40px art and a display-face name, having previously sat below two
screens of anatomy and reaction arithmetic.
The figure is a partial, drawn in three places — header thumbnail, combat tab, anatomy
tab. Three inline copies would have been the template-layer version of the defect
check-rules exists to prevent: a location present in one drawing and missing from
another.
The header carries a 34px figure and every location with its damage and the armour
over it, so "how much armour is on the part that just got hit" is answered on the main
page without changing tab.
Also fixed: `.ringbrp-sheet a` outranks a bare `.rb-equip`, so an unequipped toggle was
painted white and read as lit — true of the armour toggle too, since it was added.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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>
R-223: nothing happened at 0 hit points. An agent was marked down and lay there
forever; the only mention of death in the system was flavour text on a destroyed
head. Zero now starts a clock whose length is the agent's own Major Wound
threshold, ticked from the same hook that charges blood loss. First Aid or
Medicine stabilises and stops the count; healing above zero clears it; heal()
refuses the dead. On death, Coherence decides what the record says — from a
proper death in service down to not being recorded as dead at all.
Case generator: four phases instead of five (the arc drew two interchangeable
middles that read as padding). The brief now leads with Where / When /
Classification / Phases, states the opposition in full, and has a "How you get
back" section. place and duration were generated and never printed. The same
facts are on the case file itself. 300 seeds checked for object leaks; one found
and fixed (group taboo/desire are objects with .text).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Since 0.6.1:
- VEHICLES as their own Item type: crew, seats, cargo, hull, armour, range,
terrain and the skill that works them, with speed as a band. 14 of them, from
the pool car and the Custodian van to a sealed crawler and the carriage that is
already parked outside wherever you were going to go.
- STORES roughly doubled to 118 gear items across four eras — standing issue and
paperwork, transport stores, and the forward stores Registry will not hand a
probationary officer. Catalogue now 175 items, 231 icons.
- Agents leave creation properly equipped: standing issue, the posting's kit,
what seniority adds, and one personal effect that is theirs and not the
department's.
- All 25 postings now describe themselves in the creation dialog.
- BORROWED AUTHORITY, the access subsystem. No hacking skill and nothing to break
into: access is a named credential with a scope, a Trust that erodes, and red
flags describing how its real owner behaves. Inside scope there is no roll. Two
tiers beyond is impossible at any skill. Coherence widens a record, and pushing
one past what its Trust will carry merges your file with theirs.
- Defences graded by level, and damage now rolls at the level a blow landed at.
- Dodge's DEX x 2 base is finally evaluated; it read 0% for most postings.
- Brawl is a fallback rather than a peer of the weapon in hand.
- check-lang guard: one key that was both a value and a branch silently
un-localised the entire system.
- The case generator is reachable from the Actor Directory, and no longer puts
every character in the world on a new case.
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>