Skip to main content

Hebe

Life Something

Unit #060

HPPWRCPSpeedRangeTier
18 (+12)23 (+2)NormalLocalD

Abilities

Passive

d: At the start of each Rest Phase, remove all damage on Hebe.
Engine Implementation
def _hebe_rest_phase_trigger(
state: GameState, event: GameEvent, demon: DemonInstance, depth: int
):
"""#060 Hebe — Time passive: At the start of each Rest Phase, remove all damage.

Fires on REST_PHASE_START. Fully heals Hebe (damage → 0) at the start
of every rest phase. This is Hebe's signature Time ability.
"""
from engine.operations import remove_all_damage

return remove_all_damage(state, demon)

register_trigger("060", 0, _hebe_rest_phase_trigger)

Passive

Hebe has -5k and -3n.
Engine Implementation
def _hebe_pwr_def(state: GameState, demon: DemonInstance) -> dict[str, int]:
return {"pwr": -5, "def": -3}

register_passive("060", 1, _hebe_pwr_def)

Imperfect Ambrosia — 0 AP

h: Imperfect Ambrosia: 0 AP - a: Exhaust and remove all damage from Target Local Demon. e: The targeted Demon has -5k and -3n.
Engine Implementation
def _hebe_imperfect_ambrosia(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#060 Hebe — Imperfect Ambrosia
Start of Turn, 0 AP, (exhaust): Exhaust and remove all damage from Target Local Demon.
Status: The targeted Demon has -5 PWR and -3 DEF.

Exhausts the target, removes all damage, then applies -5 PWR / -3 DEF status.
Status expires end of current main phase (confusion #9 — NOT permanent).
Target is the first element of `targets`.
"""
from engine.operations import exhaust_demon, remove_all_damage
from engine.status_effects import apply_status

if not targets:
return state

target = targets[0]

# Exhaust the target
state = exhaust_demon(state, target)

# Re-fetch target after state change (copy-on-write)
target_refreshed = next(
(d for d in state.demons if d.instance_id == target.instance_id), None
)
if target_refreshed is None:
return state

# Remove all damage from target
state = remove_all_damage(state, target_refreshed)

# Re-fetch target again
target_refreshed = next(
(d for d in state.demons if d.instance_id == target.instance_id), None
)
if target_refreshed is None:
return state

# Apply -5 PWR and -3 DEF status
state = apply_status(state, demon, target_refreshed, "pwr", -5)
target_refreshed = next(
(d for d in state.demons if d.instance_id == target.instance_id), None
)
if target_refreshed is None:
return state
state = apply_status(state, demon, target_refreshed, "def", -3)

return state

register_ability("060", 2, _hebe_imperfect_ambrosia)
Hebe