Skip to main content

✅ Marchosias already target no redirect

CategoryAbility
StatusPassing
Testtests/test_abilities_passive.py::test_marchosias_already_target_no_redirect

P2 attacks Marchosias directly. No redirect needed —

Preconditions

  • P2 Main Phase, P2 has 3 AP

  • Lane 0: P1's Marchosias (#087) — 15 HP, 0 damage, READIED

  • Lane 0: P2's Camio (#098) — 9 HP, 0 damage, READIED, PWR 4

Action

  • P2 attacks with Camio targeting Marchosias directly

  • Marchosias is already the target — skip redirect

from engine.game_loop import execute_action
from engine.rng import DeterministicRNG

state = make_game_state(current_side=Side.PLAYER_2)
state.players[Side.PLAYER_2].ap = 3

marchosias = make_demon("087", lane=0, owner=Side.PLAYER_1)
state = place_demon(state, marchosias)
march_id = state.demons[-1].instance_id

camio = make_demon("098", lane=0, owner=Side.PLAYER_2)
state = place_demon(state, camio)
camio_id = state.demons[-1].instance_id

rng = DeterministicRNG(seed=42)
result = execute_action(state, "attack", {
"demon_id": camio_id,
"target_id": march_id,
}, rng)

march_after = next(d for d in result.demons if d.instance_id == march_id)

Expected Postconditions

  • Marchosias: damage = 4 (took hit normally)

Assertions

assert march_after.damage == 4, (
f"Marchosias directly targeted should take 4 damage. Got {march_after.damage}"
)