Files
pf1e-simulator/docs/data-formats/pc-sheets.md
T
ctan f61fc5c61f docs: reorganize documentation structure
- Clean README.md with installation, usage, CLI, examples
- Move data formats to docs/data-formats/ (map.md, monster.md, pc-sheets.md, index.md)
- Move architecture to docs/architecture/ (index.md, technical-architecture.md, phase-2-llm-architecture.md)
- Add contributing guidelines in docs/contributing.md
- Clean README.md: install, usage, CLI, data-formats/rules/architecture links, contributing link
2026-09-26 20:12:05 +02:00

53 lines
2.5 KiB
Markdown

# Fiches de personnages (PJ)
Les PJ sont définis au format JSON (schéma `Combatant`) dans `data/pcs/`. Huit fiches
sont fournies : `esha.json`, `harvie.json`, `ierlieth.json`, `jeanne.json`,
`misty.json`, `nairda.json`, `oni.json`, `tammara.json`.
Elles se passent directement à la CLI comme les monstres :
```bash
uv run pf1e-sim --map data/maps/sample_arena.yaml \
--side players data/pcs/oni.json \
--side monsters data/pcs/tammara.json --runs 200
```
## Format JSON
Le schéma est identique aux monstres (voir [`monster.md`](monster.md)), avec
ces particularités PJ :
- `source` : pointe vers la fiche Foundry VTT d'origine sous `fiches_personnages/`
(ex: `"fiches_personnages/oni.foundry.json"`).
- `spell_slots` : budget d'encounter (pas progression RAW — voir note ci-dessous).
- `spells` : noms de sorts connus (doivent exister dans `data/spells/`).
- `features` : noms de capacités de classe / dons (résolus par le chargeur).
- `carried_items` : objets volables (filtrés depuis l'inventaire Foundry per APG *Steal*).
## Note importante : `spell_slots` = budget d'encounter
Le champ `spell_slots` est une valeur **finale** par encounter. Le moteur ne calcule
**jamais** les sorts bonus de caractéristique d'incantation élevée (SRD Table 1-3).
Les éventuels sorts bonus doivent être **encodés dans le JSON par l'auteur**.
Preuve : les fiches PJ actuelles encodent la table de classe de BASE sans bonus.
Exemple : Oni (clerc 4, SAG 18) → `{"1":4, "2":3}` = table de base 4/3,
alors que le RAW avec bonus serait 5/4. Le liche (INT 20, niveau 11) porte
`{"1":4, "2":4, "3":4, "4":4, "5":4, "6":3}` qui ne correspond à AUCUNE table
RAW — les slots sont donc un budget d'encounter authored, pas une progression RAW.
Conséquence assumée : les PJ incanteurs tiennent moins de sorts par encounter
que le RAW ne le permettrait.
## Fiches Foundry (source)
`fiches_personnages/` contient les 8 fiches au format Foundry VTT
(`pf1-sheet/v1`) ; le chargeur `loaders/foundry.py` sait les lire. C'est un
outil de migration **one-shot et incomplet** : il ne reproduit pas les corrections
manuelles/SRD appliquées aux JSON (drapeaux `natural`/`secondary`/`firearm`,
allonge sabots Jeanne 10 ft, vol Ierlieth 40 ft, morsure Misty 1d6, dons au-delà
de 8 entrées, `spell_slots`/`resources`/`casting_ability`).
> **`data/pcs/*.json` est la référence canonique des PJ.** Ne pas régénérer
> depuis `foundry.py` sans réappliquer les corrections SRD consignées dans
> [`docs/rules/conformance-srd.md`](conformance-srd.md).