From 36db4201208c68ba4ec909a5e5378a75050032e6 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Sun, 28 Jun 2020 00:24:45 +0200 Subject: [PATCH] significantly increase the amount of seed numbers, reducing capability to infer source seed --- EntranceRandomizer.py | 4 ++-- Gui.py | 6 +++--- Main.py | 18 ++++++++++++------ Mystery.py | 9 +++------ 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/EntranceRandomizer.py b/EntranceRandomizer.py index 132d02a2..647f2a1d 100755 --- a/EntranceRandomizer.py +++ b/EntranceRandomizer.py @@ -8,7 +8,7 @@ import textwrap import shlex import sys -from Main import main +from Main import main, get_seed from Rom import get_sprite_from_name from Utils import is_bundled, close_console @@ -379,7 +379,7 @@ def start(): seed = args.seed for _ in range(args.count): main(seed=seed, args=args) - seed = random.randint(0, 999999999) + seed = get_seed() else: main(seed=args.seed, args=args) diff --git a/Gui.py b/Gui.py index e0574986..1bde482c 100755 --- a/Gui.py +++ b/Gui.py @@ -16,7 +16,7 @@ ModuleUpdate.update() from AdjusterMain import adjust from EntranceRandomizer import parse_arguments from GuiUtils import ToolTips, set_icon, BackgroundTaskProgress -from Main import main, __version__ as ESVersion +from Main import main, get_seed, __version__ as ESVersion from Rom import Sprite from Utils import is_bundled, local_path, output_path, open_file @@ -416,7 +416,7 @@ def guiMain(args=None): namesEntry = Entry(multiworldframe, textvariable=namesVar) seedLabel = Label(multiworldframe, text='Seed #') seedVar = StringVar() - seedEntry = Entry(multiworldframe, width=15, textvariable=seedVar) + seedEntry = Entry(multiworldframe, width=20, textvariable=seedVar) countLabel = Label(multiworldframe, text='Count') countVar = StringVar() countSpinbox = Spinbox(multiworldframe, from_=1, to=100, width=5, textvariable=countVar) @@ -498,7 +498,7 @@ def guiMain(args=None): seed = guiargs.seed for _ in range(guiargs.count): main(seed=seed, args=guiargs) - seed = random.randint(0, 999999999) + seed = get_seed() else: main(seed=guiargs.seed, args=guiargs) except Exception as e: diff --git a/Main.py b/Main.py index 963efe88..02ef62e5 100644 --- a/Main.py +++ b/Main.py @@ -16,10 +16,20 @@ from EntranceShuffle import link_entrances, link_inverted_entrances from Rom import patch_rom, patch_race_rom, patch_enemizer, apply_rom_settings, LocalRom, get_hash_string from Rules import set_rules from Dungeons import create_dungeons, fill_dungeons, fill_dungeons_restrictive -from Fill import distribute_items_cutoff, distribute_items_staleness, distribute_items_restrictive, flood_items, balance_multiworld_progression +from Fill import distribute_items_cutoff, distribute_items_staleness, distribute_items_restrictive, flood_items, \ + balance_multiworld_progression from ItemList import generate_itempool, difficulties, fill_prizes from Utils import output_path, parse_player_names, get_options, __version__ +seeddigits = 20 + + +def get_seed(seed=None): + if seed is None: + random.seed(None) + return random.randint(0, pow(10, seeddigits) - 1) + return seed + def main(args, seed=None): if args.outputpath: @@ -33,11 +43,7 @@ def main(args, seed=None): args.item_functionality, args.timer, args.progressive.copy(), args.goal, args.algorithm, args.accessibility, args.shuffleganon, args.retro, args.custom, args.customitemarray, args.hints) logger = logging.getLogger('') - if seed is None: - random.seed(None) - world.seed = random.randint(0, 999999999) - else: - world.seed = int(seed) + world.seed = get_seed(seed) random.seed(world.seed) world.remote_items = args.remote_items.copy() diff --git a/Mystery.py b/Mystery.py index 6038694d..f7b18216 100644 --- a/Mystery.py +++ b/Mystery.py @@ -14,6 +14,7 @@ from Utils import parse_yaml from Rom import get_sprite_from_name from EntranceRandomizer import parse_arguments from Main import main as ERmain +from Main import get_seed, seeddigits from Items import item_name_groups, item_table @@ -47,14 +48,10 @@ def main(): parser.add_argument(f'--p{player}', help=argparse.SUPPRESS) args = parser.parse_args() - if args.seed is None: - random.seed(None) - seed = random.randint(0, 999999999) - else: - seed = args.seed + seed = get_seed(args.seed) random.seed(seed) - seedname = "M"+(f"{random.randint(0, 999999999)}".zfill(9)) + seedname = "M" + (f"{get_seed()}".zfill(seeddigits)) print(f"Generating mystery for {args.multi} player{'s' if args.multi > 1 else ''}, {seedname} Seed {seed}") weights_cache = {}