✅ Familiars are demons regression snake in target pool
| Category | Regression |
| Status | Passing |
| Test | tests/test_abilities_familiars.py::test_familiars_are_demons_regression_snake_in_target_pool |
Regression: confusion #2 — Familiars ARE demons.
Preconditions
-
Lane 0: P1's Snake A (#036_1) — familiar, READIED.
-
Lane 0: P1's Duban (#001) — regular unit, READIED.
Action
- Query all demons in lane 0 from state.demons.
state = make_game_state()
snake = make_familiar_demon("036_1", lane=0, owner=Side.PLAYER_1)
state = place_demon(state, snake)
duban = make_demon("001", lane=0, owner=Side.PLAYER_1)
state = place_demon(state, duban)
# Query all demons in lane 0 — the raw state.demons list (used by AoE abilities)
lane0_demons = [d for d in state.demons if d.lane == 0]
unit_ids_in_lane = [d.unit_id for d in lane0_demons]
Expected Postconditions
-
Snake A (#036_1) is included in the result (it IS a demon).
-
Duban (#001) is also included.
-
Regression: any "target all demons" ability that excluded familiars would
-
be wrong. The engine's state.demons list includes familiars — they are demons.
Assertions
assert "036_1" in unit_ids_in_lane, (
f"Snake A (#036_1) should be in lane 0 demon pool — familiars ARE demons. "
f"Found: {unit_ids_in_lane}. Regression: confusion #2."
)
assert "001" in unit_ids_in_lane, (
f"Duban (#001) should be in lane 0 demon pool. Found: {unit_ids_in_lane}"
)