more work on help page
also adds the extension_icon badge to cards and moves character descriptions to the localization file
This commit is contained in:
parent
f580403e96
commit
4bd71f76e4
@ -362,10 +362,19 @@ def holyday_special(sid, data):
|
|||||||
@sio.event
|
@sio.event
|
||||||
def get_cards(sid):
|
def get_cards(sid):
|
||||||
import bang.cards as c
|
import bang.cards as c
|
||||||
cards = c.get_starting_deck([])
|
cards = c.get_starting_deck(['dodge_city'])
|
||||||
cards_dict = { c.name:c for c in cards}
|
cards_dict = {}
|
||||||
|
for ca in cards:
|
||||||
|
if ca.name not in cards_dict:
|
||||||
|
cards_dict[ca.name] = ca
|
||||||
cards = [cards_dict[i] for i in cards_dict]
|
cards = [cards_dict[i] for i in cards_dict]
|
||||||
sio.emit('cards_info', data=json.dumps(cards, default=lambda o: o.__dict__))
|
sio.emit('cards_info', room=sid, data=json.dumps(cards, default=lambda o: o.__dict__))
|
||||||
|
|
||||||
|
@sio.event
|
||||||
|
def get_characters(sid):
|
||||||
|
import bang.characters as ch
|
||||||
|
cards = ch.all_characters(['dodge_city'])
|
||||||
|
sio.emit('characters_info', room=sid, data=json.dumps(cards, default=lambda o: o.__dict__))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
eventlet.wsgi.server(eventlet.listen(('', 5001)), app)
|
eventlet.wsgi.server(eventlet.listen(('', 5001)), app)
|
||||||
|
@ -22,8 +22,8 @@ class Character(ABC):
|
|||||||
class BartCassidy(Character):
|
class BartCassidy(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Bart Cassidy", max_lives=4)
|
super().__init__("Bart Cassidy", max_lives=4)
|
||||||
self.desc = "Ogni volta che viene ferito, pesca una carta"
|
# self.desc = "Ogni volta che viene ferito, pesca una carta"
|
||||||
self.desc_eng = "Each time he is hurt, he draws a card"
|
# self.desc_eng = "Each time he is hurt, he draws a card"
|
||||||
self.icon = '💔'
|
self.icon = '💔'
|
||||||
|
|
||||||
def on_hurt(self, dmg):
|
def on_hurt(self, dmg):
|
||||||
@ -32,108 +32,108 @@ class BartCassidy(Character):
|
|||||||
class BlackJack(Character):
|
class BlackJack(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Black Jack", max_lives=4)
|
super().__init__("Black Jack", max_lives=4)
|
||||||
self.desc = "All'inizio del suo turno, quando deve pescare, mostra a tutti la seconda carta, se è Cuori o Quadri pesca una terza carta senza farla vedere"
|
# self.desc = "All'inizio del suo turno, quando deve pescare, mostra a tutti la seconda carta, se è Cuori o Quadri pesca una terza carta senza farla vedere"
|
||||||
self.desc_eng = "At the beginning of his turn, when he has to draw, he shows everyone the second card, if it is Hearts or Diamonds he draws a third card without showing it"
|
# self.desc_eng = "At the beginning of his turn, when he has to draw, he shows everyone the second card, if it is Hearts or Diamonds he draws a third card without showing it"
|
||||||
self.icon = '🎰'
|
self.icon = '🎰'
|
||||||
|
|
||||||
class CalamityJanet(Character):
|
class CalamityJanet(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Calamity Janet", max_lives=4)
|
super().__init__("Calamity Janet", max_lives=4)
|
||||||
self.icon = '🔀'
|
self.icon = '🔀'
|
||||||
self.desc = "Può usare i Mancato! come Bang! e viceversa"
|
# self.desc = "Può usare i Mancato! come Bang! e viceversa"
|
||||||
self.desc_eng = "She can use the Missed! as Bang! and the other way around"
|
# self.desc_eng = "She can use the Missed! as Bang! and the other way around"
|
||||||
|
|
||||||
class ElGringo(Character):
|
class ElGringo(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("El Gringo", max_lives=3)
|
super().__init__("El Gringo", max_lives=3)
|
||||||
self.desc = "Ogni volta che perde un punto vita pesca una carta dalla mano del giocatore responsabile ma solo se il giocatore in questione ha carte in mano (una carta per ogni punto vita)"
|
# self.desc = "Ogni volta che perde un punto vita pesca una carta dalla mano del giocatore responsabile ma solo se il giocatore in questione ha carte in mano (una carta per ogni punto vita)"
|
||||||
self.desc_eng = "Each time he is hurt, he draws a card from the hand of the attacking player"
|
# self.desc_eng = "Each time he is hurt, he draws a card from the hand of the attacking player"
|
||||||
self.icon = '🤕'
|
self.icon = '🤕'
|
||||||
# ovviamente la dinamite non è considerata danno inferto da un giocatore
|
# ovviamente la dinamite non è considerata danno inferto da un giocatore
|
||||||
|
|
||||||
class JesseJones(Character):
|
class JesseJones(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Jesse Jones", max_lives=4)
|
super().__init__("Jesse Jones", max_lives=4)
|
||||||
self.desc = "All'inizio del suo turno, quando deve pescare, può prendere la prima carta a caso dalla mano di un giocatore e la seconda dal mazzo"
|
# self.desc = "All'inizio del suo turno, quando deve pescare, può prendere la prima carta a caso dalla mano di un giocatore e la seconda dal mazzo"
|
||||||
self.desc_eng = "When he has to draw his cards, he may draw the first card from the hand of another player"
|
# self.desc_eng = "When he has to draw his cards, he may draw the first card from the hand of another player"
|
||||||
self.icon = '😜'
|
self.icon = '😜'
|
||||||
|
|
||||||
class Jourdonnais(Character):
|
class Jourdonnais(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Jourdonnais", max_lives=4)
|
super().__init__("Jourdonnais", max_lives=4)
|
||||||
self.desc = "Gioca come se avesse un Barile sempre attivo, nel caso in cui metta in gioco un Barile 'Reale' può estrarre due volte"
|
# self.desc = "Gioca come se avesse un Barile sempre attivo, nel caso in cui metta in gioco un Barile 'Reale' può estrarre due volte"
|
||||||
self.desc_eng = "He plays as he had a Barrel always active, if he equips another Barrel, he can flip 2 cards"
|
# self.desc_eng = "He plays as he had a Barrel always active, if he equips another Barrel, he can flip 2 cards"
|
||||||
self.icon = '🛢'
|
self.icon = '🛢'
|
||||||
|
|
||||||
class KitCarlson(Character):
|
class KitCarlson(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Kit Carlson", max_lives=4)
|
super().__init__("Kit Carlson", max_lives=4)
|
||||||
self.desc = "All'inizio del suo turno, quando deve pescare, pesca tre carte, ne sceglie due da tenere in mano e la rimanente la rimette in cima la mazzo"
|
# self.desc = "All'inizio del suo turno, quando deve pescare, pesca tre carte, ne sceglie due da tenere in mano e la rimanente la rimette in cima la mazzo"
|
||||||
self.desc_eng = "When he has to draw, he peeks 3 cards and chooses 2, putting the other card on the top of the deck"
|
# self.desc_eng = "When he has to draw, he peeks 3 cards and chooses 2, putting the other card on the top of the deck"
|
||||||
self.icon = '🤔'
|
self.icon = '🤔'
|
||||||
|
|
||||||
class LuckyDuke(Character):
|
class LuckyDuke(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Lucky Duke", max_lives=4, pick_mod=1)
|
super().__init__("Lucky Duke", max_lives=4, pick_mod=1)
|
||||||
self.desc = "Ogni volta che deve estrarre, prende due carte dal mazzo, sceglie una delle due carte per l'estrazione, infine le scarta entrambe"
|
# self.desc = "Ogni volta che deve estrarre, prende due carte dal mazzo, sceglie una delle due carte per l'estrazione, infine le scarta entrambe"
|
||||||
self.desc_eng = "Every time he has to flip a card, he can flip 2 times"
|
# self.desc_eng = "Every time he has to flip a card, he can flip 2 times"
|
||||||
self.icon = '🍀'
|
self.icon = '🍀'
|
||||||
|
|
||||||
class PaulRegret(Character):
|
class PaulRegret(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Paul Regret", max_lives=3, visibility_mod=1)
|
super().__init__("Paul Regret", max_lives=3, visibility_mod=1)
|
||||||
self.desc = "Gioca come se avesse una Mustang sempre attiva, nel caso in cui metta in gioco una Mustang 'Reale' l'effetto si somma tranquillamente"
|
# self.desc = "Gioca come se avesse una Mustang sempre attiva, nel caso in cui metta in gioco una Mustang 'Reale' l'effetto si somma tranquillamente"
|
||||||
self.desc_eng = "The other players see him at distance +1"
|
# self.desc_eng = "The other players see him at distance +1"
|
||||||
self.icon = '🏇'
|
self.icon = '🏇'
|
||||||
|
|
||||||
class PedroRamirez(Character):
|
class PedroRamirez(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Pedro Ramirez", max_lives=4)
|
super().__init__("Pedro Ramirez", max_lives=4)
|
||||||
self.desc = "All'inizio del suo turno, quando deve pescare, può prendere la prima carta dalla cima degli scarti e la seconda dal mazzo"
|
# self.desc = "All'inizio del suo turno, quando deve pescare, può prendere la prima carta dalla cima degli scarti e la seconda dal mazzo"
|
||||||
self.desc_eng = "When he has to draw, he may pick the first card from the discarded cards"
|
# self.desc_eng = "When he has to draw, he may pick the first card from the discarded cards"
|
||||||
self.icon = '🚮'
|
self.icon = '🚮'
|
||||||
|
|
||||||
class RoseDoolan(Character):
|
class RoseDoolan(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Rose Doolan", max_lives=4, sight_mod=1)
|
super().__init__("Rose Doolan", max_lives=4, sight_mod=1)
|
||||||
self.icon = '🕵️♀️'
|
self.icon = '🕵️♀️'
|
||||||
self.desc = "Gioca come se avesse un Mirino sempre attivo, nel caso in cui metta in gioco una Mirino 'Reale' l'effetto si somma tranquillamente"
|
# self.desc = "Gioca come se avesse un Mirino sempre attivo, nel caso in cui metta in gioco una Mirino 'Reale' l'effetto si somma tranquillamente"
|
||||||
self.desc_eng = "She sees the other players at distance -1"
|
# self.desc_eng = "She sees the other players at distance -1"
|
||||||
|
|
||||||
class SidKetchum(Character):
|
class SidKetchum(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Sid Ketchum", max_lives=4)
|
super().__init__("Sid Ketchum", max_lives=4)
|
||||||
self.desc = "Può scartare due carte per recuperare un punto vita anche più volte di seguito a patto di avere carte da scartare, può farlo anche nel turno dell'avversario se starebbe per morire"
|
# self.desc = "Può scartare due carte per recuperare un punto vita anche più volte di seguito a patto di avere carte da scartare, può farlo anche nel turno dell'avversario se starebbe per morire"
|
||||||
self.desc_eng = "He can discard 2 cards to regain 1HP"
|
# self.desc_eng = "He can discard 2 cards to regain 1HP"
|
||||||
self.icon = '🤤'
|
self.icon = '🤤'
|
||||||
|
|
||||||
class SlabTheKiller(Character):
|
class SlabTheKiller(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Slab The Killer", max_lives=4)
|
super().__init__("Slab The Killer", max_lives=4)
|
||||||
self.desc = "Per evitare i suoi Bang servono due Mancato, un eventuale barile vale solo come un Mancato"
|
# self.desc = "Per evitare i suoi Bang servono due Mancato, un eventuale barile vale solo come un Mancato"
|
||||||
self.desc_eng = "To dodge his Bang! cards other players need 2 Missed!"
|
# self.desc_eng = "To dodge his Bang! cards other players need 2 Missed!"
|
||||||
self.icon = '🔪'
|
self.icon = '🔪'
|
||||||
#vale per tutte le carte bang non solo per la carta che si chiama Bang!
|
#vale per tutte le carte bang non solo per la carta che si chiama Bang!
|
||||||
|
|
||||||
class SuzyLafayette(Character):
|
class SuzyLafayette(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Suzy Lafayette", max_lives=4)
|
super().__init__("Suzy Lafayette", max_lives=4)
|
||||||
self.desc = "Appena rimane senza carte in mano pesca immediatamente una carta dal mazzo"
|
# self.desc = "Appena rimane senza carte in mano pesca immediatamente una carta dal mazzo"
|
||||||
self.desc_eng = "Whenever she has an empty hand, she draws a card"
|
# self.desc_eng = "Whenever she has an empty hand, she draws a card"
|
||||||
self.icon = '🔂'
|
self.icon = '🔂'
|
||||||
|
|
||||||
class VultureSam(Character):
|
class VultureSam(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Vulture Sam", max_lives=4)
|
super().__init__("Vulture Sam", max_lives=4)
|
||||||
self.desc = "Quando un personaggio viene eliminato prendi tutte le carte di quel giocatore e aggiungile alla tua mano, sia le carte in mano che quelle in gioco"
|
# self.desc = "Quando un personaggio viene eliminato prendi tutte le carte di quel giocatore e aggiungile alla tua mano, sia le carte in mano che quelle in gioco"
|
||||||
self.desc_eng = "When a player dies, he gets all the cards in the dead's hand and equipments"
|
# self.desc_eng = "When a player dies, he gets all the cards in the dead's hand and equipments"
|
||||||
self.icon = '🦉'
|
self.icon = '🦉'
|
||||||
|
|
||||||
class WillyTheKid(Character):
|
class WillyTheKid(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Willy The Kid", max_lives=4)
|
super().__init__("Willy The Kid", max_lives=4)
|
||||||
self.desc = "Questo personaggio può giocare quanti bang vuole nel suo turno"
|
# self.desc = "Questo personaggio può giocare quanti bang vuole nel suo turno"
|
||||||
self.desc_eng = "He doesn't have limits to the amounts of bang he can use"
|
# self.desc_eng = "He doesn't have limits to the amounts of bang he can use"
|
||||||
self.icon = '🎉'
|
self.icon = '🎉'
|
||||||
|
|
||||||
def all_characters(expansions: List[str]):
|
def all_characters(expansions: List[str]):
|
||||||
|
@ -383,7 +383,7 @@ class FucileDaCaccia(Card):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def get_starting_deck() -> List[Card]:
|
def get_starting_deck() -> List[Card]:
|
||||||
return [
|
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),
|
||||||
@ -425,3 +425,6 @@ def get_starting_deck() -> List[Card]:
|
|||||||
Pepperbox(Suit.HEARTS, 'A'),
|
Pepperbox(Suit.HEARTS, 'A'),
|
||||||
Howitzer(Suit.SPADES, 9),
|
Howitzer(Suit.SPADES, 9),
|
||||||
]
|
]
|
||||||
|
for c in cards:
|
||||||
|
c.expansion_icon = '🐄️'
|
||||||
|
return cards
|
||||||
|
@ -4,110 +4,110 @@ from bang.characters import *
|
|||||||
class PixiePete(Character):
|
class PixiePete(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Pixie Pete", max_lives=3)
|
super().__init__("Pixie Pete", max_lives=3)
|
||||||
self.desc = "All'inizio del turno pesca 3 carte invece che 2"
|
# self.desc = "All'inizio del turno pesca 3 carte invece che 2"
|
||||||
self.desc_eng = "He draws 3 cards instead of 2"
|
# self.desc_eng = "He draws 3 cards instead of 2"
|
||||||
self.icon = '☘️'
|
self.icon = '☘️'
|
||||||
|
|
||||||
class TequilaJoe(Character):
|
class TequilaJoe(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Tequila Joe", max_lives=4)
|
super().__init__("Tequila Joe", max_lives=4)
|
||||||
self.desc = "Se gioca la carta Birra recupera 2 vite invece che una sola"
|
# self.desc = "Se gioca la carta Birra recupera 2 vite invece che una sola"
|
||||||
self.desc_eng = "When he plays Beer, he regains 2 Health Points"
|
# self.desc_eng = "When he plays Beer, he regains 2 Health Points"
|
||||||
self.icon = '🍻'
|
self.icon = '🍻'
|
||||||
|
|
||||||
class GregDigger(Character):
|
class GregDigger(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Greg Digger", max_lives=4)
|
super().__init__("Greg Digger", max_lives=4)
|
||||||
self.desc = "Quando un giocatore muore, recupera fino a 2 vite"
|
# self.desc = "Quando un giocatore muore, recupera fino a 2 vite"
|
||||||
self.desc_eng = "Whenever a player dies, he regains up to 2 lives"
|
# self.desc_eng = "Whenever a player dies, he regains up to 2 lives"
|
||||||
self.icon = '🦴'
|
self.icon = '🦴'
|
||||||
|
|
||||||
class HerbHunter(Character):
|
class HerbHunter(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Herb Hunter", max_lives=4)
|
super().__init__("Herb Hunter", max_lives=4)
|
||||||
self.desc = "Quando un giocatore muore, pesca 2 carte"
|
# self.desc = "Quando un giocatore muore, pesca 2 carte"
|
||||||
self.desc_eng = "Whenever a player dies, he draws 2 cards"
|
# self.desc_eng = "Whenever a player dies, he draws 2 cards"
|
||||||
self.icon = '⚰️'
|
self.icon = '⚰️'
|
||||||
|
|
||||||
class ElenaFuente(Character):
|
class ElenaFuente(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Elena Fuente", max_lives=3)
|
super().__init__("Elena Fuente", max_lives=3)
|
||||||
self.desc = "Può usare una carta qualsiasi nella sua mano come mancato"
|
# self.desc = "Può usare una carta qualsiasi nella sua mano come mancato"
|
||||||
self.desc_eng = "She can use any card of her hand as missed"
|
# self.desc_eng = "She can use any card of her hand as missed"
|
||||||
self.icon = '🧘♀️'
|
self.icon = '🧘♀️'
|
||||||
|
|
||||||
class BillNoface(Character):
|
class BillNoface(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Bill Noface", max_lives=4)
|
super().__init__("Bill Noface", max_lives=4)
|
||||||
self.desc = "All'inizio del turno pesca 1 carta + 1 carta per ogni ferita che ha"
|
# self.desc = "All'inizio del turno pesca 1 carta + 1 carta per ogni ferita che ha"
|
||||||
self.desc_eng = "Draw 1 card + 1 card for each wound he has"
|
# self.desc_eng = "Draw 1 card + 1 card for each wound he has"
|
||||||
self.icon = '🙈'
|
self.icon = '🙈'
|
||||||
|
|
||||||
class MollyStark(Character):
|
class MollyStark(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Molly Stark", max_lives=4)
|
super().__init__("Molly Stark", max_lives=4)
|
||||||
self.desc = "Quando usa volontariamente una carta che ha in mano, fuori dal suo turno, ne ottiene un'altra dal mazzo"
|
# self.desc = "Quando usa volontariamente una carta che ha in mano, fuori dal suo turno, ne ottiene un'altra dal mazzo"
|
||||||
self.desc_eng = "When she uses a card from her hand outside her turn, she draws a card."
|
# self.desc_eng = "When she uses a card from her hand outside her turn, she draws a card."
|
||||||
self.icon = '🙅♀️'
|
self.icon = '🙅♀️'
|
||||||
|
|
||||||
class ApacheKid(Character):
|
class ApacheKid(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Apache Kid", max_lives=3)
|
super().__init__("Apache Kid", max_lives=3)
|
||||||
self.desc = "Le carte di quadri ♦️ giocate contro di lui non hanno effetto (non vale durante i duelli)"
|
# self.desc = "Le carte di quadri ♦️ giocate contro di lui non hanno effetto (non vale durante i duelli)"
|
||||||
self.desc_eng = "Cards of diamonds ♦️ played against him, do no have effect (doesn't work in duels)."
|
# self.desc_eng = "Cards of diamonds ♦️ played against him, do no have effect (doesn't work in duels)."
|
||||||
self.icon = '♦️'
|
self.icon = '♦️'
|
||||||
|
|
||||||
class SeanMallory(Character):
|
class SeanMallory(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Sean Mallory", max_lives=3)
|
super().__init__("Sean Mallory", max_lives=3)
|
||||||
self.desc = "Quando finisce il suo turno può tenere fino a 10 carte in mano"
|
# self.desc = "Quando finisce il suo turno può tenere fino a 10 carte in mano"
|
||||||
self.desc_eng = "He can keep up to 10 cards in his hand when ending the turn."
|
# self.desc_eng = "He can keep up to 10 cards in his hand when ending the turn."
|
||||||
self.icon = '🍟'
|
self.icon = '🍟'
|
||||||
|
|
||||||
class BelleStar(Character):
|
class BelleStar(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Belle Star", max_lives=4)
|
super().__init__("Belle Star", max_lives=4)
|
||||||
self.desc = "Nel suo turno le carte verdi degli altri giocatori non hanno effetto."
|
# self.desc = "Nel suo turno le carte verdi degli altri giocatori non hanno effetto."
|
||||||
self.desc_eng = "During her turn the green cards of the other players do not work."
|
# self.desc_eng = "During her turn the green cards of the other players do not work."
|
||||||
self.icon = '❎'
|
self.icon = '❎'
|
||||||
|
|
||||||
class VeraCuster(Character):
|
class VeraCuster(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Vera Custer", max_lives=3)
|
super().__init__("Vera Custer", max_lives=3)
|
||||||
self.desc = "Prima di pescare le sue carte può scegliere l'abilità speciale di un altro giocatore fino al prossimo turno."
|
# self.desc = "Prima di pescare le sue carte può scegliere l'abilità speciale di un altro giocatore fino al prossimo turno."
|
||||||
self.desc_eng = "Before drawing, she may choose the special ability on another alive player. This ability is used until next turn."
|
# self.desc_eng = "Before drawing, she may choose the special ability on another alive player. This ability is used until next turn."
|
||||||
self.icon = '🎭'
|
self.icon = '🎭'
|
||||||
|
|
||||||
class ChuckWengam(Character):
|
class ChuckWengam(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Chuck Wengam", max_lives=4)
|
super().__init__("Chuck Wengam", max_lives=4)
|
||||||
self.desc = "Durante il suo turno può perdere una vita per pescare 2 carte dal mazzo."
|
# self.desc = "Durante il suo turno può perdere una vita per pescare 2 carte dal mazzo."
|
||||||
self.desc_eng = "On his turn he may decide to lose 1 HP to draw 2 cards from the deck."
|
# self.desc_eng = "On his turn he may decide to lose 1 HP to draw 2 cards from the deck."
|
||||||
self.icon = '💰'
|
self.icon = '💰'
|
||||||
|
|
||||||
class PatBrennan(Character):
|
class PatBrennan(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Pat Brennan", max_lives=4)
|
super().__init__("Pat Brennan", max_lives=4)
|
||||||
self.desc = "Invece di pescare può prendere una carta dall'equipaggiamento di un altro giocatore."
|
# self.desc = "Invece di pescare può prendere una carta dall'equipaggiamento di un altro giocatore."
|
||||||
self.desc_eng = "Instead of drawing he can steal a card from the equipment of another player."
|
# self.desc_eng = "Instead of drawing he can steal a card from the equipment of another player."
|
||||||
self.icon = '🤗'
|
self.icon = '🤗'
|
||||||
|
|
||||||
class JoseDelgrado(Character):
|
class JoseDelgrado(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("José Delgrado", max_lives=4)
|
super().__init__("José Delgrado", max_lives=4)
|
||||||
self.desc = "Può scartare una carta blu per pescare 2 carte."
|
# self.desc = "Può scartare una carta blu per pescare 2 carte."
|
||||||
self.desc_eng = "He can discard a blue card to draw 2 cards."
|
# self.desc_eng = "He can discard a blue card to draw 2 cards."
|
||||||
self.icon = '🎒'
|
self.icon = '🎒'
|
||||||
|
|
||||||
class DocHolyday(Character):
|
class DocHolyday(Character):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__("Doc Holyday", max_lives=4)
|
super().__init__("Doc Holyday", max_lives=4)
|
||||||
self.desc = "Nel suo turno può scartare 2 carte per fare un bang."
|
# self.desc = "Nel suo turno può scartare 2 carte per fare un bang."
|
||||||
self.desc_eng = "He can discard 2 cards to play a bang."
|
# self.desc_eng = "He can discard 2 cards to play a bang."
|
||||||
self.icon = '✌🏻'
|
self.icon = '✌🏻'
|
||||||
|
|
||||||
def all_characters() -> List[Character]:
|
def all_characters() -> List[Character]:
|
||||||
return [
|
cards = [
|
||||||
PixiePete(),
|
PixiePete(),
|
||||||
TequilaJoe(),
|
TequilaJoe(),
|
||||||
GregDigger(),
|
GregDigger(),
|
||||||
@ -124,6 +124,9 @@ def all_characters() -> List[Character]:
|
|||||||
JoseDelgrado(),
|
JoseDelgrado(),
|
||||||
DocHolyday(),
|
DocHolyday(),
|
||||||
]
|
]
|
||||||
|
for c in cards:
|
||||||
|
c.expansion_icon = '🐄️'
|
||||||
|
return cards
|
||||||
|
|
||||||
#Apache Kid: il suo effetto non conta nei duelli
|
#Apache Kid: il suo effetto non conta nei duelli
|
||||||
#belle star: vale solo per le carte blu e verdi
|
#belle star: vale solo per le carte blu e verdi
|
||||||
|
@ -99,7 +99,7 @@ class Game:
|
|||||||
print(self.name)
|
print(self.name)
|
||||||
print(self.players[i].name)
|
print(self.players[i].name)
|
||||||
print(self.players[i].character)
|
print(self.players[i].character)
|
||||||
self.sio.emit('chat_message', room=self.name, data=f'_choose_character|{self.players[i].name}|{self.players[i].character.name}|{self.players[i].character.desc}|{self.players[i].character.desc_eng}')
|
self.sio.emit('chat_message', room=self.name, data=f'_choose_character|{self.players[i].name}|{self.players[i].character.name}')
|
||||||
self.players[i].prepare()
|
self.players[i].prepare()
|
||||||
for k in range(self.players[i].max_lives):
|
for k in range(self.players[i].max_lives):
|
||||||
self.players[i].hand.append(self.deck.draw())
|
self.players[i].hand.append(self.deck.draw())
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
<div class="emoji">{{card.icon}}</div>
|
<div class="emoji">{{card.icon}}</div>
|
||||||
<div class="alt_text">{{card.alt_text}}</div>
|
<div class="alt_text">{{card.alt_text}}</div>
|
||||||
<div class="suit">{{number}}{{suit}}</div>
|
<div class="suit">{{number}}{{suit}}</div>
|
||||||
|
<div class="expansion" v-if="card.expansion_icon">{{card.expansion_icon}}</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -15,7 +16,7 @@ export default {
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
cardName(){
|
cardName(){
|
||||||
console.log(this.$t(`cards.${this.card.name}.name`))
|
// console.log(this.$t(`cards.${this.card.name}.name`))
|
||||||
if (this.$t(`cards.${this.card.name}.name`) !== `cards.${this.card.name}.name`) {
|
if (this.$t(`cards.${this.card.name}.name`) !== `cards.${this.card.name}.name`) {
|
||||||
return this.$t(`cards.${this.card.name}.name`)
|
return this.$t(`cards.${this.card.name}.name`)
|
||||||
}
|
}
|
||||||
@ -55,7 +56,7 @@ export default {
|
|||||||
position: relative;
|
position: relative;
|
||||||
transition: all 0.5s ease-in-out;
|
transition: all 0.5s ease-in-out;
|
||||||
color: #333;
|
color: #333;
|
||||||
overflow: hidden;
|
/* overflow: hidden; */
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
word-wrap: normal;
|
word-wrap: normal;
|
||||||
/* word-wrap: break-word; */
|
/* word-wrap: break-word; */
|
||||||
@ -144,7 +145,18 @@ export default {
|
|||||||
.cant-play {
|
.cant-play {
|
||||||
filter: brightness(0.5);
|
filter: brightness(0.5);
|
||||||
}
|
}
|
||||||
|
.expansion {
|
||||||
|
position: absolute;
|
||||||
|
bottom: -5pt;
|
||||||
|
right: -5pt;
|
||||||
|
background: white;
|
||||||
|
border-radius: 100%;
|
||||||
|
transform: scale(0.8);
|
||||||
|
}
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
|
.expansion {
|
||||||
|
background: #181a1b;
|
||||||
|
}
|
||||||
:root, #app {
|
:root, #app {
|
||||||
background-color: #181a1b;
|
background-color: #181a1b;
|
||||||
color: rgb(174, 194, 211);
|
color: rgb(174, 194, 211);
|
||||||
|
@ -38,6 +38,8 @@ export default {
|
|||||||
let type = params.shift().substring(1)
|
let type = params.shift().substring(1)
|
||||||
if (["flipped", "respond", "play_card", "play_card_against", "play_card_for", "spilled_beer", "diligenza", "wellsfargo", "saloon", "special_calamity"].indexOf(type) !== -1){
|
if (["flipped", "respond", "play_card", "play_card_against", "play_card_for", "spilled_beer", "diligenza", "wellsfargo", "saloon", "special_calamity"].indexOf(type) !== -1){
|
||||||
params[1] = this.$t(`cards.${params[1]}.name`)
|
params[1] = this.$t(`cards.${params[1]}.name`)
|
||||||
|
} else if (type === "choose_character"){
|
||||||
|
params.push(this.$t(`cards.${params[1]}.desc`))
|
||||||
}
|
}
|
||||||
this.messages.push({text:this.$t(`chat.${type}`, params)});
|
this.messages.push({text:this.$t(`chat.${type}`, params)});
|
||||||
if (type == 'turn' && params[0] == this.username) {
|
if (type == 'turn' && params[0] == this.username) {
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
</form>
|
</form>
|
||||||
<p v-if="hintText">{{hintText}}</p>
|
<p v-if="hintText">{{hintText}}</p>
|
||||||
<div style="margin-top:6pt;" class="button center-stuff" v-if="showCancelBtn && val" @click="cancel(val)"><span>{{realCancelText}}</span></div>
|
<div style="margin-top:6pt;" class="button center-stuff" v-if="showCancelBtn && val" @click="cancel(val)"><span>{{realCancelText}}</span></div>
|
||||||
<p v-if="desc" style="bottom:10pt;right:0;left:0;position:absolute;margin:16pt;font-size:18pt">{{desc}}</p>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -25,7 +24,6 @@ export default {
|
|||||||
},
|
},
|
||||||
data: () => ({
|
data: () => ({
|
||||||
val: '',
|
val: '',
|
||||||
desc: '',
|
|
||||||
realCancelText: ''
|
realCancelText: ''
|
||||||
}),
|
}),
|
||||||
computed: {
|
computed: {
|
||||||
@ -36,12 +34,6 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showDesc(card) {
|
|
||||||
if (card.desc)
|
|
||||||
this.desc = (this.$i18n.locale=='it'?card.desc:card.desc_eng)
|
|
||||||
else
|
|
||||||
this.desc = this.$t(`cards.${card.name}.desc`)
|
|
||||||
},
|
|
||||||
submit(e) {
|
submit(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
this.cancel(this.val);
|
this.cancel(this.val);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<h1>{{$t('help.title')}}</h1>
|
<h1>{{$t('help.title')}}</h1>
|
||||||
<h2>{{$t('help.character')}}</h2>
|
<h2>{{$t('help.character')}}</h2>
|
||||||
<p>{{$t('help.characters_special')}}</p>
|
<p>{{$t('help.characters_special')}}</p>
|
||||||
<input type="button" value="Visualizza tutti i personaggi"/>
|
<a href="#basecharacters"><p>{{$t('help.gotoallcharacters')}}</p></a>
|
||||||
<h2>{{$t('help.roles')}}</h2>
|
<h2>{{$t('help.roles')}}</h2>
|
||||||
<div style="display:flex;">
|
<div style="display:flex;">
|
||||||
<card :card="{name:$t('help.sheriff'), icon:'⭐️'}" :class="{back:true}"/>
|
<card :card="{name:$t('help.sheriff'), icon:'⭐️'}" :class="{back:true}"/>
|
||||||
@ -66,6 +66,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<h2 id="basecharacters">{{$t('help.allcharacters')}}</h2>
|
||||||
|
<div>
|
||||||
|
<div v-for="(c, i) in characters" v-bind:key="c.name ? (c.name+c.number) : i" style="display:flex">
|
||||||
|
<Card :card="c" @pointerenter.native="''" @pointerleave.native="''"/>
|
||||||
|
<div style="margin-left:6pt;">
|
||||||
|
<p>{{$t(`cards.${c.name}.desc`)}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
@ -80,7 +89,8 @@ export default {
|
|||||||
name: 'PewPew!',
|
name: 'PewPew!',
|
||||||
icon: '💥',
|
icon: '💥',
|
||||||
},
|
},
|
||||||
cards: []
|
cards: [],
|
||||||
|
characters: [],
|
||||||
}),
|
}),
|
||||||
computed: {
|
computed: {
|
||||||
endTurnCard() {
|
endTurnCard() {
|
||||||
@ -93,10 +103,17 @@ export default {
|
|||||||
sockets: {
|
sockets: {
|
||||||
cards_info(cardsJson) {
|
cards_info(cardsJson) {
|
||||||
this.cards = JSON.parse(cardsJson)
|
this.cards = JSON.parse(cardsJson)
|
||||||
}
|
},
|
||||||
|
characters_info(cardsJson) {
|
||||||
|
this.characters = JSON.parse(cardsJson).map(x=>({
|
||||||
|
...x,
|
||||||
|
is_character:true,
|
||||||
|
}))
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.$socket.emit('get_cards')
|
this.$socket.emit('get_cards')
|
||||||
|
this.$socket.emit('get_characters')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -382,7 +382,8 @@ export default {
|
|||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
}
|
}
|
||||||
.chat {
|
.chat {
|
||||||
max-width: 350pt;
|
min-width: 25vw;
|
||||||
|
max-width: 25vw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<Card v-if="my_role" :card="my_role" class="back"
|
<Card v-if="my_role" :card="my_role" class="back"
|
||||||
@pointerenter.native="desc=($i18n.locale=='it'?my_role.goal:my_role.goal_eng)" @pointerleave.native="desc=''"/>
|
@pointerenter.native="desc=($i18n.locale=='it'?my_role.goal:my_role.goal_eng)" @pointerleave.native="desc=''"/>
|
||||||
<Card v-if="character" :card="character" style="margin-left: -30pt;margin-right: 0pt;"
|
<Card v-if="character" :card="character" style="margin-left: -30pt;margin-right: 0pt;"
|
||||||
@pointerenter.native="desc=($i18n.locale=='it'?character.desc:character.desc_eng)" @pointerleave.native="desc=''"/>
|
@pointerenter.native="setDesc(character)" @pointerleave.native="desc=''"/>
|
||||||
<transition-group name="list" tag="div" style="display: flex;flex-direction:column; justify-content: space-evenly; margin-left: 12pt;margin-right:-10pt;">
|
<transition-group name="list" tag="div" style="display: flex;flex-direction:column; justify-content: space-evenly; margin-left: 12pt;margin-right:-10pt;">
|
||||||
<span v-for="(n, i) in lives" v-bind:key="i" :alt="i">❤️</span>
|
<span v-for="(n, i) in lives" v-bind:key="i" :alt="i">❤️</span>
|
||||||
<span v-for="(n, i) in (max_lives-lives)" v-bind:key="`${i}-sk`" :alt="i">💀</span>
|
<span v-for="(n, i) in (max_lives-lives)" v-bind:key="`${i}-sk`" :alt="i">💀</span>
|
||||||
@ -161,8 +161,8 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
self_vis(vis) {
|
self_vis(vis) {
|
||||||
console.log('received visibility update')
|
// console.log('received visibility update')
|
||||||
console.log(vis)
|
// console.log(vis)
|
||||||
this.playersDistances = JSON.parse(vis)
|
this.playersDistances = JSON.parse(vis)
|
||||||
},
|
},
|
||||||
notify_card(mess) {
|
notify_card(mess) {
|
||||||
|
@ -292,6 +292,130 @@
|
|||||||
"Howitzer": {
|
"Howitzer": {
|
||||||
"name": "Howitzer",
|
"name": "Howitzer",
|
||||||
"desc": "Shoot all the other players"
|
"desc": "Shoot all the other players"
|
||||||
|
},
|
||||||
|
"Bart Cassidy": {
|
||||||
|
"name": "Bart Cassidy",
|
||||||
|
"desc": "Each time he is hurt, he draws a card"
|
||||||
|
},
|
||||||
|
"Black Jack": {
|
||||||
|
"name": "Black Jack",
|
||||||
|
"desc": "At the beginning of his turn, when he has to draw, he shows everyone the second card, if it is Hearts or Diamonds he draws a third card without showing it"
|
||||||
|
},
|
||||||
|
"Calamity Janet": {
|
||||||
|
"name": "Calamity Janet",
|
||||||
|
"desc": "She can use the Missed! as Bang! and the other way around"
|
||||||
|
},
|
||||||
|
"El Gringo": {
|
||||||
|
"name": "El Gringo",
|
||||||
|
"desc": "Each time he is hurt, he draws a card from the hand of the attacking player"
|
||||||
|
},
|
||||||
|
"Jesse Jones": {
|
||||||
|
"name": "Jesse Jones",
|
||||||
|
"desc": "When he has to draw his cards, he may draw the first card from the hand of another player"
|
||||||
|
},
|
||||||
|
"Jourdonnais": {
|
||||||
|
"name": "Jourdonnais",
|
||||||
|
"desc": "He plays as he had a Barrel always active, if he equips another Barrel, he can flip 2 cards"
|
||||||
|
},
|
||||||
|
"Kit Carlson": {
|
||||||
|
"name": "Kit Carlson",
|
||||||
|
"desc": "When he has to draw, he peeks 3 cards and chooses 2, putting the other card on the top of the deck"
|
||||||
|
},
|
||||||
|
"Lucky Duke": {
|
||||||
|
"name": "Lucky Duke",
|
||||||
|
"desc": "Every time he has to flip a card, he can flip 2 times"
|
||||||
|
},
|
||||||
|
"Paul Regret": {
|
||||||
|
"name": "Paul Regret",
|
||||||
|
"desc": "The other players see him at distance +1"
|
||||||
|
},
|
||||||
|
"Pedro Ramirez": {
|
||||||
|
"name": "Pedro Ramirez",
|
||||||
|
"desc": "When he has to draw, he may pick the first card from the discarded cards"
|
||||||
|
},
|
||||||
|
"Rose Doolan": {
|
||||||
|
"name": "Rose Doolan",
|
||||||
|
"desc": "She sees the other players at distance -1"
|
||||||
|
},
|
||||||
|
"Sid Ketchum": {
|
||||||
|
"name": "Sid Ketchum",
|
||||||
|
"desc": "He can discard 2 cards to regain 1HP"
|
||||||
|
},
|
||||||
|
"Slab The Killer": {
|
||||||
|
"name": "Slab The Killer",
|
||||||
|
"desc": "To dodge his Bang! cards other players need 2 Missed!"
|
||||||
|
},
|
||||||
|
"Suzy Lafayette": {
|
||||||
|
"name": "Suzy Lafayette",
|
||||||
|
"desc": "Whenever she has an empty hand, she draws a card"
|
||||||
|
},
|
||||||
|
"Vulture Sam": {
|
||||||
|
"name": "Vulture Sam",
|
||||||
|
"desc": "When a player dies, he gets all the cards in the dead's hand and equipments"
|
||||||
|
},
|
||||||
|
"Willy The Kid": {
|
||||||
|
"name": "Willy The Kid",
|
||||||
|
"desc": "He doesn't have limits to the amounts of bang he can use"
|
||||||
|
},
|
||||||
|
"Pixie Pete": {
|
||||||
|
"name": "Pixie Pete",
|
||||||
|
"desc": "He draws 3 cards instead of 2"
|
||||||
|
},
|
||||||
|
"Tequila Joe": {
|
||||||
|
"name": "Tequila Joe",
|
||||||
|
"desc": "When he plays Beer, he regains 2 Health Points"
|
||||||
|
},
|
||||||
|
"Greg Digger": {
|
||||||
|
"name": "Greg Digger",
|
||||||
|
"desc": "Whenever a player dies, he regains up to 2 lives"
|
||||||
|
},
|
||||||
|
"Herb Hunter": {
|
||||||
|
"name": "Herb Hunter",
|
||||||
|
"desc": "Whenever a player dies, he draws 2 cards"
|
||||||
|
},
|
||||||
|
"Elena Fuente": {
|
||||||
|
"name": "Elena Fuente",
|
||||||
|
"desc": "She can use any card of her hand as missed"
|
||||||
|
},
|
||||||
|
"Bill Noface": {
|
||||||
|
"name": "Bill Noface",
|
||||||
|
"desc": "Draw 1 card + 1 card for each wound he has"
|
||||||
|
},
|
||||||
|
"Molly Stark": {
|
||||||
|
"name": "Molly Stark",
|
||||||
|
"desc": "When she uses a card from her hand outside her turn, she draws a card."
|
||||||
|
},
|
||||||
|
"Apache Kid": {
|
||||||
|
"name": "Apache Kid",
|
||||||
|
"desc": "Cards of diamonds ♦️ played against him, do no have effect (doesn't work in duels)."
|
||||||
|
},
|
||||||
|
"Sean Mallory": {
|
||||||
|
"name": "Sean Mallory",
|
||||||
|
"desc": "He can keep up to 10 cards in his hand when ending the turn."
|
||||||
|
},
|
||||||
|
"Belle Star": {
|
||||||
|
"name": "Belle Star",
|
||||||
|
"desc": "During her turn the green cards of the other players do not work."
|
||||||
|
},
|
||||||
|
"Vera Custer": {
|
||||||
|
"name": "Vera Custer",
|
||||||
|
"desc": "Before drawing, she may choose the special ability on another alive player. This ability is used until next turn."
|
||||||
|
},
|
||||||
|
"Chuck Wengam": {
|
||||||
|
"name": "Chuck Wengam",
|
||||||
|
"desc": "On his turn he may decide to lose 1 HP to draw 2 cards from the deck."
|
||||||
|
},
|
||||||
|
"Pat Brennan": {
|
||||||
|
"name": "Pat Brennan",
|
||||||
|
"desc": "Instead of drawing he can steal a card from the equipment of another player."
|
||||||
|
},
|
||||||
|
"José Delgrado": {
|
||||||
|
"name": "José Delgrado",
|
||||||
|
"desc": "He can discard a blue card to draw 2 cards."
|
||||||
|
},
|
||||||
|
"Doc Holyday": {
|
||||||
|
"name": "Doc Holyday",
|
||||||
|
"desc": "He can discard 2 cards to play a bang."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
@ -315,7 +439,7 @@
|
|||||||
"playerdeath": "The death of a player",
|
"playerdeath": "The death of a player",
|
||||||
"playingcards": "Play the cards",
|
"playingcards": "Play the cards",
|
||||||
"playingdmg": "You can play your cards for yourself or to harm other players by trying to eliminate them.",
|
"playingdmg": "You can play your cards for yourself or to harm other players by trying to eliminate them.",
|
||||||
"playingduringturn": "You can only play the cards on your turn. \nWith the exception of cards used as an answer such as Missed 😅️.",
|
"playingduringturn": "You can only play the cards on your turn. To play cards, click on the cards from you hand.\nWith the exception of cards used as an answer such as Missed 😅️.",
|
||||||
"playingifyouwant": "You are not required to play cards.",
|
"playingifyouwant": "You are not required to play cards.",
|
||||||
"playlimit": "There are only 3 limitations:",
|
"playlimit": "There are only 3 limitations:",
|
||||||
"playonlyonebang": "You can only play 1 Bang! \nper turn (refers only to cards named Bang!)",
|
"playonlyonebang": "You can only play 1 Bang! \nper turn (refers only to cards named Bang!)",
|
||||||
@ -333,6 +457,8 @@
|
|||||||
"renegade": "Renegade",
|
"renegade": "Renegade",
|
||||||
"vice": "Deputy",
|
"vice": "Deputy",
|
||||||
"outlaw": "Outlaw",
|
"outlaw": "Outlaw",
|
||||||
"sheriff": "Sheriff"
|
"sheriff": "Sheriff",
|
||||||
|
"allcharacters": "All characters",
|
||||||
|
"gotoallcharacters": "Jump to all characters"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -292,6 +292,130 @@
|
|||||||
"Howitzer": {
|
"Howitzer": {
|
||||||
"name": "Howitzer",
|
"name": "Howitzer",
|
||||||
"desc": "Spara a tutti gli altri giocatori"
|
"desc": "Spara a tutti gli altri giocatori"
|
||||||
|
},
|
||||||
|
"Bart Cassidy": {
|
||||||
|
"name": "Bart Cassidy",
|
||||||
|
"desc": "Ogni volta che viene ferito, pesca una carta"
|
||||||
|
},
|
||||||
|
"Black Jack": {
|
||||||
|
"name": "Black Jack",
|
||||||
|
"desc": "All'inizio del suo turno, quando deve pescare, mostra a tutti la seconda carta, se è Cuori o Quadri pesca una terza carta senza farla vedere"
|
||||||
|
},
|
||||||
|
"Calamity Janet": {
|
||||||
|
"name": "Calamity Janet",
|
||||||
|
"desc": "Può usare i Mancato! come Bang! e viceversa"
|
||||||
|
},
|
||||||
|
"El Gringo": {
|
||||||
|
"name": "El Gringo",
|
||||||
|
"desc": "Ogni volta che perde un punto vita pesca una carta dalla mano del giocatore responsabile ma solo se il giocatore in questione ha carte in mano (una carta per ogni punto vita)"
|
||||||
|
},
|
||||||
|
"Jesse Jones": {
|
||||||
|
"name": "Jesse Jones",
|
||||||
|
"desc": "All'inizio del suo turno, quando deve pescare, può prendere la prima carta a caso dalla mano di un giocatore e la seconda dal mazzo"
|
||||||
|
},
|
||||||
|
"Jourdonnais": {
|
||||||
|
"name": "Jourdonnais",
|
||||||
|
"desc": "Gioca come se avesse un Barile sempre attivo, nel caso in cui metta in gioco un Barile 'Reale' può estrarre due volte"
|
||||||
|
},
|
||||||
|
"Kit Carlson": {
|
||||||
|
"name": "Kit Carlson",
|
||||||
|
"desc": "All'inizio del suo turno, quando deve pescare, pesca tre carte, ne sceglie due da tenere in mano e la rimanente la rimette in cima la mazzo"
|
||||||
|
},
|
||||||
|
"Lucky Duke": {
|
||||||
|
"name": "Lucky Duke",
|
||||||
|
"desc": "Ogni volta che deve estrarre, prende due carte dal mazzo, sceglie una delle due carte per l'estrazione, infine le scarta entrambe"
|
||||||
|
},
|
||||||
|
"Paul Regret": {
|
||||||
|
"name": "Paul Regret",
|
||||||
|
"desc": "Gioca come se avesse una Mustang sempre attiva, nel caso in cui metta in gioco una Mustang 'Reale' l'effetto si somma tranquillamente"
|
||||||
|
},
|
||||||
|
"Pedro Ramirez": {
|
||||||
|
"name": "Pedro Ramirez",
|
||||||
|
"desc": "All'inizio del suo turno, quando deve pescare, può prendere la prima carta dalla cima degli scarti e la seconda dal mazzo"
|
||||||
|
},
|
||||||
|
"Rose Doolan": {
|
||||||
|
"name": "Rose Doolan",
|
||||||
|
"desc": "Gioca come se avesse un Mirino sempre attivo, nel caso in cui metta in gioco una Mirino 'Reale' l'effetto si somma tranquillamente"
|
||||||
|
},
|
||||||
|
"Sid Ketchum": {
|
||||||
|
"name": "Sid Ketchum",
|
||||||
|
"desc": "Può scartare due carte per recuperare un punto vita anche più volte di seguito a patto di avere carte da scartare, può farlo anche nel turno dell'avversario se starebbe per morire"
|
||||||
|
},
|
||||||
|
"Slab The Killer": {
|
||||||
|
"name": "Slab The Killer",
|
||||||
|
"desc": "Per evitare i suoi Bang servono due Mancato, un eventuale barile vale solo come un Mancato"
|
||||||
|
},
|
||||||
|
"Suzy Lafayette": {
|
||||||
|
"name": "Suzy Lafayette",
|
||||||
|
"desc": "Appena rimane senza carte in mano pesca immediatamente una carta dal mazzo"
|
||||||
|
},
|
||||||
|
"Vulture Sam": {
|
||||||
|
"name": "Vulture Sam",
|
||||||
|
"desc": "Quando un personaggio viene eliminato prendi tutte le carte di quel giocatore e aggiungile alla tua mano, sia le carte in mano che quelle in gioco"
|
||||||
|
},
|
||||||
|
"Willy The Kid": {
|
||||||
|
"name": "Willy The Kid",
|
||||||
|
"desc": "Questo personaggio può giocare quanti bang vuole nel suo turno"
|
||||||
|
},
|
||||||
|
"Pixie Pete": {
|
||||||
|
"name": "Pixie Pete",
|
||||||
|
"desc": "All'inizio del turno pesca 3 carte invece che 2"
|
||||||
|
},
|
||||||
|
"Tequila Joe": {
|
||||||
|
"name": "Tequila Joe",
|
||||||
|
"desc": "Se gioca la carta Birra recupera 2 vite invece che una sola"
|
||||||
|
},
|
||||||
|
"Greg Digger": {
|
||||||
|
"name": "Greg Digger",
|
||||||
|
"desc": "Quando un giocatore muore, recupera fino a 2 vite"
|
||||||
|
},
|
||||||
|
"Herb Hunter": {
|
||||||
|
"name": "Herb Hunter",
|
||||||
|
"desc": "Quando un giocatore muore, pesca 2 carte"
|
||||||
|
},
|
||||||
|
"Elena Fuente": {
|
||||||
|
"name": "Elena Fuente",
|
||||||
|
"desc": "Può usare una carta qualsiasi nella sua mano come mancato"
|
||||||
|
},
|
||||||
|
"Bill Noface": {
|
||||||
|
"name": "Bill Noface",
|
||||||
|
"desc": "All'inizio del turno pesca 1 carta + 1 carta per ogni ferita che ha"
|
||||||
|
},
|
||||||
|
"Molly Stark": {
|
||||||
|
"name": "Molly Stark",
|
||||||
|
"desc": "Quando usa volontariamente una carta che ha in mano, fuori dal suo turno, ne ottiene un'altra dal mazzo"
|
||||||
|
},
|
||||||
|
"Apache Kid": {
|
||||||
|
"name": "Apache Kid",
|
||||||
|
"desc": "Le carte di quadri ♦️ giocate contro di lui non hanno effetto (non vale durante i duelli)"
|
||||||
|
},
|
||||||
|
"Sean Mallory": {
|
||||||
|
"name": "Sean Mallory",
|
||||||
|
"desc": "Quando finisce il suo turno può tenere fino a 10 carte in mano"
|
||||||
|
},
|
||||||
|
"Belle Star": {
|
||||||
|
"name": "Belle Star",
|
||||||
|
"desc": "Nel suo turno le carte verdi degli altri giocatori non hanno effetto."
|
||||||
|
},
|
||||||
|
"Vera Custer": {
|
||||||
|
"name": "Vera Custer",
|
||||||
|
"desc": "Prima di pescare le sue carte può scegliere l'abilità speciale di un altro giocatore fino al prossimo turno."
|
||||||
|
},
|
||||||
|
"Chuck Wengam": {
|
||||||
|
"name": "Chuck Wengam",
|
||||||
|
"desc": "Durante il suo turno può perdere una vita per pescare 2 carte dal mazzo."
|
||||||
|
},
|
||||||
|
"Pat Brennan": {
|
||||||
|
"name": "Pat Brennan",
|
||||||
|
"desc": "Invece di pescare può prendere una carta dall'equipaggiamento di un altro giocatore."
|
||||||
|
},
|
||||||
|
"José Delgrado": {
|
||||||
|
"name": "José Delgrado",
|
||||||
|
"desc": "Può scartare una carta blu per pescare 2 carte."
|
||||||
|
},
|
||||||
|
"Doc Holyday": {
|
||||||
|
"name": "Doc Holyday",
|
||||||
|
"desc": "Nel suo turno può scartare 2 carte per fare un bang."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
@ -308,7 +432,7 @@
|
|||||||
"drawinstructions": "Per pescare le carte dovrai cliccare sul mazzo quando vedi questa animazione.",
|
"drawinstructions": "Per pescare le carte dovrai cliccare sul mazzo quando vedi questa animazione.",
|
||||||
"playingcards": "Giocare le carte",
|
"playingcards": "Giocare le carte",
|
||||||
"playingdmg": "Puoi giocare le tue carte per te oppure per recare danno agli altri giocatori cercando di eliminarli.",
|
"playingdmg": "Puoi giocare le tue carte per te oppure per recare danno agli altri giocatori cercando di eliminarli.",
|
||||||
"playingduringturn": "Puoi giocare le carte solo nel tuo turno. Ad eccezzione delle carte usate come risposta tipo i mancato 😅️.",
|
"playingduringturn": "Puoi giocare le carte solo nel tuo turno. Per giocarle, clicca sulle carte nella tua mano.\nAd eccezzione delle carte usate come risposta tipo i mancato 😅️. ",
|
||||||
"playingifyouwant": "Non sei obblicato a giocare carte.",
|
"playingifyouwant": "Non sei obblicato a giocare carte.",
|
||||||
"playlimit": "Ci sono solo 3 limitazioni:",
|
"playlimit": "Ci sono solo 3 limitazioni:",
|
||||||
"playonlyonebang": "Puoi giocare 1 solo Bang! per turno (si riferisce solo alle carte con nome Bang!)",
|
"playonlyonebang": "Puoi giocare 1 solo Bang! per turno (si riferisce solo alle carte con nome Bang!)",
|
||||||
@ -333,6 +457,8 @@
|
|||||||
"sheriff": "Sceriffo",
|
"sheriff": "Sceriffo",
|
||||||
"outlaw": "Fuorilegge",
|
"outlaw": "Fuorilegge",
|
||||||
"renegade": "Rinnegato",
|
"renegade": "Rinnegato",
|
||||||
"vice": "Vice"
|
"vice": "Vice",
|
||||||
|
"gotoallcharacters": "Visualizza tutti i personaggi",
|
||||||
|
"allcharacters": "Tutti i personaggi"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user