diff --git a/source/tools/MysteryUtils.py b/source/tools/MysteryUtils.py index 73d600e2..c7d811e3 100644 --- a/source/tools/MysteryUtils.py +++ b/source/tools/MysteryUtils.py @@ -16,6 +16,16 @@ def get_weights(path): return yaml.load(urllib.request.urlopen(path), Loader=yaml.FullLoader) def roll_settings(weights): + while True: + subweights = weights.get('subweights', {}) + if len(subweights) == 0: + break + chances = ({k: int(v['chance']) for (k, v) in subweights.items()}) + subweight_name = random.choices(list(chances.keys()), weights=list(chances.values()))[0] + subweights = weights.get('subweights', {}).get(subweight_name, {}).get('weights', {}) + subweights['subweights'] = subweights.get('subweights', {}) + weights = {**weights, **subweights} + def get_choice(option, root=None): root = weights if root is None else root if option not in root: @@ -65,16 +75,6 @@ def roll_settings(weights): return default return choice - while True: - subweights = weights.get('subweights', {}) - if len(subweights) == 0: - break - chances = ({k: int(v['chance']) for (k, v) in subweights.items()}) - subweight_name = random.choices(list(chances.keys()), weights=list(chances.values()))[0] - subweights = weights.get('subweights', {}).get(subweight_name, {}).get('weights', {}) - subweights['subweights'] = subweights.get('subweights', {}) - weights = {**weights, **subweights} - ret = argparse.Namespace() ret.algorithm = get_choice('algorithm')