feat(combat): add saving throws (fort/ref/will, natural 1/20, effect modifiers)
This commit is contained in:
@@ -330,13 +330,18 @@ Règles modélisées :
|
||||
du premier, appliquée au jet d'attaque et à la confirmation de critique ;
|
||||
l'arme ranged reste utilisable jusqu'à 10 incréments. Les armes de jet
|
||||
(5 incréments max) ne sont pas distinguées des armes à projectiles.
|
||||
- Jets de sauvegarde : `resolve_save(state, save_type, dc)` — fort/ref/will.
|
||||
1 naturel = échec automatique, 20 naturel = succès automatique. Les
|
||||
modificateurs d'effets (`StatModifier` avec `target` correspondant) sont
|
||||
appliqués via `resolve_modifiers` (mêmes règles d'empilement que les
|
||||
attaques). Renvoie un `SaveResult` (success, roll, total, dc).
|
||||
|
||||
Non modélisé (couches `elevation`/`markers` présentes mais non appliquées
|
||||
dans la résolution) :
|
||||
|
||||
- Sorts, jets de sauvegarde, conditions et états (le système d'effets et les
|
||||
règles d'empilement sont en place via `effects.py` — l'intégration au
|
||||
moteur est en cours).
|
||||
- Sorts et conditions (le système d'effets `effects.py`, les règles
|
||||
d'empilement des bonus et les jets de sauvegarde `resolve_save` sont en
|
||||
place — l'intégration des sorts et conditions au moteur est en cours).
|
||||
- Manœuvres de combat.
|
||||
- Effets mécaniques de hauteur/élévation.
|
||||
- Tailles Large+ (2×2), allonge > 5 ft
|
||||
@@ -380,7 +385,7 @@ dans la résolution) :
|
||||
La gate de validation complète (tests + lint + types) :
|
||||
|
||||
```bash
|
||||
uv run pytest -q # 241 tests
|
||||
uv run pytest -q # 253 tests
|
||||
uv run ruff check src tests
|
||||
uv run basedpyright src # mode strict
|
||||
```
|
||||
@@ -393,11 +398,12 @@ uv run basedpyright src # mode strict
|
||||
|
||||
## Feuille de route
|
||||
|
||||
- **Phase 1** — magie et états : jets de sauvegarde, sorts modélisés comme
|
||||
effets paramétrés, conditions, manœuvres de combat, dons et capacités de
|
||||
classe. Flanquement, attaques à outrance, attaques d'opportunité, charge,
|
||||
retraite et pas de placement sont déjà modélisés. Le système d'effets
|
||||
(`effects.py`) et les règles d'empilement des bonus sont en place.
|
||||
- **Phase 1** — magie et états : sorts modélisés comme effets paramétrés,
|
||||
conditions, manœuvres de combat, dons et capacités de classe. Flanquement,
|
||||
attaques à outrance, attaques d'opportunité, charge, retraite et pas de
|
||||
placement sont déjà modélisés. Le système d'effets (`effects.py`), les
|
||||
règles d'empilement des bonus et les jets de sauvegarde (`resolve_save`)
|
||||
sont en place.
|
||||
- **Phase 2** — couche tactique LLM : stratégies en langage naturel traduites
|
||||
en politiques, balayage de matrices de positionnement.
|
||||
- **Phase 3** — rapporteur LLM local : agrégation des statistiques et
|
||||
|
||||
Reference in New Issue
Block a user