diff --git a/backend/bang/expansions/wild_west_show/characters.py b/backend/bang/expansions/wild_west_show/characters.py index 73c94a9..3f76558 100644 --- a/backend/bang/expansions/wild_west_show/characters.py +++ b/backend/bang/expansions/wild_west_show/characters.py @@ -2,16 +2,20 @@ from typing import List from bang.characters import Character class BigSpencer(Character): + """ + Inizia con 5 carte. Non può giocare Mancato! + """ def __init__(self): super().__init__("Big Spencer", max_lives=9) - # Inizia con 5 carte. Non può giocare Mancato! self.icon = '🫘' class FlintWestwood(Character): + """ + Nel suo turno può scambiare una carta dalla mano con 2 carte a caso dalla mano di un altro giocatore. + > NOTE: La carta dalla tua mano è a scelta, non a caso. Se il giocatore bersaglio ha una sola carta, ne ricevi solo una. + """ def __init__(self): super().__init__("Flint Westwood", max_lives=4) - # Nel suo turno può scambiare una carta dalla mano con 2 carte a caso dalla mano di un altro giocatore. - # NOTE: La carta dalla tua mano è a scelta, non a caso. Se il giocatore bersaglio ha una sola carta, ne ricevi solo una. self.icon = '🔫' def special(self, player, data): @@ -25,44 +29,56 @@ class FlintWestwood(Character): player.notify_self() class GaryLooter(Character): + """ + Pesca tutte le carte in eccesso scartate dagli altri giocatori a fine turno. + """ def __init__(self): super().__init__("Gary Looter", max_lives=5) - # Pesca tutte le carte in eccesso scartate dagli altri giocatori a fine turno. self.icon = '🥲' class GreygoryDeckard(Character): + """ + All'inizio del suo turno può pescare 2 personaggi a caso. Ha tutte le abilità dei personaggi pescati. + """ def __init__(self): super().__init__("Greygory Deckard", max_lives=4) - # All'inizio del suo turno può pescare 2 personaggi a caso. Ha tutte le abilità dei personaggi pescati. - self.icon = '👨‍🦳' + self.icon = '👨‍🦳' class JohnPain(Character): + """ + Se ha meno di 6 carte in mano, quando un giocatore "estrae!" John aggiunge alla mano la carta appena estratta. + """ def __init__(self): super().__init__("John Pain", max_lives=4) - # Se ha meno di 6 carte in mano, quando un giocatore "estrae!" John aggiunge alla mano la carta appena estratta. self.icon = '🤕' class LeeVanKliff(Character): + """ + Nel suo turno, può scartare un BANG! per ripetere l'effetto di una carta a bordo marrone che ha appena giocato. + """ def __init__(self): super().__init__("Lee Van Kliff", max_lives=4) - # Nel suo turno, può scartare un BANG! per ripetere l'effetto di una carta a bordo marrone che ha appena giocato. self.icon = '👨‍🦲' class TerenKill(Character): + """ + Ogni volta che sarebbe eliminato "estrai!": se non è Picche, Teren resta a 1 punto vita e pesca 1 carta. + """ def __init__(self): super().__init__("Teren Kill", max_lives=3) - # Ogni volta che sarebbe eliminato "estrai!": se non è Picche, Teren resta a 1 punto vita e pesca 1 carta. self.icon = '👨‍🦰' class YoulGrinner(Character): + """ + Prima di pescare, i giocatori con più carte in mano di lui devono dargli una carta a scelta. + """ def __init__(self): super().__init__("Youl Grinner", max_lives=4) - # Prima di pescare, i giocatori con più carte in mano di lui devono dargli una carta a scelta. self.icon = '🤡' def all_characters() -> List[Character]: cards = [ - # BigSpencer(), + BigSpencer(), FlintWestwood(), # GaryLooter(), # GreygoryDeckard(), diff --git a/backend/bang/players.py b/backend/bang/players.py index 81c483d..d7ed5c9 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -12,6 +12,7 @@ import bang.expansions.dodge_city.characters as chd import bang.expansions.fistful_of_cards.card_events as ce import bang.expansions.high_noon.card_events as ceh import bang.expansions.wild_west_show.card_events as cew +import bang.expansions.wild_west_show.characters as chw import bang.expansions.gold_rush.shop_cards as grc import bang.expansions.gold_rush.characters as grch import bang.expansions.the_valley_of_shadows.cards as tvosc @@ -1132,6 +1133,8 @@ class Player: self.expected_response = self.game.deck.mancato_cards.copy() if self.character.check(self.game, chars.CalamityJanet) and cs.Bang(0, 0).name not in self.expected_response: self.expected_response.append(cs.Bang(0, 0).name) + if self.character.check(chw.BigSpencer): + self.expected_response = [] self.on_failed_response_cb = self.take_damage_response self.notify_self() @@ -1162,6 +1165,8 @@ class Player: self.expected_response = self.game.deck.mancato_cards.copy() if self.character.check(self.game, chars.CalamityJanet) and cs.Bang(0, 0).name not in self.expected_response: self.expected_response.append(cs.Bang(0, 0).name) + if self.character.check(chw.BigSpencer): + self.expected_response = [] self.on_failed_response_cb = self.take_no_damage_response self.notify_self() @@ -1258,6 +1263,8 @@ class Player: self.expected_response = self.game.deck.mancato_cards_not_green_or_blue.copy() if self.character.check(self.game, chars.CalamityJanet) and cs.Bang(0, 0).name not in self.expected_response: self.expected_response.append(cs.Bang(0, 0).name) + if self.character.check(chw.BigSpencer): + self.expected_response = [] if self.can_escape(card_name, with_mancato=False): self.expected_response.append(tvosc.Fuga(0, 0).name) if not no_dmg: