Skip to content

A failed Check or Save should gain 1 Stress (18.1, 18.2) #199

Description

@nmbradley

§18.1 (Stat Checks) and §18.2 (Saves) both end the same way:

"Otherwise, you fail and gain 1 Stress."

The sheet does not do this. checkComputed in src/ts/rules/rollTemplate.ts grades the roll and writes no Stress at all. Today only two things grant it: a missed attack (§28.1, added in #51) and a failed Rest Save (§20.2). A failed Strength Check costs nothing — which is most of the rolls made on the sheet.

Work

A failed Stat Check or Save gains 1 Stress, broadcast as part of the roll template so the card shows it happened rather than the value silently changing.

The pattern already exists: rollAttack grades with gradeAttack, applies the Stress through applyStressDelta, and posts the result. This generalises that to every check.

  • The grading belongs in a pure function alongside gradeAttack.
  • The card should name the Stress gained, the way the attack card already says "Attack Failed: Gain 1 Stress".
  • Applies to Critical Failures too — they are failures.

Watch the interactions

  • Stress has a maximum, and overflow above it reduces a Stat or Save (§20, Stress overflow above the maximum is silently discarded #182). applyStressDelta already handles both; route through it and do not clamp separately.
  • NPCs must not gain StressisNpcSheet exists for exactly this and already gates the attack path (NPC attacks should not grant Stress #147). The same gate applies here.
  • Ship checks already announce Stress they cannot apply (shipFailureAlert) because a ship cannot write to a crew member's sheet. Do not double up on those.
  • Does the Rest Save's own failure Stress double with this? §20.2 says a failed Rest Save gains 1 Stress; §18.2 says a failed Save gains 1 Stress. Decide whether that is one Stress or two and say which, with the reasoning — do not let it fall out of the implementation by accident.

Constraints

  • Never use Promises or await in this legacy sheet's code; only startRoll may be awaited. Stress is read and written after the roll resolves, in a getAttrs callback — see rollAttack.
  • applyStressDelta is deliberately the single place Stress is written. Keep that.
  • Append any new phrase to TEMPLATE_PHRASES; never reorder it.
  • Lands in the same function as the Panic-on-Critical-Failure ticket. Take both together or they will conflict.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    1e1e RulesetmajorBroken or blocking

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions