diff --git a/EntranceShuffle.py b/EntranceShuffle.py index f0702734..12ad2055 100644 --- a/EntranceShuffle.py +++ b/EntranceShuffle.py @@ -3107,14 +3107,15 @@ inverted_mandatory_connections = [('Links House S&Q', 'Inverted Links House'), ('Bomb Hut Inner Bushes', 'Light World'), ('Bomb Hut Outer Bushes', 'Bomb Hut Area'), ('Bomb Hut Mirror Spot', 'West Dark World')] + # non-shuffled entrance links default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'), ("Blinds Hideout", "Blinds Hideout"), ('Dam', 'Dam'), ('Lumberjack House', 'Lumberjack House'), - ("Hyrule Castle Secret Entrance Drop", "Hyrule Castle Secret Entrance"), - ("Hyrule Castle Secret Entrance Stairs", "Hyrule Castle Secret Entrance"), - ("Hyrule Castle Secret Entrance Exit", "Hyrule Castle Courtyard"), + ('Hyrule Castle Secret Entrance Drop', 'Hyrule Castle Secret Entrance'), + ('Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Secret Entrance'), + ('Hyrule Castle Secret Entrance Exit', 'Hyrule Castle Courtyard Northeast'), ('Bonk Fairy (Light)', 'Bonk Fairy (Light)'), ('Lake Hylia Fairy', 'Lake Hylia Healer Fairy'), ('Lake Hylia Fortune Teller', 'Lake Hylia Fortune Teller'), @@ -3152,7 +3153,7 @@ default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'), ('Kakariko Shop', 'Kakariko Shop'), ('Lost Woods Hideout Drop', 'Lost Woods Hideout (top)'), ('Lost Woods Hideout Stump', 'Lost Woods Hideout (bottom)'), - ('Lost Woods Hideout Exit', 'Lost Woods Area'), + ('Lost Woods Hideout Exit', 'Lost Woods East Area'), ('Lumberjack Tree Tree', 'Lumberjack Tree (top)'), ('Lumberjack Tree Cave', 'Lumberjack Tree (bottom)'), ('Lumberjack Tree Exit', 'Lumberjack Area'), @@ -3201,7 +3202,7 @@ default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'), ('Paradox Cave (Top)', 'Paradox Cave'), ('Paradox Cave Exit (Bottom)', 'East Death Mountain (Bottom)'), ('Paradox Cave Exit (Middle)', 'East Death Mountain (Bottom)'), - ('Paradox Cave Exit (Top)', 'East Death Mountain (Top East)'), + ('Paradox Cave Exit (Top)', 'East Death Mountain (East Top)'), ('Hookshot Fairy', 'Hookshot Fairy'), ('Fairy Ascension Cave (Bottom)', 'Fairy Ascension Cave (Bottom)'), ('Fairy Ascension Cave (Top)', 'Fairy Ascension Cave (Top)'), @@ -3247,16 +3248,18 @@ default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'), ('Cave Shop (Dark Death Mountain)', 'Cave Shop (Dark Death Mountain)'), ('Dark Death Mountain Fairy', 'Dark Death Mountain Healer Fairy'), ('Superbunny Cave (Bottom)', 'Superbunny Cave'), - ('Superbunny Cave Exit (Top)', 'Dark Death Mountain (Top East)'), + ('Superbunny Cave Exit (Top)', 'Dark Death Mountain (East Top)'), ('Superbunny Cave Exit (Bottom)', 'Dark Death Mountain (East Bottom)'), - ('Hookshot Cave Exit (South)', 'Dark Death Mountain (Top East)'), + ('Hookshot Cave Exit (South)', 'Dark Death Mountain (East Top)'), ('Hookshot Cave Exit (North)', 'Dark Death Mountain Floating Island'), ('Hookshot Cave Back Entrance', 'Hookshot Cave'), ('Mimic Cave', 'Mimic Cave'), ('Pyramid Hole', 'Pyramid'), ('Pyramid Exit', 'Pyramid Exit Ledge'), - ('Pyramid Entrance', 'Bottom of Pyramid') + ('Pyramid Entrance', 'Bottom of Pyramid'), + ('Inverted Pyramid Hole', 'Pyramid'), + ('Inverted Pyramid Entrance', 'Bottom of Pyramid') ] inverted_default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'), @@ -3465,7 +3468,7 @@ default_dungeon_connections = [('Desert Palace Entrance (South)', 'Desert South ('Turtle Rock Isolated Ledge Entrance', 'Turtle Rock Eye Bridge Portal'), ('Ganons Tower', 'Ganons Tower Portal'), - ('Ganons Tower Exit', 'Dark Death Mountain (Top West)') + ('Ganons Tower Exit', 'Dark Death Mountain (West Top)') ] inverted_default_dungeon_connections = [('Desert Palace Entrance (South)', 'Desert South Portal'), diff --git a/OverworldShuffle.py b/OverworldShuffle.py index 735d49b2..16191d5a 100644 --- a/OverworldShuffle.py +++ b/OverworldShuffle.py @@ -301,6 +301,14 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('Flute Spot 6', 'Desert Palace Teleporter Ledge'), ('Flute Spot 7', 'Dam Area'), ('Flute Spot 8', 'Octoballoon Area'), + ('Inverted Flute Spot 1', 'Dark Death Mountain (West Bottom)'), + ('Inverted Flute Spot 2', 'Dark Witch Area'), + ('Inverted Flute Spot 3', 'Village of Outcasts Area'), + ('Inverted Flute Spot 4', 'Big Bomb Shop Area'), + ('Inverted Flute Spot 5', 'Palace of Darkness Nook Area'), + ('Inverted Flute Spot 6', 'Misery Mire Ledge'), + ('Inverted Flute Spot 7', 'Swamp Area'), + ('Inverted Flute Spot 8', 'Bomber Corner Area'), # Whirlpool Connections ('C Whirlpool', 'River Bend Water'), @@ -313,6 +321,8 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('Bomber Corner Whirlpool', 'Qirn Jump Water'), # Intra-tile OW Connections + ('Lost Woods Bush (West)', 'Lost Woods East Area'), + ('Lost Woods Bush (East)', 'Lost Woods West Area'), ('Death Mountain Entrance Rock', 'Death Mountain Entrance'), ('Death Mountain Entrance Drop', 'Mountain Entry Area'), ('Death Mountain Return Drop', 'Mountain Entry Area'), @@ -320,6 +330,8 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('Kings Grave Outer Rocks', 'Kings Grave Area'), ('Kings Grave Inner Rocks', 'Graveyard Area'), ('Graveyard Ledge Drop', 'Graveyard Area'), + ('Graveyard Ladder (Top)', 'Graveyard Area'), + ('Graveyard Ladder (Bottom)', 'Graveyard Ledge'), ('River Bend Water Drop', 'River Bend Water'), ('River Bend East Water Drop', 'River Bend Water'), ('River Bend West Pier', 'River Bend Area'), @@ -329,16 +341,30 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('Potion Shop Rock (South)', 'Potion Shop Northeast'), ('Potion Shop Rock (North)', 'Potion Shop Area'), ('Zora Warning Water Drop', 'Zora Warning Water'), + ('Kakariko Yard Bush (South)', 'Kakariko Grass Yard'), + ('Kakariko Yard Bush (North)', 'Kakariko Area'), + ('Kakariko Southwest Bush (North)', 'Kakariko Southwest'), + ('Kakariko Southwest Bush (South)', 'Kakariko Area'), + ('Wooden Bridge Bush (North)', 'Wooden Bridge Area'), ('Bat Cave Ledge Peg', 'Bat Cave Ledge'), + ('Hyrule Castle Courtyard Bush (North)', 'Hyrule Castle Courtyard'), + ('Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Courtyard Northeast'), ('Hyrule Castle Main Gate (South)', 'Hyrule Castle Courtyard'), ('Hyrule Castle Main Gate (North)', 'Hyrule Castle Area'), ('Hyrule Castle Ledge Drop', 'Hyrule Castle Area'), ('Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Courtyard'), ('Hyrule Castle Inner East Rock', 'Hyrule Castle East Entry'), ('Hyrule Castle Outer East Rock', 'Hyrule Castle Area'), + ('Wooden Bridge Bush (South)', 'Wooden Bridge Northeast'), + ('Wooden Bridge Bush (North)', 'Wooden Bridge Area'), ('Wooden Bridge Water Drop', 'Wooden Bridge Water'), + ('Wooden Bridge Northeast Water Drop', 'Wooden Bridge Water'), ('Maze Race Ledge Drop', 'Maze Race Area'), + ('Flute Boy Bush (North)', 'Cave 45 Area'), + ('Flute Boy Bush (South)', 'Cave 45 Flute Boy Entry'), ('Cave 45 Ledge Drop', 'Cave 45 Area'), + ('Cave 45 Inverted Leave', 'Cave 45 Area'), + ('Cave 45 Inverted Approach', 'Cave 45 Ledge'), ('C Whirlpool Rock (Bottom)', 'C Whirlpool Outer Area'), ('C Whirlpool Rock (Top)', 'C Whirlpool Area'), ('Desert Palace Statue Move', 'Desert Palace Stairs'), @@ -346,10 +372,14 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('Desert Ledge Outer Rocks', 'Desert Palace Entrance (North) Spot'), ('Desert Ledge Inner Rocks', 'Desert Ledge'), ('Checkerboard Ledge Drop', 'Desert Area'), + ('Checkerboard Ledge Approach', 'Desert Checkerboard Ledge'), + ('Checkerboard Ledge Leave', 'Desert Area'), ('Desert Mouth Drop', 'Desert Area'), ('Desert Teleporter Drop', 'Desert Area'), ('Bombos Tablet Drop', 'Desert Area'), ('Desert Pass Ledge Drop', 'Desert Pass Area'), + ('Desert Pass Ladder (North)', 'Desert Pass Area'), + ('Desert Pass Ladder (South)', 'Desert Pass Ledge'), ('Desert Pass Rocks (North)', 'Desert Pass Southeast'), ('Desert Pass Rocks (South)', 'Desert Pass Area'), ('Lake Hylia Water Drop', 'Lake Hylia Water'), @@ -358,6 +388,7 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('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 Island Pier', 'Lake Hylia Island'), ('Lake Hylia West Pier', 'Lake Hylia Area'), ('Lake Hylia East Pier', 'Lake Hylia Northeast Bank'), ('Octoballoon Water Drop', 'Octoballoon Water'), @@ -366,14 +397,20 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('West Death Mountain Drop', 'West Death Mountain (Bottom)'), ('Spectacle Rock Drop', 'West Death Mountain (Top)'), - ('DM Hammer Bridge (West)', 'East Death Mountain (Top West)'), - ('DM Hammer Bridge (East)', 'East Death Mountain (Top East)'), + ('Spectacle Rock Leave', 'West Death Mountain (Top)'), + ('Spectacle Rock Approach', 'Spectacle Rock Ledge'), + ('DM Hammer Bridge (West)', 'East Death Mountain (West Top)'), + ('DM Hammer Bridge (East)', 'East Death Mountain (East Top)'), + ('Floating Island Bridge (West)', 'East Death Mountain (East Top)'), + ('Floating Island Bridge (East)', 'Death Mountain Floating Island (Light World)'), ('East Death Mountain Spiral Drop', 'Spiral Cave Ledge'), ('East Death Mountain Fairy Drop', 'Fairy Ascension Ledge'), + ('East Death Mountain Mimic Drop', 'Mimic Cave 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'), + ('Mimic Ledge Drop', 'East Death Mountain (Bottom)'), ('DM Broken Bridge (West)', 'East Death Mountain (Bottom)'), ('DM Broken Bridge (East)', 'East Death Mountain (Bottom Left)'), @@ -411,6 +448,7 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('Dig Game Ledge Drop', 'Dig Game Area'), ('Frog Ledge Drop', 'Archery Game Area'), ('Archery Game Rock', 'Frog Area'), + ('Mire Ledge Drop', 'Misery Mire Area'), ('Circle of Bushes Bush (North)', 'Circle of Bushes Area'), ('Circle of Bushes Bush (South)', 'Circle of Bushes Stumpy Entry'), ('Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Outer Area'), @@ -429,8 +467,10 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('Bomber Corner Pier', 'Bomber Corner Area'), ('Dark Death Mountain Drop (West)', 'Dark Death Mountain (West Bottom)'), + ('Dark Death Mountain Ladder (North)', 'Dark Death Mountain (West Bottom)'), + ('Dark Death Mountain Ladder (South)', 'Dark Death Mountain (West Top)'), ('Dark Death Mountain Drop (East)', 'Dark Death Mountain (East Bottom)'), - ('Floating Island Drop', 'Dark Death Mountain (Top East)'), + ('Floating Island Drop', 'Dark Death Mountain (East Top)'), ('Turtle Rock Ledge Drop', 'Turtle Rock Area'), # Portal Connections @@ -440,18 +480,19 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('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'), + ('Desert Teleporter', 'Misery Mire Ledge'), ('Lake Hylia Teleporter', 'Ice Palace Area'), ('West Death Mountain Teleporter', 'Dark Death Mountain (West Bottom)'), ('East Death Mountain Teleporter', 'Dark Death Mountain (East Bottom)'), - ('Turtle Rock Teleporter', 'Turtle Rock Ledge'), + ('TR Pegs Teleporter', 'Turtle Rock Ledge'), # 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'), + ('Lost Woods East Mirror Spot', 'Lost Woods East Area'), + ('Lost Woods Entry Mirror Spot', 'Lost Woods West Area'), + ('Lost Woods Pedestal Mirror Spot', 'Lost Woods West Area'), + ('Lost Woods Southwest Mirror Spot', 'Lost Woods West Area'), + ('Lost Woods East (Forgotten) Mirror Spot', 'Lost Woods East Area'), + ('Lost Woods West (Forgotten) Mirror Spot', 'Lost Woods West Area'), ('Lumberjack Mirror Spot', 'Lumberjack Area'), ('Mountain Entry Mirror Spot', 'Mountain Entry Area'), ('Mountain Entry Entrance Mirror Spot', 'Death Mountain Entrance'), @@ -521,8 +562,8 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('Ice Cave Mirror Spot', 'Ice Cave Area'), ('Spectacle Rock Mirror Spot', 'Spectacle Rock Ledge'), ('West Death Mountain (Top) Mirror Spot', 'West Death Mountain (Top)'), - ('East Death Mountain (Top West) Mirror Spot', 'East Death Mountain (Top West)'), - ('East Death Mountain (Top East) Mirror Spot', 'East Death Mountain (Top East)'), + ('East Death Mountain (West Top) Mirror Spot', 'East Death Mountain (West Top)'), + ('East Death Mountain (East Top) Mirror Spot', 'East Death Mountain (East Top)'), ('Spiral Cave Mirror Spot', 'Spiral Cave Ledge'), ('Mimic Cave Mirror Spot', 'Mimic Cave Ledge'), ('Isolated Ledge Mirror Spot', 'Fairy Ascension Ledge'), @@ -532,6 +573,77 @@ mandatory_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), ('TR Pegs Area Mirror Spot', 'Death Mountain TR Pegs') ] +inverted_mandatory_connections = [('Lake Hylia Island Pier', 'Lake Hylia Island'), + ('Dark Lake Hylia Ice Palace', 'Ice Palace'), + ('Chris Houlihan Room Exit', 'Pyramid Ledge'), + ('Bush Covered Lawn Inner Bushes', 'Light World'), + ('Bush Covered Lawn Outer Bushes', 'Bush Covered Lawn'), + ('Bomb Hut Inner Bushes', 'Light World'), + ('Bomb Hut Outer Bushes', 'Bomb Hut Area'), + ('Secret Passage Inner Bushes', 'Light World'), + ('Secret Passage Outer Bushes', 'Hyrule Castle Secret Entrance Area'), + ('Graveyard Cave Inner Bushes', 'Light World'), + ('Graveyard Cave Outer Bushes', 'Graveyard Cave Area'), + ('Mimic Cave Ledge Access', 'Mimic Cave Ledge'), + ('Mimic Cave Ledge Drop', 'East Death Mountain (Bottom)'), + ('Turtle Rock Tail Drop', 'Turtle Rock (Top)'), + ('Dark Desert Drop?', 'Dark Desert'), + + ('Post Aga Teleporter', 'Light World'), + ('Dark Lake Hylia Central Island Teleporter', 'Lake Hylia Central Island'), + ('Dark Desert Teleporter', 'Light World'), + ('East Dark World Teleporter', 'Light World'), + ('South Dark World Teleporter', 'Light World'), + ('West Dark World Teleporter', 'Light World'), + ('Dark Death Mountain Teleporter (West)', 'Death Mountain'), + ('Dark Death Mountain Teleporter (East)', 'East Death Mountain (Top)'), + ('Dark Death Mountain Teleporter (East Bottom)', 'East Death Mountain (Bottom)'), + + ('Graveyard Cave Mirror Spot', 'West Dark World'), + ('Mire Mirror Spot', 'Dark Desert'), + ('Desert Palace Stairs Mirror Spot', 'Dark Desert'), + ('Desert Palace North Mirror Spot', 'Dark Desert'), + ('Maze Race Mirror Spot', 'West Dark World'), + ('Lake Hylia Central Island Mirror Spot', 'Dark Lake Hylia'), + ('Hammer Peg Area Mirror Spot', 'Hammer Peg Area'), + ('Bumper Cave Ledge Mirror Spot', 'Bumper Cave Ledge'), + ('Bumper Cave Entrance Mirror Spot', 'Bumper Cave Entrance'), + ('Death Mountain Mirror Spot', 'Dark Death Mountain'), + ('East Death Mountain Mirror Spot (Top)', 'Dark Death Mountain'), + ('East Death Mountain Mirror Spot (Bottom)', 'Dark Death Mountain (East Bottom)'), + ('Death Mountain (Top) Mirror Spot', 'Dark Death Mountain'), + ('Dark Death Mountain Ledge Mirror Spot (East)', 'Dark Death Mountain Ledge'), + ('Dark Death Mountain Ledge Mirror Spot (West)', 'Dark Death Mountain Ledge'), + ('Floating Island Mirror Spot', 'Death Mountain Floating Island (Dark World)'), + ('Laser Bridge Mirror Spot', 'Dark Death Mountain Isolated Ledge'), + ('East Dark World Mirror Spot', 'East Dark World'), + ('West Dark World Mirror Spot', 'West Dark World'), + ('South Dark World Mirror Spot', 'South Dark World'), + ('Potion Shop Mirror Spot', 'Northeast Dark World'), + ('Northeast Dark World Mirror Spot', 'Northeast Dark World'), + ('Shopping Mall Mirror Spot', 'Dark Lake Hylia Ledge'), + ('Bush Covered Lawn Mirror Spot', 'Dark Grassy Lawn'), + ('Bomb Hut Mirror Spot', 'West Dark World'), + ('Skull Woods Mirror Spot', 'Skull Woods Forest (West)'), + + ('DDM Flute', 'The Sky'), + ('DDM Landing', 'Dark Death Mountain'), + ('NEDW Flute', 'The Sky'), + ('NEDW Landing', 'Northeast Dark World'), + ('WDW Flute', 'The Sky'), + ('WDW Landing', 'West Dark World'), + ('SDW Flute', 'The Sky'), + ('SDW Landing', 'South Dark World'), + ('EDW Flute', 'The Sky'), + ('EDW Landing', 'East Dark World'), + ('DLHL Flute', 'The Sky'), + ('DLHL Landing', 'Dark Lake Hylia Ledge'), + ('DD Flute', 'The Sky'), + ('DD Landing', 'Dark Desert Ledge'), + ('EDDM Flute', 'The Sky'), + ('Dark Grassy Lawn Flute', 'The Sky'), + ('Hammer Peg Area Flute', 'The Sky')] + standard_connections = [('Hyrule Castle SW', 'Central Bonk Rocks NW'), ('Hyrule Castle SE', 'Links House NE'), ('Central Bonk Rocks EN', 'Links House WN'), diff --git a/Regions.py b/Regions.py index bd7dc908..2feed780 100644 --- a/Regions.py +++ b/Regions.py @@ -5,10 +5,15 @@ from BaseClasses import Region, Location, Entrance, RegionType, Shop, ShopType def create_regions(world, player): world.regions += [ - create_menu_region(player, 'Menu', None, ['Links House S&Q', 'Sanctuary S&Q', 'Old Man S&Q']), - create_menu_region(player, 'Flute Sky', None, ['Flute Spot 1', 'Flute Spot 2', 'Flute Spot 3', 'Flute Spot 4', 'Flute Spot 5', 'Flute Spot 6', 'Flute Spot 7', 'Flute Spot 8']), + create_menu_region(player, 'Menu', None, ['Links House S&Q', 'Sanctuary S&Q', 'Old Man S&Q', 'Dark Sanctuary S&Q', 'Castle Ledge S&Q']), + create_menu_region(player, 'Flute Sky', None, ['Flute Spot 1', 'Flute Spot 2', 'Flute Spot 3', 'Flute Spot 4', + 'Flute Spot 5', 'Flute Spot 6', 'Flute Spot 7', 'Flute Spot 8', + 'Inverted Flute Spot 1', 'Inverted Flute Spot 2', 'Inverted Flute Spot 3', + 'Inverted Flute Spot 4', 'Inverted Flute Spot 5', 'Inverted Flute Spot 6', + 'Inverted Flute Spot 7', 'Inverted Flute Spot 8']), - create_lw_region(player, 'Lost Woods Area', ['Mushroom'], ['Lost Woods Gamble', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump', 'Lost Woods NW', 'Lost Woods SW', 'Lost Woods SC', 'Lost Woods SE', 'Lost Woods EN']), + create_lw_region(player, 'Lost Woods West Area', None, ['Lost Woods Bush (West)', 'Lost Woods NW', 'Lost Woods SW', 'Lost Woods SC']), + create_lw_region(player, 'Lost Woods East Area', ['Mushroom'], ['Lost Woods Bush (East)', 'Lost Woods Gamble', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump', 'Lost Woods SE', 'Lost Woods EN']), create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal'], ['Master Sword Meadow SC']), create_lw_region(player, 'Lumberjack Area', None, ['Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Lumberjack House', 'Lumberjack WN', 'Lumberjack SW']), create_lw_region(player, 'Mountain Entry Area', None, ['Death Mountain Entrance Rock', 'Mountain Entry NW', 'Mountain Entry SE']), @@ -22,8 +27,8 @@ def create_regions(world, player): create_lw_region(player, 'Forgotten Forest Area', None, ['Forgotten Forest NW', 'Forgotten Forest NE', 'Forgotten Forest ES']), create_lw_region(player, 'Sanctuary Area', None, ['Sanctuary', 'Sanctuary WS', 'Sanctuary EC']), create_lw_region(player, 'Bonk Rock Ledge', None, ['Bonk Rock Cave', 'Bonk Rock Ledge Drop', 'Sanctuary WN']), - create_lw_region(player, 'Graveyard Area', None, ['Sanctuary Grave', 'Kings Grave Outer Rocks', 'Graveyard WC', 'Graveyard EC']), - create_lw_region(player, 'Graveyard Ledge', None, ['Graveyard Cave', 'Graveyard Ledge Drop']), + create_lw_region(player, 'Graveyard Area', None, ['Sanctuary Grave', 'Kings Grave Outer Rocks', 'Graveyard Ladder (Bottom)', 'Graveyard WC', 'Graveyard EC']), + create_lw_region(player, 'Graveyard Ledge', None, ['Graveyard Cave', 'Graveyard Ledge Drop', 'Graveyard Ladder (Top)']), create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']), create_lw_region(player, 'River Bend Area', None, ['North Fairy Cave', 'North Fairy Cave Drop', 'River Bend Water Drop', 'River Bend WC', 'River Bend SW']), create_lw_region(player, 'River Bend East Bank', None, ['River Bend East Water Drop', 'River Bend SE', 'River Bend EC', 'River Bend ES']), @@ -35,16 +40,20 @@ def create_regions(world, player): create_lw_region(player, 'Zora Warning Water', None, ['Zora Warning WN']), create_lw_region(player, 'Zora Approach Area', None, ['Waterfall of Wishing', 'Zora Approach SE', 'Zora Approach NE', 'Zora Whirlpool']), create_lw_region(player, 'Zoras Domain', ['King Zora', 'Zora\'s Ledge'], ['Zoras Domain SW']), - create_lw_region(player, 'Kakariko Area', ['Bottle Merchant'], ['Kakariko Well Drop', 'Kakariko Well Cave', 'Blinds Hideout', 'Elder House (West)', 'Elder House (East)', - 'Snitch Lady (West)', 'Snitch Lady (East)', 'Chicken House', 'Sick Kids House', 'Bush Covered House', 'Light World Bomb Hut', + create_lw_region(player, 'Kakariko Area', ['Bottle Merchant'], ['Kakariko Southwest Bush (North)', 'Kakariko Yard Bush (South)', 'Kakariko Well Drop', 'Kakariko Well Cave', 'Blinds Hideout', 'Elder House (West)', 'Elder House (East)', + 'Snitch Lady (West)', 'Snitch Lady (East)', 'Chicken House', 'Sick Kids House', 'Kakariko Shop', 'Tavern (Front)', 'Tavern North', 'Kakariko NW', 'Kakariko NC', 'Kakariko NE', 'Kakariko ES', 'Kakariko SE']), + create_lw_region(player, 'Kakariko Southwest', None, ['Kakariko Southwest Bush (South)', 'Light World Bomb Hut']), + create_lw_region(player, 'Kakariko Grass Yard', None, ['Kakariko Yard Bush (North)', 'Bush Covered House']), 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)', '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 Courtyard', None, ['Hyrule Castle Courtyard Bush (South)', 'Inverted Pyramid Entrance', 'Hyrule Castle Entrance (South)', 'Hyrule Castle Main Gate (North)', 'Top of Pyramid (Inner)']), + create_lw_region(player, 'Hyrule Castle Courtyard Northeast', None, ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Courtyard Bush (North)']), + create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (West)', 'Agahnims Tower', 'Hyrule Castle Entrance (East)', 'Inverted Pyramid Hole', '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']), + create_lw_region(player, 'Wooden Bridge Area', None, ['Wooden Bridge Bush (South)', 'Wooden Bridge Water Drop', 'Wooden Bridge NW', 'Wooden Bridge SW']), + create_lw_region(player, 'Wooden Bridge Northeast', None, ['Wooden Bridge Bush (North)', 'Wooden Bridge Northeast Water Drop', 'Wooden Bridge NE']), create_lw_region(player, 'Wooden Bridge Water', None, ['Wooden Bridge NC']), create_lw_region(player, 'Sand Dunes Area', None, ['Sand Dunes NW', 'Sand Dunes WN', 'Sand Dunes SC']), create_lw_region(player, 'Eastern Palace Area', None, ['Sahasrahlas Hut', 'Eastern Palace', 'Eastern Palace SW', 'Eastern Palace SE']), @@ -54,8 +63,9 @@ def create_regions(world, player): create_lw_region(player, 'Kakariko Suburb Area', None, ['Library', 'Two Brothers House (East)', 'Kakariko Gamble Game', 'Kakariko Suburb NE', 'Kakariko Suburb WS', 'Kakariko Suburb ES']), create_lw_region(player, 'Flute Boy Area', ['Flute Spot'], ['Flute Boy SC']), create_lw_region(player, 'Flute Boy Pass', None, ['Flute Boy WS', 'Flute Boy SW']), - create_lw_region(player, 'Cave 45 Area', None, ['Cave 45 NW', 'Cave 45 NC', 'Cave 45 EC']), - create_lw_region(player, 'Cave 45 Ledge', None, ['Cave 45', 'Cave 45 Ledge Drop']), + create_lw_region(player, 'Cave 45 Area', None, ['Flute Boy Bush (South)', 'Cave 45 Inverted Approach', 'Cave 45 NW', 'Cave 45 EC']), + create_lw_region(player, 'Cave 45 Flute Boy Entry', None, ['Flute Boy Bush (North)', 'Cave 45 NC']), + create_lw_region(player, 'Cave 45 Ledge', None, ['Cave 45', 'Cave 45 Inverted Leave', 'Cave 45 Ledge Drop']), create_lw_region(player, 'C Whirlpool Area', None, ['C Whirlpool Rock (Bottom)', 'South Hyrule Teleporter', 'C Whirlpool EN', 'C Whirlpool EC', 'C Whirlpool ES', 'C Whirlpool SC', 'C Whirlpool']), create_lw_region(player, 'C Whirlpool Outer Area', None, ['C Whirlpool Rock (Top)', 'C Whirlpool WC', 'C Whirlpool NW']), create_lw_region(player, 'Central Bonk Rocks Area', None, ['Bonk Fairy (Light)', 'Central Bonk Rocks NW', 'Central Bonk Rocks SW', 'Central Bonk Rocks EN', 'Central Bonk Rocks EC', 'Central Bonk Rocks ES']), @@ -65,17 +75,17 @@ def create_regions(world, player): create_lw_region(player, 'Hobo Bridge', ['Hobo'], ['Hobo EC']), create_lw_region(player, 'Tree Line Area', None, ['Lake Hylia Fairy', 'Tree Line WN', 'Tree Line NW', 'Tree Line SE']), create_lw_region(player, 'Tree Line Water', None, ['Tree Line WC', 'Tree Line SC']), - create_lw_region(player, 'Desert Area', None, ['Aginahs Cave', 'Desert Palace Statue Move', 'Desert ES']), + create_lw_region(player, 'Desert Area', None, ['Aginahs Cave', 'Desert Palace Statue Move', 'Checkerboard Ledge Approach', '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', 'Checkerboard Ledge Drop']), + create_lw_region(player, 'Desert Checkerboard Ledge', None, ['Checkerboard Cave', 'Checkerboard Ledge Leave', '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 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, 'Desert Pass Area', ['Purple Chest'], ['Desert Fairy', '50 Rupee Cave', 'Desert Pass WS', 'Desert Pass EC', 'Desert Pass Rocks (North)']), + create_lw_region(player, 'Desert Pass Area', ['Purple Chest'], ['Desert Fairy', '50 Rupee Cave', 'Desert Pass Ladder (South)', 'Desert Pass WS', 'Desert Pass EC', 'Desert Pass Rocks (North)']), create_lw_region(player, 'Desert Pass Southeast', None, ['Desert Pass Rocks (South)', 'Desert Pass ES']), - create_lw_region(player, 'Desert Pass Ledge', None, ['Desert Pass Ledge Drop', 'Desert Pass WC']), + create_lw_region(player, 'Desert Pass Ledge', None, ['Desert Pass Ladder (North)', 'Desert Pass Ledge Drop', 'Desert Pass 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']), @@ -84,7 +94,7 @@ def create_regions(world, player): 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, 'Lake Hylia Water', None, ['Lake Hylia Central Island Pier', 'Lake Hylia 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 Waterfall Water Drop', 'Octoballoon NW']), @@ -157,18 +167,18 @@ def create_regions(world, player): create_dungeon_region(player, 'Sewer Drop', 'a drop\'s exit', None, ['Sewer Drop']), # This exists only to be referenced for access checks create_lw_region(player, 'West Death Mountain (Bottom)', None, ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)', 'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)', 'West Death Mountain Teleporter', 'West Death Mountain ES']), - create_lw_region(player, 'West Death Mountain (Top)', ['Ether Tablet'], ['Tower of Hera', 'West Death Mountain Drop', 'West Death Mountain EN']), - 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, 'West Death Mountain (Top)', ['Ether Tablet'], ['Tower of Hera', 'Spectacle Rock Approach', 'West Death Mountain Drop', 'West Death Mountain EN']), + create_lw_region(player, 'Spectacle Rock Ledge', ['Spectacle Rock'], ['Spectacle Rock Leave', 'Spectacle Rock Drop']), + create_lw_region(player, 'East Death Mountain (West Top)', None, ['DM Hammer Bridge (West)', 'East Death Mountain WN']), + create_lw_region(player, 'East Death Mountain (East Top)', None, ['Paradox Cave (Top)', 'DM Hammer Bridge (East)', 'Floating Island Bridge (East)', 'East Death Mountain Spiral Drop', 'East Death Mountain Fairy Drop', 'East Death Mountain Mimic Drop', 'East Death Mountain EN']), 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, 'Mimic Cave Ledge', None, ['Mimic Cave', 'Mimic Ledge Drop']), 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)']), create_lw_region(player, 'East Death Mountain (Bottom Left)', None, ['DM Broken Bridge (West)', 'East Death Mountain WS']), create_lw_region(player, 'East Death Mountain (Bottom)', None, ['DM Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'Hookshot Fairy', 'Spiral Cave (Bottom)', 'Fairy Ascension Rocks', 'East Death Mountain Teleporter']), - create_lw_region(player, 'Death Mountain Floating Island (Light World)', ['Floating Island']), - create_lw_region(player, 'Death Mountain TR Pegs', None, ['Death Mountain TR Pegs WN', 'Turtle Rock Teleporter']), + create_lw_region(player, 'Death Mountain Floating Island (Light World)', ['Floating Island'], ['Floating Island Bridge (West)']), + create_lw_region(player, 'Death Mountain TR Pegs', None, ['Death Mountain TR Pegs WN', 'TR Pegs Teleporter']), create_cave_region(player, 'Old Man Cave', 'a connector', ['Old Man'], ['Old Man Cave Exit (East)']), create_cave_region(player, 'Old Man Cave Ledge', 'a connector', None, ['Old Man Cave Exit (West)', 'Old Man Cave Dropdown']), create_cave_region(player, 'Old Man House', 'a connector', None, ['Old Man House Exit (Bottom)', 'Old Man House Front to Back']), @@ -197,11 +207,11 @@ def create_regions(world, player): create_cave_region(player, 'Mimic Cave', 'Mimic Cave', ['Mimic Cave']), 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']), + 'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)', 'Skull Woods Bush Rock (East)', 'Lost Woods East Mirror Spot', 'Skull Woods SE']), 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 EN']), + create_dw_region(player, 'Skull Woods Forgotten Path (Northeast)', None, ['Skull Woods Forgotten Bush (East)', 'Lost Woods East (Forgotten) Mirror Spot', 'Lost Woods West (Forgotten) Mirror Spot', 'Skull Woods EN']), 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', 'Mountain Entry Mirror Spot', 'Bumper Cave NW', 'Bumper Cave SE']), create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Mountain Entry Entrance Mirror Spot', 'Bumper Cave Ledge Drop']), @@ -255,6 +265,7 @@ def create_regions(world, player): 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']), create_dw_region(player, 'Misery Mire Area', None, ['Mire Shed', 'Misery Mire', 'Dark Desert Fairy', 'Dark Desert Hint', 'Desert Ledge Mirror Spot', 'Checkerboard Mirror Spot', 'DP Stairs Mirror Spot', 'DP Entrance (North) Mirror Spot']), + create_dw_region(player, 'Misery Mire Ledge', None, ['Mire Ledge Drop']), create_dw_region(player, 'Swamp Nook Area', None, ['Bombos Tablet Mirror Spot', 'Desert Pass Mirror Spot', 'Swamp Nook EC', 'Swamp Nook ES']), create_dw_region(player, 'Swamp Area', None, ['Swamp Palace', 'Dam Mirror Spot', 'Swamp WC', 'Swamp WS', 'Swamp NC', 'Swamp EC']), 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']), @@ -295,11 +306,11 @@ def create_regions(world, player): create_cave_region(player, 'Pyramid', 'a drop\'s exit', ['Ganon'], ['Ganon Drop']), create_cave_region(player, 'Bottom of Pyramid', 'a drop\'s exit', None, ['Pyramid Exit']), - create_dw_region(player, 'Dark Death Mountain (West Bottom)', None, ['Spike Cave', 'Dark Death Mountain Fairy', 'Spectacle Rock Mirror Spot', 'West Dark Death Mountain ES']), - create_dw_region(player, 'Dark Death Mountain (Top West)', None, ['Ganons Tower', 'Dark Death Mountain Drop (West)', 'West Death Mountain (Top) Mirror Spot', 'West Dark Death Mountain EN']), - create_dw_region(player, 'Dark Death Mountain (Top East)', None, ['Superbunny Cave (Top)', 'Hookshot Cave', 'Dark Death Mountain Drop (East)', 'East Death Mountain (Top West) Mirror Spot', 'East Death Mountain (Top East) Mirror Spot', 'East Dark Death Mountain WN', 'East Dark Death Mountain EN']), + create_dw_region(player, 'Dark Death Mountain (West Top)', None, ['Ganons Tower', 'Dark Death Mountain Drop (West)', 'Dark Death Mountain Ladder (North)', 'West Death Mountain (Top) Mirror Spot', 'West Dark Death Mountain EN']), + create_dw_region(player, 'Dark Death Mountain (West Bottom)', None, ['Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Ladder (South)', 'Spectacle Rock Mirror Spot', 'West Dark Death Mountain ES']), + create_dw_region(player, 'Dark Death Mountain (East Top)', None, ['Superbunny Cave (Top)', 'Hookshot Cave', 'Dark Death Mountain Drop (East)', 'East Death Mountain (West Top) Mirror Spot', 'East Death Mountain (East Top) Mirror Spot', 'East Dark Death Mountain WN', 'East Dark Death Mountain EN']), create_dw_region(player, 'Dark Death Mountain (East Bottom)', None, ['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)', 'Fairy Ascension Mirror Spot']), - create_dw_region(player, 'Dark Death Mountain (West Lip)', None, ['Death Mountain Bridge Mirror Spot', 'East Dark Death Mountain WS']), + create_dw_region(player, 'Dark Death Mountain (Left Lip)', None, ['Death Mountain Bridge Mirror Spot', 'East Dark Death Mountain WS']), create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)', 'Spiral Cave Mirror Spot', 'Mimic Cave Mirror Spot']), create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Turtle Rock Isolated Ledge Entrance', 'Isolated Ledge Mirror Spot']), create_dw_region(player, 'Dark Death Mountain Floating Island', None, ['Floating Island Drop', 'Hookshot Cave Back Entrance', 'Floating Island Mirror Spot']), diff --git a/Rules.py b/Rules.py index 53666aa2..52a35297 100644 --- a/Rules.py +++ b/Rules.py @@ -75,6 +75,9 @@ def add_rule(spot, rule, combine='and'): else: spot.access_rule = lambda state: rule(state) and old_rule(state) +def add_bunny_rule(spot, player): + add_rule(spot, lambda state: state.is_not_bunny(spot.parent_region, player)) + def or_rule(rule1, rule2): return lambda state: rule1(state) or rule2(state) @@ -427,6 +430,11 @@ def global_rules(world, player): def default_rules(world, player): + set_rule(world.get_entrance('Sanctuary S&Q', player), lambda state: state.world.mode[player] != 'inverted') + set_rule(world.get_entrance('Castle Ledge S&Q', player), lambda state: state.has_Mirror(player) and state.has('Beat Agahnim 1', player)) + add_rule(world.get_entrance('Castle Ledge S&Q', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Dark Sanctuary S&Q', player), lambda state: state.world.mode[player] == 'inverted') + # Underworld Logic set_rule(world.get_entrance('Old Man Cave Exit (West)', player), lambda state: False) # drop cannot be climbed up set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: state.has('Mirror', player)) # can erase block @@ -439,8 +447,13 @@ def default_rules(world, player): set_rule(world.get_location('Zora\'s Ledge', player), lambda state: state.has('Flippers', player)) set_rule(world.get_location('Flute Spot', player), lambda state: state.has('Shovel', player)) set_rule(world.get_location('Bombos Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has_beam_sword(player)) - set_rule(world.get_location('Frog', player), lambda state: state.has_Pearl(player) and state.can_lift_heavy_rocks(player)) # will get automatic moon pearl requirement - set_rule(world.get_location('Catfish', player), lambda state: state.has_Pearl(player)) + set_rule(world.get_location('Frog', player), lambda state: state.can_lift_heavy_rocks(player)) # will get automatic moon pearl requirement + add_bunny_rule(world.get_location('Mushroom', player), player) + add_bunny_rule(world.get_location('Zora\'s Ledge', player), player) + add_bunny_rule(world.get_location('Maze Race', player), player) + add_bunny_rule(world.get_location('Flute Spot', player), player) + add_bunny_rule(world.get_location('Frog', player), player) + add_bunny_rule(world.get_location('Catfish', player), player) # Entrance Access set_rule(world.get_entrance('Lumberjack Tree Tree', player), lambda state: state.has_Boots(player) and state.has('Beat Agahnim 1', player)) @@ -448,29 +461,75 @@ def default_rules(world, player): set_rule(world.get_entrance('Sanctuary Grave', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Kings Grave', player), lambda state: state.has_Boots(player)) set_rule(world.get_entrance('Waterfall of Wishing', player), lambda state: state.has('Flippers', player)) # can be fake flippered into, but is in weird state inside that might prevent you from doing things. Can be improved in future Todo - 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('Agahnims Tower', player), lambda state: state.has('Cape', player) or state.has_beam_sword(player)) + set_rule(world.get_entrance('Inverted Pyramid Hole', player), lambda state: state.has('Beat Agahnim 2', player) or world.open_pyramid[player]) + add_rule(world.get_entrance('Inverted Pyramid Hole', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Inverted Pyramid Entrance', player), lambda state: state.world.mode[player] == 'inverted') set_rule(world.get_entrance('Bonk Fairy (Light)', player), lambda state: state.has_Boots(player)) set_rule(world.get_entrance('Checkerboard Cave', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('50 Rupee Cave', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('20 Rupee Cave', player), lambda state: state.can_lift_rocks(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('Skull Woods Final Section', player), lambda state: state.has('Fire Rod', player) and state.has_Pearl(player)) # bunny cannot use fire rod - set_rule(world.get_entrance('Thieves Town', player), lambda state: state.has_Pearl(player)) # bunny cannot pull - set_rule(world.get_entrance('Brewery', player), lambda state: state.has_Pearl(player)) # bomb required - set_rule(world.get_entrance('Dark World Hammer Peg Cave', player), lambda state: state.has_Pearl(player) and state.has('Hammer', player)) + set_rule(world.get_entrance('Skull Woods Final Section', player), lambda state: state.has('Fire Rod', player)) + set_rule(world.get_entrance('Dark World Hammer Peg Cave', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Pyramid Hole', player), lambda state: state.has('Beat Agahnim 2', player) or world.open_pyramid[player]) - set_rule(world.get_entrance('Bonk Fairy (Dark)', player), lambda state: state.has_Pearl(player) and state.has_Boots(player)) - set_rule(world.get_entrance('Hype Cave', player), lambda state: state.has_Pearl(player)) # bomb required - set_rule(world.get_entrance('Palace of Darkness', player), lambda state: state.has_Pearl(player)) # kiki needs pearl - set_rule(world.get_entrance('Misery Mire', player), lambda state: state.has_Pearl(player) and state.has_sword(player) and state.has_misery_mire_medallion(player)) # sword required to cast magic (!) - set_rule(world.get_entrance('Dark Lake Hylia Ledge Fairy', player), lambda state: state.has_Pearl(player)) # bomb required - set_rule(world.get_entrance('Dark Lake Hylia Ledge Spike Cave', player), lambda state: state.can_lift_rocks(player) and state.has_Pearl(player)) - set_rule(world.get_entrance('Hookshot Cave', player), lambda state: state.can_lift_rocks(player) and state.has_Pearl(player)) - set_rule(world.get_entrance('Turtle Rock', player), lambda state: state.has_Pearl(player) and state.has_sword(player) and state.has_turtle_rock_medallion(player) and state.can_reach('Turtle Rock Ledge', 'Region', player)) # sword required to cast magic (!) + add_rule(world.get_entrance('Pyramid Hole', player), lambda state: state.world.mode[player] != 'inverted') + set_rule(world.get_entrance('Pyramid Entrance', player), lambda state: state.world.mode[player] != 'inverted') + set_rule(world.get_entrance('Bonk Fairy (Dark)', player), lambda state: state.has_Boots(player)) + set_rule(world.get_entrance('Misery Mire', player), lambda state: state.has_sword(player) and state.has_misery_mire_medallion(player)) # sword required to cast magic (!) + set_rule(world.get_entrance('Dark Lake Hylia Ledge Spike Cave', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Hookshot Cave', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Turtle Rock', player), lambda state: state.has_sword(player) and state.has_turtle_rock_medallion(player) and state.can_reach('Turtle Rock Ledge', 'Region', player)) # sword required to cast magic (!) + add_bunny_rule(world.get_entrance('Lost Woods Hideout Drop', player), player) + add_bunny_rule(world.get_entrance('Lumberjack Tree Tree', player), player) + add_bunny_rule(world.get_entrance('Waterfall of Wishing', player), player) + add_bunny_rule(world.get_entrance('Bonk Rock Cave', player), player) + add_bunny_rule(world.get_entrance('Sanctuary Grave', player), player) + add_bunny_rule(world.get_entrance('Kings Grave', player), player) + add_bunny_rule(world.get_entrance('North Fairy Cave Drop', player), player) + add_bunny_rule(world.get_entrance('Hyrule Castle Secret Entrance Drop', player), player) + add_bunny_rule(world.get_entrance('Agahnims Tower', player), player) + add_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has('Beat Agahnim 1', player), 'or') # barrier gets removed after killing agahnim, relevant for entrance shuffle + add_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.world.mode[player] != 'inverted') + add_bunny_rule(world.get_entrance('Bonk Fairy (Light)', player), player) + add_bunny_rule(world.get_entrance('Checkerboard Cave', player), player) + add_bunny_rule(world.get_entrance('50 Rupee Cave', player), player) + add_bunny_rule(world.get_entrance('20 Rupee Cave', player), player) + add_bunny_rule(world.get_entrance('Skull Woods First Section Hole (North)', player), player) # bunny cannot lift bush + add_bunny_rule(world.get_entrance('Skull Woods Second Section Hole', player), player) # bunny cannot lift bush + add_bunny_rule(world.get_entrance('Skull Woods Final Section', player), player) # bunny cannot use fire rod + add_bunny_rule(world.get_entrance('Thieves Town', player), player) # bunny cannot pull + add_bunny_rule(world.get_entrance('Brewery', player), player) # bomb required + add_bunny_rule(world.get_entrance('Dark World Hammer Peg Cave', player), player) + add_bunny_rule(world.get_entrance('Bonk Fairy (Dark)', player), player) + add_bunny_rule(world.get_entrance('Hype Cave', player), player) # bomb required + add_bunny_rule(world.get_entrance('Palace of Darkness', player), player) # kiki needs pearl + add_bunny_rule(world.get_entrance('Misery Mire', player), player) + add_bunny_rule(world.get_entrance('Dark Lake Hylia Ledge Fairy', player), player) # bomb required + add_bunny_rule(world.get_entrance('Dark Lake Hylia Ledge Spike Cave', player), player) + add_bunny_rule(world.get_entrance('Hookshot Cave', player), player) + add_bunny_rule(world.get_entrance('Turtle Rock', player), player) # Region Access + set_rule(world.get_entrance('Flute Spot 1', player), lambda state: state.world.mode[player] != 'inverted') + set_rule(world.get_entrance('Flute Spot 2', player), lambda state: state.world.mode[player] != 'inverted') + set_rule(world.get_entrance('Flute Spot 3', player), lambda state: state.world.mode[player] != 'inverted') + set_rule(world.get_entrance('Flute Spot 4', player), lambda state: state.world.mode[player] != 'inverted') + set_rule(world.get_entrance('Flute Spot 5', player), lambda state: state.world.mode[player] != 'inverted') + set_rule(world.get_entrance('Flute Spot 6', player), lambda state: state.world.mode[player] != 'inverted') + set_rule(world.get_entrance('Flute Spot 7', player), lambda state: state.world.mode[player] != 'inverted') + set_rule(world.get_entrance('Flute Spot 8', player), lambda state: state.world.mode[player] != 'inverted') + set_rule(world.get_entrance('Inverted Flute Spot 1', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Inverted Flute Spot 2', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Inverted Flute Spot 3', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Inverted Flute Spot 4', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Inverted Flute Spot 5', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Inverted Flute Spot 6', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Inverted Flute Spot 7', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Inverted Flute Spot 8', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Death Mountain Entrance Rock', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Graveyard Ladder (Top)', player), lambda state: state.has_Pearl(player) and state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Graveyard Ladder (Bottom)', player), lambda state: state.has_Pearl(player) and state.world.mode[player] == 'inverted') set_rule(world.get_entrance('Kings Grave Outer Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Kings Grave Inner Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Potion Shop Rock (South)', player), lambda state: state.can_lift_rocks(player)) @@ -480,45 +539,109 @@ def default_rules(world, player): set_rule(world.get_entrance('Hyrule Castle Main Gate (North)', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Hyrule Castle Inner East Rock', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Hyrule Castle Outer East Rock', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Cave 45 Inverted Approach', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Cave 45 Inverted Leave', player), lambda state: state.world.mode[player] == 'inverted') set_rule(world.get_entrance('C Whirlpool Rock (Bottom)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('C Whirlpool Rock (Top)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Lake Hylia Island Pier', player), lambda state: state.world.mode[player] == 'inverted') set_rule(world.get_entrance('Desert Palace Statue Move', player), lambda state: state.has('Book of Mudora', player)) + set_rule(world.get_entrance('Checkerboard Ledge Approach', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Checkerboard Ledge Leave', player), lambda state: state.world.mode[player] == 'inverted') set_rule(world.get_entrance('Desert Ledge Outer Rocks', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Desert Ledge Inner Rocks', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Desert Pass Rocks (North)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Desert Pass Rocks (South)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Desert Pass Ladder (North)', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Desert Pass Ladder (South)', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Spectacle Rock Approach', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Spectacle Rock Leave', player), lambda state: state.world.mode[player] == 'inverted') set_rule(world.get_entrance('DM Hammer Bridge (West)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('DM Hammer Bridge (East)', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('Floating Island Bridge (West)', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Floating Island Bridge (East)', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('East Death Mountain Mimic Drop', player), lambda state: state.world.mode[player] == 'inverted') + set_rule(world.get_entrance('Mimic Ledge Drop', player), lambda state: state.world.mode[player] == 'inverted') set_rule(world.get_entrance('DM Broken Bridge (West)', player), lambda state: state.has('Hookshot', player)) set_rule(world.get_entrance('DM Broken Bridge (East)', player), lambda state: state.has('Hookshot', player)) set_rule(world.get_entrance('Fairy Ascension Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Skull Woods Bush Rock (West)', player), lambda state: state.has_Pearl(player) and state.can_lift_rocks(player)) - set_rule(world.get_entrance('Skull Woods Bush Rock (East)', player), lambda state: state.has_Pearl(player) and state.can_lift_rocks(player)) - set_rule(world.get_entrance('Skull Woods Forgotten Bush (West)', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Skull Woods Forgotten Bush (East)', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Skull Woods Second Section Hole', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Bumper Cave Entrance Rock', player), lambda state: state.has_Pearl(player) and state.can_lift_rocks(player)) - set_rule(world.get_entrance('Skull Woods Pass Bush Row (West)', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Skull Woods Pass Bush Row (East)', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Skull Woods Pass Rock (Top)', player), lambda state: state.has_Pearl(player) and state.can_lift_heavy_rocks(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('Broken Bridge Hammer Rock (South)', player), lambda state: state.has_Pearl(player) and (state.can_lift_rocks(player) or state.has('Hammer', player))) - set_rule(world.get_entrance('Broken Bridge Hammer Rock (North)', player), lambda state: state.has_Pearl(player) and (state.can_lift_rocks(player) or state.has('Hammer', player))) - set_rule(world.get_entrance('Broken Bridge Hookshot Gap', player), lambda state: state.has_Pearl(player) and state.has('Hookshot', player)) - set_rule(world.get_entrance('Village of Outcasts Pegs', player), lambda state: state.has_Pearl(player) and state.has('Hammer', player)) - set_rule(world.get_entrance('Grassy Lawn Pegs', player), lambda state: state.has_Pearl(player) and state.has('Hammer', player)) - set_rule(world.get_entrance('Peg Area Rocks (West)', player), lambda state: state.has_Pearl(player) and state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Peg Area Rocks (East)', 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('Hammer Bridge Pegs (North)', player), lambda state: state.has('Hammer', player) and state.has_Pearl(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('Circle of Bushes Bush (North)', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Circle of Bushes Bush (South)', player), lambda state: state.has_Pearl(player)) + set_rule(world.get_entrance('Skull Woods Bush Rock (West)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Skull Woods Bush Rock (East)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Bumper Cave Entrance Rock', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Skull Woods Pass Rock (Top)', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Skull Woods Pass Rock (Bottom)', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Dark Witch Rock (North)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Dark Witch Rock (South)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Broken Bridge Hammer Rock (South)', player), lambda state: state.can_lift_rocks(player) or state.has('Hammer', player)) + set_rule(world.get_entrance('Broken Bridge Hammer Rock (North)', player), lambda state: state.can_lift_rocks(player) or state.has('Hammer', player)) + set_rule(world.get_entrance('Broken Bridge Hookshot Gap', player), lambda state: state.has('Hookshot', player)) + set_rule(world.get_entrance('Village of Outcasts Pegs', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('Grassy Lawn Pegs', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('Peg Area Rocks (West)', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Peg Area Rocks (East)', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Dig Game To Ledge Drop', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Archery Game Rock', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Dark C Whirlpool Rock (Bottom)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Dark C Whirlpool Rock (Top)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Hammer Bridge Pegs (North)', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), lambda state: state.has('Hammer', player)) + add_bunny_rule(world.get_entrance('Lost Woods Bush (West)', player), player) + add_bunny_rule(world.get_entrance('Lost Woods Bush (East)', player), player) + add_bunny_rule(world.get_entrance('Death Mountain Entrance Rock', player), player) + add_bunny_rule(world.get_entrance('Kings Grave Outer Rocks', player), player) + add_bunny_rule(world.get_entrance('Kings Grave Inner Rocks', player), player) + add_bunny_rule(world.get_entrance('Potion Shop Rock (South)', player), player) + add_bunny_rule(world.get_entrance('Potion Shop Rock (North)', player), player) + add_bunny_rule(world.get_entrance('Kakariko Southwest Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Kakariko Southwest Bush (South)', player), player) + add_bunny_rule(world.get_entrance('Kakariko Yard Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Kakariko Yard Bush (South)', player), player) + add_bunny_rule(world.get_entrance('Bat Cave Ledge Peg', player), player) + add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (South)', player), player) + add_bunny_rule(world.get_entrance('Hyrule Castle Inner East Rock', player), player) + add_bunny_rule(world.get_entrance('Hyrule Castle Outer East Rock', player), player) + add_bunny_rule(world.get_entrance('Wooden Bridge Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Wooden Bridge Bush (South)', player), player) + add_bunny_rule(world.get_entrance('Flute Boy Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Flute Boy Bush (South)', player), player) + add_bunny_rule(world.get_entrance('C Whirlpool Rock (Bottom)', player), player) + add_bunny_rule(world.get_entrance('C Whirlpool Rock (Top)', player), player) + add_bunny_rule(world.get_entrance('Desert Ledge Outer Rocks', player), player) + add_bunny_rule(world.get_entrance('Desert Ledge Inner Rocks', player), player) + add_bunny_rule(world.get_entrance('Desert Pass Rocks (North)', player), player) + add_bunny_rule(world.get_entrance('Desert Pass Rocks (South)', player), player) + add_bunny_rule(world.get_entrance('DM Hammer Bridge (West)', player), player) + add_bunny_rule(world.get_entrance('DM Hammer Bridge (East)', player), player) + add_bunny_rule(world.get_entrance('DM Broken Bridge (West)', player), player) + add_bunny_rule(world.get_entrance('DM Broken Bridge (East)', player), player) + add_bunny_rule(world.get_entrance('Fairy Ascension Rocks', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Bush Rock (West)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Bush Rock (East)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Forgotten Bush (West)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Forgotten Bush (East)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Second Section Hole', player), player) + add_bunny_rule(world.get_entrance('Bumper Cave Entrance Rock', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Bush Row (West)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Bush Row (East)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (Top)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (Bottom)', player), player) + add_bunny_rule(world.get_entrance('Dark Witch Rock (North)', player), player) + add_bunny_rule(world.get_entrance('Dark Witch Rock (South)', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (South)', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (North)', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge Hookshot Gap', player), player) + add_bunny_rule(world.get_entrance('Village of Outcasts Pegs', player), player) + add_bunny_rule(world.get_entrance('Grassy Lawn Pegs', player), player) + add_bunny_rule(world.get_entrance('Peg Area Rocks (West)', player), player) + add_bunny_rule(world.get_entrance('Peg Area Rocks (East)', player), player) + add_bunny_rule(world.get_entrance('Dig Game To Ledge Drop', player), player) + add_bunny_rule(world.get_entrance('Archery Game Rock', player), player) + add_bunny_rule(world.get_entrance('Circle of Bushes Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Circle of Bushes Bush (South)', player), player) + add_bunny_rule(world.get_entrance('Dark C Whirlpool Rock (Bottom)', player), player) + add_bunny_rule(world.get_entrance('Dark C Whirlpool Rock (Top)', player), player) + add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (North)', player), player) + add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), player) set_rule(world.get_entrance('Flute Away', player), lambda state: state.can_flute(player)) @@ -528,34 +651,70 @@ def default_rules(world, player): set_rule(world.get_entrance('River Bend Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('River Bend 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('Wooden Bridge Northeast Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('C Whirlpool EC', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Statues WC', 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('Ice Cave SW', 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('Catfish Approach Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: state.has_Pearl(player) and 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('Ice Lake Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Ice Lake Northeast Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Ice Lake Southwest Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Ice Cave SW', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Shopping Mall SW', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('C Whirlpool EC', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Statues WC', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Dark C Whirlpool EC', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Hype Cave WC', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) + set_rule(world.get_entrance('Catfish Approach Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Qirn Jump Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Qirn Jump East Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Broken Bridge Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Broken Bridge Northeast Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Broken Bridge West Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Hammer Bridge Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Dark C Whirlpool EC', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Hype Cave WC', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Ice Lake Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Ice Lake Northeast Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Ice Lake Southwest Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Shopping Mall SW', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), lambda state: state.has('Flippers', player)) + add_bunny_rule(world.get_entrance('Zora Warning Water Drop', player), player) + add_bunny_rule(world.get_entrance('Potion Shop Water Drop', player), player) + add_bunny_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), player) + add_bunny_rule(world.get_entrance('River Bend Water Drop', player), player) + add_bunny_rule(world.get_entrance('River Bend East Water Drop', player), player) + add_bunny_rule(world.get_entrance('Wooden Bridge Water Drop', player), player) + add_bunny_rule(world.get_entrance('Wooden Bridge Northeast Water Drop', player), player) + add_bunny_rule(world.get_entrance('C Whirlpool EC', player), player) + add_bunny_rule(world.get_entrance('Statues WC', player), player) + add_bunny_rule(world.get_entrance('Lake Hylia Water Drop', player), player) + add_bunny_rule(world.get_entrance('Lake Hylia South Water Drop', player), player) + add_bunny_rule(world.get_entrance('Lake Hylia Northeast Water Drop', player), player) + add_bunny_rule(world.get_entrance('Lake Hylia Central Water Drop', player), player) + add_bunny_rule(world.get_entrance('Lake Hylia Island Water Drop', player), player) + add_bunny_rule(world.get_entrance('Ice Cave SW', player), player) + add_bunny_rule(world.get_entrance('Octoballoon Water Drop', player), player) + add_bunny_rule(world.get_entrance('Octoballoon Waterfall Water Drop', player), player) + add_bunny_rule(world.get_entrance('Catfish Approach Water Drop', player), player) + add_bunny_rule(world.get_entrance('Dark Witch Water Drop', player), player) + add_bunny_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), player) + add_bunny_rule(world.get_entrance('Qirn Jump Water Drop', player), player) + add_bunny_rule(world.get_entrance('Qirn Jump East Water Drop', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge Water Drop', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge Northeast Water Drop', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge West Water Drop', player), player) + add_bunny_rule(world.get_entrance('Hammer Bridge Water Drop', player), player) + add_bunny_rule(world.get_entrance('Dark C Whirlpool EC', player), player) + add_bunny_rule(world.get_entrance('Hype Cave WC', player), player) + add_bunny_rule(world.get_entrance('Ice Lake Water Drop', player), player) + add_bunny_rule(world.get_entrance('Ice Lake Northeast Water Drop', player), player) + add_bunny_rule(world.get_entrance('Ice Lake Southwest Water Drop', player), player) + add_bunny_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), player) + add_bunny_rule(world.get_entrance('Shopping Mall SW', player), player) + add_bunny_rule(world.get_entrance('Bomber Corner Water Drop', player), player) + add_bunny_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), player) set_rule(world.get_entrance('Kakariko Teleporter (Hammer)', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot lift bushes set_rule(world.get_entrance('Kakariko Teleporter (Rock)', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player)) # bunny cannot lift bushes @@ -566,13 +725,25 @@ def default_rules(world, player): set_rule(world.get_entrance('Desert Teleporter', player), lambda state: state.can_flute(player) and state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Lake Hylia Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Turtle Rock Teleporter', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player)) + set_rule(world.get_entrance('TR Pegs Teleporter', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player)) + add_rule(world.get_entrance('Kakariko Teleporter (Hammer)', player), lambda state: state.world.mode[player] != 'inverted') + add_rule(world.get_entrance('Kakariko Teleporter (Rock)', player), lambda state: state.world.mode[player] != 'inverted') + add_rule(world.get_entrance('Top of Pyramid', player), lambda state: state.world.mode[player] != 'inverted') + add_rule(world.get_entrance('Top of Pyramid (Inner)', player), lambda state: state.world.mode[player] != 'inverted') + add_rule(world.get_entrance('East Hyrule Teleporter', player), lambda state: state.world.mode[player] != 'inverted') + add_rule(world.get_entrance('South Hyrule Teleporter', player), lambda state: state.world.mode[player] != 'inverted') + add_rule(world.get_entrance('Desert Teleporter', player), lambda state: state.world.mode[player] != 'inverted') + add_rule(world.get_entrance('Lake Hylia Teleporter', player), lambda state: state.world.mode[player] != 'inverted') + add_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: state.world.mode[player] != 'inverted') + add_rule(world.get_entrance('TR Pegs Teleporter', player), lambda state: state.world.mode[player] != 'inverted') - set_rule(world.get_entrance('Lost Woods Mirror Spot', player), lambda state: state.has_Mirror(player)) + + set_rule(world.get_entrance('Lost Woods East 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('Lost Woods East (Forgotten) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Lost Woods West (Forgotten) 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('Mountain Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Mountain Entry Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) @@ -586,7 +757,6 @@ def default_rules(world, player): set_rule(world.get_entrance('Bonk Rock Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Graveyard Ledge Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has_Mirror(player)) set_rule(world.get_entrance('Kings Grave Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has_Mirror(player)) - # Caution: If king's grave is relaxed at all to account for reaching it via a two way cave's exit in insanity mode, then the bomb shop logic will need to be updated (that would involve create a small ledge-like Region for it) set_rule(world.get_entrance('River Bend Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('River Bend East Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Potion Shop Mirror Spot', player), lambda state: state.has_Mirror(player)) @@ -623,7 +793,7 @@ def default_rules(world, 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_Mirror(player) and state.has('Flippers', player)) + set_rule(world.get_entrance('Hobo Mirror Spot', player), lambda state: state.has_Mirror(player) and state.has_Pearl(player) and state.has('Flippers', player)) set_rule(world.get_entrance('Tree Line Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Checkerboard Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Desert Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) @@ -636,7 +806,7 @@ def default_rules(world, player): set_rule(world.get_entrance('South Pass Mirror Spot', player), lambda state: state.has_Mirror(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('Lake Hylia Island Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has_Mirror(player) and state.has('Flippers', player)) + set_rule(world.get_entrance('Lake Hylia Island Mirror Spot', player), lambda state: state.has_Mirror(player) and state.has_Pearl(player) and state.has('Flippers', player)) set_rule(world.get_entrance('Lake Hylia Central Island 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)) @@ -644,8 +814,8 @@ def default_rules(world, player): set_rule(world.get_entrance('Ice 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)) set_rule(world.get_entrance('Spectacle Rock Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('East Death Mountain (Top West) Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('East Death Mountain (Top East) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('East Death Mountain (West Top) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('East Death Mountain (East Top) Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Mimic Cave Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Spiral Cave Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Fairy Ascension Mirror Spot', player), lambda state: state.has_Mirror(player) and state.has_Pearl(player)) # need to lift flowers @@ -661,12 +831,12 @@ def default_rules(world, player): swordless_rules(world, player) set_rule(world.get_entrance('Ganons Tower', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player)) + add_rule(world.get_entrance('Ganons Tower', player), lambda state: state.world.mode[player] != 'inverted') def inverted_rules(world, player): # s&q regions. link's house entrance is set to true so the filler knows the chest inside can always be reached - set_rule(world.get_entrance('Castle Ledge S&Q', player), lambda state: state.has_Mirror(player) and state.has('Beat Agahnim 1', player)) - + # overworld requirements set_rule(world.get_location('Ice Rod Cave', player), lambda state: state.has_Pearl(player)) set_rule(world.get_location('Maze Race', player), lambda state: state.has_Pearl(player)) @@ -1048,31 +1218,7 @@ def standard_rules(world, player): rule_list, debug_path = find_rules_for_zelda_delivery(world, player) set_rule(world.get_location('Zelda Drop Off', player), lambda state: state.has('Zelda Herself', player) and check_rule_list(state, rule_list)) - # for location in ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure', 'King Zora', 'Zora\'s Ledge', - # 'Purple Chest', 'Maze Race', 'Hobo', 'Desert Ledge', 'Bombos Tablet', 'Lake Hylia Island', - # 'Old Man', 'Ether Tablet', 'Spectacle Rock', 'Floating Island']: - # add_rule(world.get_location(location, player), lambda state: state.has('Zelda Delivered', player)) - # Bonk Fairy (Light) is a notable omission in ER shuffles/Retro - # for entrance in ['Blinds Hideout', 'Kings Grave Outer Rocks', 'Dam', 'Tavern North', - # 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut', 'Kakariko Well Drop', 'Kakariko Well Cave', - # 'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge', - # 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump', 'Lumberjack Tree Tree', - # 'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Rod Cave', 'Lake Hylia Central Island Pier', - # 'Bonk Rock Cave', 'Library', 'Potion Shop', 'Two Brothers House (East)', 'Desert Palace Statue Move', - # 'Eastern Palace', 'Master Sword Meadow', 'Sanctuary', 'Sanctuary Grave', - # 'Death Mountain Entrance Rock', 'Desert Teleporter', 'East Hyrule Teleporter', - # 'Flute Spot 1', 'Flute Spot 2', 'Flute Spot 3', 'Flute Spot 4', - # 'Flute Spot 5', 'Flute Spot 6', 'Flute Spot 7', 'Flute Spot 8', - # 'South Hyrule Teleporter', 'Kakariko Teleporter', 'Elder House (East)', 'Elder House (West)', - # 'North Fairy Cave', 'North Fairy Cave Drop', 'Lost Woods Gamble', 'Snitch Lady (East)', - # 'Snitch Lady (West)', 'Tavern (Front)', 'Bush Covered House', 'Light World Bomb Hut', - # 'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)', - # 'Waterfall of Wishing', 'Hyrule Castle Main Gate (North)', 'Hyrule Castle Main Gate (South)', '50 Rupee Cave', - # 'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Light Hype Fairy', 'Desert Fairy', - # 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game', 'Top of Pyramid', 'Top of Pyramid (Inner)']: - # add_rule(world.get_entrance(entrance, player), lambda state: state.has('Zelda Delivered', player)) - add_rule(world.get_entrance('Links House SC', player), lambda state: state.has('Zelda Delivered', player)) add_rule(world.get_entrance('Links House ES', player), lambda state: state.has('Zelda Delivered', player)) add_rule(world.get_entrance('Central Bonk Rocks SW', player), lambda state: state.has('Zelda Delivered', player))