Gomita
Friar of Greed
Unit #035
| HP | PWR | CP | Speed | Range | Tier |
|---|---|---|---|---|---|
| 12 (+6) | 4 (+2) | 3 (+2) | Fast | Distant | B |
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)