✅ Iskandar local def fused bottom projects
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_complex.py::TestIskandarFusedBottomProjects::test_iskandar_local_def_fused_bottom_projects |
Murmur (top) fused with Iskandar (bottom). Local attacker's
Preconditions
-
Lane 0: P1's fused demon — Murmur (#002) top, Iskandar (#104) bottom
-
HP = 9 + 3 (Iskandar fHP) = 12, 0 damage, READIED
-
Lane 0: P2's Sabnock (#003) — 15 HP, Local attacker
Action
-
deal_damage(state, Sabnock, fused_demon, 3)
-
DAMAGE_RECEIVED fires → fused demon's Iskandar trigger reduces by 2
from engine.operations import deal_damage
fused = make_fused_demon("002", "104", lane=0, owner=Side.PLAYER_1)
attacker = make_demon("003", lane=0, owner=Side.PLAYER_2)
state, placed = _make_state_with_demons(fused, attacker, ap=3)
fused_p, attacker_p = placed
result = deal_damage(state, attacker_p, fused_p, 3)
fused_after = next(d for d in result.demons if d.instance_id == fused_p.instance_id)
Expected Postconditions
- Fused demon: 1 damage (3 raw - 2 from Iskandar fused-bottom passive)
Assertions
assert fused_after.damage == 1, (
f"Fused demon with Iskandar bottom must have 3-2=1 damage (Iskandar "
f"projects via DAMAGE_RECEIVED trigger indexed by fused_bottom). "
f"Got {fused_after.damage}."
)