diff --git a/worlds/tloz/Rules.py b/worlds/tloz/Rules.py index 1e66e5a849b1..12bf466bce99 100644 --- a/worlds/tloz/Rules.py +++ b/worlds/tloz/Rules.py @@ -1,6 +1,6 @@ from typing import TYPE_CHECKING -from ..generic.Rules import add_rule +from worlds.generic.Rules import add_rule from .Locations import food_locations, shop_locations from .ItemPool import dangerous_weapon_locations from .Options import StartingPosition diff --git a/worlds/tloz/__init__.py b/worlds/tloz/__init__.py index 356f9e5ff510..2af92a799727 100644 --- a/worlds/tloz/__init__.py +++ b/worlds/tloz/__init__.py @@ -1,8 +1,7 @@ -import logging import os import threading -import pkgutil -from typing import NamedTuple, Union, Dict, Any +from pkgutil import get_data +from typing import Dict, Any import bsdiff4 @@ -168,9 +167,8 @@ def apply_base_patch(self, rom): # Remove map/compass check so they're always on # Removing a bit from the boss roars flags, so we can have more dungeon items. This allows us to # go past 0x1F items for dungeon items. - base_patch_location = os.path.dirname(__file__) + "/z1_base_patch.bsdiff4" - with open(base_patch_location, "rb") as base_patch: - rom_data = bsdiff4.patch(rom.read(), base_patch.read()) + base_patch = get_data(__name__, os.path.join(os.path.dirname(__file__), "z1_base_patch.bsdiff4")) + rom_data = bsdiff4.patch(rom.read(), base_patch) rom_data = bytearray(rom_data) # Set every item to the new nothing value, but keep room flags. Type 2 boss roars should # become type 1 boss roars, so we at least keep the sound of roaring where it should be. @@ -275,8 +273,10 @@ def generate_output(self, output_directory: str): def modify_multidata(self, multidata: dict): import base64 self.rom_name_available_event.wait() - new_name = base64.b64encode(bytes(self.rom_name)).decode() - multidata["connect_names"][new_name] = multidata["connect_names"][self.multiworld.player_name[self.player]] + rom_name = getattr(self, "rom_name", None) + if rom_name: + new_name = base64.b64encode(bytes(self.rom_name)).decode() + multidata["connect_names"][new_name] = multidata["connect_names"][self.multiworld.player_name[self.player]] def get_filler_item_name(self) -> str: if self.filler_items is None: @@ -320,4 +320,4 @@ class TLoZItem(Item): class TLoZLocation(Location): - game = 'The Legend of Zelda' \ No newline at end of file + game = 'The Legend of Zelda'