Eligos
Ender of War
Unit #067
| HP | PWR | CP | Speed | Range | Tier |
|---|---|---|---|---|---|
| 12 (+6) | 3 (+1) | 3 (+2) | Normal | Distant | C |
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)