fix(rules): restrict nauseated creatures to a single move action

PF1e (SRD Conditions, nauseated): "The only action such a character can take is a single move actions per turn." _NAUSEA_MOVE_KINDS now holds only genuine move actions (move, stand_up, retrieve_weapon, repair_weapon): the 5-foot step and dropping prone are free actions and are dropped by the nauseated filter. The pinned filter test was retargeted; README updated.

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-12 09:44:53 +02:00
parent 49aa79d612
commit dde6bc1f5d
3 changed files with 19 additions and 6 deletions
+8 -2
View File
@@ -409,11 +409,17 @@ def test_nauseated_cannot_cast_via_action_execution() -> None:
def test_nauseated_filter_keeps_move_kinds_drops_everything_else() -> None:
for kind in ("move", "5foot_step", "stand_up", "drop_prone"):
# SRD nauseated: "The only action such a character can take is a single
# move action per turn" — only genuine move actions survive; the 5-foot
# step and dropping prone are free actions, not move actions.
for kind in ("move", "stand_up", "retrieve_weapon", "repair_weapon"):
kept = _nauseated_filter((Action(kind=kind, target_id="foe"),))
assert len(kept) == 1, kind
assert kept[0].kind == kind, kind
for kind in ("attack", "cast_spell", "full_attack", "charge", "maneuver", "hex"):
for kind in (
"attack", "cast_spell", "full_attack", "charge", "maneuver", "hex",
"5foot_step", "drop_prone",
):
assert _nauseated_filter((Action(kind=kind, target_id="foe"),)) == (), kind