From 9f1ec34d737a6ec7eba6941a8a2456e24f3697d1 Mon Sep 17 00:00:00 2001 From: Giulio Date: Fri, 25 Mar 2022 01:55:45 +0100 Subject: [PATCH] fix il giudice --- backend/bang/cards.py | 10 +++++-- backend/bang/expansions/dodge_city/cards.py | 33 ++++++++++++++------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/backend/bang/cards.py b/backend/bang/cards.py index 41f85c6..8c01c38 100644 --- a/backend/bang/cards.py +++ b/backend/bang/cards.py @@ -59,7 +59,12 @@ class Card(ABC): self.must_be_used = False def play_card(self, player, against=None, _with=None):#self --> carta + import bang.expansions.fistful_of_cards.card_events as ce + if (player.game.check_event(ce.IlGiudice)) and self.usable_next_turn and not self.can_be_used_now: + return False if self.is_equipment: + if (player.game.check_event(ce.IlGiudice)): + return False if self.is_weapon: has_weapon = False for i in range(len(player.equipment)): @@ -98,8 +103,6 @@ class Card(ABC): return Suit.SPADES in accepted return self.suit in accepted - - class Barile(Card): def __init__(self, suit, number): super().__init__(suit, 'Barile', number, is_equipment=True) @@ -146,6 +149,9 @@ class Prigione(Card): self.alt_text = "♥️= 🆓" def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce + if (player.game.check_event(ce.IlGiudice)): + return False 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, diff --git a/backend/bang/expansions/dodge_city/cards.py b/backend/bang/expansions/dodge_city/cards.py index 6e0a055..340ad24 100644 --- a/backend/bang/expansions/dodge_city/cards.py +++ b/backend/bang/expansions/dodge_city/cards.py @@ -149,11 +149,12 @@ class Bibbia(Schivata): self.can_be_used_now = False def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce if self.can_be_used_now: pass return False else: - if not self.is_duplicate_card(player): + if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): self.reset_card() player.equipment.append(self) return True @@ -170,12 +171,13 @@ class Cappello(Mancato): self.alt_text = "😅" def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce if self.can_be_used_now: pass return False else: self.reset_card() - if not self.is_duplicate_card(player): + if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): self.reset_card() player.equipment.append(self) return True @@ -203,11 +205,12 @@ class Pugnale(Pugno): self.can_be_used_now = False def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce if self.can_be_used_now: return super().play_card(player, against=against) else: self.reset_card() - if not self.is_duplicate_card(player): + if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): self.reset_card() player.equipment.append(self) return True @@ -224,11 +227,12 @@ class Derringer(Pugnale): # self.desc_eng += ' and then draw a card.' def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce if self.can_be_used_now: player.hand.append(player.game.deck.draw(True)) return super().play_card(player, against=against) else: - if not self.is_duplicate_card(player): + if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): self.reset_card() player.equipment.append(self) return True @@ -250,13 +254,14 @@ class Borraccia(Card): self.can_be_used_now = False def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce if self.can_be_used_now: super().play_card(player, against) player.lives = min(player.lives+1, player.max_lives) player.notify_self() return True else: - if not self.is_duplicate_card(player): + if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): self.reset_card() player.equipment.append(self) return True @@ -273,10 +278,11 @@ class PonyExpress(WellsFargo): self.can_be_used_now = False def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce if self.can_be_used_now: return super().play_card(player, against) else: - if not self.is_duplicate_card(player): + if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): self.reset_card() player.equipment.append(self) return True @@ -293,10 +299,11 @@ class Howitzer(Gatling): self.can_be_used_now = False def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce if self.can_be_used_now: return super().play_card(player, against) else: - if not self.is_duplicate_card(player): + if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): self.reset_card() player.equipment.append(self) return True @@ -313,11 +320,12 @@ class CanCan(CatBalou): self.can_be_used_now = False def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce if self.can_be_used_now: player.sio.emit('chat_message', room=player.game.name, data=f'_play_card_against|{player.name}|{self.name}|{against}') return super().play_card(player, against) else: - if not self.is_duplicate_card(player): + if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): self.reset_card() player.equipment.append(self) return True @@ -336,10 +344,11 @@ class Conestoga(Panico): self.can_be_used_now = False def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce if self.can_be_used_now: return super().play_card(player, against) else: - if not self.is_duplicate_card(player): + if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): self.reset_card() player.equipment.append(self) return True @@ -356,6 +365,7 @@ class Pepperbox(Bang): self.can_be_used_now = False def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce if self.can_be_used_now: if against != None: Card.play_card(self, player, against=against) @@ -363,7 +373,7 @@ class Pepperbox(Bang): return True return False else: - if not self.is_duplicate_card(player): + if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): self.reset_card() player.equipment.append(self) return True @@ -381,6 +391,7 @@ class FucileDaCaccia(Card): self.can_be_used_now = False def play_card(self, player, against, _with=None): + import bang.expansions.fistful_of_cards.card_events as ce if self.can_be_used_now: if against != None: super().play_card(player, against=against) @@ -388,7 +399,7 @@ class FucileDaCaccia(Card): return True return False else: - if not self.is_duplicate_card(player): + if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): self.reset_card() player.equipment.append(self) return True