From 0cd388ca663ce1092cb8f247fcd570ea26e49c93 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Sun, 1 Aug 2021 17:02:38 +0200 Subject: [PATCH] MultiServer: seeded !hint selected --- MultiServer.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/MultiServer.py b/MultiServer.py index 42c10f29..9b17dc11 100644 --- a/MultiServer.py +++ b/MultiServer.py @@ -111,6 +111,7 @@ class Context(Node): self.games: typing.Dict[int, str] = {} self.minimum_client_versions: typing.Dict[int, Utils.Version] = {} self.seed_name = "" + self.random = random.Random() def get_hint_cost(self, slot): if self.hint_cost: @@ -157,6 +158,7 @@ class Context(Node): self.player_names[team, player] = name self.player_name_lookup[name] = team, player self.seed_name = decoded_obj["seed_name"] + self.random.seed(self.seed_name) self.connect_names = decoded_obj['connect_names'] self.remote_items = decoded_obj['remote_items'] self.locations = decoded_obj['locations'] @@ -275,6 +277,7 @@ class Context(Node): (key, value.timestamp()) for key, value in self.client_activity_timers.items()), "client_connection_timers": tuple( (key, value.timestamp()) for key, value in self.client_connection_timers.items()), + "random_state": self.random.getstate() } return d @@ -295,7 +298,7 @@ class Context(Node): {tuple(key): datetime.datetime.fromtimestamp(value, datetime.timezone.utc) for key, value in savedata["client_activity_timers"]}) self.location_checks.update(savedata["location_checks"]) - + self.random.setstate(savedata["random_state"]) logging.info(f'Loaded save file with {sum([len(p) for p in self.received_items.values()])} received items ' f'for {len(self.received_items)} players') @@ -941,7 +944,7 @@ class ClientMessageProcessor(CommonCommandProcessor): else: can_pay = 1000 - random.shuffle(not_found_hints) + self.ctx.random.shuffle(not_found_hints) hints = found_hints while can_pay > 0: