Skip to main content

✅ Gamigin skips already fused demon

CategoryAbility
StatusPassing
Testtests/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'."
)