feat(cli): add --simple-monster-death option to kill monsters at hp <= 0

This commit is contained in:
2026-09-11 12:48:43 +02:00
parent b7c80babfd
commit d6c8f88f77
5 changed files with 365 additions and 4 deletions
+20 -1
View File
@@ -82,7 +82,8 @@ Rounds moyens : 6.0
```
usage: pf1e-sim [-h] --map MAP [--side NAME [FILE ...]] [--runs RUNS]
[--seed SEED] [--round-cap ROUND_CAP]
[--seed SEED] [--round-cap ROUND_CAP] [--transcript]
[--simple-monster-death]
```
| Option | Rôle | Défaut |
@@ -92,6 +93,8 @@ usage: pf1e-sim [-h] --map MAP [--side NAME [FILE ...]] [--runs RUNS]
| `--runs RUNS` | Nombre de combats simulés | `1000` |
| `--seed SEED` | Graine du générateur aléatoire | `1` |
| `--round-cap ROUND_CAP` | Plafond de rounds par combat (au-delà, combat nul) | `100` |
| `--transcript` | Imprimer le déroulé du premier combat avant le rapport | désactivé |
| `--simple-monster-death` | Mort simplifiée des monstres : `hp ≤ 0` au lieu de `hp ≤ -CON` (les PJ ne sont jamais affectés) | désactivé |
Codes de sortie :
@@ -294,6 +297,22 @@ Règles modélisées :
La mort survient quand les pv négatifs atteignent le score de CON
(`hp ≤ -CON`) — conformance P2 : la règle du −10 de D&D 3.5 n'existe pas
en PF1e et n'est plus modélisée.
- Mort simplifiée des monstres (option `--simple-monster-death`, défaut
désactivé) : quand l'option est présente dans la commande, un **monstre**
meurt dès `hp ≤ 0` — ni bande d'invalidité à 0 pv, ni bande d'agonie entre
0 et `-CON`. Les **personnages joueurs ne sont jamais affectés**, quel que
soit le réglage : ils gardent la règle PF1e complète (`hp ≤ -CON` pour
mourir, invalidité à 0 pv, agonie et stabilisation en dessous). La
distinction monstre/PJ repose sur une seule marque fiable issue du
chargeur : le champ `source` des JSON de PJ pointe vers la fiche Foundry
d'origine sous `fiches_personnages/` (convention documentée plus bas),
alors que les JSON de monstres portent des sources « Bestiary », « summon
monster » ou « bestiary » ; le nom de camp (`--side`) ne peut pas servir
de critère puisqu'il est choisi par l'utilisateur et que la carte d'exemple
oppose des monstres déployés côté `players`. Sans l'option, le comportement
du moteur est bit-identique à celui d'aujourd'hui (transcripts dorés
intacts). Équivalent Python : `run_encounter(..., monsters_die_at_zero=True)`
et `CombatEngine(..., monsters_die_at_zero=True)`.
- Invalide (conformance P2, CRB « Effects of Death ») : à `hp = 0`
exactement, une créature est **invalide** — elle reste active mais
**staggered** (une action de mouvement OU une action standard par tour, pas