f61fc5c61f
- 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
53 lines
2.5 KiB
Markdown
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). |