Morpheus
God of Dreams
Unit #055
| HP | PWR | CP | Speed | Range | Tier |
|---|---|---|---|---|---|
| 9 (+3) | 4 (+2) | 3 (+2) | Normal | Any | B |
Abilities
Lullaby — 1 AP
h: Lullaby: 1 AP - b, 1x: e: At the end of this Main Phase, if Morpheus is alive, Exhaust All Other Local Demons.
Engine Implementation
def _morpheus_lullaby(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#055 Morpheus — Lullaby
Start of Turn, 1 AP, (ready), 1x: Status: At the end of this Main Phase,
if Morpheus is alive, Exhaust All Other Local Demons.
CRITICAL (confusion #21): "All Other Local Demons" includes allied demons.
Applies "lullaby_pending" status marker to Morpheus.
Turn sequence reads at phase end and exhausts all other local demons if Morpheus alive.
"""
from engine.status_effects import apply_status
state = apply_status(state, demon, demon, "lullaby_pending", 1)
return state
register_ability("055", 0, _morpheus_lullaby)
Endless Dreams — 2 AP
Endless Dreams: 2 AP - b, 1x: Deal k Fixed Damage to All Exhausted Demons. e: Morpheus cannot perform actions.
Engine Implementation
def _morpheus_endless_dreams(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#055 Morpheus — Endless Dreams
2 AP, (ready), 1x: Deal this demon's PWR Fixed Damage to All Exhausted Demons.
Status: Morpheus cannot perform actions.
Status expires end of current main phase.
CRITICAL (confusion #21): "All Exhausted Demons" includes YOUR OWN exhausted allies.
Fixed Damage bypasses DEF entirely (deal_fixed_damage).
PWR-scaling uses get_effective_pwr() which includes fusion bonus.
Status: Morpheus gains "cannot_act" = 1 after resolving.
Targets: None (automatically targets all exhausted demons on field)
"""
pwr = get_effective_pwr(state, demon)
exhausted = [
d for d in state.demons
if d.state == DemonState.EXHAUSTED and not d.fatally_wounded
]
for target in exhausted:
state = deal_fixed_damage(state, target, pwr)
# Status: Morpheus cannot perform actions (cannot_act on self)
morpheus_in_new = next(
(d for d in state.demons if d.instance_id == demon.instance_id), None
)
if morpheus_in_new is not None:
state = apply_status(state, morpheus_in_new, morpheus_in_new, "cannot_act", 1)
return state
register_ability("055", 1, _morpheus_endless_dreams)