From bf2301f04d48d1a82df8c7a4e70e843203470ffe Mon Sep 17 00:00:00 2001 From: Matthew Huntington Date: Tue, 24 Feb 2026 19:52:36 -0500 Subject: [PATCH] fix wounded: only applies when first gaining dying, not on increases Wounded adds to the initial dying value when knocked to 0 HP, but does not affect recovery check failures or damage taken while already dying. Fix simulator logic, diagram labels, and reference text accordingly. Co-Authored-By: Claude Sonnet 4.6 --- dying.html | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/dying.html b/dying.html index 6064ede..06e68ec 100644 --- a/dying.html +++ b/dying.html @@ -215,7 +215,7 @@

Dying Flow Chart

-

State transitions for player characters — W = Wounded value added to every dying increase

+

State transitions for player characters — W = Wounded value added only when first gaining the Dying condition

Alive
@@ -246,9 +246,9 @@ flowchart TD DX -->|"Crit Success \n· dying−2 \n· +Wounded"| UNC DX -->|"Success \n· dying−1 \n· +Wounded"| UNC - DX -->|"Failure \n· dying+1+W"| DX - DX -->|"Crit Fail \n· dying+2+W"| DX - DX -->|"Take dmg \n· dying+1+W or +2+W"| DX + DX -->|"Failure \n· dying+1"| DX + DX -->|"Crit Fail \n· dying+2"| DX + DX -->|"Take dmg \n· dying+1 or +2"| DX DX -->|"dying ≥ threshold"| DEAD DX -->|"Healing 1+ HP \n· +Wounded"| ALIVE DX -->|"Hero Points \n· Wounded unchanged"| UNC @@ -262,7 +262,7 @@ flowchart TD

