✅ Rest phase resets
| Category | Ability |
| Status | Passing |
| Test | tests/test_turn_sequence.py::test_rest_phase_resets |
After 4 cycles, start_rest_phase resets AP, readies all demons, deals new timekeeping cards.
Preconditions
-
cycle = 4, rest_period = 1.
-
P1 AP = 5, P2 AP = 3.
-
P1's Duban (001) EXHAUSTED in lane 0, P2's Murmur (002) EXHAUSTED in lane 1.
-
P1 demon_deck = 12 cards, P2 demon_deck = 10 cards.
-
P1 timekeeping_deck = [], P2 timekeeping_deck = [].
Action
- start_rest_phase(state, rng)
Expected Postconditions
-
P1 AP = 0, P2 AP = 0 (all AP lost at rest).
-
Duban: READIED, Murmur: READIED.
-
P1 timekeeping_deck = 4 cards, P2 timekeeping_deck = 4 cards.
-
P1 demon_deck = 8 cards (was 12, dealt 4), P2 demon_deck = 6 cards (was 10, dealt 4).
-
cycle = 1 (reset), rest_period = 2 (incremented).
Assertions
assert result.players[Side.PLAYER_1].ap == 0
assert result.players[Side.PLAYER_2].ap == 0
assert duban_result.state == DemonState.READIED
assert murmur_result.state == DemonState.READIED
assert len(result.players[Side.PLAYER_1].timekeeping_deck) == 4
assert len(result.players[Side.PLAYER_2].timekeeping_deck) == 4
assert len(result.players[Side.PLAYER_1].demon_deck) == 8
assert len(result.players[Side.PLAYER_2].demon_deck) == 6
assert result.cycle == 1
assert result.rest_period == 2