Chaos
Unit #054
| HP | PWR | CP | Speed | Range | Tier |
|---|---|---|---|---|---|
| 18 | 2 | 3 | Slow | Local | B |
Abilities
Passive
Chaos is incapable of Fusion.
Engine Implementation
def _chaos_fusion_block_noop(state, demon) -> dict:
"""No-op passive registering ability index 0 for Chaos.
The actual fusion block logic is enforced in fusion.py can_fuse()
which calls chaos_cannot_fuse() when top.unit_id == '054' or
bottom.unit_id == '054'.
"""
return {}
register_passive("054", 0, _chaos_fusion_block_noop)
Chaos — 0 AP
h: Chaos: 0 AP - 1x: e: At the end of this Main Phase, Ready and take control of Any Demon and their potential Familiars. Then, give control of Chaos to your opponent.
Engine Implementation
def _chaos_chaos_ability(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#054 Chaos — Chaos
Start of Turn, 0 AP, 1x: Status: At the end of this Main Phase, Ready and take
control of Any Demon and their potential Familiars. Then, give control of
Chaos to your opponent.
Applies "chaos_control_pending" status marker to Chaos (value = target instance_id).
The target demon instance_id is stored in choices["target_id"] or targets[0].
At end of phase, turn_sequence reads this marker and:
1. Transfers target demon + familiars to Chaos's owner, readied.
2. Transfers Chaos to opponent's control.
Status expires end of current main phase.
"""
from engine.status_effects import apply_status
if choices and "target_id" in choices:
target_id = choices["target_id"]
elif targets:
target_id = targets[0].instance_id
else:
return state
# Mark Chaos with the pending control-steal (value = target instance_id)
state = apply_status(state, demon, demon, "chaos_control_pending", target_id)
return state
register_ability("054", 1, _chaos_chaos_ability)