diff --git a/EntranceShuffle.py b/EntranceShuffle.py index 4ac75bf8..8eb59af5 100644 --- a/EntranceShuffle.py +++ b/EntranceShuffle.py @@ -424,7 +424,6 @@ def link_entrances(world, player): suppress_spoiler = False # shuffle dungeons - #full_shuffle_dungeons(world, Dungeon_Exits, player) skull_woods_shuffle(world, player) # shuffle dropdowns @@ -1680,6 +1679,51 @@ def get_distant_entrances(world, start_entrance, sectors, player): start_region = world.get_entrance(start_entrance, player).parent_region.name regions = next(s for s in sectors if any(start_region in w for w in s)) regions = next(w for w in regions if start_region in w) + + one_way_ledges = { + 'West Death Mountain (Bottom)': {'West Death Mountain (Top)', + 'Spectacle Rock Ledge'}, + 'East Death Mountain (Bottom)': {'West Death Mountain (Top East)', + 'Spiral Cave Ledge'}, + 'Fairy Ascension Plateau': {'Fairy Ascension Ledge'}, + 'Mountain Entry Area': {'Mountain Entry Ledge'}, + 'Sanctuary Area': {'Bonk Rock Ledge'}, + 'Graveyard Area': {'Graveyard Ledge'}, + 'Potion Shop Water': {'Potion Shop Area', + 'Potion Shop Northeast'}, + 'Zora Approach Water': {'Zora Approach Area'}, + 'Hyrule Castle Area': {'Hyrule Castle Ledge'}, + 'Wooden Bridge Water': {'Wooden Bridge Area', + 'Wooden Bridge Northeast'}, + 'Maze Race Area': {'Maze Race Ledge', + 'Maze Race Prize'}, + 'Flute Boy Approach Area': {'Cave 45 Ledge'}, + 'Desert Area': {'Desert Ledge' + 'Desert Checkerboard Ledge', + 'Desert Palace Mouth', + 'Bombos Tablet Ledge', + 'Desert Palace Teleporter Ledge'}, + 'Desert Pass Area': {'Desert Pass Ledge'}, + 'Lake Hylia Water': {'Lake Hylia South Shore', + 'Lake Hylia Island'}, + 'West Dark Death Mountain (Bottom)': {'West Dark Death Mountain (Top)'}, + 'West Dark Death Mountain (Top)': {'Dark Death Mountain Floating Island'}, + 'East Dark Death Mountain (Bottom)': {'East Dark Death Mountain (Top)'}, + 'Turtle Rock Area': {'Turtle Rock Ledge'}, + 'Bumper Cave Area': {'Bumper Cave Ledge'}, + 'Qirn Jump Water': {'Qirn Jump Area'}, + 'Dark Witch Water': {'Dark Witch Area', + 'Dark Witch Northeast'}, + 'Catfish Approach Water': {'Catfish Approach Area'}, + 'Pyramid Area': {'Pyramid Exit Ledge'}, + 'Broken Bridge Water': {'Broken Bridge West', + 'Broken Bridge Area', + 'Broken Bridge Northeast'}, + 'Misery Mire Area': {'Misery Mire Teleporter Ledge'}, + 'Ice Lake Water': {'Ice Lake Area', + 'Ice Lake Ledge (West)', + 'Ice Lake Ledge (East)'} + } # eliminate regions surrounding the initial entrance until less than half of the candidate regions remain explored_regions = list({start_region}) @@ -1688,6 +1732,11 @@ def get_distant_entrances(world, start_entrance, sectors, player): was_progress = False new_regions = list() for region_name in explored_regions: + if region_name in one_way_ledges: + for ledge in one_way_ledges[region_name]: + if ledge not in explored_regions + new_regions: + new_regions.append(ledge) + was_progress = True region = world.get_region(region_name, player) for exit in region.exits: if exit.connected_region and region.type == exit.connected_region.type and exit.connected_region.name in regions and exit.connected_region.name not in explored_regions + new_regions: