✅ Berith fused bottom gains status on enemy action
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_complex.py::TestBerithFusedBottomProjects::test_berith_fused_bottom_gains_status_on_enemy_action |
Murmur (top) fused with Berith (bottom). Enemy resolves an
Preconditions
-
Lane 0: P1's fused demon — Murmur (#002) top, Berith (#070) bottom, READIED
-
Lane 1: P2's Duban (#001) — enemy source of action
-
No status effects
Action
- Fire ABILITY_USED event with source=Duban, side=PLAYER_2
from engine.events import GameEvent, EventType, fire_event
from engine.status_effects import get_stat_modifier
fused = make_fused_demon("002", "070", lane=0, owner=Side.PLAYER_1)
duban = make_demon("001", lane=1, owner=Side.PLAYER_2)
state, placed = _make_state_with_demons(fused, duban)
fused_p, duban_p = placed
event = GameEvent(
event_type=EventType.ABILITY_USED,
source=duban_p,
target=None,
value=0,
side=Side.PLAYER_2,
lane=1,
)
result = fire_event(state, event)
fused_after = next(d for d in result.demons if d.instance_id == fused_p.instance_id)
pwr_mod = get_stat_modifier(result, fused_after, "pwr")
ap_mod = get_stat_modifier(result, fused_after, "ap_cost")
Expected Postconditions
-
Fused demon has +1 PWR status
-
Fused demon has -1 AP Cost status
-
Fused demon.abilities_used_this_turn["0"] == 1
Assertions
assert pwr_mod == 1, (
f"Fused demon with Berith bottom must have +1 PWR status from enemy "
f"action. Got {pwr_mod}."
)
assert ap_mod == -1, (
f"Fused demon with Berith bottom must have -1 AP Cost status. Got {ap_mod}."
)
assert fused_after.abilities_used_this_turn.get("0", 0) == 1, (
"Fused demon's Berith counter must advance to 1."
)