✅ Vine spawns parasite on 3cp death
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_complex.py::TestVineCrystalParasite::test_vine_spawns_parasite_on_3cp_death |
Vine deploys Crystal Parasite when a 3+ CP demon dies.
Preconditions
-
P1 Main Phase
-
Lane 0: P1's Vine (#085) — HP=15, 0 damage, READIED, NOT fatally_wounded
-
Lane 1: P2's Murmur (#002, CP=3) — fatally_wounded (dying)
-
P1's familiar_deck contains "085_1" (Crystal Parasite)
Action
- fire FATALLY_WOUNDED with target=Murmur (CP=3 >= threshold)
result = fire_event(state, event)
# Crystal Parasite must appear in lane 1
parasites_in_lane_1 = [
d for d in result.demons if d.unit_id == "085_1" and d.lane == 1
]
Expected Postconditions
-
A Crystal Parasite familiar (085_1) deployed in lane 1 (dead demon's lane)
-
Vine: unchanged (still in lane 0, not fatally_wounded)
-
P1's familiar_deck: "085_1" removed
Assertions
assert len(parasites_in_lane_1) == 1, (
f"Crystal Parasite must be deployed in lane 1 (dead demon's lane). "
f"Found parasites in lane 1: {len(parasites_in_lane_1)}."
)
assert parasites_in_lane_1[0].owner == Side.PLAYER_1, (
"Crystal Parasite must be owned by Vine's owner (P1)."
)
assert "085_1" not in result.players[Side.PLAYER_1].familiar_deck, (
"085_1 must be removed from P1's familiar_deck after deploy."
)