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
+1 -5
View File
@@ -1,5 +1 @@
2026/08/11-10:01:07.588947 176d23000 Recovering log #6
2026/08/11-10:01:07.589575 176d23000 Level-0 table #8: started
2026/08/11-10:01:07.589919 176d23000 Level-0 table #8: 31649 bytes OK
2026/08/11-10:01:07.590195 176d23000 Delete type=0 #6
2026/08/11-10:01:07.590234 176d23000 Delete type=3 #4
2026/08/11-10:29:47.357907 170c97000 Delete type=3 #1