Split duplicate exits into unique

This commit is contained in:
codemann8
2020-12-12 06:56:36 -06:00
parent 2e5af373a5
commit 1add1222e1
4 changed files with 105 additions and 38 deletions

View File

@@ -1791,6 +1791,8 @@ def create_doors_for_inaccessible_region(inaccessible_region, world, player):
region = world.get_region(inaccessible_region, player)
for ext in region.exits:
create_door(world, player, ext.name, region.name)
if ext.connected_region is None:
print("ERROR: Exit not connected to any region: " + ext.name)
if ext.connected_region.name.endswith(' Portal'):
for more_exts in ext.connected_region.exits:
create_door(world, player, more_exts.name, ext.connected_region.name)

View File

@@ -2853,7 +2853,7 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
('Flute Spot 3', 'Kakariko Area'),
('Flute Spot 4', 'Links House Area'),
('Flute Spot 5', 'Eastern Nook Area'),
('Flute Spot 6', 'Desert Palace Transporter Ledge'),
('Flute Spot 6', 'Desert Palace Teleporter Ledge'),
('Flute Spot 7', 'Dam Area'),
('Flute Spot 8', 'Octoballoon Area'),
@@ -2878,14 +2878,17 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
# Intra-tile OW Connections
('Death Mountain Entrance Rock', 'Death Mountain Entrance'),
('Death Mountain Entrance Drop', 'DM Ascent Area'),
('Death Mountain Return Drop', 'DM Ascent Area'),
('Bonk Rock Ledge Drop', 'Sanctuary Area'),
('Kings Grave Outer Rocks', 'Kings Grave Area'),
('Kings Grave Inner Rocks', 'Graveyard Area'),
('Graveyard Ledge Drop', 'Graveyard Area'),
('Useless Fairy Water Drop', 'Useless Fairy Water'),
('Useless Fairy East Water Drop', 'Useless Fairy Water'),
('Useless Fairy West Pier', 'Useless Fairy Area'),
('Useless Fairy East Pier', 'Useless Fairy East Bank'),
('Potion Shop Water Drop', 'Potion Shop Water'),
('Potion Shop Northeast Water Drop', 'Potion Shop Water'),
('Potion Shop Rock (South)', 'Potion Shop Northeast'),
('Potion Shop Rock (North)', 'Potion Shop Area'),
('Zora Warning Water Drop', 'Zora Warning Water'),
@@ -2905,12 +2908,21 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
('Desert Ledge Drop', 'Desert Area'),
('Desert Ledge Outer Rocks', 'Desert Palace Entrance (North) Spot'),
('Desert Ledge Inner Rocks', 'Desert Ledge'),
('Checkerboard Ledge Drop', 'Desert Area'),
('Desert Mouth Drop', 'Desert Area'),
('Desert Teleporter Drop', 'Desert Area'),
('Bombos Tablet Drop', 'Desert Area'),
('Purple Chest Ledge Drop', 'Purple Chest Area'),
('Lake Hylia Water Drop', 'Lake Hylia Water'),
('Lake Hylia South Water Drop', 'Lake Hylia Water'),
('Lake Hylia Northeast Water Drop', 'Lake Hylia Water'),
('Lake Hylia Central Water Drop', 'Lake Hylia Water'),
('Lake Hylia Island Water Drop', 'Lake Hylia Water'),
('Lake Hylia Central Island Pier', 'Lake Hylia Central Island'),
('Lake Hylia West Pier', 'Lake Hylia Area'),
('Lake Hylia East Pier', 'Lake Hylia Northeast Bank'),
('Octoballoon Water Drop', 'Octoballoon Water'),
('Octoballoon Waterfall Water Drop', 'Octoballoon Water'),
('Octoballoon Pier', 'Octoballoon Area'),
('West Death Mountain Drop', 'West Death Mountain (Bottom)'),
@@ -2919,6 +2931,7 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
('DM Hammer Bridge (East)', 'East Death Mountain (Top East)'),
('East Death Mountain Spiral Drop', 'Spiral Cave Ledge'),
('East Death Mountain Fairy Drop', 'Fairy Ascension Ledge'),
('Spiral Ledge Drop', 'East Death Mountain (Bottom)'),
('Fairy Ascension Ledge Drop', 'Fairy Ascension Plateau'),
('Fairy Ascension Plateau Drop', 'East Death Mountain (Bottom)'),
('Fairy Ascension Rocks', 'Fairy Ascension Plateau'),
@@ -2931,13 +2944,16 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
('Skull Woods Forgotten Bush (East)', 'Skull Woods Forgotten Path (Southwest)'),
('Bumper Cave Entrance Rock', 'Bumper Cave Entrance'),
('Bumper Cave Ledge Drop', 'Bumper Cave Area'),
('Bumper Cave Entrance Drop', 'Bumper Cave Area'),
('Skull Woods Pass Bush Row (West)', 'Skull Woods Pass East Top Area'),
('Skull Woods Pass Bush Row (East)', 'Skull Woods Pass West Area'),
('Skull Woods Pass Rock (Top)', 'Skull Woods Pass East Bottom Area'),
('Skull Woods Pass Rock (Bottom)', 'Skull Woods Pass East Top Area'),
('Qirn Jump Water Drop', 'Qirn Jump Water'),
('Qirn Jump East Water Drop', 'Qirn Jump Water'),
('Qirn Jump Pier', 'Qirn Jump East Bank'),
('Dark Witch Water Drop', 'Dark Witch Water'),
('Dark Witch Northeast Water Drop', 'Dark Witch Water'),
('Dark Witch Rock (North)', 'Dark Witch Area'),
('Dark Witch Rock (South)', 'Dark Witch Northeast'),
('Catfish Approach Water Drop', 'Catfish Approach Water'),
@@ -2950,7 +2966,9 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
('Broken Bridge Hammer Rock (North)', 'Broken Bridge Area'),
('Broken Bridge Hookshot Gap', 'Broken Bridge West'),
('Broken Bridge Water Drop', 'Broken Bridge Water'),
('Dig Game Drop To Ledge', 'Dig Game Ledge'),
('Broken Bridge Northeast Water Drop', 'Broken Bridge Water'),
('Broken Bridge West Water Drop', 'Broken Bridge Water'),
('Dig Game To Ledge Drop', 'Dig Game Ledge'),
('Dig Game Ledge Drop', 'Dig Game Area'),
('Frog Ledge Drop', 'Archery Game Area'),
('Archery Game Rock', 'Frog Area'),
@@ -2961,8 +2979,12 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
('Hammer Bridge Water Drop', 'Hammer Bridge Water'),
('Hammer Bridge Pier', 'Hammer Bridge North Area'),
('Dark Lake Hylia Water Drop', 'Dark Lake Hylia Water'),
('Dark Lake Hylia Northeast Water Drop', 'Dark Lake Hylia Water'),
('Dark Lake Hylia Southwest Water Drop', 'Dark Lake Hylia Water'),
('Dark Lake Hylia Southeast Water Drop', 'Dark Lake Hylia Water'),
('Dark Lake Hylia Northeast Pier', 'Dark Lake Hylia Northeast Bank'),
('Southeast DW Water Drop', 'Southeast DW Water'),
('Southeast DW Waterfall Water Drop', 'Southeast DW Water'),
('Southeast DW Pier', 'Southeast DW Area'),
('Dark Death Mountain Drop (West)', 'Dark Death Mountain (West Bottom)'),
@@ -2974,6 +2996,7 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
('Kakariko Teleporter (Hammer)', 'Skull Woods Pass East Top Area'),
('Kakariko Teleporter (Rock)', 'Skull Woods Pass East Top Area'),
('Top of Pyramid', 'Pyramid Area'),
('Top of Pyramid (Inner)', 'Pyramid Area'),
('East Hyrule Teleporter', 'Palace of Darkness Nook Area'),
('South Hyrule Teleporter', 'Dark C Whirlpool Area'),
('Desert Teleporter', 'Misery Mire Area'),
@@ -2984,6 +3007,10 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
# Mirror Connections
('Lost Woods Mirror Spot', 'Lost Woods Area'),
('Lost Woods Entry Mirror Spot', 'Lost Woods Area'),
('Lost Woods Pedestal Mirror Spot', 'Lost Woods Area'),
('Lost Woods Southwest Mirror Spot', 'Lost Woods Area'),
('Lost Woods Northeast Mirror Spot', 'Lost Woods Area'),
('Lumberjack Mirror Spot', 'Lumberjack Area'),
('DM Ascent Mirror Spot', 'DM Ascent Area'),
('DM Ascent Entrance Mirror Spot', 'Death Mountain Entrance'),
@@ -3004,18 +3031,25 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
('Zora Warning Mirror Spot', 'Zora Warning Area'),
('Zora Approach Mirror Spot', 'Zora Approach Area'),
('Kakariko Mirror Spot', 'Kakariko Area'),
('Kakariko Grass Mirror Spot', 'Kakariko Area'),
('Blacksmith Mirror Spot', 'Blacksmith Area'),
('Blacksmith Entry Mirror Spot', 'Blacksmith Area'),
('Bat Cave Ledge Mirror Spot', 'Bat Cave Ledge'),
('HC Ledge Mirror Spot', 'Hyrule Castle Ledge'),
('HC Courtyard Mirror Spot', 'Hyrule Castle Courtyard'),
('HC Area Mirror Spot', 'Hyrule Castle Area'),
('HC Area South Mirror Spot', 'Hyrule Castle Area'),
('HC East Entry Mirror Spot', 'Hyrule Castle East Entry'),
('Wooden Bridge Mirror Spot', 'Wooden Bridge Area'),
('Wooden Bridge Northeast Mirror Spot', 'Wooden Bridge Area'),
('Wooden Bridge West Mirror Spot', 'Wooden Bridge Area'),
('Sand Dune Mirror Spot', 'Sand Dune Area'),
('Eastern Palace Mirror Spot', 'Eastern Palace Area'),
('Eastern Nook Mirror Spot', 'Eastern Nook Area'),
('Maze Race Mirror Spot', 'Maze Race Ledge'),
('Maze Race Ledge Mirror Spot', 'Maze Race Ledge'),
('Kakariko Suburb Mirror Spot', 'Kakariko Suburb Area'),
('Kakariko Suburb South Mirror Spot', 'Kakariko Suburb Area'),
('Flute Boy Mirror Spot', 'Flute Boy Area'),
('Flute Boy Pass Mirror Spot', 'Flute Boy Pass'),
('Cave 45 Mirror Spot', 'Cave 45 Ledge'),
@@ -3024,6 +3058,7 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
('Central Bonk Rock Mirror Spot', 'Central Bonk Rock Area'),
('Links House Mirror Spot', 'Links House Area'),
('Stone Bridge Mirror Spot', 'Stone Bridge Area'),
('Stone Bridge South Mirror Spot', 'Stone Bridge Area'),
('Hobo Mirror Spot', 'Stone Bridge Water'),
('Tree Line Mirror Spot', 'Tree Line Area'),
('Desert Ledge Mirror Spot', 'Desert Ledge'),
@@ -3038,6 +3073,7 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
('Lake Hylia Mirror Spot', 'Lake Hylia Area'),
('Lake Hylia Northeast Mirror Spot', 'Lake Hylia Northeast Bank'),
('South Shore Mirror Spot', 'Lake Hylia South Shore'),
('South Shore East Mirror Spot', 'Lake Hylia South Shore'),
('Lake Hylia Island Mirror Spot', 'Lake Hylia Island'),
('Lake Hylia Central Island Mirror Spot', 'Lake Hylia Central Island'),
('Octoballoon Mirror Spot', 'Octoballoon Area'),

