From 92f7d4da9276c929c886519fc924005ec7b8b33c Mon Sep 17 00:00:00 2001 From: codemann8 Date: Wed, 27 Dec 2023 20:40:32 -0600 Subject: [PATCH] Added new option to export pre-seed customizer template yaml --- Main.py | 12 ++++++++---- source/classes/CustomSettings.py | 6 ++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Main.py b/Main.py index 347aa451..27ab9447 100644 --- a/Main.py +++ b/Main.py @@ -75,6 +75,7 @@ def main(args, seed=None, fish=None): seed = world.customizer.determine_seed(seed) seeded = True world.customizer.adjust_args(args) + world = init_world(args, fish) if seed is None: random.seed(None) world.seed = random.randint(0, 999999999) @@ -437,10 +438,17 @@ def init_world(args, fish): if code: Settings.adjust_args_from_code(code, player, args) + customized = None + if args.customizer: + customized = CustomSettings() + customized.load_yaml(args.customizer) + customized.adjust_args(args, False) + world = World(args.multi, args.ow_shuffle, args.ow_crossed, args.ow_mixed, args.shuffle, args.door_shuffle, args.logic, args.mode, args.swords, args.difficulty, args.item_functionality, args.timer, args.progressive, args.goal, args.algorithm, args.accessibility, args.shuffleganon, args.custom, args.customitemarray, args.hints) + world.customizer = customized world.boots_hint = args.boots_hint.copy() world.remote_items = args.remote_items.copy() world.mapshuffle = args.mapshuffle.copy() @@ -487,10 +495,6 @@ def init_world(args, fish): world.collection_rate = args.collection_rate.copy() world.colorizepots = args.colorizepots.copy() - world.customizer = None - if args.customizer: - world.customizer = CustomSettings() - world.customizer.load_yaml(args.customizer) return world diff --git a/source/classes/CustomSettings.py b/source/classes/CustomSettings.py index 3a48132e..f15a38f0 100644 --- a/source/classes/CustomSettings.py +++ b/source/classes/CustomSettings.py @@ -48,11 +48,13 @@ class CustomSettings(object): meta = defaultdict(lambda: None, self.file_source['meta']) return meta['players'] - def adjust_args(self, args): + def adjust_args(self, args, resolve_weighted=True): def get_setting(value: Any, default): if value or value == 0: if isinstance(value, dict): - return random.choices(list(value.keys()), list(value.values()), k=1)[0] + if resolve_weighted: + return random.choices(list(value.keys()), list(value.values()), k=1)[0] + return None else: return value return default