From 8103a532cfd1d0cd20633001c9eb921c3459db70 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Fri, 28 May 2021 11:58:32 +0200 Subject: [PATCH] show legge del west card --- backend/bang/cards.py | 1 + backend/bang/expansions/dodge_city/cards.py | 13 +++++++++++++ backend/bang/players.py | 7 ++++++- frontend/src/components/Card.vue | 5 ++++- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/backend/bang/cards.py b/backend/bang/cards.py index c638b02..0b98427 100644 --- a/backend/bang/cards.py +++ b/backend/bang/cards.py @@ -143,6 +143,7 @@ class Prigione(Card): def play_card(self, player, against, _with=None): if against != None and not isinstance(player.game.get_player_named(against).role, r.Sheriff): + self.reset_card() player.sio.emit('chat_message', room=player.game.name, data=f'_play_card_against|{player.name}|{self.name}|{against}') player.game.get_player_named(against).equipment.append(self) diff --git a/backend/bang/expansions/dodge_city/cards.py b/backend/bang/expansions/dodge_city/cards.py index dc8eefe..c46cbed 100644 --- a/backend/bang/expansions/dodge_city/cards.py +++ b/backend/bang/expansions/dodge_city/cards.py @@ -154,6 +154,7 @@ class Bibbia(Schivata): return False else: if not self.is_duplicate_card(player): + self.reset_card() player.equipment.append(self) return True else: @@ -173,7 +174,9 @@ class Cappello(Mancato): pass return False else: + self.reset_card() if not self.is_duplicate_card(player): + self.reset_card() player.equipment.append(self) return True else: @@ -203,7 +206,9 @@ class Pugnale(Pugno): if self.can_be_used_now: return super().play_card(player, against=against) else: + self.reset_card() if not self.is_duplicate_card(player): + self.reset_card() player.equipment.append(self) return True else: @@ -224,6 +229,7 @@ class Derringer(Pugnale): return super().play_card(player, against=against) else: if not self.is_duplicate_card(player): + self.reset_card() player.equipment.append(self) return True else: @@ -251,6 +257,7 @@ class Borraccia(Card): return True else: if not self.is_duplicate_card(player): + self.reset_card() player.equipment.append(self) return True else: @@ -270,6 +277,7 @@ class PonyExpress(WellsFargo): return super().play_card(player, against) else: if not self.is_duplicate_card(player): + self.reset_card() player.equipment.append(self) return True else: @@ -289,6 +297,7 @@ class Howitzer(Gatling): return super().play_card(player, against) else: if not self.is_duplicate_card(player): + self.reset_card() player.equipment.append(self) return True else: @@ -309,6 +318,7 @@ class CanCan(CatBalou): return super().play_card(player, against) else: if not self.is_duplicate_card(player): + self.reset_card() player.equipment.append(self) return True else: @@ -330,6 +340,7 @@ class Conestoga(Panico): return super().play_card(player, against) else: if not self.is_duplicate_card(player): + self.reset_card() player.equipment.append(self) return True else: @@ -353,6 +364,7 @@ class Pepperbox(Bang): return False else: if not self.is_duplicate_card(player): + self.reset_card() player.equipment.append(self) return True else: @@ -377,6 +389,7 @@ class FucileDaCaccia(Card): return False else: if not self.is_duplicate_card(player): + self.reset_card() player.equipment.append(self) return True else: diff --git a/backend/bang/players.py b/backend/bang/players.py index 3c0fbcd..8b92ece 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -437,10 +437,12 @@ class Player: for i in range(2): card: cs.Card = self.game.deck.draw() self.hand.append(card) - if i == 1 and self.character.check(self.game, chars.BlackJack) or self.game.check_event(ce.LeggeDelWest): + if i == 1 and (self.character.check(self.game, chars.BlackJack) or self.game.check_event(ce.LeggeDelWest)): for p in self.game.get_alive_players(): if p != self: p.notify_card(self, card, 'blackjack_special' if self.character.check(self.game, chars.BlackJack) else 'foc.leggedelwest') + if self.game.check_event(ce.LeggeDelWest): + card.must_be_used = True if card.check_suit(self.game, [cs.Suit.HEARTS, cs.Suit.DIAMONDS]) and self.character.check(self.game, chars.BlackJack): self.hand.append(self.game.deck.draw()) if self.game.check_event(ceh.Sete): @@ -997,6 +999,9 @@ class Player: for i in range(len(self.equipment)): if self.equipment[i].usable_next_turn and not self.equipment[i].can_be_used_now: self.equipment[i].can_be_used_now = True + for i in range(len(self.hand)): + if self.hand[i].must_be_used: + self.hand[i].must_be_used = False if self.is_dead and self.is_ghost and self.game.check_event(ceh.CittaFantasma): self.is_ghost = False for i in range(len(self.hand)): diff --git a/frontend/src/components/Card.vue b/frontend/src/components/Card.vue index 7b5970e..c205f67 100644 --- a/frontend/src/components/Card.vue +++ b/frontend/src/components/Card.vue @@ -1,5 +1,5 @@