✅ Scorpio push does not fire for other demons ability
| Category | Interaction |
| Status | Passing |
| Test | tests/test_abilities_passive.py::test_scorpio_push_does_not_fire_for_other_demons_ability |
Scorpio's push trigger only fires when SCORPIO uses an ability —
Preconditions
-
Lane 0: P1's Scorpio (#062) — READIED
-
Lane 0: P1's Murmur (#002) — READIED (source of the ability)
-
Lane 0: P2's Duban (#001) — READIED (target)
Action
- Fire ABILITY_USED event with source=Murmur, target=Duban
from engine.events import GameEvent, EventType, fire_event
state = make_game_state()
scorpio = make_demon("062", lane=0, owner=Side.PLAYER_1)
murmur = make_demon("002", lane=0, owner=Side.PLAYER_1)
duban = make_demon("001", lane=0, owner=Side.PLAYER_2)
state = place_demon(state, scorpio)
state = place_demon(state, murmur)
state = place_demon(state, duban)
murmur_on_field = next(d for d in state.demons if d.unit_id == "002")
duban_on_field = next(d for d in state.demons if d.unit_id == "001")
event = GameEvent(
event_type=EventType.ABILITY_USED,
source=murmur_on_field,
target=duban_on_field,
value=0,
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 is NOT pushed (Murmur, not Scorpio, used the ability)
-
Duban stays in lane 0
Assertions
assert duban_after.lane == 0, (
f"Duban should not be pushed (Murmur, not Scorpio, acted). Got lane {duban_after.lane}"
)