✅ Zagan repositions after action declared
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_complex.py::TestZaganReposition::test_zagan_repositions_after_action_declared |
ACTION_DECLARED fires — Zagan moves to a different lane.
Preconditions
-
P1 Main Phase, P1 has 3 AP
-
Lane 0: P1's Zagan (#024), READIED
Action
- Fire ACTION_DECLARED event (side=P1, lane=2 as destination hint)
Expected Postconditions
-
Zagan moves from Lane 0 to Lane 2 (the destination hint)
-
No AP cost, no exhaust — repositioning is free
Assertions
assert zagan_after.lane == 2, (
f"Zagan must reposition to lane 2. Got lane {zagan_after.lane}."
)
assert zagan_after.state == DemonState.READIED, (
"Zagan must remain READIED after repositioning (no exhaust cost)."
)
assert result.players[Side.PLAYER_1].ap == 3, (
"Zagan reposition costs no AP."
)