diff --git a/BaseClasses.py b/BaseClasses.py index f92203d9..820b2fed 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -77,6 +77,7 @@ class World(object): self._room_cache = {} self.dungeon_layouts = {} self.inaccessible_regions = {} + self.enabled_entrances = {} self.key_logic = {} self.pool_adjustment = {} self.key_layout = defaultdict(dict) diff --git a/DoorShuffle.py b/DoorShuffle.py index 39d6283f..e89a7bb4 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -753,7 +753,7 @@ def handle_split_dungeons(dungeon_builders, recombinant_builders, entrances_map, def main_dungeon_generation(dungeon_builders, recombinant_builders, connections_tuple, world, player): entrances_map, potentials, connections = connections_tuple - enabled_entrances = {} + enabled_entrances = world.enabled_entrances[player] = {} sector_queue = deque(dungeon_builders.values()) last_key, loops = None, 0 logging.getLogger('').info(world.fish.translate("cli", "cli", "generating.dungeon")) diff --git a/DungeonGenerator.py b/DungeonGenerator.py index 948115f3..f579f285 100644 --- a/DungeonGenerator.py +++ b/DungeonGenerator.py @@ -109,7 +109,8 @@ def generate_dungeon_find_proposal(builder, entrance_region_names, split_dungeon p_region = portal.door.entrance.connected_region access_region = next(x.parent_region for x in p_region.entrances if x.parent_region.type in [RegionType.LightWorld, RegionType.DarkWorld]) - if access_region.name in world.inaccessible_regions[player]: + if (access_region.name in world.inaccessible_regions[player] and + region.name not in world.enabled_entrances[player]): excluded[region] = None entrance_regions = [x for x in entrance_regions if x not in excluded.keys()] doors_to_connect = {}