✅ Gamigin forces fusion on death
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_complex.py::TestGamiginForcedFusion::test_gamigin_forces_fusion_on_death |
Gamigin dies and forces its card to fuse onto an opponent's demon.
Preconditions
-
P1 Main Phase
-
Lane 0: P1's Gamigin (#031) — HP=6, 6 damage, fatally_wounded=True (dying)
-
Lane 1: P2's Murmur (#002) — HP=9, 0 damage, READIED, NOT fused
Action
- fire FATALLY_WOUNDED with target=Gamigin
result = fire_event(state, event)
murmur_after = next(d for d in result.demons if d.unit_id == "002")
Expected Postconditions
-
P2's Murmur: fused_bottom="031" (Gamigin card fused onto it as bottom)
-
P2's Murmur: state=EXHAUSTED ("Fuse and Exhaust")
-
P2's Murmur: is_fused=True
-
Gamigin: still on field (death resolution happens after triggers)
Assertions
assert murmur_after.fused_bottom == "031", (
f"Gamigin's card must be fused onto P2's Murmur. "
f"fused_bottom={murmur_after.fused_bottom!r}, expected '031'."
)
assert murmur_after.is_fused is True, "Murmur must be marked as fused."
assert murmur_after.state == DemonState.EXHAUSTED, (
"Card text says 'Fuse and Exhaust' — Murmur must be EXHAUSTED after fusion."
)