Armour covers what it covers, and Coherence moves to the vitals

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>
This commit is contained in:
slaguru666
2026-08-11 10:33:04 +01:00
co-authored by Claude Opus 5
parent 3421ed4a2e
commit 6ed9ded362
118 changed files with 382 additions and 158 deletions
+44
View File
@@ -4425,3 +4425,47 @@ Noted while working: the mini figure inherited `.rb-body-svg { max-width: 180px
from further down the stylesheet and blew the header out to 385px tall. Same-specificity
selectors, later one wins; the compound `.rb-body-svg.rb-body-mini` fixes it. Worth
remembering that this stylesheet is ordered by section rather than by specificity.
## R-243. A helmet was protecting your legs
Asking for "armour and the type of armour" on each 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 that contains sallets, lobster-tail helmets and three separate cuirasses
that is not a simplification, it is wrong — and it could not be printed on the sheet
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 is wearing it: `all`, `torso`, `torsoArms`,
`torsoLimbs`, `head`. The sets expand to location *kinds*, so a cuirass covers the
torso of a baseline agent and the trunk and ridge of a vesh without either the item or
the wearer knowing the other exists. Unstated coverage is `all`, so anything that does
not declare behaves exactly 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 `sys.armourPoints +
loc.armour` — the global worn total plus the body's own armour at that location.
That was correct while armour was global and becomes a double count the moment the
location knows its own pieces. It now reads the location's total and nothing else,
checked by firing fourteen hits of 10 damage at every location and asserting the
damage applied equals `10 − that location's armour` each time. All fourteen matched.
**A single ARMOUR number no longer exists**, so the header shows the torso — which is
what the question means, and where most hits land — with `0–8 by location` beside it
when the rest of you is not that. Worked example from the verification: stab vest,
cuirass and a Brodie helmet gives 8 on the torso, 3 on the head and **0 on both arms
and both legs**, where before it was 11 everywhere.
**This is a real difficulty change and it is meant to be.** Agents in partial armour
are markedly more fragile than they were an hour ago — limbs are frequently bare, and
limbs are 12 of 20 on the melee table. Anyone who wants the old behaviour sets every
piece to `all` on its item sheet.
## Coherence, promoted
Moved out of the derived strip and into the vitals at the top right, at the same size
as hit points, with its band under it and the box itself changing colour as it falls —
yellow at Adrift, red at Unmoored and Displaced. It is the number that measures whether
an agent is still filed as themselves, and it was set in 11px grey between MOV and
carried weight.