Raum
The Unseen Blade
Unit #071
| HP | PWR | CP | Speed | Range | Tier |
|---|---|---|---|---|---|
| 15 (+9) | 4 (+2) | 4 (+3) | Normal | Local | B |
Abilities
Passive
c: Raum has +Xk and -Xn where X is the number of Local Enemy Demons.
Engine Implementation
def _raum_pwr(state: GameState, demon: DemonInstance) -> dict[str, int]:
"""Return +X PWR where X is the number of enemy demons in Raum's lane."""
opponent = Side.PLAYER_2 if demon.owner == Side.PLAYER_1 else Side.PLAYER_1
x = sum(1 for d in state.demons if d.lane == demon.lane and d.owner == opponent)
return {"pwr": x} if x > 0 else {}
def _raum_def(state: GameState, demon: DemonInstance) -> dict[str, int]:
"""Return -X DEF where X is the number of enemy demons in Raum's lane."""
opponent = Side.PLAYER_2 if demon.owner == Side.PLAYER_1 else Side.PLAYER_1
x = sum(1 for d in state.demons if d.lane == demon.lane and d.owner == opponent)
return {"def": -x} if x > 0 else {}
register_passive("071", 0, _raum_pwr)
Bloodshed — X AP
Bloodshed: X AP - a: Deal k-2 damage to up to X Distinct In Range Target Demons.
Engine Implementation
def _raum_bloodshed(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#071 Raum — Bloodshed
Action, X AP, (exhaust): Deal PWR-2 damage to up to X Distinct In Range Target Demons.
X is read from choices["x"]. Targets may be up to X distinct demons.
Damage = max(0, PWR-2) regular damage (reduced by DEF).
Uses get_effective_pwr which includes fusion bonus fPWR.
"""
from engine.operations import get_effective_pwr, deal_damage
x = choices.get("x", 0) if choices else 0
if x <= 0 or not targets:
return state
pwr = get_effective_pwr(state, demon)
damage_amount = max(0, pwr - 2)
if damage_amount <= 0:
return state
# Only hit up to X distinct targets
for t in targets[:x]:
state = deal_damage(state, demon, t, damage_amount)
return state
register_ability("071", 1, _raum_bloodshed)