From a3d33827a7e60300c1881f87edb2f304e0e0e590 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Thu, 17 Jun 2021 18:02:48 +0200 Subject: [PATCH] dual birra --- backend/bang/cards.py | 25 +++++++++++++++++++------ backend/bang/players.py | 7 +++++++ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/backend/bang/cards.py b/backend/bang/cards.py index 3ba5483..1842ea4 100644 --- a/backend/bang/cards.py +++ b/backend/bang/cards.py @@ -234,15 +234,28 @@ class Birra(Card): # self.desc = "Gioca questa carta per recuperare un punto vita. Non puoi andare oltre al limite massimo del tuo personaggio. Se stai per perdere l'ultimo punto vita puoi giocare questa carta anche nel turno dell'avversario. La birra non ha più effetto se ci sono solo due giocatori" # self.desc_eng = "Play this card to regain a life point. You cannot heal more than your character's maximum limit. If you are about to lose your last life point, you can also play this card on your opponent's turn. Beer no longer takes effect if there are only two players" - def play_card(self, player, against, _with=None): + def play_card(self, player, against=None, _with=None, skipChecks=False): import bang.expansions.high_noon.card_events as ceh - import bang.expansions.gold_rush.characters as grch if player.game.check_event(ceh.IlReverendo): return False - madamYto = [p for p in player.game.get_alive_players() if p.character.check(player.game, grch.MadamYto)] - for p in madamYto: - p.hand.append(player.game.deck.draw()) - p.notify_self() + if not skipChecks: + import bang.expansions.gold_rush.characters as grch + madamYto = [p for p in player.game.get_alive_players() if p.character.check(player.game, grch.MadamYto)] + for p in madamYto: + p.hand.append(player.game.deck.draw()) + p.notify_self() + if 'gold_rush' in player.game.expansions: + from bang.players import PendingAction + player.available_cards = [{ + 'name': '', + 'icon': '💵️', + 'alt_text': '1', + 'noDesc': True + }, self] + player.choose_text = 'choose_birra_function' + player.pending_action = PendingAction.CHOOSE + player.notify_self() + return True if len(player.game.get_alive_players()) != 2: super().play_card(player, against=against) player.lives = min(player.lives+1, player.max_lives) diff --git a/backend/bang/players.py b/backend/bang/players.py index 8550a43..0bb0964 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -639,6 +639,13 @@ class Player: player.lives = min(player.lives+1, player.max_lives) self.pending_action = PendingAction.PLAY self.notify_self() + elif self.choose_text == 'choose_birra_function': + if card_index == 0: + self.gold_nuggets += 1 + else: + cs.Birra(1,1).play_card(self, skipChecks=True) + self.pending_action = PendingAction.PLAY + self.notify_self() elif self.choose_text == 'choose_bottiglia': self.sio.emit('chat_message', room=self.game.name, data=f'_play_card|{self.name}|{"Bottiglia"}') if isinstance(self.available_cards[card_index], cs.Birra):