Skip to main content

Eligos

Ender of War

Unit #067

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

Abilities

Volley Fire — 1 AP

i: Volley Fire: 1 AP - a: Deal 2 damage to All Enemy Demons in Target Distant Lane.
Engine Implementation
def _eligos_volley_fire(state: GameState, demon: DemonInstance, targets, choices, rng) -> GameState:
"""#067 Eligos — Volley Fire
Allied, 1 AP, (exhaust): Deal 2 damage to All Enemy Demons in Target Distant Lane.

Allied: ANY allied demon can perform this (not just Eligos).
"Enemy Demons" = explicitly enemy-only, no friendly fire.
"Distant Lane" = different from the performing demon's lane.
2 damage is Fixed (not PWR-based).

Target lane is specified via choices["lane"] or first target's lane.
"""
from engine.operations import deal_fixed_damage

if choices and "lane" in choices:
target_lane = choices["lane"]
elif targets:
target_lane = targets[0].lane
else:
return state

opponent = Side.PLAYER_2 if demon.owner == Side.PLAYER_1 else Side.PLAYER_1
enemy_demons = [
d for d in state.demons
if d.lane == target_lane and d.owner == opponent
]

for enemy in enemy_demons:
state = deal_fixed_damage(state, enemy, 2)

return state

register_ability("067", 0, _eligos_volley_fire)

Flank — 1 AP

Flank: 1 AP - b, 1x: e: If there are more Allied Demons than Enemy Demons in Target Lane, Enemy Demons in the targeted Lane have -2n.
Engine Implementation
def _eligos_flank(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#067 Eligos — Flank
Action, 1 AP, (ready), 1x: Status: If there are more Allied Demons than
Enemy Demons in Target Lane, Enemy Demons in the targeted Lane have -2 DEF.

Checks the target lane: if allied count > enemy count, applies -2 DEF status
to all enemy demons in that lane. Status expires end of current main phase.
(ready) means Eligos stays READIED after this ability.
"""
from engine.status_effects import apply_status

if choices and "lane" in choices:
target_lane = choices["lane"]
elif targets:
target_lane = targets[0].lane
else:
return state

opponent = Side.PLAYER_2 if demon.owner == Side.PLAYER_1 else Side.PLAYER_1

allied_in_lane = [
d for d in state.demons if d.lane == target_lane and d.owner == demon.owner
]
enemy_in_lane = [
d for d in state.demons if d.lane == target_lane and d.owner == opponent
]

# Condition: more allied than enemy in target lane
if len(allied_in_lane) <= len(enemy_in_lane):
return state # Condition not met — no effect

# Apply -2 DEF to all enemy demons in target lane
for enemy in enemy_in_lane:
state = apply_status(state, demon, enemy, "def", -2)

return state

register_ability("067", 1, _eligos_flank)
Eligos