diff --git a/backend/bang/expansions/dodge_city/characters.py b/backend/bang/expansions/dodge_city/characters.py index 4298a5a..caa455d 100644 --- a/backend/bang/expansions/dodge_city/characters.py +++ b/backend/bang/expansions/dodge_city/characters.py @@ -85,6 +85,13 @@ class ChuckWengam(Character): self.desc_eng = "On his turn he may decide to lose 1 HP to draw 2 cards from the deck." self.icon = '💰' +class PatBrennan(Character): + def __init__(self): + super().__init__("Pat Brennan", max_lives=4) + self.desc = "Invece di pescare può prendere una carta dall'equipaggiamento di un altro giocatore." + self.desc_eng = "Instead of drawing he can steal a card from the equipment of another player." + self.icon = '🤗' + def all_characters() -> List[Character]: return [ PixiePete(), @@ -99,6 +106,7 @@ def all_characters() -> List[Character]: BelleStar(), VeraCuster(), ChuckWengam(), + PatBrennan(), ] #Apache Kid: il suo effetto non conta nei duelli diff --git a/backend/bang/players.py b/backend/bang/players.py index de65549..9a66c0f 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -310,6 +310,11 @@ class Player: self.available_cards = [self.game.deck.draw() for i in range(3)] self.pending_action = PendingAction.CHOOSE self.notify_self() + elif isinstance(self.character, chd.PatBrennan) and type(pile) == str and pile != self.name and pile in self.game.players_map and len(self.game.get_player_named(pile).equipment) > 0: + self.is_drawing = True + self.available_cards = self.game.get_player_named(pile).equipment + self.pending_action = PendingAction.CHOOSE + self.notify_self() else: self.pending_action = PendingAction.PLAY if pile == 'scrap' and isinstance(self.character, chars.PedroRamirez): @@ -482,6 +487,14 @@ class Player: self.is_drawing = False self.pending_action = PendingAction.PLAY self.notify_self() + elif self.is_drawing and isinstance(self.character, chd.PatBrennan): + card = self.available_cards.pop(card_index) + if card.usable_next_turn: + card.can_be_used_now = False + self.hand.append(card) + self.available_cards = [] + self.pending_action = PendingAction.PLAY + self.notify_self() else: # emporio self.game.respond_emporio(self, card_index)