Shields: armour you raise, and the only armour you can defend with
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>
This commit is contained in:
co-authored by
Claude Opus 5
parent
016ea1c4ab
commit
c61700566c
@@ -4521,3 +4521,52 @@ on the first attempt and landed on the second, staunched the bleeding, healed 3,
|
||||
`reviveIfHealed` took Plated out of the dying state without being asked. My harness
|
||||
then called `tickDying` on a revived character and read `.state` off the null it
|
||||
correctly returned — the rule was right and the probe was wrong.
|
||||
|
||||
## Shields — armour with a switch
|
||||
|
||||
A shield is the one piece of armour you *hold*, and it protects you exactly as much as
|
||||
you are currently holding it up. Everything interesting follows from that switch
|
||||
having a cost, so the design is: raised it is armour and a defence, lowered it is
|
||||
weight, and the price of keeping it up is that it occupies a hand and you are shooting
|
||||
around it.
|
||||
|
||||
* **Raised** — its points apply to what it covers, and it is the only armour you can
|
||||
also defend with, on a new **Shield** skill.
|
||||
* **Lowered** — nothing. Verified: heater shield slung reads 0 on every location,
|
||||
raised reads 4 on torso and both arms and 0 on legs and head.
|
||||
* **The cost** — −20% to your own ranged attacks while it is up, printed on
|
||||
the card as plainly as anything else: *"Heater shield −20%"*. That is what stops
|
||||
"always raised" being the only answer; it is obviously right for a containment
|
||||
officer and obviously wrong for a marksman.
|
||||
* **Only one goes up.** Raising a second lowers the first. Two shields is not a stance.
|
||||
|
||||
Seven of them, from a 2-point buckler to a 6-point ballistic shield, with the pavise
|
||||
and the barrier plate covering legs as well 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. Shields wear: a blow costs the shield a
|
||||
point for every step the attack stood above an ordinary success, so an ordinary hit
|
||||
costs it nothing, a special costs 1 and a critical costs 2. At its limit it comes apart
|
||||
— no points, nothing to parry with, and it drops out of your hand and refuses to be
|
||||
raised again.
|
||||
|
||||
### Two defects found by testing it rather than reading it
|
||||
|
||||
**R-244. Every shield defence quietly rolled Dodge.** I added `"shield"` as a third
|
||||
defence type and passed it through `defenceTypeAllowed`, which returned it unchanged —
|
||||
so `kind` was `"shield"`, neither of the `kind === "parry"` branches matched, and the
|
||||
function fell through to the dodge branch. It was invisible in the chat card and only
|
||||
showed up as a statistical smell: eight rolls at a supposed 85% produced six failures.
|
||||
Taking a blow on the shield **is** a parry — it locks with parries and is not a dodge —
|
||||
so the shield is a flag on a parry rather than a type of its own.
|
||||
|
||||
**R-245. The wear rule was unreachable.** I first wrote it to fire only when the shield
|
||||
turned a blow aside *completely*. But under graded defences only a critical fully stops
|
||||
a critical, so a shield would have gone its entire service life without a scratch. Wear
|
||||
is for what the shield **absorbed**: a shield that drags a critical down to a special
|
||||
has very much taken that blow, and that is exactly when shields splinter. Ten forced
|
||||
criticals produced zero wear under the first rule; under the corrected one the shield
|
||||
went 0 → 2 → 4 → broken in three absorbed blows.
|
||||
|
||||
Both were mine, both were introduced in this change, and both were found by driving the
|
||||
real functions rather than by reading the diff.
|
||||
|
||||
Reference in New Issue
Block a user