Skip to main content

✅ Familiars are demons regression snake in target pool

CategoryRegression
StatusPassing
Testtests/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}"
)