Skip to main content

✅ Gamigin attack ignores def

CategoryAbility
StatusPassing
Testtests/test_abilities_complex.py::TestGamiginFixedDamage::test_gamigin_attack_ignores_def

Gamigin attacks an ally with +5 DEF — damage bypasses DEF.

Preconditions

  • Lane 0: P1's Gamigin (#031, PWR=6)

  • Lane 0: P2's Duban (#001, HP=6, has passive +5 DEF)

Action

  • operations.deal_damage(state, gamigin, duban, 6)
from engine.operations import deal_damage

gamigin = make_demon("031", lane=0, owner=Side.PLAYER_1)
duban = make_demon("001", lane=0, owner=Side.PLAYER_2)

state, placed = _make_state_with_demons(gamigin, duban)
gamigin_p, duban_p = placed

result = deal_damage(state, gamigin_p, duban_p, 6)

# Duban's HP = 6, he took 6 damage → fatally wounded
# If DEF had applied, he'd take only 1 damage (6-5) and survive.
duban_after = next((d for d in result.demons if d.unit_id == "001"), None)
if duban_after is not None:

Expected Postconditions

  • Duban: 6 damage (DEF bypassed → fatally wounded by 6 damage on 6 HP).

  • Without fixed damage, he would only take max(0, 6-5)=1 damage.

Assertions

assert duban_after.damage == 6, (
f"Gamigin's passive makes PWR damage Fixed — DEF bypassed. "
f"Expected 6 damage, got {duban_after.damage}"
)
# Alternatively, Duban may be removed (fatal), which is also fine
else:
assert duban_p.unit_id == "001" # Still valid test outcome