diff --git a/backend/bang/expansions/the_valley_of_shadows/cards.py b/backend/bang/expansions/the_valley_of_shadows/cards.py index 157a0f7..d5ec17e 100644 --- a/backend/bang/expansions/the_valley_of_shadows/cards.py +++ b/backend/bang/expansions/the_valley_of_shadows/cards.py @@ -125,9 +125,14 @@ class Sventagliata(Bang): # : conta come un normale BANG! del turno. Il BANG! se def play_card(self, player, against, _with=None): if against != None: - #TODO - # super().play_card(player, against=against) - # player.game.attack(player, against, card_name=self.name) + t = player.game.get_player_named(against) + player.available_cards = [dict(p, **{'original_target':against}) for p in player.game.get_visible_players(t) if p['name'] != player.name and p['name'] != t.name and p['dist']] + if len(player.available_cards) > 0: + player.pending_action = pl.PendingAction.CHOOSE + player.choose_text = 'choose_sventagliata' + else: + player.available_cards = [] + super().play_card(player, against=against) return True return False @@ -219,7 +224,7 @@ def get_starting_deck() -> List[Card]: Taglia(Suit.CLUBS, 9), UltimoGiro(Suit.DIAMONDS, 8), Tomahawk(Suit.DIAMONDS, 'A'), - # Sventagliata(Suit.SPADES, 2), + 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 # Fuga(Suit.HEARTS, 3), # evita l'effetto di carte marroni (tipo panico cat balou) di cui sei bersaglio diff --git a/backend/bang/players.py b/backend/bang/players.py index 07fa4c6..35d71a4 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -838,7 +838,17 @@ class Player: player.equipment.append(self.game.deck.scrap_pile.pop(-1)) player.notify_self() self.game.notify_all() - self.sio.emit('chat_message', room=player.game.name, data=f'_play_card_against|{player.name}|Fantasma|{player.name}') + self.sio.emit('chat_message', room=player.game.name, data=f'_play_card_against|{self.name}|Fantasma|{player.name}') + self.pending_action = PendingAction.PLAY + self.notify_self() + elif 'choose_sventagliata' in self.choose_text: + if card_index <= len(self.available_cards): + og = self.available_cards[card_index]['original_target'] + player = self.game.get_player_named(self.available_cards[card_index]['name']) + player.game.attack(self, og, card_name='Sventagliata') + player.game.attack(self, player.name, card_name='Sventagliata') + self.sio.emit('chat_message', room=player.game.name, data=f'_play_card_against|{self.name}|Sventagliata|{og}') + self.sio.emit('chat_message', room=player.game.name, data=f'_play_card_against|{self.name}|Sventagliata|{player.name}') self.pending_action = PendingAction.PLAY self.notify_self() elif 'choose_tornado' in self.choose_text: diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index de1ce78..6b89f85 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -58,6 +58,7 @@ "choose_dalton": "Choose which equipment to discard", "choose_fratelli_di_sangue": "Choose who you want to donate one of your lives", "choose_fantasma": "Choose who to bring back to life", + "choose_sventagliata": "Choose another target to hit with Fanning", "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_poker": "Everyone discards 1 card (if there's no Ace, the player who played poker chooses 2 cards)", diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index ac69244..1c8b7f0 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -58,6 +58,7 @@ "choose_dalton": "Scegli che equipaggiamento scartare", "choose_fratelli_di_sangue": "Scegli a chi donare una delle tue vite", "choose_fantasma": "Scegli chi riportare in vita", + "choose_sventagliata": "Scegli chi altro colpire con sventagliata", "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_poker": "Tutti scartano 1 carta (se non c'รจ un Asso, il giocatore che ha giocato poker sceglie 2 carte tra quelle appena scartate)",