Skip to content

Engine: add flat (no-dice) heal formula support; retire Wholeness of Body's thin ACTION_EFFECT_FN workaround (#1501) #1735

Description

@Sandersland

Follow-up from #1501 (2014 Way of the Open Hand), merged to staging 2026-08-04.

Why

2014 Wholeness of Body heals a flat amount — 3 × monk level, no dice. The effect-resolution engine has no "flat, no-dice" heal formula, so #1501 worked around it with a thin, fallow-ignore-suppressed DERIVED_ACTIONS key + ACTION_EFFECT_FN.wholenessOfBodyAction entry (a near-duplicate of the 2024 sibling) plus a frontend healRoll reading the monk class entry's own level.

Two symptoms:

Scope

  • Add a flat/no-dice heal formula to the effect engine (a RollSpec-shaped { flat: N } or { count: 0 }-clean-label path — settle the shape), so a fixed heal amount resolves and renders without a 0d1 artifact.
  • Retire wholenessOfBodyAction's workaround ACTION_EFFECT_FN + its fallow-ignore suppression once the engine supports the flat form; move Wholeness of Body onto pure seed data.
  • Fix the roll-label rendering so a flat heal shows just the number (e.g. "18"), not "0d1 + 18" — guard formatRollSpec for count=0 or use the new flat shape.

Relevant code

backend/src/lib/classes/actions.ts (ACTION_EFFECT_FN.wholenessOfBodyAction, DERIVED_ACTIONS), the frontend healRoll/formatRollSpec in turnOptions.ts, the effect-resolution engine (RollSpec).

Dependencies

Part of the declarative subclass/effect engine roadmap #416. Not a 2014-gate (#1372) blocker — the workaround is correct, just not clean.

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-refinementHas open decisions/ambiguity — refine before workingtech-debtMaintenance / paying down debt

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions