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] = []
|
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:
|
||||||
|
@ -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
|
@ -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
|
@ -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}')
|
||||||
else:
|
self.SEED = SEED
|
||||||
random.seed(SEED)
|
self.rng = random.Random(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)):
|
||||||
|
Loading…
Reference in New Issue
Block a user