From decd959328211597d97ae8308fb5658aab4d8f0b Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Fri, 27 Jan 2023 15:08:23 +0000 Subject: [PATCH] add colorado bill --- .../the_valley_of_shadows/characters.py | 2 +- backend/bang/players.py | 8 ++++++- backend/tests/dummy_socket.py | 2 ++ .../valley_of_shadows_characters_test.py | 24 +++++++++++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/backend/bang/expansions/the_valley_of_shadows/characters.py b/backend/bang/expansions/the_valley_of_shadows/characters.py index e219183..3355ddf 100644 --- a/backend/bang/expansions/the_valley_of_shadows/characters.py +++ b/backend/bang/expansions/the_valley_of_shadows/characters.py @@ -52,7 +52,7 @@ class TucoFranziskaner(Character): def all_characters() -> List[Character]: cards = [ # BlackFlower(), - # ColoradoBill(), + ColoradoBill(), # DerSpotBurstRinger(), # EvelynShebang(), # HenryBlock(), diff --git a/backend/bang/players.py b/backend/bang/players.py index d4fef62..ca8d7c4 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -1122,10 +1122,16 @@ class Player: self.available_cards.append({'name': '-1hp', 'icon': '💔', 'noDesc': True}) return True - def get_banged(self, attacker, double=False, no_dmg=False, card_index=None, card_name=None): + def get_banged(self, attacker, double:bool=False, no_dmg:bool=False, card_index:int|None=None, card_name:str|None=None): self.attacker = attacker self.attacking_card = card_name print(f'attacker -> {attacker}') + if isinstance(attacker, Player) and attacker.character.check(self.game, tvosch.ColoradoBill) and card_name == 'Bang!': + picked: cs.Card = self.game.deck.pick_and_scrap() + G.sio.emit('chat_message', room=self.game.name, data=f'_flipped|{attacker.name}|{picked.name}|{picked.num_suit()}') + if picked.check_suit(self.game, [cs.Suit.SPADES]): + self.take_damage_response() + return False self.mancato_needed = 1 if not double else 2 if card_index is not None: self.dmg_card_index = card_index diff --git a/backend/tests/dummy_socket.py b/backend/tests/dummy_socket.py index 6ae44b9..c49aca4 100644 --- a/backend/tests/dummy_socket.py +++ b/backend/tests/dummy_socket.py @@ -7,6 +7,8 @@ class DummySocket(): # print(f'event: {event}, data: {data}, to: {to}, room: {room}') if self.true_sio and event == 'chat_message': self.true_sio.emit(event, data, to, room, skip_sid, namespace, callback, **kwargs) + elif event == 'chat_message': + print(f'event: {event}, data: {data}, to: {to}, room: {room}') return True def sleep(self, seconds): diff --git a/backend/tests/valley_of_shadows_characters_test.py b/backend/tests/valley_of_shadows_characters_test.py index f95c12e..ecd9171 100644 --- a/backend/tests/valley_of_shadows_characters_test.py +++ b/backend/tests/valley_of_shadows_characters_test.py @@ -26,3 +26,27 @@ def test_TucoFranziskaner(): p.equipment = [cs.Barile(0,0)] p.draw('') assert len(p.hand) == 2 + +# test ColoradoBill +def test_ColoradoBill(): + g = Game('test') + ps = [Player(f'p{i}', f'p{i}') for i in range(2)] + for p in ps: + g.add_player(p) + g.start_game() + for p in ps: + p.available_characters = [ColoradoBill()] + p.set_character(p.available_characters[0].name) + p = g.players[g.turn] + p1 = g.players[(g.turn+1)%2] + p.draw('') + p.hand = [cs.Volcanic(0,0), cs.Bang(0,0), cs.Bang(0,0)] + p.play_card(0) + g.deck.cards.insert(0, cs.Bang(cs.Suit.SPADES,0)) + g.deck.cards.insert(1, cs.Bang(cs.Suit.HEARTS,0)) + p1.hand = [cs.Mancato(0,0)] + p.play_card(0, p1.name) + assert len(p1.hand) == 1 + assert p1.lives == 3 + p.play_card(0, p1.name) + assert p1.pending_action == PendingAction.RESPOND