diff --git a/backend/bang/expansions/fistful_of_cards/card_events.py b/backend/bang/expansions/fistful_of_cards/card_events.py index e5d2c71..86cd342 100644 --- a/backend/bang/expansions/fistful_of_cards/card_events.py +++ b/backend/bang/expansions/fistful_of_cards/card_events.py @@ -60,7 +60,7 @@ class MinieraAbbandonata(CardEvent): self.desc_eng = "Players draw from the discarded pile and discard to the deck" class PerUnPugnoDiCarte(CardEvent): - def __init__(self):#TODO + def __init__(self): super().__init__("Per Un Pugno Di Carte", "🎴") self.desc = "Nel suo turno giocatore subisce tanti bang quante carte ha in mano" self.desc_eng = "On his turn the player is target of as many Bang as how many cards he has in his hand" @@ -106,7 +106,7 @@ def get_all_events(): LeggeDelWest(), LiquoreForte(), MinieraAbbandonata(), - # PerUnPugnoDiCarte(), + PerUnPugnoDiCarte(), Peyote(), # Ranch(), # Rimbalzo(), diff --git a/backend/bang/game.py b/backend/bang/game.py index cfad973..7c03837 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -28,6 +28,7 @@ class Game: self.shutting_down = False self.is_competitive = False self.disconnect_bot = True + self.player_bangs = 0 def notify_room(self, sid=None): if len([p for p in self.players if p.character == None]) != 0 or sid: @@ -207,6 +208,14 @@ class Game: return self.players[self.players_map[name]] def responders_did_respond_resume_turn(self): + if self.player_bangs > 0 and self.check_event(ce.PerUnPugnoDiCarte): + self.player_bangs -= 1 + if self.player_bangs > 1: + self.players[self.turn].get_banged('') + self.players[self.turn].notify_self() + else: + self.player_bangs = 0 + self.players[self.turn].play_turn() self.readyCount += 1 if self.readyCount == self.waiting_for: self.waiting_for = 0 @@ -218,6 +227,7 @@ class Game: return self.players[(self.turn + 1) % len(self.players)] def play_turn(self): + self.player_bangs = 0 if isinstance(self.players[self.turn].role, roles.Sheriff): self.deck.flip_event() if self.check_event(ce.DeadMan) and len(self.dead_players) > 0: @@ -227,7 +237,12 @@ class Game: self.players[-1].hand.append(self.deck.draw()) self.players_map = {c.name: i for i, c in enumerate(self.players)} self.players[-1].notify_self() - self.players[self.turn].play_turn() + if self.check_event(ce.PerUnPugnoDiCarte): + self.player_bangs = len(self.players[self.turn].hand) + self.players[self.turn].get_banged('') + self.players[self.turn].notify_self() + else: + self.players[self.turn].play_turn() def next_turn(self): if self.shutting_down: return