✅ Fused demon both passives active
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_passive.py::test_fused_demon_both_passives_active |
A fused demon has BOTH top and bottom card passives active.
Preconditions
-
Lane 0: P1's fused demon — top=Murmur (#002), bottom=Duban (#001)
-
Duban passive: +5 DEF (bottom card)
-
Murmur passive: -2 AP Cost (top card)
Action
-
Query get_effective_def(state, fused_demon)
-
Query get_effective_ap_cost(state, fused_demon, 2)
state = make_game_state()
fused = make_fused_demon("002", "001", lane=0, owner=Side.PLAYER_1)
state = place_demon(state, fused)
fused_on_field = state.demons[0]
def_ = get_effective_def(state, fused_on_field)
ap = get_effective_ap_cost(state, fused_on_field, 2)
Expected Postconditions
-
DEF: 5 (from Duban bottom passive)
-
AP Cost: 0 (2 base - 2 from Murmur top passive = 0)
Assertions
assert def_ == 5, f"Expected DEF=5 (Duban bottom passive), got {def_}"
assert ap == 0, f"Expected AP cost 0 (Murmur top passive -2), got {ap}"