each game has now a different rng
This commit is contained in:
parent
aaec015a6c
commit
ac55dadc9d
@ -24,24 +24,24 @@ class Deck:
|
||||
self.event_cards: List[ce.CardEvent] = []
|
||||
endgame_cards: List[ce.CardEvent] = []
|
||||
if 'fistful_of_cards' in game.expansions:
|
||||
self.event_cards.extend(ce.get_all_events())
|
||||
self.event_cards.extend(ce.get_all_events(game.rng))
|
||||
endgame_cards.append(ce.get_endgame_card())
|
||||
if 'high_noon' in game.expansions:
|
||||
self.event_cards.extend(ceh.get_all_events())
|
||||
self.event_cards.extend(ceh.get_all_events(game.rng))
|
||||
endgame_cards.append(ceh.get_endgame_card())
|
||||
if len(self.event_cards) > 0:
|
||||
random.shuffle(self.event_cards)
|
||||
game.rng.shuffle(self.event_cards)
|
||||
self.event_cards = self.event_cards[:12]
|
||||
self.event_cards.insert(0, None)
|
||||
self.event_cards.insert(0, None) # 2 perchè iniziale, e primo flip dallo sceriffo
|
||||
self.event_cards.append(random.choice(endgame_cards))
|
||||
random.shuffle(self.cards)
|
||||
self.event_cards.append(game.rng.choice(endgame_cards))
|
||||
game.rng.shuffle(self.cards)
|
||||
self.shop_deck: List[grc.ShopCard] = []
|
||||
self.shop_cards: List[grc.ShopCard] = []
|
||||
if 'gold_rush' in game.expansions:
|
||||
self.shop_cards = [None, None, None]
|
||||
self.shop_deck = grc.get_cards()
|
||||
random.shuffle(self.shop_deck)
|
||||
game.rng.shuffle(self.shop_deck)
|
||||
self.fill_gold_rush_shop()
|
||||
self.scrap_pile: List[cs.Card] = []
|
||||
print(f'Deck initialized with {len(self.cards)} cards')
|
||||
@ -91,7 +91,7 @@ class Deck:
|
||||
|
||||
def reshuffle(self):
|
||||
self.cards = self.scrap_pile[:-1].copy()
|
||||
random.shuffle(self.cards)
|
||||
self.game.rng.shuffle(self.cards)
|
||||
self.scrap_pile = self.scrap_pile[-1:]
|
||||
|
||||
def draw_from_scrap_pile(self) -> cs.Card:
|
||||
|
@ -101,7 +101,7 @@ def get_endgame_card():
|
||||
end_game.expansion = 'fistful-of-cards'
|
||||
return end_game
|
||||
|
||||
def get_all_events():
|
||||
def get_all_events(rng=random):
|
||||
cards = [
|
||||
Agguato(),
|
||||
Cecchino(),
|
||||
@ -118,7 +118,7 @@ def get_all_events():
|
||||
RouletteRussa(),
|
||||
Vendetta(),
|
||||
]
|
||||
random.shuffle(cards)
|
||||
rng.shuffle(cards)
|
||||
for c in cards:
|
||||
c.expansion = 'fistful-of-cards'
|
||||
return cards
|
@ -96,7 +96,7 @@ def get_endgame_card():
|
||||
end_game.expansion = 'high-noon'
|
||||
return end_game
|
||||
|
||||
def get_all_events():
|
||||
def get_all_events(rng=random):
|
||||
cards = [
|
||||
Benedizione(),
|
||||
Maledizione(),
|
||||
@ -113,7 +113,7 @@ def get_all_events():
|
||||
Manette(),
|
||||
NuovaIdentita(),
|
||||
]
|
||||
random.shuffle(cards)
|
||||
rng.shuffle(cards)
|
||||
for c in cards:
|
||||
c.expansion = 'high-noon'
|
||||
return cards
|
@ -167,7 +167,7 @@ class Game:
|
||||
self.players[i].hand.append(self.deck.draw())
|
||||
self.players[i].notify_self()
|
||||
current_roles = [x.role.name for x in self.players]
|
||||
random.shuffle(current_roles)
|
||||
self.rng.shuffle(current_roles)
|
||||
cr = ''
|
||||
for x in current_roles:
|
||||
if (x not in cr):
|
||||
@ -177,7 +177,7 @@ class Game:
|
||||
|
||||
def choose_characters(self):
|
||||
n = self.characters_to_distribute
|
||||
char_cards = random.sample(characters.all_characters(self.expansions), len(self.players)*n)
|
||||
char_cards = self.rng.sample(characters.all_characters(self.expansions), len(self.players)*n)
|
||||
for i in range(len(self.players)):
|
||||
self.players[i].set_available_character(char_cards[i * n : i * n + n])
|
||||
|
||||
@ -188,10 +188,10 @@ class Game:
|
||||
if SEED == None:
|
||||
import time
|
||||
SEED = int(time.time())
|
||||
random.seed(SEED)
|
||||
print(f'{self.name}: SEED IS {SEED}')
|
||||
else:
|
||||
random.seed(SEED)
|
||||
self.SEED = SEED
|
||||
self.rng = random.Random(SEED)
|
||||
|
||||
self.players_map = {c.name: i for i, c in enumerate(self.players)}
|
||||
self.sio.emit('chat_message', room=self.name, data=f'_starting')
|
||||
self.sio.emit('start', room=self.name)
|
||||
@ -218,7 +218,7 @@ class Game:
|
||||
available_roles = available_roles[:len(self.players)]
|
||||
else:
|
||||
available_roles = [roles.Renegade(), roles.Renegade()]
|
||||
random.shuffle(available_roles)
|
||||
self.rng.shuffle(available_roles)
|
||||
for i in range(len(self.players)):
|
||||
self.players[i].set_role(available_roles[i])
|
||||
if isinstance(available_roles[i], roles.Sheriff) or (len(available_roles) == 3 and isinstance(available_roles[i], roles.Vice)):
|
||||
|
Loading…
Reference in New Issue
Block a user