✅ Marchosias already target no redirect
| Category | Ability |
| Status | Passing |
| Test | tests/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}"
)