✅ March demon readied
| Category | Ability |
| Status | Passing |
| Test | tests/test_operations.py::test_march_demon_readied |
A READIED demon marches 1 lane — moves but stays READIED, costs 1 AP.
Preconditions
-
Lane 1: P1's Duban (#001) — READIED
-
P1 AP: 3
Action
- march_demon(state, duban, target_lane=2)
Expected Postconditions
-
Duban is now in lane 2 (was lane 1)
-
Duban.state = READIED (march does NOT exhaust)
-
P1 AP: 2 (was 3, spent 1 for march)
Assertions
assert moved.lane == 2
assert moved.state == DemonState.READIED
assert new_state.players[Side.PLAYER_1].ap == 2