diff --git a/worlds/jakanddaxter/Rules.py b/worlds/jakanddaxter/Rules.py index d312e9f051..5aa3d041ca 100644 --- a/worlds/jakanddaxter/Rules.py +++ b/worlds/jakanddaxter/Rules.py @@ -46,8 +46,8 @@ def count_reachable_orbs_global(state: CollectionState, world: JakAndDaxterWorld) -> int: accessible_orbs = 0 - for level_name in world.level_to_regions: - for region in world.level_to_regions[level_name]: + for level_regions in world.level_to_regions.values(): + for region in level_regions: # Rely on short-circuiting to skip region.can_reach whenever possible. if region.orb_count > 0 and region.can_reach(state): accessible_orbs += region.orb_count diff --git a/worlds/jakanddaxter/__init__.py b/worlds/jakanddaxter/__init__.py index dd731db9f4..b453d01fcd 100644 --- a/worlds/jakanddaxter/__init__.py +++ b/worlds/jakanddaxter/__init__.py @@ -1,4 +1,5 @@ # Python standard libraries +from collections import defaultdict from math import ceil from typing import Any, ClassVar, Callable, Union, cast @@ -232,9 +233,7 @@ class JakAndDaxterWorld(World): def generate_early(self) -> None: # Initialize the level-region dictionary. - self.level_to_regions = {} - for level_name in level_table: - self.level_to_regions[level_name] = [] + self.level_to_regions = defaultdict(list) # Cache the power cell threshold values for quicker reference. self.power_cell_thresholds = [ @@ -315,9 +314,9 @@ class JakAndDaxterWorld(World): from .Regions import create_regions create_regions(self) - for level in self.level_to_regions: - for region in self.level_to_regions[level]: - self.multiworld.regions.append(region) + # Don't forget to add the created regions to the multiworld! + for level_regions in self.level_to_regions.values(): + self.multiworld.regions.extend(level_regions) # from Utils import visualize_regions # visualize_regions(self.multiworld.get_region("Menu", self.player), "jakanddaxter.puml")