Skip to main content

✅ Aim range restriction reverts local damage

CategoryAbility
StatusPassing
Testtests/test_abilities_passive.py::test_aim_range_restriction_reverts_local_damage

If Aim (in lane 0) deals damage to a demon in lane 0 (local),

Preconditions

  • Lane 0: P1's Aim (#015) — READIED

  • Lane 0: P2's Duban (#001) — READIED, 0 damage (same lane as Aim)

Action

  • Fire DAMAGE_DEALT event: source=Aim, target=Duban, value=9 (Aim's full PWR)

  • Then check damage — trigger should revert it

from engine.events import GameEvent, EventType, fire_event

state = make_game_state()
aim = make_demon("015", lane=0, owner=Side.PLAYER_1)
duban = make_demon("001", lane=0, owner=Side.PLAYER_2, damage=9) # already damaged
state = place_demon(state, aim)
state = place_demon(state, duban)

aim_on_field = next(d for d in state.demons if d.unit_id == "015")
duban_on_field = next(d for d in state.demons if d.unit_id == "001")

# Simulate: Aim "dealt" 9 damage to Duban (already applied to damage field above)
event = GameEvent(
event_type=EventType.DAMAGE_DEALT,
source=aim_on_field,
target=duban_on_field,
value=9,
side=Side.PLAYER_1,
lane=0,
)
new_state = fire_event(state, event)

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

Expected Postconditions

  • Duban damage reverted: back to 0 (restriction blocks local damage)

Assertions

assert duban_after.damage == 0, (
f"Expected Duban damage reverted to 0 (Aim can't hit local), got {duban_after.damage}"
)