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
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.
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-suppressedDERIVED_ACTIONSkey +ACTION_EFFECT_FN.wholenessOfBodyActionentry (a near-duplicate of the 2024 sibling) plus a frontendhealRollreading the monk class entry's own level.Two symptoms:
0d1 + 18roll label (correct total for a L6 monk, but non-idiomatic on-screen — flagged in 2014 Monk (3/7): Way of the Open Hand — Wholeness of Body, Tranquility, 2014 Quivering Palm #1733 review as a low-severity cosmetic).ACTION_EFFECT_FNentry was added where the engine-first roadmap (Epic: Declarative subclass engine + homebrew (roadmap) #416) wants pure seed data — justified only by this gap.Scope
{ flat: N }or{ count: 0 }-clean-label path — settle the shape), so a fixed heal amount resolves and renders without a0d1artifact.wholenessOfBodyAction's workaroundACTION_EFFECT_FN+ itsfallow-ignoresuppression once the engine supports the flat form; move Wholeness of Body onto pure seed data.formatRollSpecfor count=0 or use the new flat shape.Relevant code
backend/src/lib/classes/actions.ts(ACTION_EFFECT_FN.wholenessOfBodyAction, DERIVED_ACTIONS), the frontendhealRoll/formatRollSpecinturnOptions.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.