Vassago
Demon Without a Home
Unit #081
| HP | PWR | CP | Speed | Range | Tier |
|---|---|---|---|---|---|
| 15 (+9) | 2 | 4 (+3) | Fast | Any | B |
Abilities
For You — 0 AP
g: For You: 0 AP - b: Deal 3 Fixed Damage to Vassago. e: Target Other Demon has +3n.
Engine Implementation
def _vassago_for_you(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#081 Vassago — For You
Quick, 0 AP, (ready): Deal 3 Fixed Damage to Vassago. Status: Target Other Demon has +3 DEF.
Status expires end of current main phase.
Quick timing, (ready) — does NOT exhaust.
Fixed Damage bypasses DEF entirely (self-harm).
After self-damage, target other demon gets +3 DEF status.
Note: No 1x on this ability — can be used every Quick window.
Targets: [target_other_demon]
"""
state = deal_fixed_damage(state, demon, 3)
target = targets[0]
# Re-locate Vassago (source) in state after self-damage deepcopy
vassago_in_new = next(
(d for d in state.demons if d.instance_id == demon.instance_id), None
)
source = vassago_in_new if vassago_in_new is not None else demon
state = apply_status(state, source, target, "def", 3)
return state
register_ability("081", 0, _vassago_for_you)
For Everyone — 0 AP
g: For Everyone: 0 AP - 1x: Fatally Wound Vassago and apply e: All Allied Demons cannot take damage (even from Fixed Damage).
Engine Implementation
def _vassago_for_everyone(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#081 Vassago — For Everyone
Quick, 0 AP, 1x: Fatally Wound Vassago and apply Status: All Allied Demons
cannot take damage (even from Fixed Damage).
CRITICAL: fatally_wounded is one-way — once set, cannot be cleared.
Vassago sacrifices itself. All allied demons gain "cannot_take_damage" status.
Status expires end of current main phase.
"""
from engine.status_effects import apply_status
# Fatally wound Vassago
new_state = copy.deepcopy(state)
vassago_in_state = next(
(d for d in new_state.demons if d.instance_id == demon.instance_id), None
)
if vassago_in_state is not None:
vassago_in_state.fatally_wounded = True
state = new_state
# Apply "cannot_take_damage" to all allied demons
owner = demon.owner
allied = [d for d in state.demons if d.owner == owner]
for ally in allied:
a_current = next(
(d for d in state.demons if d.instance_id == ally.instance_id), None
)
if a_current is not None:
state = apply_status(state, demon, a_current, "cannot_take_damage", 1)
return state
register_ability("081", 1, _vassago_for_everyone)