Added new option to export pre-seed customizer template yaml

This commit is contained in:
codemann8
2023-12-27 20:40:32 -06:00
parent 6ed937971d
commit 92f7d4da92
2 changed files with 12 additions and 6 deletions

12
Main.py
View File

@@ -75,6 +75,7 @@ def main(args, seed=None, fish=None):
seed = world.customizer.determine_seed(seed) seed = world.customizer.determine_seed(seed)
seeded = True seeded = True
world.customizer.adjust_args(args) world.customizer.adjust_args(args)
world = init_world(args, fish)
if seed is None: if seed is None:
random.seed(None) random.seed(None)
world.seed = random.randint(0, 999999999) world.seed = random.randint(0, 999999999)
@@ -437,10 +438,17 @@ def init_world(args, fish):
if code: if code:
Settings.adjust_args_from_code(code, player, args) 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, 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.difficulty, args.item_functionality, args.timer, args.progressive, args.goal, args.algorithm,
args.accessibility, args.shuffleganon, args.custom, args.customitemarray, args.hints) args.accessibility, args.shuffleganon, args.custom, args.customitemarray, args.hints)
world.customizer = customized
world.boots_hint = args.boots_hint.copy() world.boots_hint = args.boots_hint.copy()
world.remote_items = args.remote_items.copy() world.remote_items = args.remote_items.copy()
world.mapshuffle = args.mapshuffle.copy() world.mapshuffle = args.mapshuffle.copy()
@@ -487,10 +495,6 @@ def init_world(args, fish):
world.collection_rate = args.collection_rate.copy() world.collection_rate = args.collection_rate.copy()
world.colorizepots = args.colorizepots.copy() world.colorizepots = args.colorizepots.copy()
world.customizer = None
if args.customizer:
world.customizer = CustomSettings()
world.customizer.load_yaml(args.customizer)
return world return world

View File

@@ -48,11 +48,13 @@ class CustomSettings(object):
meta = defaultdict(lambda: None, self.file_source['meta']) meta = defaultdict(lambda: None, self.file_source['meta'])
return meta['players'] return meta['players']
def adjust_args(self, args): def adjust_args(self, args, resolve_weighted=True):
def get_setting(value: Any, default): def get_setting(value: Any, default):
if value or value == 0: if value or value == 0:
if isinstance(value, dict): 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: else:
return value return value
return default return default