Skip to main content

Adramelech

Hell's Minion

Unit #017

HPPWRCPSpeedRangeTier
12 (+6)3 (+1)3 (+2)NormalLocalC

Abilities

Passive

Adramelech cannot perform Command. (Fused Demons have both names.)
Engine Implementation
def _adramelech_cannot_command_noop(state, demon) -> dict:
"""No-op passive registering ability index 0 for Adramelech.

The "cannot perform Command" restriction is enforced in action validation.
This registration ensures the ability slot is tracked.
"""
return {}

register_passive("017", 0, _adramelech_cannot_command_noop)

Command — 0 AP

i: Command: 0 AP - a: Ready Adramelech. e: This action's performer cannot perform actions.
Engine Implementation
def _adramelech_command(state: GameState, demon: DemonInstance, targets, choices, rng) -> GameState:
"""#017 Adramelech — Command
Allied, 0 AP, (exhaust): Ready Adramelech. Status: This action's performer
cannot perform actions (expires end of current main phase).

Allied: any allied demon can perform this (ability_implementation_guide.json).
The performer (demon) exhausts — handled by execute_ability (tap_required=True).
This handler:
1. Readies Adramelech (the unit with unit_id "017"), NOT the performer.
2. Applies "cannot_act" status on the performer (the demon that activated this).
Status expires end of phase (confusion #1 — status effects are temporary).

Targets: None (Adramelech is the fixed target)
"""
# Ready Adramelech — find it by unit_id on the same side as the performer
new_state = copy.deepcopy(state)
for d in new_state.demons:
if d.unit_id == "017" and d.owner == demon.owner:
d.state = DemonState.READIED
break

# Locate the performer in the new state to use as apply_status source/target
performer = next(d for d in new_state.demons if d.instance_id == demon.instance_id)
new_state = apply_status(new_state, performer, performer, "cannot_act", 1)
return new_state

register_ability("017", 1, _adramelech_command)
Adramelech