✅ Regular familiar still cannot fuse
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_familiars.py::test_regular_familiar_still_cannot_fuse |
A regular familiar (not in FUSIBLE_FAMILIARS) cannot be fused.
Preconditions
-
Lane 0: P1's Duban (#001) — regular unit, READIED.
-
Lane 0: P1's Alecto (#026_1) — regular familiar (Erinyes, no fusible override).
Action
- can_fuse(state, duban, alecto)
from engine.fusion import can_fuse
state = make_game_state()
duban = make_demon("001", lane=0, owner=Side.PLAYER_1)
state = place_demon(state, duban)
duban = state.demons[-1]
alecto = make_familiar_demon("026_1", lane=0, owner=Side.PLAYER_1)
state = place_demon(state, alecto)
alecto = state.demons[-1]
ok, reason = can_fuse(state, duban, alecto)
Expected Postconditions
-
(False, <contains "familiar">) — normal familiars still blocked.
-
Regression: ensuring the FUSIBLE_FAMILIARS exception doesn't open all familiars.
Assertions
assert ok is False, (
f"Regular familiar Alecto should NOT be fusible. Got ok={ok}"
)
assert "familiar" in reason.lower(), (
f"Rejection reason should mention 'familiar'. Got: {reason!r}"
)