✅ Aim range restriction reverts 1 lane away damage
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_passive.py::test_aim_range_restriction_reverts_1_lane_away_damage |
If Aim (in lane 1) deals damage to a demon in lane 0 or lane 2
Preconditions
-
Lane 1: P1's Aim (#015) — READIED
-
Lane 0: P2's Duban (#001) — READIED, damage=4 (1 lane away)
Action
- Fire DAMAGE_DEALT event: source=Aim (lane 1), target=Duban (lane 0), value=4
from engine.events import GameEvent, EventType, fire_event
state = make_game_state()
aim = make_demon("015", lane=1, owner=Side.PLAYER_1)
duban = make_demon("001", lane=0, owner=Side.PLAYER_2, damage=4)
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")
event = GameEvent(
event_type=EventType.DAMAGE_DEALT,
source=aim_on_field,
target=duban_on_field,
value=4,
side=Side.PLAYER_1,
lane=1,
)
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 to 0 (1 lane away — blocked)
Assertions
assert duban_after.damage == 0, (
f"Expected Duban damage reverted to 0 (Aim can't hit 1 lane away), got {duban_after.damage}"
)