Skip to main content

✅ Iskandar counter attacks enemy attacker

CategoryAbility
StatusPassing
Testtests/test_abilities_complex.py::TestIskandarCounterAttack::test_iskandar_counter_attacks_enemy_attacker

Enemy deals damage to Iskandar — Iskandar counter-attacks without cost.

Preconditions

  • P1 has 3 AP

  • Lane 0: P1's Iskandar (#104), READIED

  • Lane 0: P2's Duban (#001, PWR=2), READIED (in-range attacker)

Action

  • Fire DAMAGE_RECEIVED event: source=Duban, target=Iskandar, value=3

Expected Postconditions

  • Duban takes Iskandar's PWR damage (counter-attack)

  • Iskandar stays READIED (no exhaust from counter)

  • P1 AP unchanged (counter is Without Cost)

Assertions

assert duban_after.damage == expected_damage, (
f"Duban must take counter-attack damage. Got {duban_after.damage}."
)
assert iskandar_after.state == DemonState.READIED, (
"Iskandar must stay READIED — counter-attack is Without Cost (no exhaust)."
)
assert result.players[Side.PLAYER_1].ap == 3, (
"Counter-attack costs no AP for Iskandar's owner."
)