Skip to main content

✅ Geb heal redirects when geb at zero damage

CategoryAbility
StatusPassing
Testtests/test_abilities_passive.py::test_geb_heal_redirects_when_geb_at_zero_damage

If X damage would be removed from Geb but Geb has 0 damage,

Preconditions

  • Lane 0: P1's Geb (#044) — READIED, 0 damage (healthy)

  • Lane 0: P1's Duban (#001) — READIED, 4 damage (ally)

  • A heal effect attempts to remove 3 damage from Geb

Action

  • Call geb_remove_damage(state, geb, amount=3)
from engine.abilities_passive import geb_remove_damage

state = make_game_state()
geb = make_demon("044", lane=0, owner=Side.PLAYER_1, damage=0)
duban = make_demon("001", lane=0, owner=Side.PLAYER_1, damage=4)
state = place_demon(state, geb)
state = place_demon(state, duban)

geb_on_field = next(d for d in state.demons if d.unit_id == "044")
new_state = geb_remove_damage(state, geb_on_field, 3)

geb_after = next(d for d in new_state.demons if d.unit_id == "044")
duban_after = next(d for d in new_state.demons if d.unit_id == "001")

Expected Postconditions

  • Geb still has 0 damage (nothing to remove — redirect fired instead)

  • Duban now has 1 damage (was 4, reduced by 3 from redirect)

Assertions

assert geb_after.damage == 0, f"Geb should still have 0 damage, got {geb_after.damage}"
assert duban_after.damage == 1, f"Expected Duban damage=1 (4-3 redirect), got {duban_after.damage}"