assert_eq(ret_code.OK, result['code']) result = gc.player_act({ 'token': players[1].token, 'method': 'discard', 'discard': [15], }) assert_eq(ret_code.OK, result['code']) last_event_id = len(gc.get_events(players[0].token, 0)) # until brink of death assert_eq({ 'code': ret_code.OK, 'action': 'discard', 'players': [players[1].player_id], }, gc.hint(players[0].token)) assert_eq(gc.hint(players[0].token), gc.hint(players[2].token)) assert_eq({ 'code': ret_code.OK, 'action': 'discard', 'methods': { 'peach': { 'require': ['fix card count'], 'card count': 1, 'cards': [7], }, }, 'abort': 'allow', 'players': [players[1].player_id], }, gc.hint(players[1].token))
'token': players[1].token, 'method': 'abort', }) assert_eq(ret_code.OK, result['code']) result = gc.player_act({ 'token': players[0].token, 'action': 'abort', }) assert_eq(ret_code.OK, result['code']) assert_eq({ 'code': ret_code.OK, 'action': 'use', 'players': [players[1].player_id], }, gc.hint(players[0].token)) assert_eq({ 'code': ret_code.OK, 'action': 'use', 'card': { 4: { 'require': ['fix target'], 'target count': 1, 'targets': [players[0].player_id], }, 5: { 'require': ['implicit target'] }, 6: { 'require': ['implicit target'] }, 7: { 'require': ['implicit target'] }, 10: { 'require': ['forbid'] }, 11: { 'require': ['forbid'] }, },
assert_eq( { "code": ret_code.OK, "action": "use", "card": { 0: {"require": ["fix target"], "target count": 1, "targets": [1]}, 1: {"require": ["fix target"], "target count": 1, "targets": [1]}, 2: {"require": ["fix target"], "target count": 1, "targets": [1]}, 3: {"require": ["fix target"], "target count": 1, "targets": [1]}, 8: {"require": ["fix target"], "target count": 1, "targets": [1]}, 9: {"require": ["fix target"], "target count": 1, "targets": [1]}, }, "abort": "allow", "players": [players[0].player_id], }, gc.hint(players[0].token), ) assert_eq({"code": ret_code.OK, "action": "use", "players": [players[0].player_id]}, gc.hint(players[1].token)) # cards: # name | rank (id = rank - 1) | suit # sabotage | 1 | SPADE <- use this to duel # sabotage | 2 | SPADE # sabotage | 3 | SPADE # sabotage | 4 | SPADE # sabotage | 9 | HEART # sabotage | 10 | CLUB # slash | 5 | SPADE <- discard this # dodge | 6 | HEART