Wolf
Familiar of Barbatos — Card 1 of 1
| HP | PWR | CP | Speed | Range |
|---|---|---|---|---|
| 3 | 3 | 1 | A (Autonomous) | Local |
Abilities
Sprint — 0 AP
g: Sprint: 0 AP - b, 1x: Move Wolf 1 Lane.
Engine Implementation
def _wolf_sprint_handler(state: GameState, demon: DemonInstance, targets, choices, rng) -> GameState:
"""111_1 Wolf — Sprint: Move Wolf 1 Lane.
choices: {"direction": 1 or -1} or {"target_lane": int}
"""
direction = 1
if choices and "direction" in choices:
direction = choices["direction"]
target_lane = demon.lane + direction
if choices and "target_lane" in choices:
target_lane = choices["target_lane"]
if not (0 <= target_lane < LANE_COUNT):
return state
import copy
new_state = copy.deepcopy(state)
wolf_in_state = _find_demon(new_state, demon.instance_id)
if wolf_in_state is not None:
wolf_in_state.lane = target_lane
return new_state
register_ability("111_1", 0, _wolf_sprint_handler)
Hidden Path — 1 AP
g: Hidden Path: 1 AP - b, 1x: Move Barbatos to Wolf. (Fused Demons have both names.)
Engine Implementation
def _wolf_hidden_path_handler(state: GameState, demon: DemonInstance, targets, choices, rng) -> GameState:
"""111_1 Wolf — Hidden Path: Move Barbatos to Wolf's lane.
Fused Demons have both names — so if Barbatos is fused with another demon,
that fused demon moves to Wolf's lane.
"""
# Find Barbatos (unit_id "111") — may be fused
barbatos = _find_demon_by_parent_unit_id(state, "111", demon.owner)
if barbatos is None:
return state
import copy
new_state = copy.deepcopy(state)
barbatos_in_state = _find_demon(new_state, barbatos.instance_id)
wolf_in_state = _find_demon(new_state, demon.instance_id)
if barbatos_in_state is not None and wolf_in_state is not None:
barbatos_in_state.lane = wolf_in_state.lane
return new_state
register_ability("111_1", 1, _wolf_hidden_path_handler)