diff --git a/backend/bang/expansions/the_valley_of_shadows/cards.py b/backend/bang/expansions/the_valley_of_shadows/cards.py index 1cf5ef1..b1549b9 100644 --- a/backend/bang/expansions/the_valley_of_shadows/cards.py +++ b/backend/bang/expansions/the_valley_of_shadows/cards.py @@ -167,9 +167,7 @@ class Bandidos(Card): self.alt_text = "👤🃏🃏/💔" def play_card(self, player, against, _with=None): - #TODO - # super().play_card(player, against=against) - # player.game.attack(player, against) + player.game.discard_others(player, card_name=self.name) return True class Fuga(Card): @@ -221,7 +219,7 @@ def get_starting_deck() -> List[Card]: Tomahawk(Suit.DIAMONDS, 'A'), # Sventagliata(Suit.SPADES, 2), # Salvo(Suit.HEARTS, 5), - # Bandidos(Suit.DIAMONDS,'Q'), # gli altri giocatori scelgono se scartare 2 carte o perdere 1 punto vita + Bandidos(Suit.DIAMONDS,'Q'), # gli altri giocatori scelgono se scartare 2 carte o perdere 1 punto vita # Fuga(Suit.HEARTS, 3), # evita l'effetto di carte marroni (tipo panico cat balou) di cui sei bersaglio # Mira(Suit.CLUBS, 6), # Poker(Suit.HEARTS, 'J'), # tutti gli altri scartano 1 carta a scelta, se non ci sono assi allora pesca 2 dal mazzo diff --git a/backend/bang/game.py b/backend/bang/game.py index 119b75c..366e325 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -327,7 +327,7 @@ class Game: self.waiting_for = 0 self.ready_count = 0 for p in self.get_alive_players(): - if len(p.hand) > 0: + if len(p.hand) > 0 and (p != attacker or card_name == 'Tornado'): if p.get_discarded(attacker=attacker, card_name=card_name): self.waiting_for += 1 p.notify_self() diff --git a/backend/bang/players.py b/backend/bang/players.py index 47da35d..d520a27 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -836,6 +836,16 @@ class Player: self.pending_action = PendingAction.WAIT self.game.responders_did_respond_resume_turn() self.notify_self() + elif 'choose_bandidos' in self.choose_text: + if card_index <= len(self.available_cards): + self.game.deck.scrap_pile.append(self.hand.pop(card_index)) + self.mancato_needed -= 1 + else: + self.lives -= 1 + if self.mancato_needed <= 0: + self.pending_action = PendingAction.WAIT + self.game.responders_did_respond_resume_turn() + self.notify_self() elif self.game.check_event(ceh.NuovaIdentita) and self.choose_text == 'choose_nuova_identita': if card_index == 1: # the other character self.character = self.not_chosen_character @@ -1046,9 +1056,13 @@ class Player: def get_discarded(self, attacker=None, card_name=None): self.pending_action = PendingAction.CHOOSE + self.available_cards = self.hand.copy() if card_name == 'Tornado': self.choose_text = 'choose_tornado' - self.available_cards = self.hand + if card_name == 'Bandidos': + self.choose_text = 'choose_bandidos' + self.mancato_needed = min(2, len(self.hand)) + self.available_cards.append({'name': '-1hp', 'icon': '💔', 'noDesc': True}) return True def get_banged(self, attacker, double=False, no_dmg=False, card_index=None, card_name=None): diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index c9264a1..2ea8e73 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -59,6 +59,7 @@ "choose_fratelli_di_sangue": "Choose who you want to donate one of your lives", "choose_fantasma": "Choose who to bring back to life", "choose_tornado": "Choose a card to discard for the tornado", + "choose_bandidos": "Choose between discarding 2 cards or losing a life (1 card if you only have 1)", "choose_cecchino": "Choose who to shoot", "choose_rimbalzo_player": "Choose the target of the bang", "choose_rimbalzo_card": "Choose the card to discard the bang to", diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index 81ac1ca..a5eaddf 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -59,6 +59,7 @@ "choose_fratelli_di_sangue": "Scegli a chi donare una delle tue vite", "choose_fantasma": "Scegli chi riportare in vita", "choose_tornado": "Scegli una carta da scartare per il tornado", + "choose_bandidos": "Scegli tra scartare 2 carte o perdere una vita (1 carta se ne hai solo 1)", "choose_cecchino": "Scegli contro chi sparare", "choose_rimbalzo_player": "Scegli contro chi scartare il bang", "choose_rimbalzo_card": "Scegli contro che carta scartare il bang",