Perfection pass: complete level-up/build flows + dying polish

Second adversarial audit of the freshly-shipped code; fixed bugs + completeness gaps.

- abilityBuild stays in sync with totals on level-up (appendLevelIncreases)
- 5e feat picker in level-up; PF2e feat-name autocomplete; expertise sets ranks
- Higher-level creation collects PF2e skill increases + 5e expertise
- PF2e heritage: schema field, wizard picker, sheet, Pathbuilder import
- 5e Hit Dice as a tracked resource (half-level long-rest recovery via recoverStep)
- Dying flow: knockout sets HP 0, stays unconscious at 0 HP, healing wakes +Wounded,
  Heroic Recovery (spend hero points); damage-while-dying + recovery reminders (pf2e)
- Healing caps at effective max (drained/exhaustion-4) on sheet, tracker, and rest;
  massive-damage death uses effective max; persistent-damage badge
- UX: in-place valued-condition steppers, point-buy budget caps, prepared-vs-known
  spell guidance, granted skills in review, system-gated score generator

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 20:37:01 +02:00
parent 4ee004e25f
commit 8fd530df73
21 changed files with 609 additions and 69 deletions
+7
View File
@@ -109,6 +109,13 @@ export function deriveState(system: SystemId, baseSpeed: number, conditions: Con
extraBadges.push('Quickened (+1 action)');
continue;
}
// --- pf2e Persistent Damage: the human rolls it; we surface the procedure. ---
if (system === 'pf2e' && name === 'persistent damage') {
extraBadges.push(cond.value
? `Persistent damage ${cond.value} (apply at end of turn, then DC 15 flat check to end)`
: 'Persistent damage (apply at end of turn, then DC 15 flat check to end)');
continue;
}
const eff = table[name];
if (!eff) continue;