diff --git a/BaseClasses.py b/BaseClasses.py index ce8d109c..7f456d89 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -197,7 +197,6 @@ class MultiWorld(): self._recache() return self._region_cache[player][regionname] - def get_entrance(self, entrance: str, player: int) -> Entrance: try: return self._entrance_cache[entrance, player] @@ -205,7 +204,6 @@ class MultiWorld(): self._recache() return self._entrance_cache[entrance, player] - def get_location(self, location: str, player: int) -> Location: try: return self._location_cache[location, player] @@ -213,15 +211,18 @@ class MultiWorld(): self._recache() return self._location_cache[location, player] - def get_dungeon(self, dungeonname: str, player: int) -> Dungeon: for dungeon in self.dungeons: if dungeon.name == dungeonname and dungeon.player == player: return dungeon raise KeyError('No such dungeon %s for player %d' % (dungeonname, player)) - def get_all_state(self, keys=False) -> CollectionState: + key = f"_all_state_{keys}" + cached = getattr(self, key, None) + if cached: + return cached.copy() + ret = CollectionState(self) for item in self.itempool: @@ -246,6 +247,7 @@ class MultiWorld(): p): world.collect(ret, item) ret.sweep_for_events() + setattr(self, key, ret) return ret def get_items(self) -> list: diff --git a/Main.py b/Main.py index 4ca895c6..6555eedf 100644 --- a/Main.py +++ b/Main.py @@ -271,13 +271,14 @@ def main(args, seed=None): world.spoiler.hashes[(player, team)] = get_hash_string(rom.hash) - palettes_options = {} - palettes_options['dungeon'] = args.uw_palettes[player] - palettes_options['overworld'] = args.ow_palettes[player] - palettes_options['hud'] = args.hud_palettes[player] - palettes_options['sword'] = args.sword_palettes[player] - palettes_options['shield'] = args.shield_palettes[player] - palettes_options['link'] = args.link_palettes[player] + palettes_options = { + 'dungeon': args.uw_palettes[player], + 'overworld': args.ow_palettes[player], + 'hud': args.hud_palettes[player], + 'sword': args.sword_palettes[player], + 'shield': args.shield_palettes[player], + 'link': args.link_palettes[player] + } apply_rom_settings(rom, args.heartbeep[player], args.heartcolor[player], args.quickswap[player], args.fastmenu[player], args.disablemusic[player], args.sprite[player],