Skip to main content

Azag

Unit #066

HPPWRCPSpeedRangeTier
9 (+3)23 (+2)FastLocalB

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)
Azag