significantly increase the amount of seed numbers, reducing capability to infer source seed

This commit is contained in:
Fabian Dill 2020-06-28 00:24:45 +02:00
parent 74cbfe07a3
commit 36db420120
4 changed files with 20 additions and 17 deletions

View File

@ -8,7 +8,7 @@ import textwrap
import shlex import shlex
import sys import sys
from Main import main from Main import main, get_seed
from Rom import get_sprite_from_name from Rom import get_sprite_from_name
from Utils import is_bundled, close_console from Utils import is_bundled, close_console
@ -379,7 +379,7 @@ def start():
seed = args.seed seed = args.seed
for _ in range(args.count): for _ in range(args.count):
main(seed=seed, args=args) main(seed=seed, args=args)
seed = random.randint(0, 999999999) seed = get_seed()
else: else:
main(seed=args.seed, args=args) main(seed=args.seed, args=args)

6
Gui.py
View File

@ -16,7 +16,7 @@ ModuleUpdate.update()
from AdjusterMain import adjust from AdjusterMain import adjust
from EntranceRandomizer import parse_arguments from EntranceRandomizer import parse_arguments
from GuiUtils import ToolTips, set_icon, BackgroundTaskProgress 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 Rom import Sprite
from Utils import is_bundled, local_path, output_path, open_file from Utils import is_bundled, local_path, output_path, open_file
@ -416,7 +416,7 @@ def guiMain(args=None):
namesEntry = Entry(multiworldframe, textvariable=namesVar) namesEntry = Entry(multiworldframe, textvariable=namesVar)
seedLabel = Label(multiworldframe, text='Seed #') seedLabel = Label(multiworldframe, text='Seed #')
seedVar = StringVar() seedVar = StringVar()
seedEntry = Entry(multiworldframe, width=15, textvariable=seedVar) seedEntry = Entry(multiworldframe, width=20, textvariable=seedVar)
countLabel = Label(multiworldframe, text='Count') countLabel = Label(multiworldframe, text='Count')
countVar = StringVar() countVar = StringVar()
countSpinbox = Spinbox(multiworldframe, from_=1, to=100, width=5, textvariable=countVar) countSpinbox = Spinbox(multiworldframe, from_=1, to=100, width=5, textvariable=countVar)
@ -498,7 +498,7 @@ def guiMain(args=None):
seed = guiargs.seed seed = guiargs.seed
for _ in range(guiargs.count): for _ in range(guiargs.count):
main(seed=seed, args=guiargs) main(seed=seed, args=guiargs)
seed = random.randint(0, 999999999) seed = get_seed()
else: else:
main(seed=guiargs.seed, args=guiargs) main(seed=guiargs.seed, args=guiargs)
except Exception as e: except Exception as e:

18
Main.py
View File

@ -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 Rom import patch_rom, patch_race_rom, patch_enemizer, apply_rom_settings, LocalRom, get_hash_string
from Rules import set_rules from Rules import set_rules
from Dungeons import create_dungeons, fill_dungeons, fill_dungeons_restrictive 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 ItemList import generate_itempool, difficulties, fill_prizes
from Utils import output_path, parse_player_names, get_options, __version__ 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): def main(args, seed=None):
if args.outputpath: 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.item_functionality, args.timer, args.progressive.copy(), args.goal, args.algorithm,
args.accessibility, args.shuffleganon, args.retro, args.custom, args.customitemarray, args.hints) args.accessibility, args.shuffleganon, args.retro, args.custom, args.customitemarray, args.hints)
logger = logging.getLogger('') logger = logging.getLogger('')
if seed is None: world.seed = get_seed(seed)
random.seed(None)
world.seed = random.randint(0, 999999999)
else:
world.seed = int(seed)
random.seed(world.seed) random.seed(world.seed)
world.remote_items = args.remote_items.copy() world.remote_items = args.remote_items.copy()

View File

@ -14,6 +14,7 @@ from Utils import parse_yaml
from Rom import get_sprite_from_name from Rom import get_sprite_from_name
from EntranceRandomizer import parse_arguments from EntranceRandomizer import parse_arguments
from Main import main as ERmain from Main import main as ERmain
from Main import get_seed, seeddigits
from Items import item_name_groups, item_table from Items import item_name_groups, item_table
@ -47,14 +48,10 @@ def main():
parser.add_argument(f'--p{player}', help=argparse.SUPPRESS) parser.add_argument(f'--p{player}', help=argparse.SUPPRESS)
args = parser.parse_args() args = parser.parse_args()
if args.seed is None: seed = get_seed(args.seed)
random.seed(None)
seed = random.randint(0, 999999999)
else:
seed = args.seed
random.seed(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}") print(f"Generating mystery for {args.multi} player{'s' if args.multi > 1 else ''}, {seedname} Seed {seed}")
weights_cache = {} weights_cache = {}