✅ Geb heal redirect all other allies
| Category | Interaction |
| Status | Passing |
| Test | tests/test_abilities_passive.py::test_geb_heal_redirect_all_other_allies |
When Geb has 0 damage, the redirect applies to ALL other allied
Preconditions
-
Lane 0: P1's Geb (#044) — 0 damage
-
Lane 0: P1's Murmur (#002) — 5 damage (ally)
-
Lane 0: P1's Duban (#001) — 3 damage (ally)
-
Heal removes 2 from Geb
Action
- Call geb_remove_damage(state, geb, amount=2)
from engine.abilities_passive import geb_remove_damage
state = make_game_state()
geb = make_demon("044", lane=0, owner=Side.PLAYER_1, damage=0)
murmur = make_demon("002", lane=0, owner=Side.PLAYER_1, damage=5)
duban = make_demon("001", lane=0, owner=Side.PLAYER_1, damage=3)
state = place_demon(state, geb)
state = place_demon(state, murmur)
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, 2)
geb_after = next(d for d in new_state.demons if d.unit_id == "044")
murmur_after = next(d for d in new_state.demons if d.unit_id == "002")
duban_after = next(d for d in new_state.demons if d.unit_id == "001")
Expected Postconditions
-
Geb: 0 damage (unchanged)
-
Murmur: 3 damage (was 5, reduced by 2)
-
Duban: 1 damage (was 3, reduced by 2)
Assertions
assert geb_after.damage == 0, f"Geb should still have 0 damage, got {geb_after.damage}"
assert murmur_after.damage == 3, f"Expected Murmur damage=3 (5-2), got {murmur_after.damage}"
assert duban_after.damage == 1, f"Expected Duban damage=1 (3-2), got {duban_after.damage}"