more details to chat
This commit is contained in:
parent
6b233b652d
commit
674a25bcf3
@ -124,13 +124,13 @@ class Card(ABC):
|
|||||||
G.sio.emit(
|
G.sio.emit(
|
||||||
"chat_message",
|
"chat_message",
|
||||||
room=player.game.name,
|
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:
|
else:
|
||||||
G.sio.emit(
|
G.sio.emit(
|
||||||
"chat_message",
|
"chat_message",
|
||||||
room=player.game.name,
|
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
|
return True
|
||||||
|
|
||||||
|
@ -2,22 +2,25 @@ from bang.cards import *
|
|||||||
import bang.expansions.fistful_of_cards.card_events as ce
|
import bang.expansions.fistful_of_cards.card_events as ce
|
||||||
from globals import G
|
from globals import G
|
||||||
|
|
||||||
|
|
||||||
class Binocolo(Mirino):
|
class Binocolo(Mirino):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Binocolo'
|
self.name = "Binocolo"
|
||||||
self.icon = '🔍'
|
self.icon = "🔍"
|
||||||
|
|
||||||
|
|
||||||
class Riparo(Mustang):
|
class Riparo(Mustang):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Riparo'
|
self.name = "Riparo"
|
||||||
self.icon = '⛰'
|
self.icon = "⛰"
|
||||||
|
|
||||||
|
|
||||||
class Pugno(Card):
|
class Pugno(Card):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, 'Pugno!', number, range=1)
|
super().__init__(suit, "Pugno!", number, range=1)
|
||||||
self.icon = '👊'
|
self.icon = "👊"
|
||||||
self.alt_text = "1🔎 💥"
|
self.alt_text = "1🔎 💥"
|
||||||
# self.desc = "Spara a un giocatore a distanza 1"
|
# self.desc = "Spara a un giocatore a distanza 1"
|
||||||
# self.desc_eng = "Shoot a player at distance 1"
|
# self.desc_eng = "Shoot a player at distance 1"
|
||||||
@ -30,11 +33,12 @@ class Pugno(Card):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Schivata(Mancato):
|
class Schivata(Mancato):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Schivata'
|
self.name = "Schivata"
|
||||||
self.icon = '🙅♂️'
|
self.icon = "🙅♂️"
|
||||||
# self.desc += " e poi pesca una carta"
|
# self.desc += " e poi pesca una carta"
|
||||||
# self.desc_eng += " and then draw a card."
|
# self.desc_eng += " and then draw a card."
|
||||||
self.alt_text = "😅 | 🎴"
|
self.alt_text = "😅 | 🎴"
|
||||||
@ -46,39 +50,46 @@ class Schivata(Mancato):
|
|||||||
player.game.deck.draw(True, player=player)
|
player.game.deck.draw(True, player=player)
|
||||||
player.notify_self()
|
player.notify_self()
|
||||||
|
|
||||||
|
|
||||||
class RagTime(Panico):
|
class RagTime(Panico):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
Card.__init__(self, suit, 'Rag Time', number)
|
Card.__init__(self, suit, "Rag Time", number)
|
||||||
self.icon = '🎹'
|
self.icon = "🎹"
|
||||||
# self.desc = "Ruba 1 carta da un giocatore a prescindere dalla distanza"
|
# 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.desc_eng = "Steal a card from another player at any distance"
|
||||||
self.need_target = True
|
self.need_target = True
|
||||||
self.need_with = True
|
self.need_with = True
|
||||||
self.alt_text = '2🃏 | 👤😱'
|
self.alt_text = "2🃏 | 👤😱"
|
||||||
|
|
||||||
def play_card(self, player, against, _with):
|
def play_card(self, player, against, _with):
|
||||||
if against is not None and _with is not None:
|
if against is not None and _with is not None:
|
||||||
player.game.deck.scrap(_with)
|
player.game.deck.scrap(_with)
|
||||||
super().play_card(player, against=against)
|
super().play_card(player, against=against, _with=_with)
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Rissa(CatBalou):
|
class Rissa(CatBalou):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Rissa'
|
self.name = "Rissa"
|
||||||
self.icon = '🥊'
|
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 = "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.desc_eng = "Choose a card to discard from the hand/equipment of all the other players"
|
||||||
self.need_with = True
|
self.need_with = True
|
||||||
self.need_target = False
|
self.need_target = False
|
||||||
self.alt_text = '2🃏 | 👤💃'
|
self.alt_text = "2🃏 | 👤💃"
|
||||||
|
|
||||||
def play_card(self, player, against, _with):
|
def play_card(self, player, against, _with):
|
||||||
if _with is not None:
|
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
|
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 = []
|
player.rissa_targets = []
|
||||||
target = player.game.get_player_named(player.name, next=True)
|
target = player.game.get_player_named(player.name, next=True)
|
||||||
while target != player:
|
while target != player:
|
||||||
@ -86,35 +97,43 @@ class Rissa(CatBalou):
|
|||||||
player.rissa_targets.append(target)
|
player.rissa_targets.append(target)
|
||||||
target = player.game.get_player_named(target.name, next=True)
|
target = player.game.get_player_named(target.name, next=True)
|
||||||
player.game.deck.scrap(_with)
|
player.game.deck.scrap(_with)
|
||||||
player.event_type = 'rissa'
|
player.event_type = "rissa"
|
||||||
print(f'rissa targets: {player.rissa_targets}')
|
print(f"rissa targets: {player.rissa_targets}")
|
||||||
super().play_card(player, against=player.rissa_targets.pop(0).name)
|
super().play_card(
|
||||||
G.sio.emit('chat_message', room=player.game.name, data=f'_play_card|{player.name}|{self.name}')
|
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 True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class SpringField(Card):
|
class SpringField(Card):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, 'Springfield', number)
|
super().__init__(suit, "Springfield", number)
|
||||||
self.icon = '🌵'
|
self.icon = "🌵"
|
||||||
# self.desc = "Spara a un giocatore a prescindere dalla distanza"
|
# self.desc = "Spara a un giocatore a prescindere dalla distanza"
|
||||||
# self.desc_eng = "Shoot a player at any distance"
|
# self.desc_eng = "Shoot a player at any distance"
|
||||||
self.need_target = True
|
self.need_target = True
|
||||||
self.need_with = True
|
self.need_with = True
|
||||||
self.alt_text = '2🃏 | 👤💥'
|
self.alt_text = "2🃏 | 👤💥"
|
||||||
|
|
||||||
def play_card(self, player, against, _with=None):
|
def play_card(self, player, against, _with=None):
|
||||||
if against is not None and _with is not None:
|
if against is not None and _with is not None:
|
||||||
player.game.deck.scrap(_with)
|
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)
|
player.game.attack(player, against, card_name=self.name)
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Tequila(Card):
|
class Tequila(Card):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, 'Tequila', number)
|
super().__init__(suit, "Tequila", number)
|
||||||
self.icon = '🍹'
|
self.icon = "🍹"
|
||||||
# self.desc = "Fai recuperare 1 vita a un giocatore a tua scelta, anche te stesso"
|
# 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.desc_eng = "Heal 1 HP to a player of your choice (can be you)"
|
||||||
self.need_target = True
|
self.need_target = True
|
||||||
@ -124,36 +143,45 @@ class Tequila(Card):
|
|||||||
|
|
||||||
def play_card(self, player, against, _with=None):
|
def play_card(self, player, against, _with=None):
|
||||||
if against is not None and _with is not 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.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()
|
player.game.get_player_named(against).notify_self()
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Whisky(Card):
|
class Whisky(Card):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, 'Whisky', number)
|
super().__init__(suit, "Whisky", number)
|
||||||
self.icon = '🥃'
|
self.icon = "🥃"
|
||||||
# self.desc = "Gioca questa carta per recuperare fino a 2 punti vita"
|
# self.desc = "Gioca questa carta per recuperare fino a 2 punti vita"
|
||||||
# self.desc_eng = "Heal 2 HP"
|
# self.desc_eng = "Heal 2 HP"
|
||||||
self.need_with = True
|
self.need_with = True
|
||||||
self.alt_text = '2🃏 | 🍺🍺'
|
self.alt_text = "2🃏 | 🍺🍺"
|
||||||
|
|
||||||
def play_card(self, player, against, _with=None):
|
def play_card(self, player, against, _with=None):
|
||||||
if _with is not 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.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()
|
player.notify_self()
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Bibbia(Schivata):
|
class Bibbia(Schivata):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Bibbia'
|
self.name = "Bibbia"
|
||||||
self.icon = '📖'
|
self.icon = "📖"
|
||||||
self.usable_next_turn = True
|
self.usable_next_turn = True
|
||||||
self.can_be_used_now = False
|
self.can_be_used_now = False
|
||||||
|
|
||||||
@ -162,18 +190,26 @@ class Bibbia(Schivata):
|
|||||||
pass
|
pass
|
||||||
return False
|
return False
|
||||||
else:
|
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()
|
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)
|
player.equipment.append(self)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Cappello(Mancato):
|
class Cappello(Mancato):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Cappello'
|
self.name = "Cappello"
|
||||||
self.icon = '🧢'
|
self.icon = "🧢"
|
||||||
self.usable_next_turn = True
|
self.usable_next_turn = True
|
||||||
self.can_be_used_now = False
|
self.can_be_used_now = False
|
||||||
self.alt_text = "😅"
|
self.alt_text = "😅"
|
||||||
@ -184,30 +220,40 @@ class Cappello(Mancato):
|
|||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
self.reset_card()
|
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()
|
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)
|
player.equipment.append(self)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class PlaccaDiFerro(Cappello):
|
class PlaccaDiFerro(Cappello):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Placca Di Ferro'
|
self.name = "Placca Di Ferro"
|
||||||
self.icon = '🛡'
|
self.icon = "🛡"
|
||||||
|
|
||||||
|
|
||||||
class Sombrero(Cappello):
|
class Sombrero(Cappello):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Sombrero'
|
self.name = "Sombrero"
|
||||||
self.icon = '👒'
|
self.icon = "👒"
|
||||||
|
|
||||||
|
|
||||||
class Pugnale(Pugno):
|
class Pugnale(Pugno):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Pugnale'
|
self.name = "Pugnale"
|
||||||
self.icon = '🗡'
|
self.icon = "🗡"
|
||||||
self.usable_next_turn = True
|
self.usable_next_turn = True
|
||||||
self.can_be_used_now = False
|
self.can_be_used_now = False
|
||||||
|
|
||||||
@ -216,19 +262,27 @@ class Pugnale(Pugno):
|
|||||||
return super().play_card(player, against=against)
|
return super().play_card(player, against=against)
|
||||||
else:
|
else:
|
||||||
self.reset_card()
|
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()
|
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)
|
player.equipment.append(self)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Derringer(Pugnale):
|
class Derringer(Pugnale):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Derringer'
|
self.name = "Derringer"
|
||||||
self.icon = '🚬'
|
self.icon = "🚬"
|
||||||
self.alt_text += ' 🎴'
|
self.alt_text += " 🎴"
|
||||||
# self.desc += ' e poi pesca una carta'
|
# self.desc += ' e poi pesca una carta'
|
||||||
# self.desc_eng += ' and then draw a card.'
|
# self.desc_eng += ' and then draw a card.'
|
||||||
|
|
||||||
@ -237,8 +291,15 @@ class Derringer(Pugnale):
|
|||||||
player.game.deck.draw(True, player=player)
|
player.game.deck.draw(True, player=player)
|
||||||
return super().play_card(player, against=against)
|
return super().play_card(player, against=against)
|
||||||
else:
|
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()
|
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)
|
player.equipment.append(self)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
@ -248,10 +309,11 @@ class Derringer(Pugnale):
|
|||||||
player.game.deck.draw(True, player=player)
|
player.game.deck.draw(True, player=player)
|
||||||
player.notify_self()
|
player.notify_self()
|
||||||
|
|
||||||
|
|
||||||
class Borraccia(Card):
|
class Borraccia(Card):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, 'Borraccia', number)
|
super().__init__(suit, "Borraccia", number)
|
||||||
self.icon = '🍼'
|
self.icon = "🍼"
|
||||||
# self.desc = 'Recupera 1 vita'
|
# self.desc = 'Recupera 1 vita'
|
||||||
# self.desc_eng = 'Regain 1 HP'
|
# self.desc_eng = 'Regain 1 HP'
|
||||||
self.alt_text = "🍺"
|
self.alt_text = "🍺"
|
||||||
@ -261,22 +323,30 @@ class Borraccia(Card):
|
|||||||
def play_card(self, player, against, _with=None):
|
def play_card(self, player, against, _with=None):
|
||||||
if self.can_be_used_now:
|
if self.can_be_used_now:
|
||||||
super().play_card(player, against)
|
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()
|
player.notify_self()
|
||||||
return True
|
return True
|
||||||
else:
|
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()
|
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)
|
player.equipment.append(self)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class PonyExpress(WellsFargo):
|
class PonyExpress(WellsFargo):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Pony Express'
|
self.name = "Pony Express"
|
||||||
self.icon = '🦄'
|
self.icon = "🦄"
|
||||||
self.alt_text = "🎴🎴🎴"
|
self.alt_text = "🎴🎴🎴"
|
||||||
self.usable_next_turn = True
|
self.usable_next_turn = True
|
||||||
self.can_be_used_now = False
|
self.can_be_used_now = False
|
||||||
@ -285,18 +355,26 @@ class PonyExpress(WellsFargo):
|
|||||||
if self.can_be_used_now:
|
if self.can_be_used_now:
|
||||||
return super().play_card(player, against)
|
return super().play_card(player, against)
|
||||||
else:
|
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()
|
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)
|
player.equipment.append(self)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Howitzer(Gatling):
|
class Howitzer(Gatling):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Howitzer'
|
self.name = "Howitzer"
|
||||||
self.icon = '📡'
|
self.icon = "📡"
|
||||||
self.alt_text = "👥💥"
|
self.alt_text = "👥💥"
|
||||||
self.usable_next_turn = True
|
self.usable_next_turn = True
|
||||||
self.can_be_used_now = False
|
self.can_be_used_now = False
|
||||||
@ -305,13 +383,21 @@ class Howitzer(Gatling):
|
|||||||
if self.can_be_used_now:
|
if self.can_be_used_now:
|
||||||
return super().play_card(player, against)
|
return super().play_card(player, against)
|
||||||
else:
|
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()
|
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)
|
player.equipment.append(self)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class CanCan(CatBalou):
|
class CanCan(CatBalou):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
@ -325,16 +411,24 @@ class CanCan(CatBalou):
|
|||||||
if self.can_be_used_now:
|
if self.can_be_used_now:
|
||||||
return super().play_card(player, against)
|
return super().play_card(player, against)
|
||||||
else:
|
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()
|
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)
|
player.equipment.append(self)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Conestoga(Panico):
|
class Conestoga(Panico):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
Card.__init__(self, suit, 'Conestoga', number)
|
Card.__init__(self, suit, "Conestoga", number)
|
||||||
self.icon = "🏕"
|
self.icon = "🏕"
|
||||||
# self.desc = "Ruba 1 carta da un giocatore a prescindere dalla distanza"
|
# 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.desc_eng = "Steal a card from another player at any distance"
|
||||||
@ -347,18 +441,26 @@ class Conestoga(Panico):
|
|||||||
if self.can_be_used_now:
|
if self.can_be_used_now:
|
||||||
return super().play_card(player, against)
|
return super().play_card(player, against)
|
||||||
else:
|
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()
|
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)
|
player.equipment.append(self)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Pepperbox(Bang):
|
class Pepperbox(Bang):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, number)
|
super().__init__(suit, number)
|
||||||
self.name = 'Pepperbox'
|
self.name = "Pepperbox"
|
||||||
self.icon = '🌶'
|
self.icon = "🌶"
|
||||||
self.alt_text = "💥"
|
self.alt_text = "💥"
|
||||||
self.usable_next_turn = True
|
self.usable_next_turn = True
|
||||||
self.can_be_used_now = False
|
self.can_be_used_now = False
|
||||||
@ -371,17 +473,25 @@ class Pepperbox(Bang):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
else:
|
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()
|
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)
|
player.equipment.append(self)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class FucileDaCaccia(Card):
|
class FucileDaCaccia(Card):
|
||||||
def __init__(self, suit, number):
|
def __init__(self, suit, number):
|
||||||
super().__init__(suit, 'Fucile Da Caccia', number)
|
super().__init__(suit, "Fucile Da Caccia", number)
|
||||||
self.icon = '🌂'
|
self.icon = "🌂"
|
||||||
# self.desc = "Spara a un giocatore a prescindere dalla distanza"
|
# self.desc = "Spara a un giocatore a prescindere dalla distanza"
|
||||||
self.alt_text = "👤💥"
|
self.alt_text = "👤💥"
|
||||||
self.need_target = True
|
self.need_target = True
|
||||||
@ -396,58 +506,66 @@ class FucileDaCaccia(Card):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
else:
|
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()
|
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)
|
player.equipment.append(self)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=function-redefined
|
# pylint: disable=function-redefined
|
||||||
def get_starting_deck() -> List[Card]:
|
def get_starting_deck() -> List[Card]:
|
||||||
cards = [
|
cards = [
|
||||||
Barile(Suit.CLUBS, 'A'),
|
Barile(Suit.CLUBS, "A"),
|
||||||
Binocolo(Suit.DIAMONDS, 10),
|
Binocolo(Suit.DIAMONDS, 10),
|
||||||
Dinamite(Suit.CLUBS, 10),
|
Dinamite(Suit.CLUBS, 10),
|
||||||
Mustang(Suit.HEARTS, 5),
|
Mustang(Suit.HEARTS, 5),
|
||||||
Remington(Suit.DIAMONDS, 6),
|
Remington(Suit.DIAMONDS, 6),
|
||||||
RevCarabine(Suit.SPADES, 5),
|
RevCarabine(Suit.SPADES, 5),
|
||||||
Riparo(Suit.DIAMONDS, 'K'),
|
Riparo(Suit.DIAMONDS, "K"),
|
||||||
Bang(Suit.SPADES, 8),
|
Bang(Suit.SPADES, 8),
|
||||||
Bang(Suit.CLUBS, 5),
|
Bang(Suit.CLUBS, 5),
|
||||||
Bang(Suit.CLUBS, 6),
|
Bang(Suit.CLUBS, 6),
|
||||||
Bang(Suit.CLUBS, 'K'),
|
Bang(Suit.CLUBS, "K"),
|
||||||
Birra(Suit.HEARTS, 6),
|
Birra(Suit.HEARTS, 6),
|
||||||
Birra(Suit.SPADES, 6),
|
Birra(Suit.SPADES, 6),
|
||||||
CatBalou(Suit.CLUBS, 8),
|
CatBalou(Suit.CLUBS, 8),
|
||||||
Emporio(Suit.SPADES, 'A'),
|
Emporio(Suit.SPADES, "A"),
|
||||||
Indiani(Suit.DIAMONDS, 5),
|
Indiani(Suit.DIAMONDS, 5),
|
||||||
Mancato(Suit.DIAMONDS, 8),
|
Mancato(Suit.DIAMONDS, 8),
|
||||||
Panico(Suit.HEARTS, 'J'),
|
Panico(Suit.HEARTS, "J"),
|
||||||
Pugno(Suit.SPADES, 10),
|
Pugno(Suit.SPADES, 10),
|
||||||
RagTime(Suit.HEARTS, 9),
|
RagTime(Suit.HEARTS, 9),
|
||||||
Rissa(Suit.SPADES, 'J'),
|
Rissa(Suit.SPADES, "J"),
|
||||||
Schivata(Suit.DIAMONDS, 7),
|
Schivata(Suit.DIAMONDS, 7),
|
||||||
Schivata(Suit.HEARTS, 'K'),
|
Schivata(Suit.HEARTS, "K"),
|
||||||
SpringField(Suit.SPADES, 'K'),
|
SpringField(Suit.SPADES, "K"),
|
||||||
Tequila(Suit.CLUBS, 9),
|
Tequila(Suit.CLUBS, 9),
|
||||||
Whisky(Suit.HEARTS, 'Q'),
|
Whisky(Suit.HEARTS, "Q"),
|
||||||
Bibbia(Suit.HEARTS, 10),
|
Bibbia(Suit.HEARTS, 10),
|
||||||
Cappello(Suit.DIAMONDS, 'J'),
|
Cappello(Suit.DIAMONDS, "J"),
|
||||||
PlaccaDiFerro(Suit.DIAMONDS, 'A'),
|
PlaccaDiFerro(Suit.DIAMONDS, "A"),
|
||||||
PlaccaDiFerro(Suit.SPADES, 'Q'),
|
PlaccaDiFerro(Suit.SPADES, "Q"),
|
||||||
Sombrero(Suit.CLUBS, 7),
|
Sombrero(Suit.CLUBS, 7),
|
||||||
Pugnale(Suit.HEARTS, 8),
|
Pugnale(Suit.HEARTS, 8),
|
||||||
Derringer(Suit.SPADES, 7),
|
Derringer(Suit.SPADES, 7),
|
||||||
Borraccia(Suit.HEARTS, 7),
|
Borraccia(Suit.HEARTS, 7),
|
||||||
CanCan(Suit.CLUBS, 'J'),
|
CanCan(Suit.CLUBS, "J"),
|
||||||
Conestoga(Suit.DIAMONDS, 9),
|
Conestoga(Suit.DIAMONDS, 9),
|
||||||
FucileDaCaccia(Suit.CLUBS, 'Q'),
|
FucileDaCaccia(Suit.CLUBS, "Q"),
|
||||||
PonyExpress(Suit.DIAMONDS, 'Q'),
|
PonyExpress(Suit.DIAMONDS, "Q"),
|
||||||
Pepperbox(Suit.HEARTS, 'A'),
|
Pepperbox(Suit.HEARTS, "A"),
|
||||||
Howitzer(Suit.SPADES, 9),
|
Howitzer(Suit.SPADES, 9),
|
||||||
]
|
]
|
||||||
for c in cards:
|
for c in cards:
|
||||||
c.expansion_icon = '🐄️'
|
c.expansion_icon = "🐄️"
|
||||||
c.expansion = 'dodge_city'
|
c.expansion = "dodge_city"
|
||||||
return cards
|
return cards
|
||||||
|
@ -1,23 +1,26 @@
|
|||||||
from typing import List
|
from typing import List
|
||||||
from bang.characters import Character
|
from bang.characters import Character
|
||||||
|
|
||||||
|
|
||||||
class DonBell(Character):
|
class DonBell(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Don Bell", max_lives=4)
|
super().__init__("Don Bell", max_lives=4)
|
||||||
# A fine turno estrae, ❤️ o ♦️ gioca di nuovo
|
# A fine turno estrae, ❤️ o ♦️ gioca di nuovo
|
||||||
self.icon = '🔔️'
|
self.icon = "🔔️"
|
||||||
|
|
||||||
|
|
||||||
class DutchWill(Character):
|
class DutchWill(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Dutch Will", max_lives=4)
|
super().__init__("Dutch Will", max_lives=4)
|
||||||
# Pesca 2 ne scarta 1 e prende 1 pepita
|
# Pesca 2 ne scarta 1 e prende 1 pepita
|
||||||
self.icon = '🧐️'
|
self.icon = "🧐️"
|
||||||
|
|
||||||
|
|
||||||
class JackyMurieta(Character):
|
class JackyMurieta(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Jacky Murieta", max_lives=4)
|
super().__init__("Jacky Murieta", max_lives=4)
|
||||||
# puo pagare 2 pepite per sparare 1 bang extra
|
# puo pagare 2 pepite per sparare 1 bang extra
|
||||||
self.icon = '💆♂️️'
|
self.icon = "💆♂️️"
|
||||||
|
|
||||||
def special(self, player, data):
|
def special(self, player, data):
|
||||||
if super().special(player, data):
|
if super().special(player, data):
|
||||||
@ -29,45 +32,55 @@ class JackyMurieta(Character):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class JoshMcCloud(Character):
|
class JoshMcCloud(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Josh McCloud", max_lives=4)
|
super().__init__("Josh McCloud", max_lives=4)
|
||||||
# puo pagare 2 pepite per pescare il primo equipaggiamento dalla pila gold rush
|
# puo pagare 2 pepite per pescare il primo equipaggiamento dalla pila gold rush
|
||||||
self.icon = '⛅️'
|
self.icon = "⛅️"
|
||||||
|
|
||||||
def special(self, player, data):
|
def special(self, player, data):
|
||||||
if super().special(player, data):
|
if super().special(player, data):
|
||||||
if player.gold_nuggets >= 2 and player.is_my_turn:
|
if player.gold_nuggets >= 2 and player.is_my_turn:
|
||||||
player.gold_nuggets -= 2
|
player.gold_nuggets -= 2
|
||||||
card = player.game.deck.shop_deck.pop(0)
|
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):
|
if card.play_card(player):
|
||||||
player.game.deck.shop_deck.append(card)
|
player.game.deck.shop_deck.append(card)
|
||||||
player.notify_self()
|
player.notify_self()
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class MadamYto(Character):
|
class MadamYto(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Madam Yto", max_lives=4)
|
super().__init__("Madam Yto", max_lives=4)
|
||||||
# quando viene giocata 1 birra pesca 1 carta
|
# quando viene giocata 1 birra pesca 1 carta
|
||||||
self.icon = '💃️'
|
self.icon = "💃️"
|
||||||
|
|
||||||
|
|
||||||
class PrettyLuzena(Character):
|
class PrettyLuzena(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Pretty Luzena", max_lives=4)
|
super().__init__("Pretty Luzena", max_lives=4)
|
||||||
# una volta per turno ha 1 sconto di 1 pepita sugli equipaggiamenti
|
# una volta per turno ha 1 sconto di 1 pepita sugli equipaggiamenti
|
||||||
self.icon = '👛️'
|
self.icon = "👛️"
|
||||||
|
|
||||||
|
|
||||||
class RaddieSnake(Character):
|
class RaddieSnake(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Raddie Snake", max_lives=4)
|
super().__init__("Raddie Snake", max_lives=4)
|
||||||
# può scartare 1 pepita per pescare 1 carta (2 volte per turno)
|
# può scartare 1 pepita per pescare 1 carta (2 volte per turno)
|
||||||
self.icon = '🐍️'
|
self.icon = "🐍️"
|
||||||
|
|
||||||
def special(self, player, data):
|
def special(self, player, data):
|
||||||
if super().special(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.gold_nuggets -= 1
|
||||||
player.special_use_count += 1
|
player.special_use_count += 1
|
||||||
player.game.deck.draw(True, player=player)
|
player.game.deck.draw(True, player=player)
|
||||||
@ -75,11 +88,12 @@ class RaddieSnake(Character):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class SimeonPicos(Character):
|
class SimeonPicos(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Simeon Picos", max_lives=4)
|
super().__init__("Simeon Picos", max_lives=4)
|
||||||
# ottiene 1 pepita ogni volta che perde 1 punto vita
|
# ottiene 1 pepita ogni volta che perde 1 punto vita
|
||||||
self.icon = '🥲'
|
self.icon = "🥲"
|
||||||
|
|
||||||
|
|
||||||
def all_characters() -> List[Character]:
|
def all_characters() -> List[Character]:
|
||||||
@ -94,6 +108,6 @@ def all_characters() -> List[Character]:
|
|||||||
SimeonPicos(),
|
SimeonPicos(),
|
||||||
]
|
]
|
||||||
for c in cards:
|
for c in cards:
|
||||||
c.expansion_icon = '🤑️'
|
c.expansion_icon = "🤑️"
|
||||||
c.expansion = 'gold_rush'
|
c.expansion = "gold_rush"
|
||||||
return cards
|
return cards
|
||||||
|
@ -2481,6 +2481,11 @@ class Player:
|
|||||||
gary_looter.notify_self()
|
gary_looter.notify_self()
|
||||||
else:
|
else:
|
||||||
self.game.deck.scrap(card, player=self)
|
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()
|
self.notify_self()
|
||||||
|
|
||||||
def special(self, data):
|
def special(self, data):
|
||||||
|
@ -80,7 +80,10 @@ export default {
|
|||||||
let desc_pos = -1
|
let desc_pos = -1
|
||||||
let params = msg.split('|')
|
let params = msg.split('|')
|
||||||
let type = params.shift().substring(1)
|
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 = this.$t(`cards.${params[1]}.desc`)
|
||||||
desc_pos = 3
|
desc_pos = 3
|
||||||
params[1] = this.$t(`cards.${params[1]}.name`)
|
params[1] = this.$t(`cards.${params[1]}.name`)
|
||||||
|
@ -103,44 +103,48 @@
|
|||||||
"chat": {
|
"chat": {
|
||||||
"spectators": " | A spectator is watching the game | {n} spectators are watching the game",
|
"spectators": " | A spectator is watching the game | {n} spectators are watching the game",
|
||||||
"chat": "Chat",
|
"chat": "Chat",
|
||||||
"joined": ";{0}; joined the lobby",
|
"joined": "👋 ;{0}; joined the lobby",
|
||||||
"died": ";{0}; died",
|
"died": "☠️ ;{0}; died",
|
||||||
"died_role": ";{0}; was a ;{1};!",
|
"died_role": "☠️ ;{0}; was a ;{1};!",
|
||||||
"won": ";{0}; won! Their role was ;{1};",
|
"won": "🏆 ;{0}; won! Their role was ;{1};",
|
||||||
"choose_character": ";{0}; has ;{1}; as character, his special ability is: ;{2};!",
|
"choose_character": ";{0}; has ;{1}; as character, his special ability is: ;{2};!",
|
||||||
"starting": "The game is starting!",
|
"starting": "The game is starting!",
|
||||||
"sheriff": ";{0}; is the sheriff!",
|
"sheriff": "⭐ ;{0}; is the sheriff!",
|
||||||
"did_choose_character": ";{0}; did choose the character.",
|
"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_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};.",
|
"draw_from_player": ";{0}; did draw the first card from the hand of ;{1};.",
|
||||||
"flipped": ";{0}; flipped a ;{1}; ;{2};.",
|
"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.",
|
"beer_save": ";{0}; used a beer to save his life.",
|
||||||
"get_nugget": ";{0}; got a gold nugget using a Beer.",
|
"get_nugget": ";{0}; got a gold nugget using a Beer.",
|
||||||
"play_card": ";{0}; played ;{1};.",
|
"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};.",
|
"purchase_card": ";{0}; purchased ;{1};.",
|
||||||
"play_card_against": ";{0}; played ;{1}; against ;{2};.",
|
"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};.",
|
"play_card_for": ";{0}; played ;{1}; for ;{2};.",
|
||||||
"spilled_beer": ";{0}; spilled a ;{1};.",
|
"spilled_beer": ";{0}; spilled a ;{1};.",
|
||||||
"diligenza": ";{0}; played ;{1}; and draws 2 cards.",
|
"diligenza": ";{0}; played ;{1}; and draws 2 cards.",
|
||||||
"wellsfargo": ";{0}; played ;{1}; and draws 3 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_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_el_gringo": ";{0}; stole a card from ;{1}; when he was was injured.",
|
||||||
"special_calamity": ";{0}; played ;{1}; as Bang! against ;{2};.",
|
"special_calamity": ";{0}; played ;{1}; as Bang! against ;{2};.",
|
||||||
"allroles3": "In the game there are: ;{1}; ;{0};, ;{3}; ;{2};, ;{5}; ;{4};.",
|
"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};.",
|
"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_right": ";{0}; was right.",
|
||||||
"guess_wrong": ";{0}; was wrong.",
|
"guess_wrong": ";{0}; was wrong.",
|
||||||
"fratelli_sangue": ";{0}; gave one of his lives to ;{1};.",
|
"fratelli_sangue": ";{0}; gave one of his lives to ;{1};.",
|
||||||
"doctor_heal": ";{0}; was healed by the doctor.",
|
"doctor_heal": ";{0}; was healed by the doctor.",
|
||||||
"respond": ";{0}; responded with ;{1};.",
|
"respond": "↩️ ;{0}; responded with ;{1};.",
|
||||||
"change_username": ";{0}; is now ;{1};.",
|
"change_username": "✏️ ;{0}; is now ;{1};.",
|
||||||
"lobby_reset": "Going back to lobby in ;{0}; seconds...",
|
"lobby_reset": "Going back to lobby in ;{0}; seconds...",
|
||||||
"prison_free": ";{0}; got out of prison",
|
"prison_free": "🆓 ;{0}; got out of prison",
|
||||||
"prison_turn": ";{0}; stayed in prison this turn",
|
"prison_turn": "🔐 ;{0}; stayed in prison this turn",
|
||||||
"flip_event": "🎴 EVENT: ;{0}; 🎴",
|
"flip_event": "🎴 EVENT: ;{0}; 🎴",
|
||||||
"choose_manette": ";{0}; committed to play only cards of suit ;{1}; in this turn.",
|
"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",
|
"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};.",
|
"gold_rush_pay_discard": ";{0}; discarded ;{2}; from ;{1};.",
|
||||||
"choose_emporio": ";{0}; has chosen ;{1}; from General Store.",
|
"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};",
|
"taglia_reward": "💰 ;{1}; got a card from the bounty on ;{0};",
|
||||||
"snake_bit": ";{0}; was bitten by the Rattle Snake."
|
"snake_bit": "🐍 ;{0}; was bitten by the Rattle Snake."
|
||||||
},
|
},
|
||||||
"foc": {
|
"foc": {
|
||||||
"leggedelwest": "He must play this card on this turn if possible."
|
"leggedelwest": "He must play this card on this turn if possible."
|
||||||
|
@ -103,44 +103,48 @@
|
|||||||
"chat": {
|
"chat": {
|
||||||
"spectators": " | Uno spettatore sta guardando la partita | {n} spettatori stanno guardando la partita",
|
"spectators": " | Uno spettatore sta guardando la partita | {n} spettatori stanno guardando la partita",
|
||||||
"chat": "Chat",
|
"chat": "Chat",
|
||||||
"joined": ";{0}; è entrato nella stanza",
|
"joined": "👋 ;{0}; è entrato nella stanza",
|
||||||
"died": ";{0}; è morto",
|
"died": "☠️ ;{0}; è morto",
|
||||||
"died_role": ";{0}; era ;{1};!",
|
"died_role": "☠️ ;{0}; era ;{1};!",
|
||||||
"won": ";{0}; ha vinto! Il suo ruolo era ;{1};",
|
"won": "🏆 ;{0}; ha vinto! Il suo ruolo era ;{1};",
|
||||||
"choose_character": ";{0}; ha come personaggio ;{1};, la sua abilità speciale è: ;{2};!",
|
"choose_character": ";{0}; ha come personaggio ;{1};, la sua abilità speciale è: ;{2};!",
|
||||||
"starting": "La partita sta iniziando!",
|
"starting": "La partita sta iniziando!",
|
||||||
"sheriff": ";{0}; è lo sceriffo!",
|
"sheriff": "⭐ ;{0}; è lo sceriffo!",
|
||||||
"did_choose_character": ";{0}; ha scelto il personaggio.",
|
"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_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};.",
|
"draw_from_player": ";{0}; ha pescato la prima carta dalla mano di ;{1};.",
|
||||||
"flipped": ";{0}; ha estratto ;{1}; ;{2};.",
|
"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.",
|
"beer_save": ";{0}; ha usato una birra per recuperare una vita.",
|
||||||
"get_nugget": ";{0}; ha ottenuto una pepita d'oro usando una Birra.",
|
"get_nugget": ";{0}; ha ottenuto una pepita d'oro usando una Birra.",
|
||||||
"play_card": ";{0}; ha giocato ;{1};.",
|
"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};.",
|
"purchase_card": ";{0}; ha comprato ;{1};.",
|
||||||
"play_card_against": ";{0}; ha giocato ;{1}; contro ;{2};.",
|
"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};.",
|
"play_card_for": ";{0}; ha giocato ;{1}; per ;{2};.",
|
||||||
"spilled_beer": ";{0}; ha rovesciato una ;{1};.",
|
"spilled_beer": ";{0}; ha rovesciato una ;{1};.",
|
||||||
"diligenza": ";{0}; ha giocato ;{1}; e ha pescato 2 carte.",
|
"diligenza": ";{0}; ha giocato ;{1}; e ha pescato 2 carte.",
|
||||||
"wellsfargo": ";{0}; ha giocato ;{1}; e ha pescato 3 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_bart_cassidy": ";{0}; ha ricevuto un risarcimento perchè è stato ferito.",
|
||||||
"special_el_gringo": ";{0}; rubato una carta a ;{1}; mentre veniva colpito.",
|
"special_el_gringo": ";{0}; rubato una carta a ;{1}; mentre veniva colpito.",
|
||||||
"special_calamity": ";{0}; ha giocato ;{1}; come un Bang! contro ;{2};.",
|
"special_calamity": ";{0}; ha giocato ;{1}; come un Bang! contro ;{2};.",
|
||||||
"allroles3": "Nella partita ci sono: ;{1}; ;{0};, ;{3}; ;{2}; e ;{5}; ;{4};.",
|
"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};.",
|
"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_right": ";{0}; ha indovinato.",
|
||||||
"guess_wrong": ";{0}; ha sbagliato.",
|
"guess_wrong": ";{0}; ha sbagliato.",
|
||||||
"fratelli_sangue": ";{0}; ha donato una delle sue vite a ;{1};.",
|
"fratelli_sangue": ";{0}; ha donato una delle sue vite a ;{1};.",
|
||||||
"doctor_heal": ";{0}; è stato curato dal dottore.",
|
"doctor_heal": ";{0}; è stato curato dal dottore.",
|
||||||
"respond": ";{0}; ha risposto con ;{1};.",
|
"respond": "↩️ ;{0}; ha risposto con ;{1};.",
|
||||||
"change_username": ";{0}; ha cambiato nome in ;{1};.",
|
"change_username": "✏️ ;{0}; ha cambiato nome in ;{1};.",
|
||||||
"lobby_reset": "Si ritorna alla stanza in ;{0}; secondi...",
|
"lobby_reset": "Si ritorna alla stanza in ;{0}; secondi...",
|
||||||
"prison_free": ";{0}; è uscito di prigione",
|
"prison_free": "🆓 ;{0}; è uscito di prigione",
|
||||||
"prison_turn": ";{0}; rimane in prigione questo turno",
|
"prison_turn": "🔐 ;{0}; rimane in prigione questo turno",
|
||||||
"flip_event": "🎴 EVENTO: ;{0}; 🎴",
|
"flip_event": "🎴 EVENTO: ;{0}; 🎴",
|
||||||
"choose_manette": ";{0}; si è impegnato ad usare solo carte di seme ;{1}; in questo turno.",
|
"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.",
|
"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};.",
|
"gold_rush_pay_discard": ";{0}; ha fatto scartare ;{2}; a ;{1};.",
|
||||||
"choose_emporio": ";{0}; ha scelto ;{1}; da Emporio.",
|
"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};",
|
"taglia_reward": "💰 ;{1}; ha ottenuto ricompensa dalla taglia su ;{0};",
|
||||||
"snake_bit": ";{0}; è stato morso dal Serpente a Sonagli."
|
"snake_bit": "🐍 ;{0}; è stato morso dal Serpente a Sonagli."
|
||||||
},
|
},
|
||||||
"foc": {
|
"foc": {
|
||||||
"leggedelwest": "Ed è obbligato a usarla nel suo turno, se possibile"
|
"leggedelwest": "Ed è obbligato a usarla nel suo turno, se possibile"
|
||||||
|
Loading…
Reference in New Issue
Block a user