Skip to main content

✅ Erinyes deploys three familiars

CategoryAbility
StatusPassing
Testtests/test_abilities_complex.py::TestErinysDeployTrigger::test_erinyes_deploys_three_familiars

P1 deploys The Erinyes — it is replaced by the 3 Erinyes familiars.

Preconditions

  • P1 Main Phase

  • P1 has deployed The Erinyes (#026) — it is now on the field at lane 0

  • P1's familiar_deck contains "026_1" (Alecto), "026_2" (Megaera),

  • "026_3" (Tisiphone)

Action

  • fire DEMON_DEPLOYED with source=The Erinyes
result = fire_event(state, event)

# Erinyes must be removed from the field
erinyes_on_field = [d for d in result.demons if d.unit_id == "026"]

Expected Postconditions

  • The Erinyes (#026): REMOVED from field (it never truly enters play)

  • Alecto (026_1): deployed on field (lane 0)

  • Megaera (026_2): deployed on field (lane 1)

  • Tisiphone (026_3): deployed on field (lane 2)

  • "026_1", "026_2", "026_3" removed from P1's familiar_deck

  • "026" added to P1's graveyard

Assertions

assert len(erinyes_on_field) == 0, (
"The Erinyes must be removed from the field when it triggers. "
f"Found {len(erinyes_on_field)} on field."
)

# All three familiars must be on the field
alecto = [d for d in result.demons if d.unit_id == "026_1"]
megaera = [d for d in result.demons if d.unit_id == "026_2"]
tisiphone = [d for d in result.demons if d.unit_id == "026_3"]

assert len(alecto) == 1, (
f"Alecto (026_1) must be deployed. Found {len(alecto)}."
)
assert len(megaera) == 1, (
f"Megaera (026_2) must be deployed. Found {len(megaera)}."
)
assert len(tisiphone) == 1, (
f"Tisiphone (026_3) must be deployed. Found {len(tisiphone)}."
)

# Check lane assignments (Alecto->0, Megaera->1, Tisiphone->2)
assert alecto[0].lane == 0, f"Alecto must be in lane 0. Got lane {alecto[0].lane}."
assert megaera[0].lane == 1, f"Megaera must be in lane 1. Got lane {megaera[0].lane}."
assert tisiphone[0].lane == 2, f"Tisiphone must be in lane 2. Got lane {tisiphone[0].lane}."

# Familiars removed from familiar_deck
p1_fam_deck = result.players[Side.PLAYER_1].familiar_deck
assert "026_1" not in p1_fam_deck, "Alecto must be removed from familiar_deck."
assert "026_2" not in p1_fam_deck, "Megaera must be removed from familiar_deck."
assert "026_3" not in p1_fam_deck, "Tisiphone must be removed from familiar_deck."