Skip to main content

Aquarius

Unit #107

HPPWRCPSpeedRangeTier
12 (+6)23 (+2)NormalAnyC

Abilities

Erosion and Sedimentation — 1 AP

g: Erosion and Sedimentation: 1 AP - 1x: Target 2 Other Distinct Demons. Deal 1 damage to one targeted Demon. Remove 2 damage from the other targeted Demon.
Engine Implementation
def _aquarius_erosion_sedimentation(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#107 Aquarius — Erosion and Sedimentation
Quick, 1 AP, 1x: Target 2 Other Distinct Demons. Deal 1 damage to one targeted
Demon. Remove 2 damage from the other targeted Demon.

targets[0] = demon to damage (1 Fixed Damage).
targets[1] = demon to heal (remove 2 damage).
choices["damage_first"] = True/False determines which target receives damage.
Fixed damage bypasses DEF.
"""
from engine.operations import deal_fixed_damage, remove_damage

if not targets or len(targets) < 2:
return state

# Default: targets[0] takes damage, targets[1] gets healed
if choices and choices.get("heal_first", False):
heal_target, dmg_target = targets[0], targets[1]
else:
dmg_target, heal_target = targets[0], targets[1]

t_dmg = next(
(d for d in state.demons if d.instance_id == dmg_target.instance_id), None
)
t_heal = next(
(d for d in state.demons if d.instance_id == heal_target.instance_id), None
)

if t_dmg is not None and not t_dmg.fatally_wounded:
state = deal_fixed_damage(state, t_dmg, 1)

if t_heal is not None:
state = remove_damage(state, t_heal, 2)

return state

register_ability("107", 0, _aquarius_erosion_sedimentation)

Evaporation and Condensation — 2 AP

g: Evaporation and Condensation: 2 AP - a: e: All Demons with 0 damage on them have +2k and -2n. All Demons with at least 1 damage on them have -2k and +2n.
Engine Implementation
def _aquarius_evaporation_condensation(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#107 Aquarius — Evaporation and Condensation
Quick, 2 AP, (exhaust): Status: All Demons with 0 damage have +2 PWR and -2 DEF.
All Demons with at least 1 damage have -2 PWR and +2 DEF.

CRITICAL (confusion #21): "All Demons" includes allied demons — friendly fire applies.
Status expires end of current main phase.
"""
from engine.status_effects import apply_status

for d in list(state.demons):
d_current = next(
(x for x in state.demons if x.instance_id == d.instance_id), None
)
if d_current is None:
continue
if d_current.damage == 0:
state = apply_status(state, demon, d_current, "pwr", 2)
state = apply_status(state, demon, d_current, "def", -2)
else:
state = apply_status(state, demon, d_current, "pwr", -2)
state = apply_status(state, demon, d_current, "def", 2)

return state

register_ability("107", 1, _aquarius_evaporation_condensation)
Aquarius