Skip to main content

✅ Lix tetrax free march

CategoryAbility
StatusPassing
Testtests/test_abilities_passive.py::test_lix_tetrax_free_march

Lix Tetrax's March costs 0 AP (Without Cost passive).

Preconditions

  • Lane 0: P1's Lix Tetrax (#050) — READIED

  • P1 has 1 AP

  • Lix Tetrax passive idx=1: march_ap_cost -1 (makes March free)

Action

  • Call march_demon(state, lix_tetrax, target_lane=1)
from engine.operations import march_demon

state = make_game_state()
state.players[Side.PLAYER_1].ap = 1
lix = make_demon("050", lane=0, owner=Side.PLAYER_1)
state = place_demon(state, lix)
lix_on_field = state.demons[0]

new_state = march_demon(state, lix_on_field, 1)

lix_after = next(d for d in new_state.demons if d.unit_id == "050")

Expected Postconditions

  • Lix Tetrax is now in lane 1

  • P1 AP unchanged at 1 (March cost 0 after passive)

Assertions

assert lix_after.lane == 1, (
f"Expected Lix Tetrax in lane 1 after march, got lane {lix_after.lane}"
)
assert new_state.players[Side.PLAYER_1].ap == 1, (
f"Expected P1 AP=1 (free march, no AP spent), got {new_state.players[Side.PLAYER_1].ap}"
)