fix(rules): classify run as a full-round action
PF1e CRB: running is a full-round action, not a move action. The budget filter now classifies run as full-round (consumes the standard AND the move slot), _FULL_ROUND_KINDS includes it for the staggered filter, and the nauseated filter drops it (run is no longer move-like). The moved_this_turn/running flags are unchanged; the _execute_run moved_this_turn early return stays as defense in depth. default_policy never emits run, so the golden transcripts are untouched. Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -438,12 +438,17 @@ def test_run_and_aid_without_target_are_rejected() -> None:
|
||||
eng = _duo(policy, [10, 5], round_cap=1)
|
||||
t = eng.run().transcript
|
||||
hero = eng._states[0]
|
||||
# run is a full-round action: it consumes the standard AND the move slot,
|
||||
# so the budget filter drops the following aid_another as a surplus
|
||||
# standard before it can even reach the missing-target gate.
|
||||
assert hero.last_action_results == [
|
||||
ActionResult(
|
||||
kind="aid_another", ok=False, reason="downgraded:action_economy"
|
||||
),
|
||||
ActionResult(kind="run", ok=False, reason="missing_target"),
|
||||
ActionResult(kind="aid_another", ok=False, reason="missing_target"),
|
||||
]
|
||||
assert "round 1 hero: run rejected (missing_target)" in t
|
||||
assert "round 1 hero: aid_another rejected (missing_target)" in t
|
||||
assert "round 1 hero: aid_another rejected (missing_target)" not in t
|
||||
assert hero.pos == (0, 0)
|
||||
assert hero.running is False
|
||||
|
||||
|
||||
@@ -92,9 +92,8 @@ def test_slot_per_kind_matches_pf1e_action_type() -> None:
|
||||
# move actions
|
||||
"move": "move", "stand_up": "move", "retrieve_weapon": "move",
|
||||
"repair_weapon": "move",
|
||||
# run: RAW full-round, but the engine models it as move machinery
|
||||
# (sets moved_this_turn, excluded from _FULL_ROUND_KINDS) — consistent.
|
||||
"run": "move",
|
||||
# run: PF1e full-round action (4x speed); consumes standard + move.
|
||||
"run": "full_round",
|
||||
# swift actions
|
||||
"swift": "swift", "deed": "swift", "inspire_courage": "swift",
|
||||
# full-round actions
|
||||
|
||||
Reference in New Issue
Block a user