✅ Sirens call movement moves all exhausted demons to lane
| Category | Interaction |
| Status | Passing |
| Test | tests/test_abilities_complex.py::TestSitriSirensCall::test_sirens_call_movement_moves_all_exhausted_demons_to_lane |
apply_sirens_call_movement moves all EXHAUSTED demons to Sitri's lane.
Preconditions
-
Lane 0: P1's Sitri (#092), READIED
-
Lane 1: P1's Murmur (#002), EXHAUSTED (should be moved to Lane 0)
-
Lane 2: P2's Duban (#001), EXHAUSTED (should be moved to Lane 0)
-
Lane 1: P2's Sabnock (#003), READIED (should NOT be moved)
Action
- Call apply_sirens_call_movement(state, sitri_lane=0)
result = apply_sirens_call_movement(state, sitri_lane=0)
murmur_after = next(d for d in result.demons if d.unit_id == "002")
duban_after = next(d for d in result.demons if d.unit_id == "001")
sabnock_after = next(d for d in result.demons if d.unit_id == "003")
Expected Postconditions
-
Murmur: lane = 0 (moved from 1)
-
Duban: lane = 0 (moved from 2)
-
Sabnock: lane = 1 (not moved — readied)
Assertions
assert murmur_after.lane == 0, f"Exhausted Murmur must move to lane 0. Got {murmur_after.lane}."
assert duban_after.lane == 0, f"Exhausted Duban must move to lane 0. Got {duban_after.lane}."
assert sabnock_after.lane == 1, f"READIED Sabnock must NOT move. Got {sabnock_after.lane}."