No-shortcuts pass on the class feature/choice engine, and PF2e brought level with 5e.
5e subclass depth (subclass.5e.ts):
- SUBCLASS_PROGRESSION_5E: per-level features for ~22 subclasses (SRD cores + popular),
and subclass-specific CHOICES — Battle Master maneuvers (3/5/7/9 by level), Arcane Archer
shots, Rune Knight runes, Way of Four Elements disciplines, Hunter's selectable features
(Hunter's Prey/Defensive Tactics/Multiattack/Superior Defense), Totem Spirit, Dragon
Ancestor. collectFeatures5e now expands the chosen subclass into its real features.
PF2e feature/choice engine (data.pf2e.ts) — full parity:
- CLASS_PROGRESSION_PF2E: signature features by level for all 24 classes.
- Universal choices generated for every class: Class feats (per-class levels incl. the
1st-level martial feat), Skill feats (even levels), General feats (3/7/11/15/19),
Ancestry feats (1/5/9/13/17), plus the 1st-level subclass (Instinct/Doctrine/Bloodline/
Racket/…) from PF2E_SUBCLASSES with options.
Engine generalized: collectChoices(system)/collectFeatures(system) dispatch 5e vs pf2e;
ClassFeaturesSection now renders for BOTH systems (pf2e subclass resolves via choices[]).
Verified in-app: PF2e Barbarian 5 → Instinct (6 options) + Class(3)/Skill(2)/General(1)/
Ancestry(2) feats = '9 to choose' + Rage/Deny Advantage; selecting Dragon Instinct resolves
and shows as a feature. 5e Fighter+Battle Master → Maneuvers (choose 3) + Combat Superiority.
352 tests green (+ pf2e & subclass suites), build OK.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A character's class choices were never prompted (the user's example: a Warlock must
choose a Pact Boon + Eldritch Invocations). Now:
- CLASS_PROGRESSION_5E authors all 12 classes' features by level AND every decision point:
Fighting Style, Pact Boon, Eldritch Invocations (count grows by level), Metamagic,
Expertise, Favored Enemy/Terrain, with full option lists.
- collectChoices5e / collectFeatures5e compute, across a (multiclass) character's classes,
exactly which choices are unlocked (and how many to pick at the current level) and which
features are gained. Subclass selection (classes editor) and ASI/feat (builder/level-up)
are handled elsewhere and excluded. Unit-tested incl. the Warlock pact example.
- New 'Class Features & Choices' sheet section lists features by level and presents a picker
per unlocked choice, with a 'N to choose' badge so nothing is missed. Resolved choices
persist (character.choices, v17 migration).
Verified in-app: Fighter 3 / Warlock 5 surfaces Fighting Style (1), Pact Boon (1), Eldritch
Invocations (3) + Pact Magic feature; selecting one drops the pending count. 346 tests green
(7 new), build OK.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>