Humbaba
The Undying Guardian
Unit #082
| HP | PWR | CP | Speed | Range | Tier |
|---|---|---|---|---|---|
| 15 (+9) | 0 (-2) | 4 (+3) | Normal | Local | D |
Abilities
Passive
Humbaba has +1k for every 3 remaining HP Humbaba has.
Engine Implementation
def _humbaba_pwr(state, demon) -> dict:
"""Return +1 PWR per 3 remaining HP (remaining = current_hp - damage)."""
from engine.operations import get_effective_hp # lazy: avoids circular
max_hp = get_effective_hp(state, demon)
remaining_hp = max(0, max_hp - demon.damage)
bonus = remaining_hp // 3
return {"pwr": bonus} if bonus > 0 else {}
register_passive("082", 0, _humbaba_pwr)
Trinity's Completion — 0 AP
g: Trinity's Completion: 0 AP: Trinity's Completion cannot be performed if Humbaba's sustained damage is evenly divisible by 3. Remove 1 damage from Humbaba until Humbaba's sustained damage is evenly divisible by 3.
Engine Implementation
def _humbaba_trinitys_completion(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#082 Humbaba — Trinity's Completion
Quick, 0 AP: Cannot be performed if Humbaba's damage is divisible by 3.
Remove 1 damage from Humbaba until damage is divisible by 3.
If damage % 3 == 0: ability cannot be used (invalid activation — caller should block).
Otherwise: remove (damage % 3) damage from Humbaba (brings to next lower multiple of 3).
"""
if demon.damage == 0 or demon.damage % 3 == 0:
return state # Cannot perform — already divisible by 3
# Amount to remove: remainder to reach divisible-by-3
remainder = demon.damage % 3
# Remove 'remainder' damage (1 at a time per text, net same result)
from engine.operations import remove_damage
state = remove_damage(state, demon, remainder)
return state
register_ability("082", 1, _humbaba_trinitys_completion)