Skip to main content

Marchosias

The Wolf Knight

Unit #087

HPPWRCPSpeedRangeTier
15 (+9)24 (+3)FastLocalB

Abilities

Passive

c: When an Enemy action targets a Local Allied Demon, if Marchosias is a Valid target, you may change 1 target to Marchosias.
Engine Implementation
def _marchosias_target_guard_slot(state, demon) -> dict:
"""Slot marker for Marchosias ability index 0.

The redirect logic lives in apply_marchosias_target_redirect() and is
hooked into execute_ability and the attack path in game_loop.
"""
return {}

register_passive("087", 0, _marchosias_target_guard_slot)

Shield Slam — 2 AP

g: Shield Slam: 2 AP - a: Deal k Fixed Damage to Target Local Demon. e: The targeted Demon has -2k. Marchosias has +3n.
Engine Implementation
def _marchosias_shield_slam(
state: GameState, demon: DemonInstance, targets, choices, rng
) -> GameState:
"""#087 Marchosias — Shield Slam
Quick, 2 AP, (exhaust): Deal this demon's PWR Fixed Damage to Target Local Demon.
Status: The targeted Demon has -2 PWR. Marchosias has +3 DEF.
Status expires end of current main phase.

CRITICAL: Fixed Damage bypasses DEF entirely (deal_fixed_damage).
PWR-scaling uses get_effective_pwr() which includes fusion bonus.
Two statuses: target gets -2 PWR; Marchosias (self) gets +3 DEF.
Target must be Local — enforced by targeting logic, not handler.

Targets: [target_local_demon]
"""
target = targets[0]
pwr = get_effective_pwr(state, demon)
state = deal_fixed_damage(state, target, pwr)

# Relocate target in new state (deal_fixed_damage deepcopied state)
target_in_new = next(
(d for d in state.demons if d.instance_id == target.instance_id), None
)
if target_in_new is not None:
state = apply_status(state, demon, target_in_new, "pwr", -2)

# Relocate Marchosias in new state for self-buff
marchosias_in_new = next(
(d for d in state.demons if d.instance_id == demon.instance_id), None
)
if marchosias_in_new is not None:
state = apply_status(state, marchosias_in_new, marchosias_in_new, "def", 3)

return state

register_ability("087", 1, _marchosias_shield_slam)
Marchosias