diff --git a/README.md b/README.md index e4a041e..1b989f5 100644 --- a/README.md +++ b/README.md @@ -333,7 +333,12 @@ Règles modélisées : puis **échoue automatiquement** son jet de stabilisation (aucun d20 jeté) et perd donc 1 pv de plus par tour en plus des dégâts continus (CRB « Stable Characters and Recovery ») — elle meurt ainsi plus vite qu'une créature - mourante non saignante. + mourante non saignante. Les morts-vivants et les constructeurs n'ont pas de + score de Constitution et sont **détruits dès `hp ≤ 0`** — ni bande + d'invalidité à 0 pv, ni bande d'agonie (SRD traits « Undead » / + « Construct » : « undead do not risk death from massive damage, but are + immediately destroyed when reduced to 0 hit points or fewer ») ; le seuil + `hp ≤ -CON` ne s'applique qu'aux créatures vivantes. - 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 @@ -701,10 +706,22 @@ Règles modélisées : d'osciller contre eux. Conformance L5 (SRD « Movement, Position and Distance ») : « You can move through a square occupied by a friendly character, unless you are charging » — `move` et `run` **traversent** les - cases des alliés (les ennemis bloquent toujours le chemin), mais ne - peuvent jamais **finir** sur une case occupée : entrer sur une case alliée + cases des alliés, mais ne peuvent jamais **finir** sur une case occupée : + entrer sur une case alliée exige un prolongement libre (règle du « pass-through »), et la queue du - chemin est tronquée si le budget s'épuise sur une case alliée. La charge + chemin est tronquée si le budget s'épuise sur une case alliée. SRD + « Moving Through a Square » : « Any creature can move through a + square occupied by a creature three size categories larger than itself + [...] Creatures moving through squares occupied by other creatures + provoke attacks of opportunity from those creatures » — un ennemi séparé + du déplaceur par **trois catégories de taille ou plus** est traversé de + la même façon (jamais fini dessus : « You can't end your movement in the + same square as another creature unless it is helpless »), et l'entrée dans + sa case **provoque une AoO de l'occupant** (une seule par entrée fraîche, + plafonnée par l'allowance du round ; résolu par `_check_enter_aoo` dans la + marche pas à pas). Un ennemi à 0–2 catégories + reste un blocage total (« You can't move through a square occupied by an + opponent unless the opponent is helpless »). La charge reste bloquée par les créatures (ligne droite dégagée), comme la retraite (limite documentée : le passage à travers les alliés n'est pas modélisé pour `withdraw` et le pas de placement auto-dirigé). @@ -1583,6 +1600,23 @@ plutôt que bricolées) : en revanche deux créatures de même taille (Small et plus) ne partagent jamais une case, et la co-occupation de plusieurs Tiny sur une même case n'est pas modélisée. +- **Squeeze (se serrer dans un passage étroit) hors périmètre** (SRD + « Moving Around or Through an Open Square » / « Squeezing Through » : une + créature Large+ peut « squeeze » à travers un espace assez large pour une + créature d'une catégorie de taille en dessous, à coût de mouvement accru et + pénalités) : la largeur de corridor n'est pas modélisée par rapport à la + taille — une créature Huge (3×3) est simplement bloquée par tout endroit où + son footprint ne rentre pas ; ni le squeeze payant, ni la réduction de + footprint dans les couloirs ne sont modélisés. +- **Passage à travers une créature (3 catégories d'écart) — approximations** : + la règle est modélisée (traversée + AoO d'entrée, voir « Mouvement ») ; + restent hors périmètre le test d'Acrobatics « Tumbling » (« A trained + character can attempt to use Acrobatics to move through a square occupied + by an opponent » — la compétence n'existe pas dans le moteur) et la clause + des très grosses créatures inertes (« Some creatures, particularly very + large ones, may present an obstacle even when helpless. In such cases, each + square you move through counts as 2 squares » — les cases d'une créature + inactive ne bloquent pas et ne coûtent pas double). - **Échec d'incantation pour un personnage sourd hors périmètre** (SRD « Conditions — Deafened » : « a 20% chance of spell failure when casting spells with verbal components ») : le moteur ne porte pas la composante @@ -1721,7 +1755,7 @@ Limites de sorts (conformance D6-D9, documentées plutôt que bricolées) : La gate de validation complète (tests + lint + types) : ```bash -uv run pytest -q # 1408 tests +uv run pytest -q # 1491 tests uv run ruff check src tests uv run basedpyright src # mode strict ```