Skip to main content

Gomita

Friar of Greed

Unit #035

HPPWRCPSpeedRangeTier
12 (+6)4 (+2)3 (+2)FastDistantB

Abilities

Bribe — 1 AP

Bribe: 1 AP - 1x: Your opponent gains 1 AP. Take the Time Token. During the next Contract Phase, you are considered to have played a demon card with Speed: ^Fast.^
Engine Implementation
def _gomita_bribe(state: GameState, demon: DemonInstance, targets, choices, rng) -> GameState:
"""#035 Gomita — Bribe
Action, 1 AP, 1x:
1. Opponent gains 1 AP.
2. Take the Time Token.
3. Status: treated as Speed:Fast in next Contract Phase.

The "Fast in next Contract Phase" is stored as a status marker
"gomita_fast_contract" on Gomita that the contract phase checks.
"""
new_state = copy.deepcopy(state)

# 1. Opponent gains 1 AP
opponent = Side.PLAYER_2 if demon.owner == Side.PLAYER_1 else Side.PLAYER_1
new_state.players[opponent].ap += 1

# 2. Take the Time Token (self gets it, opponent loses it)
# Only trigger Valefar's passive if the token actually changes hands
# (opponent had it, now owner gets it). If nobody had it or owner already
# had it, no "gain" occurred — Valefar doesn't fire.
token_changed = new_state.players[opponent].has_time_token
new_state.players[demon.owner].has_time_token = True
new_state.players[opponent].has_time_token = False
if token_changed:
try:
from engine.abilities_complex import apply_valefar_time_token_bonus
new_state = apply_valefar_time_token_bonus(new_state, demon.owner)
except ImportError:
pass

# 3. Apply "gomita_fast_contract" status marker (expires end of next contract phase)
gomita_in_new = next(
(d for d in new_state.demons if d.instance_id == demon.instance_id), None
)
if gomita_in_new is not None:
# Re-apply status using the copied state
new_state = apply_status(new_state, gomita_in_new, gomita_in_new, "gomita_fast_contract", 1)

return new_state

register_ability("035", 0, _gomita_bribe)
Gomita