diff --git a/backend/bang/cards.py b/backend/bang/cards.py index f4f9055..4afab56 100644 --- a/backend/bang/cards.py +++ b/backend/bang/cards.py @@ -198,10 +198,9 @@ class Bang(Card): import bang.characters as chars super().play_card(player, against=against) player.bang_used += 1 - player.has_played_bang = not isinstance( - player.character, chars.WillyTheKid) - if player.game.check_event(ceh.Sparatoria) and player.has_played_bang: - player.has_played_bang = player.bang_used > 1 + player.has_played_bang = player.bang_used > 1 + if player.character.check(player.game, chars.WillyTheKid): + player.has_played_bang = False player.game.attack(player, against, double=player.character.check(player.game, chars.SlabTheKiller)) return True return False diff --git a/backend/bang/expansions/high_noon/card_events.py b/backend/bang/expansions/high_noon/card_events.py index 3b9359d..61e1629 100644 --- a/backend/bang/expansions/high_noon/card_events.py +++ b/backend/bang/expansions/high_noon/card_events.py @@ -16,49 +16,49 @@ class Maledizione(CardEvent): class Sbornia(CardEvent): def __init__(self): super().__init__("Sbornia", "🥴") - self.desc = "I personaggi perdono la loro abilità speciale" + self.desc = "I personaggi perdono le loro abilità speciali" self.desc_eng = "" class Sete(CardEvent): def __init__(self): super().__init__("Sete", "🥵") - self.desc = "I giocatori pescano solo 1 carta" + self.desc = "I giocatori pescano 1 carta in meno nella loro fase 1" self.desc_eng = "" class IlTreno(CardEvent): def __init__(self): super().__init__("Il Treno", "🚂") - self.desc = "I giocatori pescano 1 carta extra" + self.desc = "I giocatori pescano 1 carta extra nella loro fase 1" self.desc_eng = "" class IlReverendo(CardEvent): def __init__(self): super().__init__("Il Reverendo", "⛪️") - self.desc = "Non si possono giocare birre" + self.desc = "Non si possono giocare le carte Birra" self.desc_eng = "" class IlDottore(CardEvent): def __init__(self): super().__init__("Il Dottore", "👨‍⚕️") - self.desc = "Il giocatore con meno vite recupera 1 vita" + self.desc = "Il/i giocatore/i con meno vite ne recupera/no una" self.desc_eng = "" class Sermone(CardEvent): def __init__(self): super().__init__("Sermone", "✝️") - self.desc = "I giocatori non possono giocare Bang!" + self.desc = "I giocatori non possono giocare Bang! durante il loro turno" self.desc_eng = "" class Sparatoria(CardEvent): def __init__(self): - super().__init__("Sparatoria", "‼️") - self.desc = "Il limite di bang è 2 invece che 1!" + super().__init__("Sparatoria", "🔫🔫") + self.desc = "Il limite di Bang! per turno è 2 invece che 1" self.desc_eng = "" class CorsaAllOro(CardEvent): def __init__(self): super().__init__("Corsa All'Oro", "🌟") - self.desc = "Si gioca in senso antiorario!" + self.desc = "Si gioca per un intero giro in senso antiorario, tuttavia gli effetti delle carte rimangono invariati" self.desc_eng = "" class IDalton(CardEvent): @@ -67,6 +67,18 @@ class IDalton(CardEvent): self.desc = "Chi ha carte blu in gioco ne scarta 1 a sua scelta" self.desc_eng = "" +class Manette(CardEvent): + def __init__(self): + super().__init__("Manette", "🔗") + self.desc = "Dopo aver pescato in fase 1, il giocatore di turno dichiara un seme: potrà usare solamente carte di quel seme nel suo turno" + self.desc_eng = "" + +class NuovaIdentita(CardEvent): + def __init__(self): + super().__init__("Nuova Identità", "🕶") + self.desc = "All'inizio del proprio turno, ogni giocatore potrà decidere se sostituire il suo personaggio attuale con quello era stato proposto ad inizio partita, se lo fa riparte con 2 punti vita" + self.desc_eng = "" + class CittaFantasma(CardEvent): def __init__(self): super().__init__("Città Fantasma", "👻") @@ -93,6 +105,8 @@ def get_all_events(): Sermone(), Sete(), Sparatoria(), + # Manette(), + # NuovaIdentita(), ] random.shuffle(cards) cards.append(MezzogiornoDiFuoco()) diff --git a/backend/bang/game.py b/backend/bang/game.py index 61a147b..f2881ed 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -263,8 +263,6 @@ class Game: def next_player(self): pls = self.get_alive_players() - if self.check_event(ceh.CorsaAllOro): - return pls[(pls.index(self.players[self.turn]) - 1) % len(pls)] return pls[(pls.index(self.players[self.turn]) + 1) % len(pls)] def play_turn(self): diff --git a/backend/bang/players.py b/backend/bang/players.py index a60b17c..4d192e3 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -326,6 +326,7 @@ class Player: if self.character.check(self.game, chars.BartCassidy) and self.lives > 0: self.hand.append(self.game.deck.draw(True)) self.sio.emit('chat_message', room=self.game.name, data=f'_special_bart_cassidy|{self.name}') + self.heal_if_needed() if self.lives <= 0: return self.notify_self() if self.game.check_event(ce.FratelliDiSangue) and self.lives > 1 and not self.is_giving_life and len([p for p in self.game.get_alive_players() if p != self and p.lives < p.max_lives]):