✅ Gamigin skips already fused demon
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_complex.py::TestGamiginForcedFusion::test_gamigin_skips_already_fused_demon |
Opponent's only demon is already fused — Gamigin must skip it.
Preconditions
-
Lane 0: P1's Gamigin (#031) — dying (fatally_wounded=True)
-
Lane 0: P2's Murmur (#002) — already fused (fused_bottom="003", is_fused=True)
-
This demon is NOT fusible (already has a bottom card).
Action
- fire FATALLY_WOUNDED with target=Gamigin
result = fire_event(state, event)
fused_after = next(d for d in result.demons if d.unit_id == "002")
Expected Postconditions
- P2's Murmur: fused_bottom unchanged (NOT "031") — already fused, skipped
Assertions
assert fused_after.fused_bottom == "003", (
"Already-fused Murmur must NOT receive Gamigin. "
f"Got fused_bottom={fused_after.fused_bottom!r}, expected '003'."
)