Azag
Unit #066
| HP | PWR | CP | Speed | Range | Tier |
|---|---|---|---|---|---|
| 9 (+3) | 2 | 3 (+2) | Fast | Local | B |
Abilities
Quickstep — 0 AP
g: Quickstep: 0 AP - b, 1x: Move Azag 1 Lane.
Engine Implementation
def _azag_quickstep(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#066 Azag — Quickstep
Quick, 0 AP, (ready), 1x: Move Azag 1 Lane.
Quick timing, (ready) — does NOT exhaust.
1x per turn (confusion #20).
Target lane from choices["lane"] (1 adjacent lane).
Targets: None
Choices: {"lane": int}
"""
return _move_to_lane(state, demon, choices["lane"])
register_ability("066", 0, _azag_quickstep)
Sadism — 1 AP
g: Sadism: 1 AP - b, 1x: Deal 2 damage to Target In Range Demon.
Engine Implementation
def _azag_sadism(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#066 Azag — Sadism
Quick, 1 AP, (ready), 1x: Deal 2 damage to Target In Range Demon.
Quick timing, (ready) — does NOT exhaust.
1x per turn (confusion #20).
Deals 2 damage reduced by DEF (deal_damage, NOT fixed).
Targets: [target_in_range_demon]
"""
target = targets[0]
state = deal_damage(state, demon, target, 2)
return state
register_ability("066", 1, _azag_sadism)
Shrill Howl — 3 AP
h: Shrill Howl: 3 AP - b, 1x: e: All Local Enemy Demons have -2n. Azag has -2n and ignores 1x costs on g actions.
Engine Implementation
def _azag_shrill_howl(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#066 Azag — Shrill Howl
Start of Turn, 3 AP, (ready), 1x: Status: All Local Enemy Demons have -2 DEF.
Azag has -2 DEF and ignores 1x costs on Quick actions.
Applies -2 DEF to all local enemy demons.
Applies -2 DEF to Azag itself.
Applies "ignore_1x_quick" status marker to Azag (value=1).
Status expires end of current main phase.
(ready) = does NOT exhaust Azag.
"""
from engine.status_effects import apply_status
opponent = Side.PLAYER_2 if demon.owner == Side.PLAYER_1 else Side.PLAYER_1
local_enemies = [
d for d in state.demons
if d.lane == demon.lane and d.owner == opponent
]
for enemy in local_enemies:
state = apply_status(state, demon, enemy, "def", -2)
# Azag has -2 DEF
state = apply_status(state, demon, demon, "def", -2)
# Azag ignores 1x costs on Quick actions (marker)
state = apply_status(state, demon, demon, "ignore_1x_quick", 1)
return state
register_ability("066", 2, _azag_shrill_howl)