Skip to main content

Morpheus

God of Dreams

Unit #055

HPPWRCPSpeedRangeTier
9 (+3)4 (+2)3 (+2)NormalAnyB

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)
Morpheus