fix(rules): allow a staggered creature to withdraw as a standard action
SRD 'Full-Round Actions - Restricted Withdraw': 'If you are limited to taking only a standard action each round you can withdraw as a standard action. In this case, you may move up to your speed.' _staggered_filter now keeps withdraw as the one move-or-standard action (spending the slot) instead of dropping it, and _flee_path halves the budget to single speed for a staggered/disabled creature (new _is_staggered_limited helper). Filter-level and engine-level tests added. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -735,13 +735,19 @@ Règles modélisées :
|
||||
ligne droite doit être dégagée (pas de terrain difficile, d'obstacles ni de
|
||||
créatures) ; distance minimum 2 cases (10 ft). `default_policy` choisit la
|
||||
charge quand l'ennemi est hors de portée mais joignable en ligne droite.
|
||||
- Retraite : action à round complet. Le combattant se déplace jusqu'à 2× sa
|
||||
vitesse en s'éloignant de l'ennemi le plus proche (ascension gloutonne du
|
||||
champ de coût Dijkstra depuis la menace). La case de départ n'est pas
|
||||
considérée comme menacée — aucune AoO en la quittant. Les cases
|
||||
ultérieures provoquent des AoO normalement (résolues pas à pas, comme pour
|
||||
le mouvement). `default_policy` ne choisit pas la retraite (disponible via
|
||||
une politique personnalisée).
|
||||
- Retraite : action à round complet. Le combattant se déplace jusqu'à 2× sa
|
||||
vitesse en s'éloignant de l'ennemi le plus proche (ascension gloutonne du
|
||||
champ de coût Dijkstra depuis la menace). La case de départ n'est pas
|
||||
considérée comme menacée — aucune AoO en la quittant. Les cases
|
||||
ultérieures provoquent des AoO normalement (résolues pas à pas, comme pour
|
||||
le mouvement). Conformance L6 (SRD « Full-Round Actions — Restricted
|
||||
Withdraw ») : « If you are limited to taking only a standard action each
|
||||
round you can withdraw as a standard action. In this case, you may move up
|
||||
to your speed » — un combattant `staggered`/invalidé qui reçoit `withdraw`
|
||||
le conserve comme **action standard** (le filtre staggered ne le jette
|
||||
plus) avec un budget de **1× vitesse** au lieu de 2× (`_flee_path` via
|
||||
`_is_staggered_limited`). `default_policy` ne choisit pas la retraite (disponible via
|
||||
une politique personnalisée).
|
||||
- Course (`Action(kind="run")`, action à round complet, U5e) : le combattant
|
||||
se déplace jusqu'à **4× sa vitesse** vers `target_id` (auto-dirigé,
|
||||
s'arrête adjacent à la cible) ou vers une `destination` explicite (U5c), en
|
||||
|
||||
Reference in New Issue
Block a user