fix logica per un pugno di carte

This commit is contained in:
Alberto Xamin 2020-12-20 21:13:54 +01:00
parent ea74a7f910
commit 323bd80179
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
4 changed files with 11 additions and 9 deletions

View File

@ -22,15 +22,14 @@ class Deck:
self.event_cards: List[ce.CardEvent] = [] self.event_cards: List[ce.CardEvent] = []
if 'fistful_of_cards' in game.expansions: if 'fistful_of_cards' in game.expansions:
self.event_cards.extend(ce.get_all_events()) self.event_cards.extend(ce.get_all_events())
random.shuffle(self.event_cards)
random.shuffle(self.cards) random.shuffle(self.cards)
self.scrap_pile: List[cs.Card] = [] self.scrap_pile: List[cs.Card] = []
print(f'Deck initialized with {len(self.cards)} cards') print(f'Deck initialized with {len(self.cards)} cards')
def flip_event(self): def flip_event(self):
if len(self.event_cards) > 0: if len(self.event_cards) > 0 and not isinstance(self.event_cards[0], ce.PerUnPugnoDiCarte):
self.event_cards.append(self.event_cards.pop(0)) self.event_cards.append(self.event_cards.pop(0))
self.game.notify_event_card() self.game.notify_event_card()
def peek(self, n_cards: int) -> list: def peek(self, n_cards: int) -> list:
return self.cards[:n_cards] return self.cards[:n_cards]

View File

@ -1,4 +1,5 @@
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
import random
class CardEvent(ABC): class CardEvent(ABC):
def __init__(self, name, icon): def __init__(self, name, icon):
@ -96,7 +97,7 @@ class Vendetta(CardEvent):
self.desc_eng = "When ending the turn, the player flips a card from the deck, if it's ♥️ he plays another turn (but he does not flip another card)" self.desc_eng = "When ending the turn, the player flips a card from the deck, if it's ♥️ he plays another turn (but he does not flip another card)"
def get_all_events(): def get_all_events():
return [ cards = [
Agguato(), Agguato(),
# Cecchino(), # Cecchino(),
DeadMan(), DeadMan(),
@ -106,10 +107,12 @@ def get_all_events():
LeggeDelWest(), LeggeDelWest(),
LiquoreForte(), LiquoreForte(),
MinieraAbbandonata(), MinieraAbbandonata(),
PerUnPugnoDiCarte(),
Peyote(), Peyote(),
# Ranch(), # Ranch(),
# Rimbalzo(), # Rimbalzo(),
RouletteRussa(), RouletteRussa(),
Vendetta(), Vendetta(),
] ]
random.shuffle(cards)
cards.append(PerUnPugnoDiCarte())
return cards

View File

@ -266,7 +266,7 @@ class Game:
else: else:
self.responders_did_respond_resume_turn(did_lose=True) self.responders_did_respond_resume_turn(did_lose=True)
return return
if self.check_event(ce.PerUnPugnoDiCarte): if self.check_event(ce.PerUnPugnoDiCarte) and len(self.players[self.turn].hand) > 0:
self.player_bangs = len(self.players[self.turn].hand) self.player_bangs = len(self.players[self.turn].hand)
if self.players[self.turn].get_banged(self.deck.event_cards[0]): if self.players[self.turn].get_banged(self.deck.event_cards[0]):
self.players[self.turn].notify_self() self.players[self.turn].notify_self()

View File

@ -671,9 +671,9 @@ class Player:
def respond(self, hand_index): def respond(self, hand_index):
if self.pending_action != PendingAction.RESPOND: return if self.pending_action != PendingAction.RESPOND: return
self.pending_action = PendingAction.WAIT self.pending_action = PendingAction.WAIT
if hand_index != -1 and ( if hand_index != -1 and hand_index < (len(self.hand)+len(self.equipment)) and (
((hand_index < len(self.hand) and self.hand[hand_index].name in self.expected_response)) or ((hand_index < len(self.hand) and self.hand[hand_index].name in self.expected_response)) or
self.equipment[hand_index-len(self.hand)].name in self.expected_response): (hand_index-len(self.hand) < len(self.equipment) and self.equipment[hand_index-len(self.hand)].name in self.expected_response)):
card = self.hand.pop(hand_index) if hand_index < len(self.hand) else self.equipment.pop(hand_index-len(self.hand)) card = self.hand.pop(hand_index) if hand_index < len(self.hand) else self.equipment.pop(hand_index-len(self.hand))
if isinstance(self.character, chd.MollyStark) and hand_index < len(self.hand)+1 and not self.is_my_turn and self.event_type != 'duel': if isinstance(self.character, chd.MollyStark) and hand_index < len(self.hand)+1 and not self.is_my_turn and self.event_type != 'duel':
self.hand.append(self.game.deck.draw()) self.hand.append(self.game.deck.draw())