diff --git a/backend/bang/cards.py b/backend/bang/cards.py index 974e178..3406a0e 100644 --- a/backend/bang/cards.py +++ b/backend/bang/cards.py @@ -124,13 +124,13 @@ class Card(ABC): G.sio.emit( "chat_message", room=player.game.name, - data=f"_play_card_against|{player.name}|{self.name}|{against}", + data=f"_play_card_against{'_with' if _with else ''}|{player.name}|{self.name}|{against}|{_with.name if _with else ''}", ) else: G.sio.emit( "chat_message", room=player.game.name, - data=f"_play_card|{player.name}|{self.name}", + data=f"_play_card{'_with' if _with else ''}|{player.name}|{self.name}|{_with.name if _with else ''}", ) return True diff --git a/backend/bang/expansions/dodge_city/cards.py b/backend/bang/expansions/dodge_city/cards.py index 1e0fdb7..cb9fc80 100644 --- a/backend/bang/expansions/dodge_city/cards.py +++ b/backend/bang/expansions/dodge_city/cards.py @@ -2,22 +2,25 @@ from bang.cards import * import bang.expansions.fistful_of_cards.card_events as ce from globals import G + class Binocolo(Mirino): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Binocolo' - self.icon = 'πŸ”' + self.name = "Binocolo" + self.icon = "πŸ”" + class Riparo(Mustang): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Riparo' - self.icon = 'β›°' + self.name = "Riparo" + self.icon = "β›°" + class Pugno(Card): def __init__(self, suit, number): - super().__init__(suit, 'Pugno!', number, range=1) - self.icon = 'πŸ‘Š' + super().__init__(suit, "Pugno!", number, range=1) + self.icon = "πŸ‘Š" self.alt_text = "1πŸ”Ž πŸ’₯" # self.desc = "Spara a un giocatore a distanza 1" # self.desc_eng = "Shoot a player at distance 1" @@ -30,11 +33,12 @@ class Pugno(Card): return True return False + class Schivata(Mancato): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Schivata' - self.icon = 'πŸ™…β€β™‚οΈ' + self.name = "Schivata" + self.icon = "πŸ™…β€β™‚οΈ" # self.desc += " e poi pesca una carta" # self.desc_eng += " and then draw a card." self.alt_text = "πŸ˜… | 🎴" @@ -46,39 +50,46 @@ class Schivata(Mancato): player.game.deck.draw(True, player=player) player.notify_self() + class RagTime(Panico): def __init__(self, suit, number): - Card.__init__(self, suit, 'Rag Time', number) - self.icon = '🎹' + Card.__init__(self, suit, "Rag Time", number) + self.icon = "🎹" # self.desc = "Ruba 1 carta da un giocatore a prescindere dalla distanza" # self.desc_eng = "Steal a card from another player at any distance" self.need_target = True self.need_with = True - self.alt_text = '2πŸƒ | πŸ‘€πŸ˜±' + self.alt_text = "2πŸƒ | πŸ‘€πŸ˜±" def play_card(self, player, against, _with): if against is not None and _with is not None: player.game.deck.scrap(_with) - super().play_card(player, against=against) + super().play_card(player, against=against, _with=_with) return True return False + class Rissa(CatBalou): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Rissa' - self.icon = 'πŸ₯Š' + self.name = "Rissa" + self.icon = "πŸ₯Š" # self.desc = "Fai scartare una carta a tutti gli altri giocatori, scegli a caso dalla mano, oppure fra quelle che hanno in gioco" # self.desc_eng = "Choose a card to discard from the hand/equipment of all the other players" self.need_with = True self.need_target = False - self.alt_text = '2πŸƒ | πŸ‘€πŸ’ƒ' + self.alt_text = "2πŸƒ | πŸ‘€πŸ’ƒ" def play_card(self, player, against, _with): if _with is not None: - if not any((p != player and (len(p.hand)+len(p.equipment)) > 0 for p in player.game.players)): + if not any( + ( + p != player and (len(p.hand) + len(p.equipment)) > 0 + for p in player.game.players + ) + ): return False - #se sono qui vuol dire che ci sono giocatori con carte in mano oltre a me + # se sono qui vuol dire che ci sono giocatori con carte in mano oltre a me player.rissa_targets = [] target = player.game.get_player_named(player.name, next=True) while target != player: @@ -86,35 +97,43 @@ class Rissa(CatBalou): player.rissa_targets.append(target) target = player.game.get_player_named(target.name, next=True) player.game.deck.scrap(_with) - player.event_type = 'rissa' - print(f'rissa targets: {player.rissa_targets}') - super().play_card(player, against=player.rissa_targets.pop(0).name) - G.sio.emit('chat_message', room=player.game.name, data=f'_play_card|{player.name}|{self.name}') + player.event_type = "rissa" + print(f"rissa targets: {player.rissa_targets}") + super().play_card( + player, against=player.rissa_targets.pop(0).name, _with=_with + ) + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card|{player.name}|{self.name}", + ) return True return False + class SpringField(Card): def __init__(self, suit, number): - super().__init__(suit, 'Springfield', number) - self.icon = '🌡' + super().__init__(suit, "Springfield", number) + self.icon = "🌡" # self.desc = "Spara a un giocatore a prescindere dalla distanza" # self.desc_eng = "Shoot a player at any distance" self.need_target = True self.need_with = True - self.alt_text = '2πŸƒ | πŸ‘€πŸ’₯' + self.alt_text = "2πŸƒ | πŸ‘€πŸ’₯" def play_card(self, player, against, _with=None): if against is not None and _with is not None: player.game.deck.scrap(_with) - super().play_card(player, against=against) + super().play_card(player, against=against, _with=_with) player.game.attack(player, against, card_name=self.name) return True return False + class Tequila(Card): def __init__(self, suit, number): - super().__init__(suit, 'Tequila', number) - self.icon = '🍹' + super().__init__(suit, "Tequila", number) + self.icon = "🍹" # self.desc = "Fai recuperare 1 vita a un giocatore a tua scelta, anche te stesso" # self.desc_eng = "Heal 1 HP to a player of your choice (can be you)" self.need_target = True @@ -124,36 +143,45 @@ class Tequila(Card): def play_card(self, player, against, _with=None): if against is not None and _with is not None: - G.sio.emit('chat_message', room=player.game.name, data=f'_play_card_for|{player.name}|{self.name}|{against}') + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_for|{player.name}|{self.name}|{against}", + ) player.game.deck.scrap(_with) - player.game.get_player_named(against).lives = min(player.game.get_player_named(against).lives+1, player.game.get_player_named(against).max_lives) + player.game.get_player_named(against).lives = min( + player.game.get_player_named(against).lives + 1, + player.game.get_player_named(against).max_lives, + ) player.game.get_player_named(against).notify_self() return True return False + class Whisky(Card): def __init__(self, suit, number): - super().__init__(suit, 'Whisky', number) - self.icon = 'πŸ₯ƒ' + super().__init__(suit, "Whisky", number) + self.icon = "πŸ₯ƒ" # self.desc = "Gioca questa carta per recuperare fino a 2 punti vita" # self.desc_eng = "Heal 2 HP" self.need_with = True - self.alt_text = '2πŸƒ | 🍺🍺' + self.alt_text = "2πŸƒ | 🍺🍺" def play_card(self, player, against, _with=None): if _with is not None: - super().play_card(player, against=against) + super().play_card(player, against=against, _with=_with) player.game.deck.scrap(_with) - player.lives = min(player.lives+2, player.max_lives) + player.lives = min(player.lives + 2, player.max_lives) player.notify_self() return True return False + class Bibbia(Schivata): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Bibbia' - self.icon = 'πŸ“–' + self.name = "Bibbia" + self.icon = "πŸ“–" self.usable_next_turn = True self.can_be_used_now = False @@ -162,18 +190,26 @@ class Bibbia(Schivata): pass return False else: - if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): + if not self.is_duplicate_card(player) and not player.game.check_event( + ce.IlGiudice + ): self.reset_card() + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_green|{player.name}|{self.name}", + ) player.equipment.append(self) return True else: return False + class Cappello(Mancato): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Cappello' - self.icon = '🧒' + self.name = "Cappello" + self.icon = "🧒" self.usable_next_turn = True self.can_be_used_now = False self.alt_text = "πŸ˜…" @@ -184,30 +220,40 @@ class Cappello(Mancato): return False else: self.reset_card() - if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): + if not self.is_duplicate_card(player) and not player.game.check_event( + ce.IlGiudice + ): self.reset_card() + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_green|{player.name}|{self.name}", + ) player.equipment.append(self) return True else: return False + class PlaccaDiFerro(Cappello): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Placca Di Ferro' - self.icon = 'πŸ›‘' + self.name = "Placca Di Ferro" + self.icon = "πŸ›‘" + class Sombrero(Cappello): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Sombrero' - self.icon = 'πŸ‘’' + self.name = "Sombrero" + self.icon = "πŸ‘’" + class Pugnale(Pugno): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Pugnale' - self.icon = 'πŸ—‘' + self.name = "Pugnale" + self.icon = "πŸ—‘" self.usable_next_turn = True self.can_be_used_now = False @@ -216,19 +262,27 @@ class Pugnale(Pugno): return super().play_card(player, against=against) else: self.reset_card() - if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): + if not self.is_duplicate_card(player) and not player.game.check_event( + ce.IlGiudice + ): self.reset_card() + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_green|{player.name}|{self.name}", + ) player.equipment.append(self) return True else: return False + class Derringer(Pugnale): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Derringer' - self.icon = '🚬' - self.alt_text += ' 🎴' + self.name = "Derringer" + self.icon = "🚬" + self.alt_text += " 🎴" # self.desc += ' e poi pesca una carta' # self.desc_eng += ' and then draw a card.' @@ -237,8 +291,15 @@ class Derringer(Pugnale): player.game.deck.draw(True, player=player) return super().play_card(player, against=against) else: - if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): + if not self.is_duplicate_card(player) and not player.game.check_event( + ce.IlGiudice + ): self.reset_card() + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_green|{player.name}|{self.name}", + ) player.equipment.append(self) return True else: @@ -248,10 +309,11 @@ class Derringer(Pugnale): player.game.deck.draw(True, player=player) player.notify_self() + class Borraccia(Card): def __init__(self, suit, number): - super().__init__(suit, 'Borraccia', number) - self.icon = '🍼' + super().__init__(suit, "Borraccia", number) + self.icon = "🍼" # self.desc = 'Recupera 1 vita' # self.desc_eng = 'Regain 1 HP' self.alt_text = "🍺" @@ -261,22 +323,30 @@ class Borraccia(Card): def play_card(self, player, against, _with=None): if self.can_be_used_now: super().play_card(player, against) - player.lives = min(player.lives+1, player.max_lives) + player.lives = min(player.lives + 1, player.max_lives) player.notify_self() return True else: - if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): + if not self.is_duplicate_card(player) and not player.game.check_event( + ce.IlGiudice + ): self.reset_card() + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_green|{player.name}|{self.name}", + ) player.equipment.append(self) return True else: return False + class PonyExpress(WellsFargo): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Pony Express' - self.icon = 'πŸ¦„' + self.name = "Pony Express" + self.icon = "πŸ¦„" self.alt_text = "🎴🎴🎴" self.usable_next_turn = True self.can_be_used_now = False @@ -285,18 +355,26 @@ class PonyExpress(WellsFargo): if self.can_be_used_now: return super().play_card(player, against) else: - if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): + if not self.is_duplicate_card(player) and not player.game.check_event( + ce.IlGiudice + ): self.reset_card() + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_green|{player.name}|{self.name}", + ) player.equipment.append(self) return True else: return False + class Howitzer(Gatling): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Howitzer' - self.icon = 'πŸ“‘' + self.name = "Howitzer" + self.icon = "πŸ“‘" self.alt_text = "πŸ‘₯πŸ’₯" self.usable_next_turn = True self.can_be_used_now = False @@ -305,13 +383,21 @@ class Howitzer(Gatling): if self.can_be_used_now: return super().play_card(player, against) else: - if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): + if not self.is_duplicate_card(player) and not player.game.check_event( + ce.IlGiudice + ): self.reset_card() + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_green|{player.name}|{self.name}", + ) player.equipment.append(self) return True else: return False + class CanCan(CatBalou): def __init__(self, suit, number): super().__init__(suit, number) @@ -325,16 +411,24 @@ class CanCan(CatBalou): if self.can_be_used_now: return super().play_card(player, against) else: - if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): + if not self.is_duplicate_card(player) and not player.game.check_event( + ce.IlGiudice + ): self.reset_card() + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_green|{player.name}|{self.name}", + ) player.equipment.append(self) return True else: return False + class Conestoga(Panico): def __init__(self, suit, number): - Card.__init__(self, suit, 'Conestoga', number) + Card.__init__(self, suit, "Conestoga", number) self.icon = "πŸ•" # self.desc = "Ruba 1 carta da un giocatore a prescindere dalla distanza" # self.desc_eng = "Steal a card from another player at any distance" @@ -347,18 +441,26 @@ class Conestoga(Panico): if self.can_be_used_now: return super().play_card(player, against) else: - if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): + if not self.is_duplicate_card(player) and not player.game.check_event( + ce.IlGiudice + ): self.reset_card() + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_green|{player.name}|{self.name}", + ) player.equipment.append(self) return True else: return False + class Pepperbox(Bang): def __init__(self, suit, number): super().__init__(suit, number) - self.name = 'Pepperbox' - self.icon = '🌢' + self.name = "Pepperbox" + self.icon = "🌢" self.alt_text = "πŸ’₯" self.usable_next_turn = True self.can_be_used_now = False @@ -371,17 +473,25 @@ class Pepperbox(Bang): return True return False else: - if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): + if not self.is_duplicate_card(player) and not player.game.check_event( + ce.IlGiudice + ): self.reset_card() + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_green|{player.name}|{self.name}", + ) player.equipment.append(self) return True else: return False + class FucileDaCaccia(Card): def __init__(self, suit, number): - super().__init__(suit, 'Fucile Da Caccia', number) - self.icon = 'πŸŒ‚' + super().__init__(suit, "Fucile Da Caccia", number) + self.icon = "πŸŒ‚" # self.desc = "Spara a un giocatore a prescindere dalla distanza" self.alt_text = "πŸ‘€πŸ’₯" self.need_target = True @@ -396,58 +506,66 @@ class FucileDaCaccia(Card): return True return False else: - if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice): + if not self.is_duplicate_card(player) and not player.game.check_event( + ce.IlGiudice + ): self.reset_card() + G.sio.emit( + "chat_message", + room=player.game.name, + data=f"_play_card_green|{player.name}|{self.name}", + ) player.equipment.append(self) return True else: return False + # pylint: disable=function-redefined def get_starting_deck() -> List[Card]: cards = [ - Barile(Suit.CLUBS, 'A'), + Barile(Suit.CLUBS, "A"), Binocolo(Suit.DIAMONDS, 10), Dinamite(Suit.CLUBS, 10), Mustang(Suit.HEARTS, 5), Remington(Suit.DIAMONDS, 6), RevCarabine(Suit.SPADES, 5), - Riparo(Suit.DIAMONDS, 'K'), + Riparo(Suit.DIAMONDS, "K"), Bang(Suit.SPADES, 8), Bang(Suit.CLUBS, 5), Bang(Suit.CLUBS, 6), - Bang(Suit.CLUBS, 'K'), + Bang(Suit.CLUBS, "K"), Birra(Suit.HEARTS, 6), Birra(Suit.SPADES, 6), CatBalou(Suit.CLUBS, 8), - Emporio(Suit.SPADES, 'A'), + Emporio(Suit.SPADES, "A"), Indiani(Suit.DIAMONDS, 5), Mancato(Suit.DIAMONDS, 8), - Panico(Suit.HEARTS, 'J'), + Panico(Suit.HEARTS, "J"), Pugno(Suit.SPADES, 10), RagTime(Suit.HEARTS, 9), - Rissa(Suit.SPADES, 'J'), + Rissa(Suit.SPADES, "J"), Schivata(Suit.DIAMONDS, 7), - Schivata(Suit.HEARTS, 'K'), - SpringField(Suit.SPADES, 'K'), + Schivata(Suit.HEARTS, "K"), + SpringField(Suit.SPADES, "K"), Tequila(Suit.CLUBS, 9), - Whisky(Suit.HEARTS, 'Q'), + Whisky(Suit.HEARTS, "Q"), Bibbia(Suit.HEARTS, 10), - Cappello(Suit.DIAMONDS, 'J'), - PlaccaDiFerro(Suit.DIAMONDS, 'A'), - PlaccaDiFerro(Suit.SPADES, 'Q'), + Cappello(Suit.DIAMONDS, "J"), + PlaccaDiFerro(Suit.DIAMONDS, "A"), + PlaccaDiFerro(Suit.SPADES, "Q"), Sombrero(Suit.CLUBS, 7), Pugnale(Suit.HEARTS, 8), Derringer(Suit.SPADES, 7), Borraccia(Suit.HEARTS, 7), - CanCan(Suit.CLUBS, 'J'), + CanCan(Suit.CLUBS, "J"), Conestoga(Suit.DIAMONDS, 9), - FucileDaCaccia(Suit.CLUBS, 'Q'), - PonyExpress(Suit.DIAMONDS, 'Q'), - Pepperbox(Suit.HEARTS, 'A'), + FucileDaCaccia(Suit.CLUBS, "Q"), + PonyExpress(Suit.DIAMONDS, "Q"), + Pepperbox(Suit.HEARTS, "A"), Howitzer(Suit.SPADES, 9), ] for c in cards: - c.expansion_icon = 'πŸ„οΈ' - c.expansion = 'dodge_city' + c.expansion_icon = "πŸ„οΈ" + c.expansion = "dodge_city" return cards diff --git a/backend/bang/expansions/gold_rush/characters.py b/backend/bang/expansions/gold_rush/characters.py index 72dc700..e8f23d4 100644 --- a/backend/bang/expansions/gold_rush/characters.py +++ b/backend/bang/expansions/gold_rush/characters.py @@ -1,23 +1,26 @@ from typing import List from bang.characters import Character + class DonBell(Character): def __init__(self): super().__init__("Don Bell", max_lives=4) # A fine turno estrae, ❀️ o ♦️ gioca di nuovo - self.icon = 'πŸ””οΈ' + self.icon = "πŸ””οΈ" + class DutchWill(Character): def __init__(self): super().__init__("Dutch Will", max_lives=4) # Pesca 2 ne scarta 1 e prende 1 pepita - self.icon = '🧐️' + self.icon = "🧐️" + class JackyMurieta(Character): def __init__(self): super().__init__("Jacky Murieta", max_lives=4) # puo pagare 2 pepite per sparare 1 bang extra - self.icon = 'πŸ’†β€β™‚οΈοΈ' + self.icon = "πŸ’†β€β™‚οΈοΈ" def special(self, player, data): if super().special(player, data): @@ -29,45 +32,55 @@ class JackyMurieta(Character): return True return False + class JoshMcCloud(Character): def __init__(self): super().__init__("Josh McCloud", max_lives=4) # puo pagare 2 pepite per pescare il primo equipaggiamento dalla pila gold rush - self.icon = '⛅️' + self.icon = "⛅️" def special(self, player, data): if super().special(player, data): if player.gold_nuggets >= 2 and player.is_my_turn: player.gold_nuggets -= 2 card = player.game.deck.shop_deck.pop(0) - print(f'{player.name} ha comprato usando la abilitΓ  speciale {card.name}') + print( + f"{player.name} ha comprato usando la abilitΓ  speciale {card.name}" + ) if card.play_card(player): player.game.deck.shop_deck.append(card) player.notify_self() return True return False + class MadamYto(Character): def __init__(self): super().__init__("Madam Yto", max_lives=4) # quando viene giocata 1 birra pesca 1 carta - self.icon = 'πŸ’ƒοΈ' + self.icon = "πŸ’ƒοΈ" + class PrettyLuzena(Character): def __init__(self): super().__init__("Pretty Luzena", max_lives=4) # una volta per turno ha 1 sconto di 1 pepita sugli equipaggiamenti - self.icon = 'πŸ‘›οΈ' + self.icon = "πŸ‘›οΈ" + class RaddieSnake(Character): def __init__(self): super().__init__("Raddie Snake", max_lives=4) # puΓ² scartare 1 pepita per pescare 1 carta (2 volte per turno) - self.icon = '🐍️' + self.icon = "🐍️" def special(self, player, data): if super().special(player, data): - if player.gold_nuggets >= 1 and player.is_my_turn and player.special_use_count < 2: + if ( + player.gold_nuggets >= 1 + and player.is_my_turn + and player.special_use_count < 2 + ): player.gold_nuggets -= 1 player.special_use_count += 1 player.game.deck.draw(True, player=player) @@ -75,11 +88,12 @@ class RaddieSnake(Character): return True return False + class SimeonPicos(Character): def __init__(self): super().__init__("Simeon Picos", max_lives=4) # ottiene 1 pepita ogni volta che perde 1 punto vita - self.icon = 'πŸ₯²' + self.icon = "πŸ₯²" def all_characters() -> List[Character]: @@ -94,6 +108,6 @@ def all_characters() -> List[Character]: SimeonPicos(), ] for c in cards: - c.expansion_icon = 'πŸ€‘οΈ' - c.expansion = 'gold_rush' + c.expansion_icon = "πŸ€‘οΈ" + c.expansion = "gold_rush" return cards diff --git a/backend/bang/players.py b/backend/bang/players.py index d0d606e..bedcf75 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -2481,6 +2481,11 @@ class Player: gary_looter.notify_self() else: self.game.deck.scrap(card, player=self) + G.sio.emit( + "chat_message", + room=self.game.name, + data=f"_scrapped|{self.name}|{card.name}|{card.num_suit()}", + ) self.notify_self() def special(self, data): diff --git a/frontend/src/components/Chat.vue b/frontend/src/components/Chat.vue index 969b13c..d0af5c8 100644 --- a/frontend/src/components/Chat.vue +++ b/frontend/src/components/Chat.vue @@ -80,7 +80,10 @@ export default { let desc_pos = -1 let params = msg.split('|') let type = params.shift().substring(1) - if (["flipped", "respond", "play_card", "purchase_card", "play_card_against", "play_card_for", "spilled_beer", "diligenza", "wellsfargo", "saloon", "special_calamity", "won", "choose_emporio", "died_role"].indexOf(type) !== -1) { + if (["flipped", "scrapped", "respond", "play_card", "play_card_green", "play_card_with", "purchase_card", "play_card_against", "play_card_against_with", "play_card_for", "spilled_beer", "diligenza", "wellsfargo", "saloon", "special_calamity", "won", "choose_emporio", "died_role"].indexOf(type) !== -1) { + if (type.indexOf("_with") !== -1) { + params[params.length - 1] = this.$t(`cards.${params[params.length - 1]}.name`) + } desc = this.$t(`cards.${params[1]}.desc`) desc_pos = 3 params[1] = this.$t(`cards.${params[1]}.name`) diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 501b041..b2fc971 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -103,44 +103,48 @@ "chat": { "spectators": " | A spectator is watching the game | {n} spectators are watching the game", "chat": "Chat", - "joined": ";{0}; joined the lobby", - "died": ";{0}; died", - "died_role": ";{0}; was a ;{1};!", - "won": ";{0}; won! Their role was ;{1};", + "joined": "πŸ‘‹ ;{0}; joined the lobby", + "died": "☠️ ;{0}; died", + "died_role": "☠️ ;{0}; was a ;{1};!", + "won": "πŸ† ;{0}; won! Their role was ;{1};", "choose_character": ";{0}; has ;{1}; as character, his special ability is: ;{2};!", "starting": "The game is starting!", - "sheriff": ";{0}; is the sheriff!", + "sheriff": "⭐ ;{0}; is the sheriff!", "did_choose_character": ";{0}; did choose the character.", - "turn": "It is the turn of ;{0};.", + "turn": "⏩ It is the turn of ;{0};.", "draw_from_scrap": ";{0}; did draw the first card from the scrap pile.", "draw_from_player": ";{0}; did draw the first card from the hand of ;{1};.", "flipped": ";{0}; flipped a ;{1}; ;{2};.", - "explode": ";{0}; blew up the dynamite.", + "scrapped": ";{0}; discarded a ;{1}; ;{2};.", + "explode": "πŸ’₯ ;{0}; blew up the dynamite.", "beer_save": ";{0}; used a beer to save his life.", "get_nugget": ";{0}; got a gold nugget using a Beer.", "play_card": ";{0}; played ;{1};.", + "play_card_green": ";{0}; put in game ;{1};.", + "play_card_with": ";{0}; played ;{1};, discarding ;{2};.", "purchase_card": ";{0}; purchased ;{1};.", "play_card_against": ";{0}; played ;{1}; against ;{2};.", + "play_card_against_with": ";{0}; played ;{1}; against ;{2};, discarding ;{3};.", "play_card_for": ";{0}; played ;{1}; for ;{2};.", "spilled_beer": ";{0}; spilled a ;{1};.", "diligenza": ";{0}; played ;{1}; and draws 2 cards.", "wellsfargo": ";{0}; played ;{1}; and draws 3 cards.", - "saloon": ";{0}; played ;{1}; and heals 1 HP to everyone alive.", + "saloon": "🍻 ;{0}; played ;{1}; and heals 1 HP to everyone alive.", "special_bart_cassidy": ";{0}; received a compensation because he was injured.", "special_el_gringo": ";{0}; stole a card from ;{1}; when he was was injured.", "special_calamity": ";{0}; played ;{1}; as Bang! against ;{2};.", "allroles3": "In the game there are: ;{1}; ;{0};, ;{3}; ;{2};, ;{5}; ;{4};.", "allroles4": "In the game there are: ;{1}; ;{0};, ;{3}; ;{2};, ;{5}; ;{4};, ;{7}; ;{6};.", - "guess": ";{0}; guesses ;{1};.", + "guess": "πŸ€” ;{0}; guesses ;{1};.", "guess_right": ";{0}; was right.", "guess_wrong": ";{0}; was wrong.", "fratelli_sangue": ";{0}; gave one of his lives to ;{1};.", "doctor_heal": ";{0}; was healed by the doctor.", - "respond": ";{0}; responded with ;{1};.", - "change_username": ";{0}; is now ;{1};.", + "respond": "↩️ ;{0}; responded with ;{1};.", + "change_username": "✏️ ;{0}; is now ;{1};.", "lobby_reset": "Going back to lobby in ;{0}; seconds...", - "prison_free": ";{0}; got out of prison", - "prison_turn": ";{0}; stayed in prison this turn", + "prison_free": "πŸ†“ ;{0}; got out of prison", + "prison_turn": "πŸ” ;{0}; stayed in prison this turn", "flip_event": "🎴 EVENT: ;{0}; 🎴", "choose_manette": ";{0}; committed to play only cards of suit ;{1}; in this turn.", "UnionPacific": ";{0}; played Union Pacific and draws 4 cards from the deck", @@ -148,8 +152,8 @@ "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};)", - "taglia_reward": ";{1}; got a card from the bounty on ;{0};", - "snake_bit": ";{0}; was bitten by the Rattle Snake." + "taglia_reward": "πŸ’° ;{1}; got a card from the bounty on ;{0};", + "snake_bit": "🐍 ;{0}; was bitten by the Rattle Snake." }, "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 7e6df44..5444db2 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -103,44 +103,48 @@ "chat": { "spectators": " | Uno spettatore sta guardando la partita | {n} spettatori stanno guardando la partita", "chat": "Chat", - "joined": ";{0}; Γ¨ entrato nella stanza", - "died": ";{0}; Γ¨ morto", - "died_role": ";{0}; era ;{1};!", - "won": ";{0}; ha vinto! Il suo ruolo era ;{1};", + "joined": "πŸ‘‹ ;{0}; Γ¨ entrato nella stanza", + "died": "☠️ ;{0}; Γ¨ morto", + "died_role": "☠️ ;{0}; era ;{1};!", + "won": "πŸ† ;{0}; ha vinto! Il suo ruolo era ;{1};", "choose_character": ";{0}; ha come personaggio ;{1};, la sua abilitΓ  speciale Γ¨: ;{2};!", "starting": "La partita sta iniziando!", - "sheriff": ";{0}; Γ¨ lo sceriffo!", + "sheriff": "⭐ ;{0}; Γ¨ lo sceriffo!", "did_choose_character": ";{0}; ha scelto il personaggio.", - "turn": "È il turno di ;{0};.", + "turn": "⏩ È il turno di ;{0};.", "draw_from_scrap": ";{0}; ha pescato la prima carta dalla pila delle carte scartate.", "draw_from_player": ";{0}; ha pescato la prima carta dalla mano di ;{1};.", "flipped": ";{0}; ha estratto ;{1}; ;{2};.", - "explode": ";{0}; ha fatto esplodere la dinamite.", + "scrapped": ";{0}; ha scartato ;{1}; ;{2};.", + "explode": "πŸ’₯ ;{0}; ha fatto esplodere la dinamite.", "beer_save": ";{0}; ha usato una birra per recuperare una vita.", "get_nugget": ";{0}; ha ottenuto una pepita d'oro usando una Birra.", "play_card": ";{0}; ha giocato ;{1};.", + "play_card_green": ";{0}; ha messo in gioco ;{1};.", + "play_card_with": ";{0}; ha giocato ;{1};, scartando ;{2};.", "purchase_card": ";{0}; ha comprato ;{1};.", "play_card_against": ";{0}; ha giocato ;{1}; contro ;{2};.", + "play_card_against_with": ";{0}; ha giocato ;{1}; contro ;{2};, scartando ;{3};.", "play_card_for": ";{0}; ha giocato ;{1}; per ;{2};.", "spilled_beer": ";{0}; ha rovesciato una ;{1};.", "diligenza": ";{0}; ha giocato ;{1}; e ha pescato 2 carte.", "wellsfargo": ";{0}; ha giocato ;{1}; e ha pescato 3 carte.", - "saloon": ";{0}; ha giocato ;{1}; e ha curato 1 punto vita a tutti.", + "saloon": "🍻 ;{0}; ha giocato ;{1}; e ha curato 1 punto vita a tutti.", "special_bart_cassidy": ";{0}; ha ricevuto un risarcimento perchΓ¨ Γ¨ stato ferito.", "special_el_gringo": ";{0}; rubato una carta a ;{1}; mentre veniva colpito.", "special_calamity": ";{0}; ha giocato ;{1}; come un Bang! contro ;{2};.", "allroles3": "Nella partita ci sono: ;{1}; ;{0};, ;{3}; ;{2}; e ;{5}; ;{4};.", "allroles4": "Nella partita ci sono: ;{1}; ;{0};, ;{3}; ;{2};, ;{5}; ;{4}; e ;{7}; ;{6};.", - "guess": ";{0}; pensa sia ;{1};.", + "guess": "πŸ€” ;{0}; pensa sia ;{1};.", "guess_right": ";{0}; ha indovinato.", "guess_wrong": ";{0}; ha sbagliato.", "fratelli_sangue": ";{0}; ha donato una delle sue vite a ;{1};.", "doctor_heal": ";{0}; Γ¨ stato curato dal dottore.", - "respond": ";{0}; ha risposto con ;{1};.", - "change_username": ";{0}; ha cambiato nome in ;{1};.", + "respond": "↩️ ;{0}; ha risposto con ;{1};.", + "change_username": "✏️ ;{0}; ha cambiato nome in ;{1};.", "lobby_reset": "Si ritorna alla stanza in ;{0}; secondi...", - "prison_free": ";{0}; Γ¨ uscito di prigione", - "prison_turn": ";{0}; rimane in prigione questo turno", + "prison_free": "πŸ†“ ;{0}; Γ¨ uscito di prigione", + "prison_turn": "πŸ” ;{0}; rimane in prigione questo turno", "flip_event": "🎴 EVENTO: ;{0}; 🎴", "choose_manette": ";{0}; si Γ¨ impegnato ad usare solo carte di seme ;{1}; in questo turno.", "UnionPacific": ";{0}; ha giocato Union Pacific e ha pescato 4 carte.", @@ -148,8 +152,8 @@ "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};)", - "taglia_reward": ";{1}; ha ottenuto ricompensa dalla taglia su ;{0};", - "snake_bit": ";{0}; Γ¨ stato morso dal Serpente a Sonagli." + "taglia_reward": "πŸ’° ;{1}; ha ottenuto ricompensa dalla taglia su ;{0};", + "snake_bit": "🐍 ;{0}; Γ¨ stato morso dal Serpente a Sonagli." }, "foc": { "leggedelwest": "Ed Γ¨ obbligato a usarla nel suo turno, se possibile"