def duel(game_control, args): targets_ids = args['targets'] user = game_control.player_by_token(args['token']) cards = game_control.cards_by_ids(args['use']) checking.only_one_target(targets_ids) target = game_control.player_by_id(targets_ids[0]) checking.forbid_target_self(user, target) checking.only_one_card_named_as(cards, 'duel') game_control.use_cards_for_players(user, targets_ids, args['action'], cards) game_control.push_frame(play_slash_frame(game_control, target, user, cards)) return { 'code': ret_code.OK }
def sabotage(game_control, args): targets_ids = args['targets'] user = game_control.player_by_token(args['token']) cards = game_control.cards_by_ids(args['use']) checking.only_one_target(targets_ids) target = game_control.player_by_id(targets_ids[0]) checking.only_one_card_named_as(cards, 'sabotage') checking.forbid_target_self(user, target) checking.forbid_target_no_card(target, game_control) game_control.use_cards_for_players(user, targets_ids, args['action'], cards) on_result = lambda gc, a: None game_control.push_frame( frames.AcceptMessage(game_control, [user], lambda a: on_message(game_control, target, a), on_result)) return { 'code': ret_code.OK }
def sabotage(game_control, args): targets_ids = args['targets'] user = game_control.player_by_token(args['token']) cards = game_control.cards_by_ids(args['use']) checking.only_one_target(targets_ids) target = game_control.player_by_id(targets_ids[0]) checking.only_one_card_named_as(cards, 'sabotage') checking.forbid_target_self(user, target) checking.forbid_target_no_card(target, game_control) game_control.use_cards_for_players(user, targets_ids, args['action'], cards) on_result = lambda gc, a: None game_control.push_frame( frames.AcceptMessage(game_control, [user], lambda a: on_message(game_control, target, a), on_result)) return {'code': ret_code.OK}
def fire_attack(game_control, args): targets_ids = args['targets'] cards = game_control.cards_by_ids(args['use']) user = game_control.player_by_token(args['token']) checking.only_one_target(targets_ids) checking.only_one_card_named_as(cards, 'fire attack') target = game_control.player_by_id(targets_ids[0]) checking.forbid_target_no_card_in_hand(target, game_control) game_control.use_cards_for_players(user, targets_ids, args['action'], cards) on_result = lambda gc, a: discard_same_suit(gc, a, user, target, cards) def show_check(cards_ids): if len(cards_ids) != 1: raise ValueError('need exactly one card') if game_control.cards_by_ids(cards_ids)[0].region != 'cards': raise ValueError('bad region') game_control.push_frame(frames.ShowCards(game_control, target, show_check, on_result)) return { 'code': ret_code.OK }
def fire_attack(game_control, args): targets_ids = args['targets'] cards = game_control.cards_by_ids(args['use']) user = game_control.player_by_token(args['token']) checking.only_one_target(targets_ids) checking.only_one_card_named_as(cards, 'fire attack') target = game_control.player_by_id(targets_ids[0]) checking.forbid_target_no_card_in_hand(target, game_control) game_control.use_cards_for_players(user, targets_ids, args['action'], cards) on_result = lambda gc, a: discard_same_suit(gc, a, user, target, cards) def show_check(cards_ids): if len(cards_ids) != 1: raise ValueError('need exactly one card') if game_control.cards_by_ids(cards_ids)[0].region != 'cards': raise ValueError('bad region') game_control.push_frame( frames.ShowCards(game_control, target, show_check, on_result)) return {'code': ret_code.OK}
def duel_action(gc, args): cards = gc.cards_by_ids(args['use']) checking.only_one_card_named_as(cards, 'duel') return duel_check(gc, args)
def peach_action(gc, args): cards = gc.cards_by_ids(args['use']) checking.only_one_card_named_as(cards, 'peach') return peach_check(gc, args)
def _one_card(self, cards): checking.only_one_card_named_as(cards, self.card_name)
def dodge_as_slash_check(cards): checking.cards_region(cards, 'onhand') checking.only_one_card_named_as(cards, 'dodge')
def sabotage_action(gc, args): cards = gc.cards_by_ids(args['use']) checking.only_one_card_named_as(cards, 'sabotage') return sabotage_check(gc, args)
def slash_action(gc, args): cards = gc.cards_by_ids(args['use']) checking.only_one_card_named_as(cards, args['action']) return slash_check(gc, args)
def dodge_as_slash(cards): checking.only_one_card_named_as(cards, 'dodge')
def arson_attack_action(gc, args): cards = gc.cards_by_ids(args['use']) checking.only_one_card_named_as(cards, 'arson attack') return arson_attack_check(gc, args)