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] = []
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:

View File

@ -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

View File

@ -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

View File

@ -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)
print(f'{self.name}: SEED IS {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)):