diff --git a/Main.py b/Main.py index 02ef62e5..4947d71f 100644 --- a/Main.py +++ b/Main.py @@ -176,7 +176,7 @@ def main(args, seed=None): patch_rom(world, rom, player, team, use_enemizer) if use_enemizer: - patch_enemizer(world, player, rom, args.rom, args.enemizercli, args.shufflepots[player], + patch_enemizer(world, player, rom, args.enemizercli, sprite_random_on_hit) if args.race: diff --git a/Patch.py b/Patch.py index 96b24b47..d23a3ff8 100644 --- a/Patch.py +++ b/Patch.py @@ -21,6 +21,7 @@ def get_base_rom_path(file_name: str = "") -> str: file_name = Utils.local_path(file_name) return file_name + def get_base_rom_bytes(file_name: str = "") -> bytes: base_rom_bytes = getattr(get_base_rom_bytes, "base_rom_bytes", None) if not base_rom_bytes: @@ -38,7 +39,9 @@ def get_base_rom_bytes(file_name: str = "") -> bytes: def generate_yaml(patch: bytes, metadata: Optional[dict] = None) -> bytes: patch = yaml.dump({"meta": metadata, - "patch": patch}) + "patch": patch, + "game": "alttp", + "base_checksum": JAP10HASH}) return patch.encode(encoding="utf-8-sig") diff --git a/Rom.py b/Rom.py index 1ba2ccba..e99f1c38 100644 --- a/Rom.py +++ b/Rom.py @@ -143,7 +143,7 @@ def read_rom(stream) -> bytearray: buffer = buffer[0x200:] return buffer -def patch_enemizer(world, player, rom, baserom_path, enemizercli, shufflepots, random_sprite_on_hit): +def patch_enemizer(world, player: int, rom: LocalRom, enemizercli, random_sprite_on_hit): randopatch_path = os.path.abspath(output_path(f'enemizer_randopatch_{player}.sfc')) options_path = os.path.abspath(output_path(f'enemizer_options_{player}.json')) enemizer_output_path = os.path.abspath(output_path(f'enemizer_output_{player}.sfc')) @@ -161,12 +161,14 @@ def patch_enemizer(world, player, rom, baserom_path, enemizercli, shufflepots, r 'AllowEnemyZeroDamage': True, 'ShuffleEnemyDamageGroups': world.enemy_damage[player] != 'default', 'EnemyDamageChaosMode': world.enemy_damage[player] == 'chaos', - 'EasyModeEscape': False, + 'EasyModeEscape': world.mode[player] == "standard", 'EnemiesAbsorbable': False, 'AbsorbableSpawnRate': 10, 'AbsorbableTypes': { - 'FullMagic': True, 'SmallMagic': True, 'Bomb_1': True, 'BlueRupee': True, 'Heart': True, 'BigKey': True, 'Key': True, - 'Fairy': True, 'Arrow_10': True, 'Arrow_5': True, 'Bomb_8': True, 'Bomb_4': True, 'GreenRupee': True, 'RedRupee': True + 'FullMagic': True, 'SmallMagic': True, 'Bomb_1': True, 'BlueRupee': True, 'Heart': True, 'BigKey': True, + 'Key': True, + 'Fairy': True, 'Arrow_10': True, 'Arrow_5': True, 'Bomb_8': True, 'Bomb_4': True, 'GreenRupee': True, + 'RedRupee': True }, 'BossMadness': False, 'RandomizeBosses': True, @@ -188,7 +190,7 @@ def patch_enemizer(world, player, rom, baserom_path, enemizercli, shufflepots, r 'GrayscaleMode': False, 'GenerateSpoilers': False, 'RandomizeLinkSpritePalette': False, - 'RandomizePots': shufflepots, + 'RandomizePots': world.shufflepots[player], 'ShuffleMusic': False, 'BootlegMagic': True, 'CustomBosses': False, diff --git a/Utils.py b/Utils.py index 99daa847..efaa3140 100644 --- a/Utils.py +++ b/Utils.py @@ -15,7 +15,7 @@ import sys import functools -from yaml import load, dump +from yaml import load, dump, safe_load try: from yaml import CLoader as Loader @@ -147,7 +147,7 @@ def make_new_base2current(old_rom='Zelda no Densetsu - Kamigami no Triforce (Jap out_data[idx] = [int(new)] for offset in reversed(list(out_data.keys())): if offset - 1 in out_data: - out_data[offset-1].extend(out_data.pop(offset)) + out_data[offset - 1].extend(out_data.pop(offset)) with open('data/base2current.json', 'wt') as outfile: json.dump([{key: value} for key, value in out_data.items()], outfile, separators=(",", ":")) @@ -156,7 +156,8 @@ def make_new_base2current(old_rom='Zelda no Densetsu - Kamigami no Triforce (Jap return "New Rom Hash: " + basemd5.hexdigest() -parse_yaml = functools.partial(load, Loader=Loader) +parse_yaml = safe_load +unsafe_parse_yaml = functools.partial(load, Loader=Loader) class Hint(typing.NamedTuple): @@ -251,7 +252,7 @@ def persistent_load() -> typing.Dict[dict]: if os.path.exists(path): try: with open(path, "r") as f: - storage = parse_yaml(f.read()) + storage = unsafe_parse_yaml(f.read()) except Exception as e: import logging logging.debug(f"Could not read store: {e}")