Skip to main content

Crocell

Sovereign of Geometry

Unit #025

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

Abilities

Parallel Lines — 0 AP

Parallel Lines: 0 AP - b, 1x: Move Target Allied Demon to Any Lane.
Engine Implementation
def _crocell_parallel_lines(state: GameState, demon: DemonInstance, targets, choices, rng) -> GameState:
"""#025 Crocell — Parallel Lines
0 AP, (ready), 1x: Move Target Allied Demon to Any Lane.

Same effect pattern as Bathin's Bridge Space.
(ready) means demon must be readied; does NOT exhaust on use.
1x per turn (confusion #20).
Target lane from choices["lane"].

Targets: [target_allied_demon]
Choices: {"lane": int}
"""
return _move_to_lane(state, targets[0], choices["lane"])

register_ability("025", 0, _crocell_parallel_lines)

Topological Reduction — 2 AP

Topological Reduction: 2 AP - a: You may Independently move each Demon in Target Lane to Any Lane.
Engine Implementation
def _crocell_topological_reduction(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#025 Crocell — Topological Reduction
Action, 2 AP, (exhaust): You may Independently move each Demon in Target Lane to Any Lane.

Moves each demon in the target lane to its chosen lane (from choices["lane_map"],
a dict mapping instance_id -> target_lane, or defaults to scattering them).
Target lane is choices["lane"] (the lane to pull from).
choices["lane_map"] = {instance_id: new_lane, ...} for each demon moved.
"""
if choices and "lane" in choices:
target_lane = choices["lane"]
elif targets:
target_lane = targets[0].lane
else:
return state

# Get all demons in target lane
demons_in_lane = [d for d in state.demons if d.lane == target_lane]

lane_map = choices.get("lane_map", {}) if choices else {}

new_state = copy.deepcopy(state)
for d in new_state.demons:
if d.lane != target_lane:
continue
if d.instance_id in lane_map:
d.lane = lane_map[d.instance_id]
# If no lane_map entry, demon stays in place (controller chose not to move it)

return new_state

register_ability("025", 1, _crocell_topological_reduction)
Crocell