Skip to main content

✅ Conformity replace skips when no conformity in deck

CategoryAbility
StatusPassing
Testtests/test_abilities_familiars.py::test_conformity_replace_skips_when_no_conformity_in_deck

Conformity replace trigger fires but owner has no Conformity

Preconditions

  • Lane 0: P1's Conformity A (117_1) — READIED.

  • Lane 0: P2's Duban (001) — 6 HP, 0 damage, READIED (not FW).

  • P1's familiar_deck = [] (no Conformity available).

Action

  • Fire ABILITY_USED event targeting Duban.
from engine.events import fire_event

state = make_game_state()
state.players[Side.PLAYER_1].familiar_deck = []

conformity = make_familiar_demon("117_1", lane=0, owner=Side.PLAYER_1)
state = place_demon(state, conformity)
conformity = state.demons[-1]

duban = make_demon("001", lane=0, owner=Side.PLAYER_2)
state = place_demon(state, duban)
duban = state.demons[-1]

event = GameEvent(
event_type=EventType.ABILITY_USED,
source=conformity,
target=duban,
value=0,
side=Side.PLAYER_1,
lane=0,
)
new_state = fire_event(state, event)

# Duban should be unchanged
duban_on_field = [d for d in new_state.demons if d.unit_id == "001"]

Expected Postconditions

  • Duban is still on field (no replacement possible).

  • Board state unchanged.

Assertions

assert len(duban_on_field) == 1, (
"Duban should remain on field when no Conformity familiars in deck."
)