示例#1
0
文件: duel.py 项目: linluxiang/sgs
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 }
示例#2
0
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 }
示例#3
0
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}
示例#4
0
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 }
示例#5
0
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}
示例#6
0
文件: duel.py 项目: neuront/sgs
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)
示例#7
0
文件: peach.py 项目: neuront/sgs
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)
示例#8
0
 def _one_card(self, cards):
     checking.only_one_card_named_as(cards, self.card_name)
示例#9
0
def dodge_as_slash_check(cards):
    checking.cards_region(cards, 'onhand')
    checking.only_one_card_named_as(cards, 'dodge')
示例#10
0
 def _one_card(self, cards):
     checking.only_one_card_named_as(cards, self.card_name)
示例#11
0
文件: sabotage.py 项目: neuront/sgs
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)
示例#12
0
文件: slash.py 项目: neuront/sgs
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)
示例#13
0
def dodge_as_slash(cards):
    checking.only_one_card_named_as(cards, 'dodge')
示例#14
0
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)