From c4d23b6e379799336a684509536f241c931f361e Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Sun, 26 Feb 2023 16:39:36 +0000 Subject: [PATCH] add elena zontero --- .../expansions/wild_west_show/card_events.py | 46 +++++++++++++------ backend/bang/game.py | 9 ++++ 2 files changed, 41 insertions(+), 14 deletions(-) diff --git a/backend/bang/expansions/wild_west_show/card_events.py b/backend/bang/expansions/wild_west_show/card_events.py index bc98b5c..59009d8 100644 --- a/backend/bang/expansions/wild_west_show/card_events.py +++ b/backend/bang/expansions/wild_west_show/card_events.py @@ -3,56 +3,74 @@ import random from bang.expansions.fistful_of_cards.card_events import CardEvent -class Bavaglio(CardEvent): - def __init__(self): - super().__init__("Bavaglio", "🤐") - # I giocatori non possono parlare (ma possono gesticolare, mugugnare...). Chi parla perde 1 punto vita. - # NOT IMPLEMENTED +# class Bavaglio(CardEvent): +# def __init__(self): +# super().__init__("Bavaglio", "🤐") +# # I giocatori non possono parlare (ma possono gesticolare, mugugnare...). Chi parla perde 1 punto vita. +# # NOT IMPLEMENTED class Camposanto(CardEvent): + """ + All'inizio del proprio turno, ogni giocatore eliminato torna in gioco con 1 punto vita. Pesca il ruolo a caso fra quelli dei giocatori eliminati. + """ def __init__(self): super().__init__("Camposanto", "⚰") - # All'inizio del proprio turno, ogni giocatore eliminato torna in gioco con 1 punto vita. Pesca il ruolo a caso fra quelli dei giocatori eliminati. class DarlingValentine(CardEvent): + """ + All'inizio del proprio turno, ogni giocatore scarta le carte in mano e ne pesca dal mazzo altrettante. + """ def __init__(self): super().__init__("Darling Valentine", "💋") - # All'inizio del proprio turno, ogni giocatore scarta le carte in mano e ne pesca dal mazzo altrettante. class DorothyRage(CardEvent): + """ + Nel proprio turno, ogni giocatore può obbligarne un altro a giocare una carta. + """ def __init__(self): super().__init__("Dorothy Rage", "👩‍⚖️") - # Nel proprio turno, ogni giocatore può obbligarne un altro a giocare una carta. class HelenaZontero(CardEvent): + """ + Quando Helena entra in gioco, "estrai!": se esce Cuori o Quadri, rimescola i ruoli attivi tranne lo Sceriffo, e ridistribuiscili a caso. + """ def __init__(self): super().__init__("Helena Zontero", "💞") - # Quando Helena entra in gioco, "estrai!": se esce Cuori o Quadri, rimescola i ruoli attivi tranne lo Sceriffo, e ridistribuiscili a caso. class LadyRosaDelTexas(CardEvent): + """ + Nel proprio turno, ogni giocatore può scambiarsi di posto con quello alla sua destra, il quale salta il prossimo turno. + """ def __init__(self): super().__init__("Lady Rosa del Texas", "🩰") - # Nel proprio turno, ogni giocatore può scambiarsi di posto con quello alla sua destra, il quale salta il prossimo turno. class MissSusanna(CardEvent): + """ + Nel proprio turno ogni giocatore deve giocare almeno 3 carte. Se non lo fa, perde 1 punto vita. + """ def __init__(self): super().__init__("Miss Susanna", "👩‍🎤") - # Nel proprio turno ogni giocatore deve giocare almeno 3 carte. Se non lo fa, perde 1 punto vita. class RegolamentoDiConti(CardEvent): + """ + Tutte le carte possono essere giocate come se fossero BANG!. Le carte BANG! come se fossero Mancato! + """ def __init__(self): super().__init__("Regolamento di conti", "🤠") - # Tutte le carte possono essere giocate come se fossero BANG!. Le carte BANG! come se fossero Mancato! class Sacagaway(CardEvent): + """ + Tutti i giocatori giocano a carte scoperte (tranne il ruolo!). + """ def __init__(self): super().__init__("Sacagaway", "🏇") - # Tutti i giocatori giocano a carte scoperte (tranne il ruolo!). class WildWestShow(CardEvent): + """ + L'obiettivo di ogni giocatore diventa: "Rimani l'ultimo in gioco!" + """ def __init__(self): super().__init__("Wild West Show", "🎪") - # L'obiettivo di ogni giocatore diventa: "Rimani l'ultimo in gioco!" def get_endgame_card(): end_game = WildWestShow() diff --git a/backend/bang/game.py b/backend/bang/game.py index 816add5..9032ddf 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -610,6 +610,15 @@ class Game: if len(self.deck.event_cards) > 0 and self.deck.event_cards[0] is not None: print(f'{self.name}: flip new event {self.deck.event_cards[0].name}') G.sio.emit('chat_message', room=self.name, data={'color': f'orange','text':f'_flip_event|{self.deck.event_cards[0].name}'}) + if self.check_event(cew.HelenaZontero): + c = self.deck.pick_and_scrap() + G.sio.emit('chat_message', room=self.name, data=f'_flipped|Helena Zontero|{c.name}|{c.num_suit()}') + if c.check_suit(self, [cs.Suit.HEARTS, cs.Suit.DIAMONDS]): + pls = (p for p in self.players if not isinstance(p.role, roles.Sheriff)) + newroles = [p.role for p in pls] + random.shuffle(newroles) + for p in pls: + p.set_role(newroles.pop()) if self.check_event(ce.DeadMan): self.did_resuscitate_deadman = False elif self.check_event(ce.RouletteRussa):