feat(combat): allow explicit movement destinations

This commit is contained in:
2026-09-10 13:21:54 +02:00
parent 468c22ff57
commit b91e1ac215
3 changed files with 446 additions and 24 deletions
+12
View File
@@ -385,6 +385,18 @@ Règles modélisées :
coût Dijkstra depuis la cible, diagonales 5-10-5), en s'arrêtant adjacent à
l'ennemi le plus proche — les combattants contournent les murs au lieu
d'osciller contre eux.
Destination explicite : `Action(kind="move", destination=(r, c))` et
`Action(kind="5foot_step", destination=(r, c))` déplacent le combattant vers
la case `(r, c)` désignée (monter au couvert, quitter un défilé, se
désengager) au lieu de auto-diriger vers `target_id`. Pour `move`, la case
doit être praticable, libre et atteignable dans le budget de vitesse (sinon
rejet `unreachable_destination`) ; le trajet réutilise la mécanique pas à pas
avec provocation d'AoO. Pour `5foot_step`, la case doit être exactement
adjacente (sinon `unreachable_destination`) et le pas ne provoque jamais
d'AoO. Sans `destination`, le comportement auto-dirigé est inchangé ; avec
`target_id` et `destination` absents, rejet `missing_target` (U1).
`default_policy` ne choisit pas de destination (disponible via une politique
personnalisée).
- Tailles et occupation multi-cases : une créature occupe un footprint carré à
son ancre (`pos`) selon sa taille — Small/Medium 1×1, Large 2×2, Huge 3×3,
Gargantuan 4×4, Colossal 6×6 (taille inconnue → 1×1). Distance, ligne