docs(map): make omitted move_cost explicitly mean impassable

This commit is contained in:
2026-09-20 18:03:46 +02:00
parent ee22f7548a
commit dd0b42b73b
2 changed files with 10 additions and 2 deletions
+4 -1
View File
@@ -226,7 +226,10 @@ deployment: # obligatoire si zones : nom de camp -> lettre de zone
``` ```
Valeur du `move_cost` : entier > 0 pour un terrain praticable, `null` pour un Valeur du `move_cost` : entier > 0 pour un terrain praticable, `null` pour un
terrain infranchissable (mur, pilier). `blocks_los` et `cover` sont appliqués terrain infranchissable (mur, pilier). **Omettre `move_cost` équivaut à
`null` : le terrain est infranchissable** — un terrain praticable doit donc
toujours déclarer explicitement son coût (une entrée de légende sans coût de
déplacement n'est jamais un couloir invisible). `blocks_los` et `cover` sont appliqués
par la résolution des attaques (module `los.py`, règle des coins) : pas de par la résolution des attaques (module `los.py`, règle des coins) : pas de
ligne d'effet ⇒ l'attaque est impossible ; couvert ⇒ bonus de CA. Le champ ligne d'effet ⇒ l'attaque est impossible ; couvert ⇒ bonus de CA. Le champ
optionnel `cover_bonus` (`2`, `4` ou `8`) encode le niveau de couvert PF1e optionnel `cover_bonus` (`2`, `4` ou `8`) encode le niveau de couvert PF1e
+6 -1
View File
@@ -66,7 +66,12 @@ _NoDuplicateLoader.add_constructor(
class TerrainType(BaseModel): class TerrainType(BaseModel):
"""What one square means for movement and sight lines.""" """What one square means for movement and sight lines.
``move_cost``: positive int = passable; ``None`` -- explicit or omitted
(the field default) -- means IMPASSABLE. A passable terrain must always
declare its cost; omitting the field is never a silent walkable default.
"""
model_config = ConfigDict(frozen=True, extra="forbid") model_config = ConfigDict(frozen=True, extra="forbid")