View File

@@ -12,7 +12,7 @@ def create_regions(world, player):
create_lw_region(player, 'Lumberjack Area', None, ['Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Lumberjack House', 'Lumberjack WN', 'Lumberjack SW']),
create_lw_region(player, 'DM Ascent Area', None, ['Death Mountain Entrance Rock', 'DM Ascent NW', 'DM Ascent SE']),
create_lw_region(player, 'Death Mountain Entrance', None, ['Old Man Cave (West)', 'Death Mountain Entrance Drop']),
create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Cave (West)', 'Death Mountain Entrance Drop']),
create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Cave (West)', 'Death Mountain Return Drop']),
create_lw_region(player, 'Lost Woods Pass West Area', None, ['Lost Woods Pass NW', 'Lost Woods Pass SW']),
create_lw_region(player, 'Lost Woods Pass East Top Area', None, ['Kakariko Teleporter (Hammer)', 'Lost Woods Pass NE']),
create_lw_region(player, 'Lost Woods Pass East Bottom Area', None, ['Kakariko Teleporter (Rock)', 'Lost Woods Pass SE']),
@@ -25,10 +25,10 @@ def create_regions(world, player):
create_lw_region(player, 'Graveyard Ledge', None, ['Graveyard Cave', 'Graveyard Ledge Drop']),
create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']),
create_lw_region(player, 'Useless Fairy Area', None, ['North Fairy Cave', 'North Fairy Cave Drop', 'Useless Fairy Water Drop', 'Useless Fairy WC', 'Useless Fairy SW']),
create_lw_region(player, 'Useless Fairy East Bank', None, ['Useless Fairy Water Drop', 'Useless Fairy SE', 'Useless Fairy EC', 'Useless Fairy ES']),
create_lw_region(player, 'Useless Fairy East Bank', None, ['Useless Fairy East Water Drop', 'Useless Fairy SE', 'Useless Fairy EC', 'Useless Fairy ES']),
create_lw_region(player, 'Useless Fairy Water', None, ['Useless Fairy West Pier', 'Useless Fairy East Pier', 'Useless Fairy EN', 'Useless Fairy SC', 'Useless Fairy Whirlpool']),
create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop', 'Potion Shop Water Drop', 'Potion Shop Rock (South)', 'Potion Shop WC', 'Potion Shop WS']),
create_lw_region(player, 'Potion Shop Northeast', None, ['Potion Shop Water Drop', 'Potion Shop Rock (North)', 'Potion Shop EC']),
create_lw_region(player, 'Potion Shop Northeast', None, ['Potion Shop Northeast Water Drop', 'Potion Shop Rock (North)', 'Potion Shop EC']),
create_lw_region(player, 'Potion Shop Water', None, ['Potion Shop WN', 'Potion Shop EN']),
create_lw_region(player, 'Zora Warning Area', None, ['Zora Warning Water Drop', 'Zora Warning WC', 'Zora Warning NE']),
create_lw_region(player, 'Zora Warning Water', None, ['Zora Warning WN']),
@@ -40,7 +40,7 @@ def create_regions(world, player):
create_lw_region(player, 'Blacksmith Area', None, ['Blacksmiths Hut', 'Bat Cave Cave', 'Bat Cave Ledge Peg', 'Blacksmith WS']),
create_lw_region(player, 'Bat Cave Ledge', None, ['Bat Cave Drop']),
create_lw_region(player, 'Hyrule Castle Area', None, ['Hyrule Castle Secret Entrance Drop', 'Top of Pyramid', 'Hyrule Castle Main Gate (South)', 'Hyrule Castle Inner East Rock', 'Hyrule Castle WN', 'Hyrule Castle SW', 'Hyrule Castle SE']),
create_lw_region(player, 'Hyrule Castle Courtyard', None, ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Entrance (South)', 'Top of Pyramid']),
create_lw_region(player, 'Hyrule Castle Courtyard', None, ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Entrance (South)', 'Hyrule Castle Main Gate (North)', 'Top of Pyramid (Inner)']),
create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (West)', 'Agahnims Tower', 'Hyrule Castle Entrance (East)', 'Hyrule Castle Ledge Drop', 'Hyrule Castle Ledge Courtyard Drop']),
create_lw_region(player, 'Hyrule Castle East Entry', None, ['Hyrule Castle Outer East Rock', 'Hyrule Castle ES']),
create_lw_region(player, 'Wooden Bridge Area', None, ['Wooden Bridge Water Drop', 'Wooden Bridge NW', 'Wooden Bridge NE', 'Wooden Bridge SW']),
@@ -67,26 +67,26 @@ def create_regions(world, player):
create_lw_region(player, 'Desert Area', None, ['Aginahs Cave', 'Desert Palace Statue Move', 'Desert ES']),
create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (West)', 'Desert Ledge Outer Rocks', 'Desert Ledge Drop']),
create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Inner Rocks']),
create_lw_region(player, 'Desert Checkerboard Ledge', None, ['Checkerboard Cave', 'Desert Ledge Drop']),
create_lw_region(player, 'Desert Checkerboard Ledge', None, ['Checkerboard Cave', 'Checkerboard Ledge Drop']),
create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)']),
create_lw_region(player, 'Desert Palace Mouth', None, ['Desert Palace Entrance (East)', 'Desert Ledge Drop']),
create_lw_region(player, 'Desert Palace Transporter Ledge', None, ['Desert Ledge Drop', 'Desert Teleporter']),
create_lw_region(player, 'Bombos Tablet Ledge', ['Bombos Tablet'], ['Desert Ledge Drop', 'Desert EC']),
create_lw_region(player, 'Desert Palace Mouth', None, ['Desert Palace Entrance (East)', 'Desert Mouth Drop']),
create_lw_region(player, 'Desert Palace Teleporter Ledge', None, ['Desert Teleporter Drop', 'Desert Teleporter']),
create_lw_region(player, 'Bombos Tablet Ledge', ['Bombos Tablet'], ['Bombos Tablet Drop', 'Desert EC']),
create_lw_region(player, 'Purple Chest Area', ['Purple Chest'], ['Desert Fairy', '50 Rupee Cave', 'Purple Chest WS', 'Purple Chest EC', 'Purple Chest ES']),
create_lw_region(player, 'Purple Chest Ledge', None, ['Purple Chest Ledge Drop', 'Purple Chest WC']),
create_lw_region(player, 'Dam Area', ['Sunken Treasure'], ['Dam', 'Dam WC', 'Dam WS', 'Dam NC', 'Dam EC']),
create_lw_region(player, 'Statues Area', None, ['Light Hype Fairy', 'Statues NC', 'Statues WN', 'Statues WC', 'Statues WS', 'Statues SC']),
create_lw_region(player, 'South Pass Area', None, ['South Pass WC', 'South Pass NC', 'South Pass ES']),
create_lw_region(player, 'Lake Hylia Area', None, ['Lake Hylia Fortune Teller', 'Cave Shop (Lake Hylia)', 'Lake Hylia Water Drop', 'Lake Hylia NW']),
create_lw_region(player, 'Lake Hylia South Shore', None, ['Mini Moldorm Cave', 'Lake Hylia Water Drop', 'Lake Hylia WS', 'Lake Hylia ES']),
create_lw_region(player, 'Lake Hylia Northeast Bank', None, ['Lake Hylia Water Drop', 'Lake Hylia NE']),
create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Water Drop', 'Lake Hylia Teleporter']),
create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island'], ['Lake Hylia Water Drop']),
create_lw_region(player, 'Lake Hylia South Shore', None, ['Mini Moldorm Cave', 'Lake Hylia South Water Drop', 'Lake Hylia WS', 'Lake Hylia ES']),
create_lw_region(player, 'Lake Hylia Northeast Bank', None, ['Lake Hylia Northeast Water Drop', 'Lake Hylia NE']),
create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Water Drop', 'Lake Hylia Teleporter']),
create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island'], ['Lake Hylia Island Water Drop']),
create_lw_region(player, 'Lake Hylia Water', None, ['Lake Hylia Central Island Pier', 'Lake Hylia West Pier', 'Lake Hylia East Pier', 'Lake Hylia NC', 'Lake Hylia EC', 'Lake Hylia Whirlpool']),
create_lw_region(player, 'Octoballoon Area', None, ['Octoballoon Water Drop', 'Octoballoon WS', 'Octoballoon NE']),
create_lw_region(player, 'Octoballoon Water', None, ['Octoballoon Pier', 'Octoballoon WC', 'Octoballoon Whirlpool']),
create_lw_region(player, 'Octoballoon Water Ledge', None, ['Octoballoon Water Drop', 'Octoballoon NW']),
create_lw_region(player, 'Ice Rod Cave Area', None, ['Ice Rod Cave', 'Good Bee Cave', '20 Rupee Cave', 'Ice Rod Water Drop', 'Ice Rod Cave SE', 'Ice Rod Cave SW']),
create_lw_region(player, 'Octoballoon Water Ledge', None, ['Octoballoon Waterfall Water Drop', 'Octoballoon NW']),
create_lw_region(player, 'Ice Rod Cave Area', None, ['Ice Rod Cave', 'Good Bee Cave', '20 Rupee Cave', 'Ice Rod Cave SE', 'Ice Rod Cave SW']),
create_cave_region(player, 'Blinds Hideout', 'a bounty of five items', ["Blind\'s Hideout - Top",
"Blind\'s Hideout - Left",
"Blind\'s Hideout - Right",
@@ -159,7 +159,7 @@ def create_regions(world, player):
create_lw_region(player, 'Spectacle Rock Ledge', ['Spectacle Rock'], ['Spectacle Rock Drop']),
create_lw_region(player, 'East Death Mountain (Top West)', None, ['DM Hammer Bridge (West)', 'East Death Mountain WN']),
create_lw_region(player, 'East Death Mountain (Top East)', None, ['Paradox Cave (Top)', 'DM Hammer Bridge (East)', 'East Death Mountain Spiral Drop', 'East Death Mountain Fairy Drop', 'East Death Mountain EN']),
create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'East DM Ledge Drop']),
create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Ledge Drop']),
create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave']),
create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)']),
create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Plateau Drop', 'Fairy Ascension Cave (Bottom)']),
@@ -196,14 +196,14 @@ def create_regions(world, player):
create_dw_region(player, 'Skull Woods Forest', None, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)',
'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)', 'Skull Woods Bush Rock (East)', 'Lost Woods Mirror Spot', 'Skull Woods SE']),
create_dw_region(player, 'Skull Woods Portal Entry', None, ['Skull Woods Bush Rock (West)', 'Lost Woods Mirror Spot', 'Skull Woods SC']),
create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section', 'Lost Woods Mirror Spot']),
create_dw_region(player, 'Skull Woods Forgotten Path (Southwest)', None, ['Skull Woods Forgotten Bush (West)', 'Lost Woods Mirror Spot', 'Skull Woods SW']),
create_dw_region(player, 'Skull Woods Forgotten Path (Northeast)', None, ['Skull Woods Forgotten Bush (East)', 'Lost Woods Mirror Spot', 'Skull Woods WN']),
create_dw_region(player, 'Skull Woods Portal Entry', None, ['Skull Woods Bush Rock (West)', 'Lost Woods Entry Mirror Spot', 'Skull Woods SC']),
create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section', 'Lost Woods Pedestal Mirror Spot']),
create_dw_region(player, 'Skull Woods Forgotten Path (Southwest)', None, ['Skull Woods Forgotten Bush (West)', 'Lost Woods Southwest Mirror Spot', 'Skull Woods SW']),
create_dw_region(player, 'Skull Woods Forgotten Path (Northeast)', None, ['Skull Woods Forgotten Bush (East)', 'Lost Woods Northeast Mirror Spot', 'Skull Woods WN']),
create_dw_region(player, 'Dark Lumberjack Area', None, ['Dark World Lumberjack Shop', 'Lumberjack Mirror Spot', 'Dark Lumberjack WN', 'Dark Lumberjack SW']),
create_dw_region(player, 'Bumper Cave Area', None, ['Bumper Cave Entrance Rock', 'DM Ascent Mirror Spot', 'Bumper Cave NW', 'Bumper Cave SE']),
create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'DM Ascent Entrance Mirror Spot', 'Bumper Cave Ledge Drop']),
create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave (Top)', 'DM Ascent Ledge Mirror Spot', 'Bumper Cave Ledge Drop']),
create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave (Top)', 'DM Ascent Ledge Mirror Spot', 'Bumper Cave Entrance Drop']),
create_dw_region(player, 'Skull Woods Pass West Area', None, ['Skull Woods Pass Bush Row (West)', 'Lost Woods Pass West Mirror Spot', 'Skull Woods Pass NW', 'Skull Woods Pass SW']),
create_dw_region(player, 'Skull Woods Pass East Top Area', None, ['Skull Woods Pass Bush Row (East)', 'Skull Woods Pass Rock (Top)', 'Lost Woods Pass East Top Mirror Spot', 'Skull Woods Pass NE']),
create_dw_region(player, 'Skull Woods Pass East Bottom Area', None, ['Skull Woods Pass Rock (Bottom)', 'Lost Woods East Bottom Mirror Spot', 'Skull Woods Pass SE']),
@@ -213,32 +213,32 @@ def create_regions(world, player):
create_dw_region(player, 'Dark Chapel Area', None, ['Dark Sanctuary Hint', 'Bonk Rock Ledge Mirror Spot', 'Dark Chapel WN', 'Dark Chapel WS', 'Dark Chapel EC']),
create_dw_region(player, 'Dark Graveyard Area', None, ['Graveyard Ledge Mirror Spot', 'Kings Grave Mirror Spot', 'Dark Graveyard WC', 'Dark Graveyard ES']),
create_dw_region(player, 'Qirn Jump Area', None, ['Qirn Jump Water Drop', 'Useless Fairy Mirror Spot', 'Qirn Jump WC', 'Qirn Jump SW']),
create_dw_region(player, 'Qirn Jump East Bank', None, ['Qirn Jump Water Drop', 'Useless Fairy East Mirror Spot', 'Qirn Jump SE', 'Qirn Jump EC', 'Qirn Jump ES']),
create_dw_region(player, 'Qirn Jump East Bank', None, ['Qirn Jump East Water Drop', 'Useless Fairy East Mirror Spot', 'Qirn Jump SE', 'Qirn Jump EC', 'Qirn Jump ES']),
create_dw_region(player, 'Qirn Jump Water', None, ['Qirn Jump Pier', 'Qirn Jump EN', 'Qirn Jump SC', 'Qirn Jump Whirlpool']),
create_dw_region(player, 'Dark Witch Area', None, ['Dark World Potion Shop', 'Dark Witch Water Drop', 'Potion Shop Mirror Spot', 'Dark Witch Rock (South)', 'Dark Witch WC', 'Dark Witch WS']),
create_dw_region(player, 'Dark Witch Northeast', None, ['Dark Witch Water Drop', 'Dark Witch Rock (North)', 'Potion Shop Northeast Mirror Spot', 'Dark Witch EC']),
create_dw_region(player, 'Dark Witch Northeast', None, ['Dark Witch Northeast Water Drop', 'Dark Witch Rock (North)', 'Potion Shop Northeast Mirror Spot', 'Dark Witch EC']),
create_dw_region(player, 'Dark Witch Water', None, ['Dark Witch WN', 'Dark Witch EN']),
create_dw_region(player, 'Catfish Approach Area', None, ['Catfish Approach Water Drop', 'Zora Warning Mirror Spot', 'Catfish Approach WC', 'Catfish Approach NE']),
create_dw_region(player, 'Catfish Approach Water', None, ['Catfish Approach WN']),
create_dw_region(player, 'Catfish Area', ['Catfish'], ['Zora Approach Mirror Spot', 'Catfish SE']),
create_dw_region(player, 'Village of Outcasts Area', None, ['Chest Game', 'Thieves Town', 'C-Shaped House', 'Brewery', 'Village of Outcasts Pegs', 'Kakariko Mirror Spot', 'Village of Outcasts NW', 'Village of Outcasts NC', 'Village of Outcasts NE', 'Village of Outcasts ES', 'Village of Outcasts SE']),
create_dw_region(player, 'Dark Grassy Lawn', None, ['Dark World Shop', 'Kakariko Mirror Spot', 'Grassy Lawn Pegs']),
create_dw_region(player, 'Hammer Peg Entry', None, ['Peg Area Rocks (West)', 'Blacksmith Mirror Spot', 'Hammer Pegs WS']),
create_dw_region(player, 'Dark Grassy Lawn', None, ['Dark World Shop', 'Kakariko Grass Mirror Spot', 'Grassy Lawn Pegs']),
create_dw_region(player, 'Hammer Peg Entry', None, ['Peg Area Rocks (West)', 'Blacksmith Entry Mirror Spot', 'Hammer Pegs WS']),
create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Dark World Hammer Peg Cave', 'Blacksmith Mirror Spot', 'Bat Cave Ledge Mirror Spot', 'Peg Area Rocks (East)']),
create_dw_region(player, 'Pyramid Area', ['Pyramid'], ['Pyramid Fairy', 'Pyramid Hole', 'HC Ledge Mirror Spot', 'HC Courtyard Mirror Spot', 'HC Area Mirror Spot', 'HC East Entry Mirror Spot', 'Pyramid ES']),
create_dw_region(player, 'Pyramid Exit Ledge', None, ['Pyramid Entrance', 'Pyramid Exit Drop']),
create_dw_region(player, 'Pyramid Pass', ['Pyramid'], ['HC Area Mirror Spot', 'Pyramid SW', 'Pyramid SE']),
create_dw_region(player, 'Pyramid Pass', ['Pyramid'], ['HC Area South Mirror Spot', 'Pyramid SW', 'Pyramid SE']),
create_dw_region(player, 'Broken Bridge Area', None, ['Broken Bridge Hammer Rock (South)', 'Broken Bridge Water Drop', 'Wooden Bridge Mirror Spot', 'Broken Bridge SW']),
create_dw_region(player, 'Broken Bridge Northeast', None, ['Broken Bridge Hammer Rock (North)', 'Broken Bridge Hookshot Gap', 'Broken Bridge Water Drop', 'Wooden Bridge Mirror Spot', 'Broken Bridge NE']),
create_dw_region(player, 'Broken Bridge West', None, ['Broken Bridge Water Drop', 'Wooden Bridge Mirror Spot', 'Broken Bridge NW']),
create_dw_region(player, 'Broken Bridge Northeast', None, ['Broken Bridge Hammer Rock (North)', 'Broken Bridge Hookshot Gap', 'Broken Bridge Northeast Water Drop', 'Wooden Bridge Northeast Mirror Spot', 'Broken Bridge NE']),
create_dw_region(player, 'Broken Bridge West', None, ['Broken Bridge West Water Drop', 'Wooden Bridge West Mirror Spot', 'Broken Bridge NW']),
create_dw_region(player, 'Broken Bridge Water', None, ['Broken Bridge NC']),
create_dw_region(player, 'Dark Dune Area', None, ['Sand Dune Mirror Spot', 'Dark Dune NW', 'Dark Dune WN', 'Dark Dune SC']),
create_dw_region(player, 'Palace of Darkness Area', None, ['Palace of Darkness Hint', 'Palace of Darkness', 'Eastern Palace Mirror Spot', 'Palace of Darkness SW', 'Palace of Darkness SE']),
create_dw_region(player, 'Palace of Darkness Nook Area', None, ['East Dark World Hint', 'Eastern Nook Mirror Spot', 'Palace of Darkness Nook NE']),
create_dw_region(player, 'Dig Game Area', ['Digging Game'], ['Dig Game Drop To Ledge', 'Maze Race Mirror Spot', 'Dig Game ES']),
create_dw_region(player, 'Dig Game Ledge', None, ['Maze Race Mirror Spot', 'Dig Game Ledge Drop', 'Dig Game EC']),
create_dw_region(player, 'Dig Game Area', ['Digging Game'], ['Dig Game To Ledge Drop', 'Maze Race Mirror Spot', 'Dig Game ES']),
create_dw_region(player, 'Dig Game Ledge', None, ['Maze Race Ledge Mirror Spot', 'Dig Game Ledge Drop', 'Dig Game EC']),
create_dw_region(player, 'Frog Area', ['Frog'], ['Frog Ledge Drop', 'Kakariko Suburb Mirror Spot', 'Frog NE']),
create_dw_region(player, 'Archery Game Area', None, ['Archery Game', 'Archery Game Rock', 'Kakariko Suburb Mirror Spot', 'Frog WC', 'Frog WS', 'Frog ES']),
create_dw_region(player, 'Archery Game Area', None, ['Archery Game', 'Archery Game Rock', 'Kakariko Suburb South Mirror Spot', 'Frog WC', 'Frog WS', 'Frog ES']),
create_dw_region(player, 'Stumpy Area', ['Stumpy'], ['Flute Boy Mirror Spot', 'Stumpy SC']),
create_dw_region(player, 'Stumpy Pass', None, ['Flute Boy Pass Mirror Spot', 'Stumpy WS', 'Stumpy SW']),
create_dw_region(player, 'Circle of Bushes Area', None, ['Cave 45 Mirror Spot', 'Circle of Bushes NW', 'Circle of Bushes NC', 'Circle of Bushes EC']),
@@ -247,7 +247,7 @@ def create_regions(world, player):
create_dw_region(player, 'Dark Bonk Rock Area', None, ['Bonk Fairy (Dark)', 'Central Bonk Rock Mirror Spot', 'Dark Bonk Rock NW', 'Dark Bonk Rock SW', 'Dark Bonk Rock EN', 'Dark Bonk Rock EC', 'Dark Bonk Rock ES']),
create_dw_region(player, 'Big Bomb Shop Area', None, ['Big Bomb Shop', 'Links House Mirror Spot', 'Big Bomb Shop NE', 'Big Bomb Shop WN', 'Big Bomb Shop WC', 'Big Bomb Shop WS', 'Big Bomb Shop SC', 'Big Bomb Shop ES']),
create_dw_region(player, 'Hammer Bridge North Area', None, ['Hammer Bridge Pegs (North)', 'Hammer Bridge Water Drop', 'Stone Bridge Mirror Spot', 'Hammer Bridge NC', 'Hammer Bridge EN']),
create_dw_region(player, 'Hammer Bridge South Area', None, ['Hammer Bridge Pegs (South)', 'Stone Bridge Mirror Spot', 'Hammer Bridge WS', 'Hammer Bridge SC']),
create_dw_region(player, 'Hammer Bridge South Area', None, ['Hammer Bridge Pegs (South)', 'Stone Bridge South Mirror Spot', 'Hammer Bridge WS', 'Hammer Bridge SC']),
create_dw_region(player, 'Hammer Bridge Water', None, ['Hammer Bridge Pier', 'Hobo Mirror Spot', 'Hammer Bridge EC']),
create_dw_region(player, 'Dark Tree Line Area', None, ['Dark Lake Hylia Fairy', 'Tree Line Mirror Spot', 'Dark Tree Line WN', 'Dark Tree Line NW', 'Dark Tree Line SE']),
create_dw_region(player, 'Dark Tree Line Water', None, ['Dark Tree Line WC', 'Dark Tree Line SC']),
@@ -257,14 +257,14 @@ def create_regions(world, player):
create_dw_region(player, 'Hype Cave Area', None, ['Hype Cave', 'Statues Mirror Spot', 'Hype Cave NC', 'Hype Cave WN', 'Hype Cave WC', 'Hype Cave WS', 'Hype Cave SC']),
create_dw_region(player, 'Dark South Pass Area', None, ['South Pass Mirror Spot', 'Dark South Pass WC', 'Dark South Pass NC', 'Dark South Pass ES']),
create_dw_region(player, 'Dark Lake Hylia Area', None, ['Dark Lake Hylia Shop', 'Dark Lake Hylia Water Drop', 'Lake Hylia Mirror Spot', 'Dark Lake Hylia NW']),
create_dw_region(player, 'Dark Lake Hylia Northeast Bank', None, ['Dark Lake Hylia Water Drop', 'Lake Hylia Northeast Mirror Spot', 'Dark Lake Hylia NE']),
create_dw_region(player, 'Dark Lake Hylia Ledge (West)', None, ['Dark Lake Hylia Water Drop', 'South Shore Mirror Spot', 'Dark Lake Hylia WS']),
create_dw_region(player, 'Dark Lake Hylia Ledge (East)', None, ['Dark Lake Hylia Water Drop', 'South Shore Mirror Spot', 'Dark Lake Hylia ES']),
create_dw_region(player, 'Dark Lake Hylia Northeast Bank', None, ['Dark Lake Hylia Northeast Water Drop', 'Lake Hylia Northeast Mirror Spot', 'Dark Lake Hylia NE']),
create_dw_region(player, 'Dark Lake Hylia Ledge (West)', None, ['Dark Lake Hylia Southwest Water Drop', 'South Shore Mirror Spot', 'Dark Lake Hylia WS']),
create_dw_region(player, 'Dark Lake Hylia Ledge (East)', None, ['Dark Lake Hylia Southeast Water Drop', 'South Shore East Mirror Spot', 'Dark Lake Hylia ES']),
create_dw_region(player, 'Dark Lake Hylia Water', None, ['Lake Hylia Island Mirror Spot', 'Dark Lake Hylia Northeast Pier', 'Dark Lake Hylia NC', 'Dark Lake Hylia EC']),
create_dw_region(player, 'Ice Palace Area', None, ['Ice Palace', 'Lake Hylia Central Island Mirror Spot']),
create_dw_region(player, 'Southeast DW Area', None, ['Southeast DW Water Drop', 'Octoballoon Mirror Spot', 'Southeast DW WS', 'Southeast DW NE']),
create_dw_region(player, 'Southeast DW Water', None, ['Southeast DW Pier', 'Southeast DW Whirlpool', 'Southeast DW WC']),
create_dw_region(player, 'Southeast DW Water Ledge', None, ['Southeast DW Water Drop', 'Southeast DW NW']),
create_dw_region(player, 'Southeast DW Water Ledge', None, ['Southeast DW Waterfall Water Drop', 'Southeast DW NW']),
create_dw_region(player, 'Dark Shopping Mall Area', None, ['Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave', 'Ice Rod Cave Mirror Spot', 'Dark Shopping Mall SE', 'Dark Shopping Mall SW']),
create_cave_region(player, 'Palace of Darkness Hint', 'a storyteller'),
create_cave_region(player, 'East Dark World Hint', 'a storyteller'),

