diff --git a/backend/bang/deck.py b/backend/bang/deck.py index f5c3e22..7bd7fda 100644 --- a/backend/bang/deck.py +++ b/backend/bang/deck.py @@ -141,7 +141,15 @@ class Deck: and len(self.scrap_pile) > 0 and not ignore_event ): - return self.draw_from_scrap_pile() + card = self.draw_from_scrap_pile() + if player is not None and self.game.replay_speed > 0: + G.sio.emit( + "card_drawn", + room=self.game.name, + data={"player": player.name, "pile": "scrap"}, + ) + player.hand.append(card) + return card card = self.cards.pop(0) if len(self.cards) == 0: self.reshuffle() diff --git a/backend/tests/test_card_events.py b/backend/tests/test_card_events.py new file mode 100644 index 0000000..ded565c --- /dev/null +++ b/backend/tests/test_card_events.py @@ -0,0 +1,24 @@ +from tests import started_game, set_events, current_player, next_player, current_player_with_cards + +from bang.expansions.fistful_of_cards.card_events import * +import bang.cards as cs + + +def test_miniera_abbandonata(): + g = started_game(['fistful_of_cards']) + set_events(g, [MinieraAbbandonata()]) + p = current_player(g) + starting_cards = len(p.hand) + g.deck.scrap_pile = [ + cs.Bang(0, 0), + cs.Bang(0, 1), + cs.Bang(0, 2), + cs.Bang(0, 3), + ] + p.draw("") + assert len(p.hand) == starting_cards + 2 + # check the last two cards are the ones from the scrap pile + assert p.hand[-2].name == cs.Bang(0, 0).name + assert p.hand[-2].number == 3 + assert p.hand[-1].name == cs.Bang(0, 0).name + assert p.hand[-1].number == 2