feat(rules): allow a move action in place of a standard action

PF1e CRB (Actions in Combat): a move action can be taken instead of the
standard one. The budget filter now converts a second move action onto
the standard slot when the move slot is spent and the standard is still
free, so (move, stand_up) and (move, move) are legal; a third move (or
any further standard) is still surplus. The greedy walk is expressed
with a spent-slot map to stay inside the C901 complexity ceiling.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-09-11 13:53:45 +02:00
parent e44ec75f2b
commit 0997c8d1b5
3 changed files with 43 additions and 23 deletions
+5 -1
View File
@@ -360,7 +360,11 @@ Règles modélisées :
compartiment du budget — standard, mouvement, swift, round complet, ou
libre/conditionnel (hors budget) — et la séquence est vérifiée contre le budget
(≤ 1 standard **ou** 1 round complet, ≤ 1 mouvement, ≤ 1 swift ; un round
complet consacre à la fois le standard ET le mouvement). La dégradation est
complet consacre à la fois le standard ET le mouvement). **Conversion
standard → mouvement** (CRB : une action de mouvement peut se prendre « à la
place » de l'action standard) : quand le compartiment mouvement est déjà
occupé et que le standard est encore libre, un second mouvement consomme le
standard — `(move, stand_up)` et `(move, move)` sont donc légaux. La dégradation est
**déterministe et stable en ordre** : parcours glouton dans l'ordre, chaque
action est gardée tant que son compartiment est libre ; le résultat est donc le
plus préfixe-sous-séquence légal, et toute action excédentaire est retirée et