refactor(loaders): unify combatant loader, migrate PC features/spells

Rename monster.py → combatant.py with _KNOWN_FEATS lookup table
that resolves feat name strings to AbilitySpec constants (Power Attack,
Iron Will, Toughness, Weapon Focus, etc.). Unknown feats produce
minimal AbilitySpec (data preserved for future implementation).

Migrate all 8 PC JSONs (data/pcs/) with complete feat/spell lists
extracted from Foundry sheets — including traits, racial abilities,
and all spells. Monsters (goblin, orc) unchanged (no feats/spells).

Update all imports, add backward-compatible aliases (load_monster,
MonsterLoadError), update CLI to use load_combatant.

Gate: 377 tests, ruff clean, basedpyright clean.
This commit is contained in:
2026-08-17 22:49:50 +02:00
parent e9e8c26d50
commit c88d8fd6f4
14 changed files with 421 additions and 96 deletions
+3 -3
View File
@@ -399,9 +399,9 @@ dans la résolution) :
agrégation en `EncounterReport` avec attrition par combattant.
- `cli.py` — front-end argparse `pf1e-sim`, rapport français, code de sortie 2
en cas d'erreur.
- `loaders/``foundry.py` (fiches Foundry `pf1-sheet/v1` avec extraction
automatique des dons → `AbilitySpec` et des sorts → `Combatant.spells`) et
`monster.py` (JSON de monstre).
- `loaders/``combatant.py` (chargeur unifié PJ + monstres avec résolution
des dons → `AbilitySpec` et des sorts → `Combatant.spells`) et
`foundry.py` (outil de migration one-shot depuis les fiches Foundry).
## Développement