Ose
Bringer of Insanity
Unit #089
| HP | PWR | CP | Speed | Range | Tier |
|---|---|---|---|---|---|
| 9 (+3) | 3 (+1) | 3 (+2) | Normal | Local | D |
Abilities
Insanity — 0 AP
Insanity: 0 AP - b, 1x: When declaring a target for this action, choose a Lane and randomly Target a Demon in that Lane. The targeted Demon's Evoker may have the targeted Demon perform an action with -2 AP Cost and ignoring a and b costs.
Engine Implementation
def _ose_insanity(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#089 Ose — Insanity
Action, 0 AP, (ready), 1x: Randomly Target a Demon in a chosen Lane. The
targeted Demon's Evoker may have the targeted Demon perform an action with
-2 AP Cost, ignoring (exhaust) and (ready) costs.
Target is randomly selected from the chosen lane.
Applies "insanity_discount" status to the target (value=-2 AP cost).
Applies "ignore_exhaust" and "ignore_ready" statuses.
Status expires end of current main phase.
"""
from engine.status_effects import apply_status
import random as _rng
# Determine target
if targets:
target = targets[0]
elif choices and "lane" in choices:
lane_demons = [d for d in state.demons if d.lane == choices["lane"] and not d.fatally_wounded]
if not lane_demons:
return state
target = (rng.choice(lane_demons) if rng else _rng.choice(lane_demons))
else:
return state
t_current = next(
(d for d in state.demons if d.instance_id == target.instance_id), None
)
if t_current is None or t_current.fatally_wounded:
return state
state = apply_status(state, demon, t_current, "ap_cost", -2)
state = apply_status(state, demon, t_current, "ignore_exhaust", 1)
state = apply_status(state, demon, t_current, "ignore_ready", 1)
return state
register_ability("089", 0, _ose_insanity)