add poker
This commit is contained in:
parent
f2d6e2315c
commit
bbf87a59c4
@ -189,9 +189,7 @@ class Poker(Card):
|
||||
self.alt_text = "👤🃏 🃏🃏"
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
#TODO
|
||||
# super().play_card(player, against=against)
|
||||
# player.game.attack(player, against)
|
||||
player.game.discard_others(player, card_name=self.name)
|
||||
return True
|
||||
|
||||
class RitornoDiFiamma(Mancato):
|
||||
@ -222,7 +220,7 @@ def get_starting_deck() -> List[Card]:
|
||||
Bandidos(Suit.DIAMONDS,'Q'), # gli altri giocatori scelgono se scartare 2 carte o perdere 1 punto vita
|
||||
# Fuga(Suit.HEARTS, 3), # evita l'effetto di carte marroni (tipo panico cat balou) di cui sei bersaglio
|
||||
# Mira(Suit.CLUBS, 6),
|
||||
# Poker(Suit.HEARTS, 'J'), # tutti gli altri scartano 1 carta a scelta, se non ci sono assi allora pesca 2 dal mazzo
|
||||
Poker(Suit.HEARTS, 'J'), # tutti gli altri scartano 1 carta a scelta, se non ci sono assi allora pesca 2
|
||||
RitornoDiFiamma(Suit.CLUBS, 'Q'), # un mancato che fa bang
|
||||
Tornado(Suit.CLUBS, "A"),
|
||||
]
|
||||
|
@ -66,6 +66,7 @@ class Game:
|
||||
self.player_bangs = 0
|
||||
self.is_russian_roulette_on = False
|
||||
self.dalton_on = False
|
||||
self.poker_on = False
|
||||
self.bot_speed = 1.5
|
||||
self.incremental_turn = 0
|
||||
self.did_resuscitate_deadman = False
|
||||
@ -336,6 +337,8 @@ class Game:
|
||||
attacker.pending_action = pl.PendingAction.PLAY
|
||||
attacker.notify_self()
|
||||
self.attack_in_progress = False
|
||||
elif card_name == 'Poker':
|
||||
self.poker_on = True
|
||||
|
||||
def attack_others(self, attacker: pl.Player, card_name:str=None):
|
||||
self.attack_in_progress = True
|
||||
@ -485,6 +488,7 @@ class Game:
|
||||
else:
|
||||
self.ready_count += 1
|
||||
if self.ready_count == self.waiting_for:
|
||||
tmp = self.ready_count
|
||||
self.waiting_for = 0
|
||||
self.ready_count = 0
|
||||
self.attack_in_progress = False
|
||||
@ -494,8 +498,13 @@ class Game:
|
||||
self.dalton_on = False
|
||||
print(f'{self.name}: notifying {self.players[self.turn].name} about his turn')
|
||||
self.players[self.turn].play_turn()
|
||||
elif self.poker_on and not any(c.number == 1 for c in self.deck.scrap_pile[-tmp:]):
|
||||
self.players[self.turn].pending_action = pl.PendingAction.CHOOSE
|
||||
self.players[self.turn].choose_text = f'choose_from_poker;{min(2, tmp)}'
|
||||
self.players[self.turn].available_cards = self.deck.scrap_pile[-tmp:]
|
||||
else:
|
||||
self.players[self.turn].pending_action = pl.PendingAction.PLAY
|
||||
self.poker_on = False
|
||||
self.players[self.turn].notify_self()
|
||||
|
||||
def announces_winners(self, winners=None):
|
||||
|
@ -839,16 +839,31 @@ class Player:
|
||||
self.notify_self()
|
||||
elif 'choose_tornado' in self.choose_text:
|
||||
if card_index <= len(self.available_cards):
|
||||
self.game.deck.scrap_pile.append(self.hand.pop(card_index))
|
||||
self.game.deck.scrap(self.hand.pop(card_index))
|
||||
self.hand.append(self.game.deck.draw())
|
||||
self.hand.append(self.game.deck.draw())
|
||||
self.pending_action = PendingAction.WAIT
|
||||
self.game.responders_did_respond_resume_turn()
|
||||
self.notify_self()
|
||||
elif 'choose_poker' in self.choose_text:
|
||||
if card_index <= len(self.available_cards):
|
||||
self.game.deck.scrap(self.hand.pop(card_index))
|
||||
self.pending_action = PendingAction.WAIT
|
||||
self.game.responders_did_respond_resume_turn()
|
||||
self.notify_self()
|
||||
elif 'choose_from_poker' in self.choose_text:
|
||||
st_idx = len(self.game.deck.scrap_pile)-len(self.available_cards)
|
||||
self.available_cards.pop(card_index)
|
||||
self.hand.append(self.game.deck.scrap_pile.pop(st_idx + card_index))
|
||||
self.game.notify_scrap_pile()
|
||||
if self.choose_text.split(';')[1] == '1':
|
||||
self.pending_action = PendingAction.PLAY
|
||||
else: self.choose_text = 'choose_from_poker;1'
|
||||
self.notify_self()
|
||||
elif 'choose_bandidos' in self.choose_text:
|
||||
if card_index <= len(self.available_cards):
|
||||
self.available_cards.pop(card_index)
|
||||
self.game.deck.scrap_pile.append(self.hand.pop(card_index))
|
||||
self.game.deck.scrap(self.hand.pop(card_index))
|
||||
self.mancato_needed -= 1
|
||||
else:
|
||||
self.lives -= 1
|
||||
@ -1069,6 +1084,8 @@ class Player:
|
||||
self.available_cards = self.hand.copy()
|
||||
if card_name == 'Tornado':
|
||||
self.choose_text = 'choose_tornado'
|
||||
if card_name == 'Poker':
|
||||
self.choose_text = 'choose_poker'
|
||||
if card_name == 'Bandidos':
|
||||
self.choose_text = 'choose_bandidos'
|
||||
self.mancato_needed = min(2, len(self.hand))
|
||||
|
@ -60,6 +60,9 @@
|
||||
"choose_fantasma": "Choose who to bring back to life",
|
||||
"choose_tornado": "Choose a card to discard for the tornado",
|
||||
"choose_bandidos": "Choose between discarding 2 cards or losing a life (1 card if you only have 1)",
|
||||
"choose_poker": "Everyone discards 1 card (if there's no Ace, the player who played poker chooses 2 cards)",
|
||||
"choose_from_poker;2": "Choose which cards to get (max 2)",
|
||||
"choose_from_poker;1": "Choose which card to get",
|
||||
"choose_cecchino": "Choose who to shoot",
|
||||
"choose_rimbalzo_player": "Choose the target of the bang",
|
||||
"choose_rimbalzo_card": "Choose the card to discard the bang to",
|
||||
|
@ -60,6 +60,9 @@
|
||||
"choose_fantasma": "Scegli chi riportare in vita",
|
||||
"choose_tornado": "Scegli una carta da scartare per il tornado",
|
||||
"choose_bandidos": "Scegli tra scartare 2 carte o perdere una vita (1 carta se ne hai solo 1)",
|
||||
"choose_poker": "Tutti scartano 1 carta (se non c'è un Asso, il giocatore che ha giocato poker sceglie 2 carte tra quelle appena scartate)",
|
||||
"choose_from_poker;2": "Scegli quali carte pescare (max 2)",
|
||||
"choose_from_poker;1": "Scegli quale carte pescare",
|
||||
"choose_cecchino": "Scegli contro chi sparare",
|
||||
"choose_rimbalzo_player": "Scegli contro chi scartare il bang",
|
||||
"choose_rimbalzo_card": "Scegli contro che carta scartare il bang",
|
||||
|
Loading…
Reference in New Issue
Block a user