View File

@@ -440,6 +440,7 @@ def default_rules(world, player):
set_rule(world.get_entrance('Checkerboard Cave', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has('Cape', player) or state.has_beam_sword(player) or state.has('Beat Agahnim 1', player)) # barrier gets removed after killing agahnim, relevant for entrance shuffle
set_rule(world.get_entrance('Top of Pyramid', player), lambda state: state.has('Beat Agahnim 1', player))
set_rule(world.get_entrance('Top of Pyramid (Inner)', player), lambda state: state.has('Beat Agahnim 1', player))
set_rule(world.get_entrance('Old Man Cave Exit (West)', player), lambda state: False) # drop cannot be climbed up
set_rule(world.get_entrance('Broken Bridge (West)', player), lambda state: state.has('Hookshot', player))
set_rule(world.get_entrance('Broken Bridge (East)', player), lambda state: state.has('Hookshot', player))
@@ -469,6 +470,7 @@ def default_rules(world, player):
set_rule(world.get_entrance('Skull Woods First Section Hole (North)', player), lambda state: state.has_Pearl(player)) # bunny cannot lift bush
set_rule(world.get_entrance('Skull Woods Second Section Hole', player), lambda state: state.has_Pearl(player)) # bunny cannot lift bush
set_rule(world.get_entrance('Maze Race Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Maze Race Ledge Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Cave 45 Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), lambda state: state.has_Pearl(player) and state.has('Hammer', player))
set_rule(world.get_entrance('Lake Hylia Island Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has_Mirror(player) and state.has('Flippers', player))
@@ -507,6 +509,10 @@ def default_rules(world, player):
# New OW Shuffle Rules
set_rule(world.get_entrance('Lost Woods Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Lost Woods Entry Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Lost Woods Pedestal Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Lost Woods Southwest Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Lost Woods Northeast Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Lumberjack Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('DM Ascent Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Lost Woods Pass West Mirror Spot', player), lambda state: state.has_Mirror(player))
@@ -523,15 +529,21 @@ def default_rules(world, player):
set_rule(world.get_entrance('Zora Warning Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Zora Approach Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Kakariko Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Kakariko Grass Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Blacksmith Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Blacksmith Entry Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('HC Courtyard Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('HC Area Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('HC Area South Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('HC East Entry Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Wooden Bridge Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Wooden Bridge Northeast Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Wooden Bridge West Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Sand Dune Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Eastern Palace Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Eastern Nook Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Kakariko Suburb Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Kakariko Suburb South Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Flute Boy Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Flute Boy Pass Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('C Whirlpool Mirror Spot', player), lambda state: state.has_Mirror(player))
@@ -539,6 +551,7 @@ def default_rules(world, player):
set_rule(world.get_entrance('Central Bonk Rock Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Links House Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Stone Bridge Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Stone Bridge South Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Hobo Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player) and state.has_Mirror(player)) #prob overkill, but ensures cant stand in shallow water to mirror
set_rule(world.get_entrance('Tree Line Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Bombos Tablet Mirror Spot', player), lambda state: state.has_Mirror(player))
@@ -549,6 +562,7 @@ def default_rules(world, player):
set_rule(world.get_entrance('Lake Hylia Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Lake Hylia Northeast Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('South Shore Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('South Shore East Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Octoballoon Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Ice Rod Cave Mirror Spot', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('West Death Mountain (Top) Mirror Spot', player), lambda state: state.has_Mirror(player))
@@ -573,20 +587,33 @@ def default_rules(world, player):
set_rule(world.get_entrance('Skull Woods Pass Rock (Bottom)', player), lambda state: state.has_Pearl(player) and state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('Dark Witch Rock (North)', player), lambda state: state.has_Pearl(player) and state.can_lift_rocks(player))
set_rule(world.get_entrance('Dark Witch Rock (South)', player), lambda state: state.has_Pearl(player) and state.can_lift_rocks(player))
set_rule(world.get_entrance('Dig Game Drop To Ledge', player), lambda state: state.has_Pearl(player) and state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('Dig Game To Ledge Drop', player), lambda state: state.has_Pearl(player) and state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('Archery Game Rock', player), lambda state: state.has_Pearl(player) and state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('Dark C Whirlpool Rock (Bottom)', player), lambda state: state.has_Pearl(player) and state.can_lift_rocks(player))
set_rule(world.get_entrance('Dark C Whirlpool Rock (Top)', player), lambda state: state.has_Pearl(player) and state.can_lift_rocks(player))
set_rule(world.get_entrance('Useless Fairy Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Useless Fairy East Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Wooden Bridge Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia South Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Northeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Central Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Island Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Octoballoon Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Octoballoon Waterfall Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Qirn Jump Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Qirn Jump East Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Broken Bridge Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Broken Bridge Northeast Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Broken Bridge West Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Hammer Bridge Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Dark Lake Hylia Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Dark Lake Hylia Northeast Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Dark Lake Hylia Southwest Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Dark Lake Hylia Southeast Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Southeast DW Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Southeast DW Waterfall Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
set_rule(world.get_entrance('Ice Rod Cave SW', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Dark Shopping Mall SW', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
@@ -772,8 +799,10 @@ def no_glitches_rules(world, player):
if world.mode[player] != 'inverted':
# TODO: move some OW fake flipper situations here, new Water Drop Exits will need to be created
add_rule(world.get_entrance('Potion Shop Water Drop', player), lambda state: state.has('Flippers', player))
add_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), lambda state: state.has('Flippers', player))
add_rule(world.get_entrance('Zora Warning Water Drop', player), lambda state: state.has('Flippers', player))
add_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
add_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
add_rule(world.get_entrance('Catfish Approach Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player))
else:
add_rule(world.get_entrance('Zoras River', player), lambda state: state.has_Pearl(player) and (state.has('Flippers', player) or state.can_lift_rocks(player)))