From 2df7e4e53734cf0fae9df265d1a20b61f04d1416 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Mon, 12 Apr 2021 09:36:45 +0200 Subject: [PATCH] add seed_name to multidata and RoomInfo --- Main.py | 4 +++- MultiServer.py | 7 +++++-- Mystery.py | 4 ++-- Utils.py | 2 +- worlds/factorio/Mod.py | 4 ++-- worlds/factorio/Shapes.py | 3 --- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Main.py b/Main.py index f8b9ff31..3430d644 100644 --- a/Main.py +++ b/Main.py @@ -417,7 +417,8 @@ def main(args, seed=None): for player in world.alttp_player_ids: rom_futures.append(pool.submit(_gen_rom, team, player)) for player in world.factorio_player_ids: - mod_futures.append(pool.submit(generate_mod, world, player)) + mod_futures.append(pool.submit(generate_mod, world, player, + str(args.outputname if args.outputname else world.seed))) def get_entrance_to_region(region: Region): for entrance in region.entrances: @@ -524,6 +525,7 @@ def main(args, seed=None): "version": tuple(_version_tuple), "tags": ["AP"], "minimum_versions": minimum_versions, + "seed_name": str(args.outputname if args.outputname else world.seed) }), 9) with open(output_path('%s.archipelago' % outfilebase), 'wb') as f: diff --git a/MultiServer.py b/MultiServer.py index 72639e42..873970af 100644 --- a/MultiServer.py +++ b/MultiServer.py @@ -112,6 +112,7 @@ class Context(Node): self.tags = ['AP'] self.games = {} self.minimum_client_versions: typing.Dict[int, Utils.Version] = {} + self.seed_name = "" def load(self, multidatapath: str, use_embedded_server_options: bool = False): with open(multidatapath, 'rb') as f: @@ -141,7 +142,7 @@ class Context(Node): for team, names in enumerate(decoded_obj['names']): for player, name in enumerate(names, 1): self.player_names[(team, player)] = name - + self.seed_name = decoded_obj["seed_name"] self.connect_names = decoded_obj['connect_names'] self.remote_items = decoded_obj['remote_items'] self.locations = decoded_obj['locations'] @@ -152,6 +153,7 @@ class Context(Node): server_options = decoded_obj.get("server_options", {}) self._set_options(server_options) + def get_players_package(self): return [NetworkPlayer(t, p, self.get_aliased_name(t, p), n) for (t, p), n in self.player_names.items()] @@ -367,7 +369,8 @@ async def on_client_connected(ctx: Context, client: Client): 'remaining_mode': ctx.remaining_mode, 'hint_cost': ctx.hint_cost, 'location_check_points': ctx.location_check_points, - 'datapackage_version': network_data_package["version"] + 'datapackage_version': network_data_package["version"], + 'seed_name': ctx.seed_name }]) diff --git a/Mystery.py b/Mystery.py index 71b03f0c..71786dd2 100644 --- a/Mystery.py +++ b/Mystery.py @@ -69,8 +69,8 @@ def main(args=None, callback=ERmain): seed = get_seed(args.seed) random.seed(seed) - seedname = "M" + (f"{random.randint(0, pow(10, seeddigits) - 1)}".zfill(seeddigits)) - print(f"Generating mystery for {args.multi} player{'s' if args.multi > 1 else ''}, {seedname} Seed {seed}") + seedname = f"{random.randint(0, pow(10, seeddigits) - 1)}".zfill(seeddigits) + print(f"Generating for {args.multi} player{'s' if args.multi > 1 else ''}, {seedname} Seed {seed}") if args.race: random.seed() # reset to time-based random source diff --git a/Utils.py b/Utils.py index cb213cb9..fca4c211 100644 --- a/Utils.py +++ b/Utils.py @@ -12,7 +12,7 @@ class Version(typing.NamedTuple): minor: int build: int -__version__ = "0.0.3" +__version__ = "0.0.4" _version_tuple = tuplize_version(__version__) import builtins diff --git a/worlds/factorio/Mod.py b/worlds/factorio/Mod.py index b0eda59e..d31e23a5 100644 --- a/worlds/factorio/Mod.py +++ b/worlds/factorio/Mod.py @@ -27,7 +27,7 @@ base_info = { "factorio_version": "1.1" } -def generate_mod(world: MultiWorld, player: int): +def generate_mod(world: MultiWorld, player: int, seedname: str): global template, locale_template with template_load_lock: if not template: @@ -41,7 +41,7 @@ def generate_mod(world: MultiWorld, player: int): for location in world.get_filled_locations(player): if not location.name.startswith("recipe-"): # introduce this as a new location property? locations.append((location.name, location.item.name, location.item.player)) - mod_name = f"archipelago-client-{world.seed}-{player}" + mod_name = f"archipelago-client-{seedname}-{player}" tech_cost = {0: 0.1, 1: 0.25, 2: 0.5, diff --git a/worlds/factorio/Shapes.py b/worlds/factorio/Shapes.py index 1411dc6f..12f250e8 100644 --- a/worlds/factorio/Shapes.py +++ b/worlds/factorio/Shapes.py @@ -76,9 +76,6 @@ def get_shapes(world: MultiWorld, player: int) -> Dict[str, List[str]]: # https://www.wolframalpha.com/input/?i=x+=+1/2+(n++++1)+(2++++n)+solve+for+n import math slice_size = int(0.5*(math.sqrt(8*len(tech_names)+1)-3)) - - import logging - logging.info(slice_size) tech_names.sort() world.random.shuffle(tech_names) tech_names.sort(key=lambda tech_name: len(technology_table[tech_name].ingredients))