From fc603dcba34f338fce58ca96bbf354ce5aaced1c Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Sat, 28 Jan 2023 19:05:17 +0000 Subject: [PATCH] add black flower --- .../expansions/the_valley_of_shadows/characters.py | 14 ++++++++++++-- backend/bang/players.py | 7 +++++++ frontend/src/components/Player.vue | 1 + 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/backend/bang/expansions/the_valley_of_shadows/characters.py b/backend/bang/expansions/the_valley_of_shadows/characters.py index 66b9ec8..e56118d 100644 --- a/backend/bang/expansions/the_valley_of_shadows/characters.py +++ b/backend/bang/expansions/the_valley_of_shadows/characters.py @@ -1,13 +1,23 @@ from typing import List from bang.characters import Character import bang.cards as cs - class BlackFlower(Character): def __init__(self): super().__init__("Black Flower", max_lives=4) # Una volta nel tuo turno, puoi usare una carta di fiori per sparare un BANG! extra. self.icon = '🥀' + def special(self, player, data): #fiori = suit.Clubs + if player.special_use_count > 0 and not any((c.suit == cs.Suit.CLUBS for c in player.hand)): + return False + if super().special(player, data): + from bang.players import PendingAction + player.special_use_count += 1 + player.available_cards = [c for c in player.hand if c.suit == cs.Suit.CLUBS] + player.pending_action = PendingAction.CHOOSE + player.choose_text = 'blackflower_special' + player.notify_self() + class ColoradoBill(Character): def __init__(self): super().__init__("Colorado Bill", max_lives=4) @@ -63,7 +73,7 @@ class TucoFranziskaner(Character): def all_characters() -> List[Character]: cards = [ - # BlackFlower(), + BlackFlower(), ColoradoBill(), DerSpotBurstRinger(), # EvelynShebang(), diff --git a/backend/bang/players.py b/backend/bang/players.py index ca8d7c4..c91e66e 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -871,6 +871,13 @@ class Player: G.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 'blackflower_special' in self.choose_text: + if card_index <= len(self.available_cards): + self.hand.remove(self.available_cards[card_index]) + self.game.deck.scrap(self.available_cards[card_index], player=self) + self.hand.append(cs.Bang(cs.Suit.CLUBS,42)) + self.pending_action = PendingAction.PLAY + self.notify_self() elif 'choose_tornado' in self.choose_text: if card_index <= len(self.available_cards): self.game.deck.scrap(self.hand.pop(card_index), player=self) diff --git a/frontend/src/components/Player.vue b/frontend/src/components/Player.vue index da2db1b..92554a5 100644 --- a/frontend/src/components/Player.vue +++ b/frontend/src/components/Player.vue @@ -35,6 +35,7 @@ +
{{$t('hand')}}