From 1ea91af237ed8e06a76b2539bec21c23a6dde92d Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Sat, 7 Jan 2023 12:11:18 +0000 Subject: [PATCH] add taglia --- .../expansions/the_valley_of_shadows/cards.py | 15 +++++++++++++-- backend/bang/players.py | 5 +++++ frontend/src/i18n/en.json | 3 ++- frontend/src/i18n/it.json | 3 ++- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/backend/bang/expansions/the_valley_of_shadows/cards.py b/backend/bang/expansions/the_valley_of_shadows/cards.py index b212d7f..cbf76f6 100644 --- a/backend/bang/expansions/the_valley_of_shadows/cards.py +++ b/backend/bang/expansions/the_valley_of_shadows/cards.py @@ -62,7 +62,18 @@ class Taglia(Card): super().__init__(suit, 'Taglia', number, is_equipment=True) self.need_target = True self.icon = '💰' # chiunque colpisca il giocatore con la taglia pesca una carta dal mazzo, si toglie solo con panico, cat balou, dalton - #TODO + + def play_card(self, player, against, _with=None): + if (player.game.check_event(ce.IlGiudice)): + return False + if against != None: + self.reset_card() + player.sio.emit('chat_message', room=player.game.name, + data=f'_play_card_against|{player.name}|{self.name}|{against}') + player.game.get_player_named(against).equipment.append(self) + player.game.get_player_named(against).notify_self() + return True + return False class UltimoGiro(Card): def __init__(self, suit, number): @@ -196,7 +207,7 @@ def get_starting_deck() -> List[Card]: # Lemat(Suit.DIAMONDS, 4), SerpenteASonagli(Suit.HEARTS, 7), Shotgun(Suit.SPADES, 'K'), - # Taglia(Suit.CLUBS, 9), + Taglia(Suit.CLUBS, 9), UltimoGiro(Suit.DIAMONDS, 8), Tomahawk(Suit.DIAMONDS, 'A'), # Sventagliata(Suit.SPADES, 2), diff --git a/backend/bang/players.py b/backend/bang/players.py index 28fe61b..6a956a7 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -1152,6 +1152,11 @@ class Player: self.sio.emit('chat_message', room=self.game.name, data=f'_special_el_gringo|{self.name}|{self.attacker.name}') self.attacker.notify_self() + if self.attacker and any((isinstance(c, tvosc.Taglia) for c in self.equipment)): + self.attacker.hand.append(self.game.deck.draw(True)) + self.sio.emit('chat_message', room=self.game.name, + data=f'_taglia_reward|{self.name}|{self.attacker.name}') + self.attacker.notify_self() if self.attacker and len(self.hand) > 0 and any((isinstance(c, tvosc.Shotgun) for c in self.attacker.equipment)): c = self.hand.pop(randrange(0, len(self.hand))) self.game.deck.scrap(c, True) diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index e0e00b9..95e36e7 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -133,7 +133,8 @@ "use_special": "{0} used the special ability of their character ({1})", "gold_rush_pay_discard": "{0} discarded {2} from {1}.", "choose_emporio": "{0} has chosen {1} from General Store.", - "shotgun_scrap": "When the shotgun hit {0} a card flew away from his hand ({1})" + "shotgun_scrap": "When the shotgun hit {0} a card flew away from his hand ({1})", + "taglia_reward": "{1} got a card from the bounty on {0}" }, "foc": { "leggedelwest": "He must play this card on this turn if possible." diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index 0a84ce6..cd1f5fb 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -133,7 +133,8 @@ "use_special": "{0} ha usato l'abilità speciale del suo personaggio ({1})", "gold_rush_pay_discard": "{0} ha fatto scartare {2} a {1}.", "choose_emporio": "{0} ha scelto {1} da Emporio.", - "shotgun_scrap": "Quando lo shotgun ha colpito {0} gli ha tolto una carta ({1})" + "shotgun_scrap": "Quando lo shotgun ha colpito {0} gli ha tolto una carta ({1})", + "taglia_reward": "{1} ha ottenuto ricompensa dalla taglia su {0}" }, "foc": { "leggedelwest": "Ed è obbligato a usarla nel suo turno, se possibile"