Hebe
Life Something
Unit #060
| HP | PWR | CP | Speed | Range | Tier |
|---|---|---|---|---|---|
| 18 (+12) | 2 | 3 (+2) | Normal | Local | D |
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)