Key Rules

  • Recovery Check is a flat check (no modifiers) with DC = 10 + current dying value, made at the start of each turn while dying.
  • -
  • Wounded is added to every dying value increase — being Wounded 2 and failing a recovery check means dying increases by 3 (1+2).
  • +
  • Wounded is added only when you first gain the dying condition — being Wounded 2 when knocked to 0 HP means you start at Dying 3 (1+2). It does not affect recovery check failures or damage taken while already dying.
  • Doomed X reduces your death threshold from 4 to (4−X). Doomed 1 means dying 3 kills you. Decreases by 1 per full night’s rest.
  • Heroic Recovery: Spend all Hero Points at the start of your turn or when dying would increase. You lose the dying condition and stabilize at 0 HP. Wounded does not increase from this.
  • Nonlethal KO: Reduced to 0 HP by a nonlethal attack causes Unconscious with no dying condition. You wake naturally after 10+ minutes.
  • @@ -471,34 +471,30 @@ flowchart TD function recoveryWorsen(base) { var old = simDying; - var total = base + simWounded; - var newDying = old + total; + var newDying = old + base; var threshold = deathThreshold(); - var wNote = simWounded > 0 ? ' (+' + simWounded + 'W = +' + total + ' total)' : ''; if (newDying >= threshold) { simState = 'DEAD'; simDying = 0; simHistory.push({ state: 'DEAD', dying: 0, via: 'Recovery Check Failed' }); - return { msg: 'Dying ' + old + ' + ' + total + wNote + ' = Dying ' + newDying + ', reaching the death threshold of ' + threshold + '. You die.' }; + return { msg: 'Dying ' + old + ' + ' + base + ' = Dying ' + newDying + ', reaching the death threshold of ' + threshold + '. You die.' }; } simDying = newDying; simHistory.push({ state: 'DYING', dying: newDying, via: 'Recovery Check Failed' }); - return { msg: 'Dying ' + old + ' + ' + total + wNote + ' = Dying ' + newDying + '. Recovery DC is now ' + (10 + newDying) + '.' }; + return { msg: 'Dying ' + old + ' + ' + base + ' = Dying ' + newDying + '. Recovery DC is now ' + (10 + newDying) + '.' }; } function dyingWorsen(base, label) { var old = simDying; - var total = base + simWounded; - var newDying = old + total; + var newDying = old + base; var threshold = deathThreshold(); - var wNote = simWounded > 0 ? ' (+' + simWounded + 'W = +' + total + ' total)' : ''; if (newDying >= threshold) { simState = 'DEAD'; simDying = 0; simHistory.push({ state: 'DEAD', dying: 0, via: label }); - return { msg: 'Dying ' + old + ' + ' + total + wNote + ' = Dying ' + newDying + ', reaching the death threshold of ' + threshold + '. You die.' }; + return { msg: 'Dying ' + old + ' + ' + base + ' = Dying ' + newDying + ', reaching the death threshold of ' + threshold + '. You die.' }; } simDying = newDying; simHistory.push({ state: 'DYING', dying: newDying, via: label }); - return { msg: 'Dying ' + old + ' + ' + total + wNote + ' = Dying ' + newDying + '.' }; + return { msg: 'Dying ' + old + ' + ' + base + ' = Dying ' + newDying + '.' }; } // ── Actions ─────────────────────────────────────────────────── @@ -618,8 +614,7 @@ flowchart TD getOutcomes: function() { var t = deathThreshold(); var csR = simDying - 2, sR = simDying - 1; - var fR = simDying + 1 + simWounded, cfR = simDying + 2 + simWounded; - var wL = simWounded > 0 ? '+' + simWounded + 'W' : ''; + var fR = simDying + 1, cfR = simDying + 2; var dead = ' \u2192 Death'; var stable = ' \u2192 Stabilize'; return [ @@ -627,27 +622,26 @@ flowchart TD action: function() { return recoveryImprove(2); } }, { label: '✓ Success \u2014 dying−1 = Dying ' + Math.max(0,sR) + (sR <= 0 ? stable : ''), action: function() { return recoveryImprove(1); } }, - { label: '✗ Failure \u2014 dying+1' + (wL ? '+' + wL : '') + ' = Dying ' + fR + (fR >= t ? dead : ''), + { label: '✗ Failure \u2014 dying+1 = Dying ' + fR + (fR >= t ? dead : ''), action: function() { return recoveryWorsen(1); } }, - { label: '✗✗ Critical Failure \u2014 dying+2' + (wL ? '+' + wL : '') + ' = Dying ' + cfR + (cfR >= t ? dead : ''), + { label: '✗✗ Critical Failure \u2014 dying+2 = Dying ' + cfR + (cfR >= t ? dead : ''), action: function() { return recoveryWorsen(2); } }, ]; }, }, { name: 'Take Damage While Dying', - hint: 'Any damage while dying increases dying value (+W)', + hint: 'Any damage while dying increases dying value', needsRoll: true, rollLabel: 'Was the hit a critical?', getOutcomes: function() { var t = deathThreshold(); - var nR = simDying + 1 + simWounded, cR = simDying + 2 + simWounded; - var wL = simWounded > 0 ? '+' + simWounded + 'W' : ''; + var nR = simDying + 1, cR = simDying + 2; var dead = ' \u2192 Death'; return [ - { label: 'Normal hit \u2014 dying+1' + (wL ? '+' + wL : '') + ' = Dying ' + nR + (nR >= t ? dead : ''), + { label: 'Normal hit \u2014 dying+1 = Dying ' + nR + (nR >= t ? dead : ''), action: function() { return dyingWorsen(1, 'Take Damage'); } }, - { label: 'Critical hit or critical failure \u2014 dying+2' + (wL ? '+' + wL : '') + ' = Dying ' + cR + (cR >= t ? dead : ''), + { label: 'Critical hit or critical failure \u2014 dying+2 = Dying ' + cR + (cR >= t ? dead : ''), action: function() { return dyingWorsen(2, 'Critical Hit'); } }, ]; },