each game has now a different rng

This commit is contained in:
Alberto Xamin 2021-09-01 12:28:15 +03:00
parent aaec015a6c
commit ac55dadc9d
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
4 changed files with 18 additions and 18 deletions

View File

@ -24,24 +24,24 @@ class Deck:
self.event_cards: List[ce.CardEvent] = [] self.event_cards: List[ce.CardEvent] = []
endgame_cards: List[ce.CardEvent] = [] endgame_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(game.rng))
endgame_cards.append(ce.get_endgame_card()) endgame_cards.append(ce.get_endgame_card())
if 'high_noon' in game.expansions: 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()) endgame_cards.append(ceh.get_endgame_card())
if len(self.event_cards) > 0: 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 = self.event_cards[:12]
self.event_cards.insert(0, None) self.event_cards.insert(0, None)
self.event_cards.insert(0, None) # 2 perchè iniziale, e primo flip dallo sceriffo self.event_cards.insert(0, None) # 2 perchè iniziale, e primo flip dallo sceriffo
self.event_cards.append(random.choice(endgame_cards)) self.event_cards.append(game.rng.choice(endgame_cards))
random.shuffle(self.cards) game.rng.shuffle(self.cards)
self.shop_deck: List[grc.ShopCard] = [] self.shop_deck: List[grc.ShopCard] = []
self.shop_cards: List[grc.ShopCard] = [] self.shop_cards: List[grc.ShopCard] = []
if 'gold_rush' in game.expansions: if 'gold_rush' in game.expansions:
self.shop_cards = [None, None, None] self.shop_cards = [None, None, None]
self.shop_deck = grc.get_cards() self.shop_deck = grc.get_cards()
random.shuffle(self.shop_deck) game.rng.shuffle(self.shop_deck)
self.fill_gold_rush_shop() self.fill_gold_rush_shop()
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')
@ -91,7 +91,7 @@ class Deck:
def reshuffle(self): def reshuffle(self):
self.cards = self.scrap_pile[:-1].copy() self.cards = self.scrap_pile[:-1].copy()
random.shuffle(self.cards) self.game.rng.shuffle(self.cards)
self.scrap_pile = self.scrap_pile[-1:] self.scrap_pile = self.scrap_pile[-1:]
def draw_from_scrap_pile(self) -> cs.Card: def draw_from_scrap_pile(self) -> cs.Card:

View File

@ -101,7 +101,7 @@ def get_endgame_card():
end_game.expansion = 'fistful-of-cards' end_game.expansion = 'fistful-of-cards'
return end_game return end_game
def get_all_events(): def get_all_events(rng=random):
cards = [ cards = [
Agguato(), Agguato(),
Cecchino(), Cecchino(),
@ -118,7 +118,7 @@ def get_all_events():
RouletteRussa(), RouletteRussa(),
Vendetta(), Vendetta(),
] ]
random.shuffle(cards) rng.shuffle(cards)
for c in cards: for c in cards:
c.expansion = 'fistful-of-cards' c.expansion = 'fistful-of-cards'
return cards return cards

View File

@ -96,7 +96,7 @@ def get_endgame_card():
end_game.expansion = 'high-noon' end_game.expansion = 'high-noon'
return end_game return end_game
def get_all_events(): def get_all_events(rng=random):
cards = [ cards = [
Benedizione(), Benedizione(),
Maledizione(), Maledizione(),
@ -113,7 +113,7 @@ def get_all_events():
Manette(), Manette(),
NuovaIdentita(), NuovaIdentita(),
] ]
random.shuffle(cards) rng.shuffle(cards)
for c in cards: for c in cards:
c.expansion = 'high-noon' c.expansion = 'high-noon'
return cards return cards

View File

@ -167,7 +167,7 @@ class Game:
self.players[i].hand.append(self.deck.draw()) self.players[i].hand.append(self.deck.draw())
self.players[i].notify_self() self.players[i].notify_self()
current_roles = [x.role.name for x in self.players] current_roles = [x.role.name for x in self.players]
random.shuffle(current_roles) self.rng.shuffle(current_roles)
cr = '' cr = ''
for x in current_roles: for x in current_roles:
if (x not in cr): if (x not in cr):
@ -177,7 +177,7 @@ class Game:
def choose_characters(self): def choose_characters(self):
n = self.characters_to_distribute 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)): for i in range(len(self.players)):
self.players[i].set_available_character(char_cards[i * n : i * n + n]) self.players[i].set_available_character(char_cards[i * n : i * n + n])
@ -188,10 +188,10 @@ class Game:
if SEED == None: if SEED == None:
import time import time
SEED = int(time.time()) SEED = int(time.time())
random.seed(SEED) print(f'{self.name}: SEED IS {SEED}')
print(f'{self.name}: SEED IS {SEED}') self.SEED = SEED
else: self.rng = random.Random(SEED)
random.seed(SEED)
self.players_map = {c.name: i for i, c in enumerate(self.players)} 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('chat_message', room=self.name, data=f'_starting')
self.sio.emit('start', room=self.name) self.sio.emit('start', room=self.name)
@ -218,7 +218,7 @@ class Game:
available_roles = available_roles[:len(self.players)] available_roles = available_roles[:len(self.players)]
else: else:
available_roles = [roles.Renegade(), roles.Renegade()] available_roles = [roles.Renegade(), roles.Renegade()]
random.shuffle(available_roles) self.rng.shuffle(available_roles)
for i in range(len(self.players)): for i in range(len(self.players)):
self.players[i].set_role(available_roles[i]) 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)): if isinstance(available_roles[i], roles.Sheriff) or (len(available_roles) == 3 and isinstance(available_roles[i], roles.Vice)):