Ejemplo n.º 1
0
def gain_card_to_topdeck(state, player, pile):
    if pile.qty > 0:
        process_event(state, log.GainEvent(player, pile.card))
        process_event(state, log.EnterContext())
        process_event(state, log.TopdeckEvent(player, pile.card))
        player.draw_pile.append(pile.card)
        pile.qty -= 1
        process_event(state, log.ExitContext())
Ejemplo n.º 2
0
def play_inplace(state, player, card):
    """
    Play a card without moving it.

    Activates the effect of the card.
    Wraps the card effect with a EnterContext and ExitContext event.
    """
    process_event(state, log.PlayEvent(player, card))
    process_event(state, log.EnterContext())
    card.play(state, player)
    process_event(state, log.ExitContext())
Ejemplo n.º 3
0
def buy_card(state, player, card_name):
    """
    TODO (henry-prior): assert statements break execution, can we handle w
        a return to decision context and warning? (will only come up when human
        is playing)
    """
    assert (card_name in state.supply_piles)
    assert (state.supply_piles[card_name].qty > 0)

    pile = state.supply_piles[card_name]
    card = pile.card

    assert (player.coins >= card.cost)
    player.coins -= card.cost
    player.buys -= 1
    process_event(state, log.BuyEvent(player, card))
    process_event(state, log.EnterContext())
    gain_card_to_discard(state, player, pile)
    process_event(state, log.ExitContext())
Ejemplo n.º 4
0
def play_inplace(state, player, card):
    process_event(state, log.PlayEvent(player, card))
    process_event(state, log.EnterContext())
    card.play(state, player)
    process_event(state, log.ExitContext())