fix(rules): run is bounded by Constitution endurance and the Run feat - after a number of consecutive run rounds equal to the CON score each further round requires a Constitution check (DC 10 +1 per prior check, no auto nat-1/20, undead/constructs exempt with no CON score); failure stops the run and forces the SRD 1-minute (10-round) rest; the Run feat grants +4 on the check and keeps the Dex bonus to AC while running (SRD Full-Round Actions - Run); heavy-armor x3 speed clause documented out-of-scope (no armor field); +5 tests

This commit is contained in:
2026-09-19 22:02:36 +02:00
parent 28bc624d1e
commit ea835293a0
3 changed files with 363 additions and 34 deletions
+30 -2
View File
@@ -951,7 +951,31 @@ Règles modélisées :
terrain ») : elle avance jusqu'à l'obstacle et s'y arrête **quand elle est
auto-dirigée**. À l'achèvement, le combattant est `running` jusqu'au début
de son prochain tour : il **perd son bonus de Dextérité à la CA** (résolu
par le même chemin flat-footed/`denies_dex_to_ac` que les conditions). Une
par le même chemin flat-footed/`denies_dex_to_ac` que les conditions),
**sauf s'il a le don Run** (SRD « Run » : « You lose any Dexterity bonus to
AC unless you have the Run feat » — `_running_denies_dex`). **Endurance
(SRD « Full-Round Actions — Run »)** : « You can run for a number of rounds
equal to your Constitution score, but after that you must make a DC 10
Constitution check to continue running. You must check again each round in
which you continue to run, and the DC of this check increases by 1 for each
check you have made. When you fail this check, you must stop running. A
character who has run to his limit must rest for 1 minute (10 rounds) before
running again. » Le moteur compte les rounds de course **consécutifs** par
combattant (`run_rounds`, la série se brise quand un tour passe sans
courir) ; au-delà du score de Constitution, chaque nouvelle round exige un
jet de Constitution DD `10 + jets déjà faits` (`run_checks`), **sans**
réussite/échec automatique sur 20/1 naturel (un test de caractéristique
n'est pas un jet d'attaque) ; le don **Run** donne **+4** à ce jet. Un échec
stoppe la course (tour perdu, aucun mouvement, journalisé `run stopped`) et
pose `run_rest_rounds = 10` : pendant le repos, toute action `run` est
refusée (journalisé `wait (cannot run, resting …)`) — le round de l'échec
compte comme le premier des dix. Les morts-vivants et les constructeurs n'ont
pas de score de Constitution et sont exemptés. Simplification assumée : la
règle du repos borne la course consécutive par un compteur de tours au sens
du moteur (le « repos » n'exige pas l'inactivité totale, seule la course est
interdite). **Hors périmètre (documenté, non approximé)** : la clause
d'armure lourde « or three times your speed if you're in heavy armor » — le
modèle n'a aucun champ armure (la CA des JSON est une valeur finale). Une
`destination` que la ligne droite ne peut pas honorer dans le budget 4×
(hors portée, bloquée par un obstacle/une créature, ou joignable uniquement
en tournant un coin ou en traversant le terrain difficile) est **rejetée**
@@ -1660,7 +1684,11 @@ Règles modélisées :
début de son tour s'il est inutilisé), aid_ac_bonus (int — bonus d'aide
autrui (+2 par aide réussie, cumulatif) ajouté à sa CA, expiré au début de
son tour), running (bool — course en cours jusqu'au prochain tour du
combattant : il perd son bonus de Dextérité à la CA), bleed_damage (int —
combattant : il perd son bonus de Dextérité à la CA, sauf don Run),
run_rounds (int — rounds de course consécutifs déjà courus, série brisée
quand un tour passe sans courir) et run_rest_rounds (int — rounds de repos
restants après un échec du jet d'endurance, course interdite tant que > 0)
— voir « Course », bleed_damage (int —
dégâts de saignement subis au début du tour du combattant, 0 = ne saigne
pas ; V5b ; `bleeding`/`confused` sont visibles via `conditions`),
recurring_damage (S2c — liste des sources de dégâts récurrents de sort