Skip to main content

✅ Iskandar local def fused bottom projects

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