diff --git a/EntranceShuffle.py b/EntranceShuffle.py index 55467140..39d45df1 100644 --- a/EntranceShuffle.py +++ b/EntranceShuffle.py @@ -2866,102 +2866,103 @@ mandatory_connections = [('Links House S&Q', 'Links House'), ('Hobo EC', 'Stone Bridge Water'), # Whirlpool Connections - ('C Whirlpool', 'Useless Fairy Water'),# - ('Useless Fairy Whirlpool', 'C Whirlpool Area'),# - ('Lake Hylia Whirlpool', 'Zora Approach Area'),# - ('Zora Whirlpool', 'Lake Hylia Water'),# - ('Kakariko Pond Whirlpool', 'Octoballoon Water'),# - ('Octoballoon Whirlpool', 'Kakariko Pond Area'),# - ('Qirn Jump Whirlpool', 'Southeast DW Water'),# - ('Southeast DW Whirlpool', 'Qirn Jump Water'),# + ('C Whirlpool', 'Useless Fairy Water'), + ('Useless Fairy Whirlpool', 'C Whirlpool Area'), + ('Lake Hylia Whirlpool', 'Zora Approach Area'), + ('Zora Whirlpool', 'Lake Hylia Water'), + ('Kakariko Pond Whirlpool', 'Octoballoon Water'), + ('Octoballoon Whirlpool', 'Kakariko Pond Area'), + ('Qirn Jump Whirlpool', 'Southeast DW Water'), + ('Southeast DW Whirlpool', 'Qirn Jump Water'), # Intra-tile OW Connections ('Death Mountain Entrance Rock', 'Death Mountain Entrance'), ('Death Mountain Entrance Drop', 'DM Ascent Area'), ('Bonk Rock Ledge Drop', 'Sanctuary Area'), - ('Kings Grave Outer Rocks', 'Kings Grave Area'),# - ('Kings Grave Inner Rocks', 'Graveyard 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 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 Rock (South)', 'Potion Shop Northeast'),# - ('Potion Shop Rock (North)', 'Potion Shop Area'),# - ('Zora Warning Water Drop', 'Zora Warning Water'),# - ('Bat Cave Ledge Peg', 'Bat Cave Ledge'),# - ('Hyrule Castle Main Gate (South)', 'Hyrule Castle Courtyard'),#mirror - ('Hyrule Castle Main Gate (North)', 'Hyrule Castle Area'),#mirror + ('Potion Shop 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'), + ('Bat Cave Ledge Peg', 'Bat Cave Ledge'), + ('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 Water Drop', 'Wooden Bridge Water'),# + ('Hyrule Castle Inner East Rock', 'Hyrule Castle East Entry'), + ('Hyrule Castle Outer East Rock', 'Hyrule Castle Area'), + ('Wooden Bridge Water Drop', 'Wooden Bridge Water'), ('Maze Race Ledge Drop', 'Maze Race Area'), ('Cave 45 Ledge Drop', 'Cave 45 Area'), - ('C Whirlpool Rock (Bottom)', 'C Whirlpool Outer Area'),# - ('C Whirlpool Rock (Top)', 'C Whirlpool Area'),# - ('Desert Palace Statue Move', 'Desert Palace Stairs'),# + ('C Whirlpool Rock (Bottom)', 'C Whirlpool Outer Area'), + ('C Whirlpool Rock (Top)', 'C Whirlpool Area'), + ('Desert Palace Statue Move', 'Desert Palace Stairs'), ('Desert Ledge Drop', 'Desert Area'), - ('Desert Ledge Outer Rocks', 'Desert Palace Entrance (North) Spot'),# - ('Desert Ledge Inner Rocks', 'Desert Ledge'),# + ('Desert Ledge Outer Rocks', 'Desert Palace Entrance (North) Spot'), + ('Desert Ledge Inner Rocks', 'Desert Ledge'), ('Purple Chest Ledge Drop', 'Purple Chest Area'), - ('Lake Hylia Water Drop', 'Lake Hylia Water'),# + ('Lake Hylia 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 Water Drop', 'Octoballoon Water'), ('Octoballoon Pier', 'Octoballoon Area'), ('West Death Mountain Drop', 'West Death Mountain (Bottom)'), ('Spectacle Rock Drop', 'West Death Mountain (Top)'), - ('DM Hammer Bridge (West)', 'East Death Mountain (Top East)'),# + ('DM Hammer Bridge (West)', 'East Death Mountain (Top West)'), + ('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'), ('Fairy Ascension Ledge Drop', 'Fairy Ascension Plateau'), ('Fairy Ascension Plateau Drop', 'East Death Mountain (Bottom)'), - ('Fairy Ascension Rocks', 'Fairy Ascension Plateau'),# - ('Broken Bridge (West)', 'East Death Mountain (Bottom)'),# - ('Broken Bridge (East)', 'East Death Mountain (Bottom Left)'),# + ('Fairy Ascension Rocks', 'Fairy Ascension Plateau'), + ('Broken Bridge (West)', 'East Death Mountain (Bottom)'), + ('Broken Bridge (East)', 'East Death Mountain (Bottom Left)'), - ('Skull Woods Bush Rock (West)', 'Skull Woods Forest'),# - ('Skull Woods Bush Rock (East)', 'Skull Woods Portal Entry'),# - ('Skull Woods Forgotten Bush (West)', 'Skull Woods Forgotten Path (Northeast)'),# - ('Skull Woods Forgotten Bush (East)', 'Skull Woods Forgotten Path (Southwest)'),# - ('Bumper Cave Entrance Rock', 'Bumper Cave Entrance'),# + ('Skull Woods Bush Rock (West)', 'Skull Woods Forest'), + ('Skull Woods Bush Rock (East)', 'Skull Woods Portal Entry'), + ('Skull Woods Forgotten Bush (West)', 'Skull Woods Forgotten Path (Northeast)'), + ('Skull Woods Forgotten Bush (East)', 'Skull Woods Forgotten Path (Southwest)'), + ('Bumper Cave Entrance Rock', 'Bumper Cave Entrance'), ('Bumper Cave Ledge 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'),# + ('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 Pier', 'Qirn Jump East Bank'), - ('Dark Witch 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'),# - ('Village of Outcasts Pegs', 'Dark Grassy Lawn'),# - ('Grassy Lawn Pegs', 'Village of Outcasts Area'),# - ('Peg Area Rocks (West)', 'Hammer Peg Area'),# - ('Peg Area Rocks (East)', 'Hammer Peg Entry'),# + ('Dark Witch 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'), + ('Village of Outcasts Pegs', 'Dark Grassy Lawn'), + ('Grassy Lawn Pegs', 'Village of Outcasts Area'), + ('Peg Area Rocks (West)', 'Hammer Peg Area'), + ('Peg Area Rocks (East)', 'Hammer Peg Entry'), ('Pyramid Exit Drop', 'Pyramid Area'), - ('Broken Bridge Hammer Rock (South)', 'Broken Bridge Northeast'),# - ('Broken Bridge Hammer Rock (North)', 'Broken Bridge Area'),# + ('Broken Bridge Hammer Rock (South)', 'Broken Bridge Northeast'), + ('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 Water Drop', 'Broken Bridge Water'), + ('Dig Game Drop To Ledge', 'Dig Game Ledge'), ('Dig Game Ledge Drop', 'Dig Game Area'), ('Frog Ledge Drop', 'Archery Game Area'), - ('Archery Game Rock', 'Frog Area'),# - ('Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Outer Area'),# - ('Dark C Whirlpool Rock (Top)', 'Dark C Whirlpool Area'),# - ('Hammer Bridge Pegs (North)', 'Hammer Bridge South Area'),# - ('Hammer Bridge Pegs (South)', 'Hammer Bridge North Area'),# - ('Hammer Bridge Water Drop', 'Hammer Bridge Water'),# + ('Archery Game Rock', 'Frog Area'), + ('Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Outer Area'), + ('Dark C Whirlpool Rock (Top)', 'Dark C Whirlpool Area'), + ('Hammer Bridge Pegs (North)', 'Hammer Bridge South Area'), + ('Hammer Bridge Pegs (South)', 'Hammer Bridge North Area'), + ('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 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 Water Drop', 'Southeast DW Water'), ('Southeast DW Pier', 'Southeast DW Area'), ('Dark Death Mountain Drop (West)', 'Dark Death Mountain (West Bottom)'), @@ -2970,22 +2971,23 @@ mandatory_connections = [('Links House S&Q', 'Links House'), ('Turtle Rock Ledge Drop', 'Turtle Rock Area'), # Portal Connections - ('Kakariko Teleporter (Hammer)', 'Skull Woods Pass East Top Area'),# - ('Kakariko Teleporter (Rock)', 'Skull Woods Pass East Top Area'),# - ('Top of Pyramid', 'Pyramid Area'),# - ('East Hyrule Teleporter', 'Palace of Darkness Nook Area'),# - ('South Hyrule Teleporter', 'Dark C Whirlpool Area'),# - ('Desert Teleporter', 'Misery Mire Area'),# - ('Lake Hylia Teleporter', 'Ice Palace Area'),# + ('Kakariko Teleporter (Hammer)', 'Skull Woods Pass East Top Area'), + ('Kakariko Teleporter (Rock)', 'Skull Woods Pass East Top Area'), + ('Top of Pyramid', 'Pyramid Area'), + ('East Hyrule Teleporter', 'Palace of Darkness Nook Area'), + ('South Hyrule Teleporter', 'Dark C Whirlpool Area'), + ('Desert Teleporter', 'Misery Mire Area'), + ('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'),# + ('East Death Mountain Teleporter', 'Dark Death Mountain (East Bottom)'), + ('Turtle Rock Teleporter', 'Turtle Rock Ledge'), # Mirror Connections ('Lost Woods Mirror Spot', 'Lost Woods Area'), ('Lumberjack Mirror Spot', 'Lumberjack Area'), - ('Bumper Cave Entrance Mirror Spot', 'Death Mountain Entrance'), - ('Bumper Cave Ledge Mirror Spot', 'Death Mountain Return Ledge'), + ('DM Ascent Mirror Spot', 'DM Ascent Area'), + ('DM Ascent Entrance Mirror Spot', 'Death Mountain Entrance'), + ('DM Ascent Ledge Mirror Spot', 'Death Mountain Return Ledge'), ('Lost Woods Pass West Mirror Spot', 'Lost Woods Pass West Area'), ('Lost Woods Pass East Top Mirror Spot', 'Lost Woods Pass East Top Area'), ('Lost Woods East Bottom Mirror Spot', 'Lost Woods Pass East Bottom Area'), @@ -3009,6 +3011,7 @@ mandatory_connections = [('Links House S&Q', 'Links House'), ('HC Area Mirror Spot', 'Hyrule Castle Area'), ('HC East Entry Mirror Spot', 'Hyrule Castle East Entry'), ('Wooden Bridge 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'), @@ -3021,7 +3024,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'), - ('Hobo Mirror Spot', 'Stone Bridge Water'),# + ('Hobo Mirror Spot', 'Stone Bridge Water'), ('Tree Line Mirror Spot', 'Tree Line Area'), ('Desert Ledge Mirror Spot', 'Desert Ledge'), ('Checkerboard Mirror Spot', 'Desert Checkerboard Ledge'), @@ -3040,7 +3043,9 @@ mandatory_connections = [('Links House S&Q', 'Links House'), ('Octoballoon Mirror Spot', 'Octoballoon Area'), ('Ice Rod Cave Mirror Spot', 'Ice Rod Cave Area'), ('Spectacle Rock Mirror Spot', 'Spectacle Rock Ledge'), - ('East Death Mountain (Top) Mirror Spot', 'East Death Mountain (Top East)'), + ('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)'), ('Spiral Cave Mirror Spot', 'Spiral Cave Ledge'), ('Mimic Cave Mirror Spot', 'Mimic Cave Ledge'), ('Isolated Ledge Mirror Spot', 'Fairy Ascension Ledge'), diff --git a/Regions.py b/Regions.py index 2a79c9fb..d419b619 100644 --- a/Regions.py +++ b/Regions.py @@ -201,9 +201,9 @@ def create_regions(world, player): 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, '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', 'Bumper Cave NW', 'Bumper Cave SE']), - create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Mirror Spot', 'Bumper Cave Ledge Drop']), - create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave (Top)', 'Bumper Cave Ledge Mirror Spot', 'Bumper Cave Ledge Drop']), + 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, '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']), @@ -227,12 +227,12 @@ def create_regions(world, player): 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'], ['Pyramid SW', 'Pyramid SE']), + create_dw_region(player, 'Pyramid Pass', ['Pyramid'], ['HC Area 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 Water', None, ['Broken Bridge NC']), - create_dw_region(player, 'Dark Dune Area', None, ['Dark Dune NW', 'Dark Dune WN', 'Dark Dune SC']), + 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']), @@ -293,8 +293,8 @@ def create_regions(world, player): 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']), - create_dw_region(player, 'Dark Death Mountain (Top West)', None, ['Ganons Tower', 'Dark Death Mountain Drop (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) Mirror Spot', 'East Dark Death Mountain WN', 'East Dark Death Mountain EN']), + create_dw_region(player, 'Dark Death Mountain (Top West)', None, ['Ganons Tower', 'Dark Death Mountain Drop (West)', 'West Death Mountain (Top) Mirror Spot', '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 (East Bottom)', None, ['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)', 'Fairy Ascension Mirror Spot']), 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']), diff --git a/Rules.py b/Rules.py index 9c11552a..fd3c701f 100644 --- a/Rules.py +++ b/Rules.py @@ -110,6 +110,10 @@ def global_rules(world, player): world.get_region('Menu', player).can_reach_private = lambda state: True for exit in world.get_region('Menu', player).exits: exit.hide_path = True + + world.get_region('Flute Sky', player).can_reach_private = lambda state: True + for exit in world.get_region('Flute Sky', player).exits: + exit.hide_path = True set_rule(world.get_entrance('Old Man S&Q', player), lambda state: state.can_reach('Old Man', 'Location', player)) @@ -395,7 +399,6 @@ def global_rules(world, player): # End of door rando rules. - add_rule(world.get_location('Sunken Treasure', player), lambda state: state.has('Open Floodgate', player)) set_rule(world.get_location('Ganon', player), lambda state: state.has_beam_sword(player) and state.has_fire_source(player) and state.has_crystals(world.crystals_needed_for_ganon[player], player) and (state.has('Tempered Sword', player) or state.has('Golden Sword', player) or (state.has('Silver Arrows', player) and state.can_shoot_arrows(player)) or state.has('Lamp', player) or state.can_extend_magic(player, 12))) # need to light torch a sufficient amount of times set_rule(world.get_entrance('Ganon Drop', player), lambda state: state.has_beam_sword(player)) # need to damage ganon to get tiles to drop @@ -409,21 +412,23 @@ def default_rules(world, 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 releaxed 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('Bonk Fairy (Light)', player), lambda state: state.has_Boots(player)) - set_rule(world.get_entrance('Bat Cave Drop Ledge', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('Bat Cave Ledge Peg', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Lumberjack Tree Tree', player), lambda state: state.has_Boots(player) and state.has('Beat Agahnim 1', player)) set_rule(world.get_entrance('Bonk Rock Cave', player), lambda state: state.has_Boots(player)) - set_rule(world.get_entrance('Desert Palace Stairs', player), lambda state: state.has('Book of Mudora', player)) + set_rule(world.get_entrance('Desert Palace Statue Move', player), lambda state: state.has('Book of Mudora', player)) set_rule(world.get_entrance('Sanctuary Grave', 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('50 Rupee Cave', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Death Mountain Entrance Rock', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Bumper Cave Entrance Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Flute Spot 1', player), lambda state: state.has('Ocarina', player)) - set_rule(world.get_entrance('Lake Hylia Central Island Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Dark Desert Teleporter', player), lambda state: state.has('Ocarina', player) and state.can_lift_heavy_rocks(player)) + + set_rule(world.get_entrance('DM Ascent Entrance Mirror Spot', player), lambda state: state.has_Mirror(player)) + + set_rule(world.get_entrance('Lake Hylia Teleporter', player), lambda state: state.can_lift_heavy_rocks(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('East Hyrule Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot use hammer set_rule(world.get_entrance('South Hyrule Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot use hammer - set_rule(world.get_entrance('Kakariko Teleporter', player), lambda state: ((state.has('Hammer', player) and state.can_lift_rocks(player)) or state.can_lift_heavy_rocks(player)) and state.has_Pearl(player)) # bunny cannot lift bushes + 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 set_rule(world.get_location('Flute Spot', player), lambda state: state.has('Shovel', player)) set_rule(world.get_location('Zora\'s Ledge', player), lambda state: state.has('Flippers', player)) @@ -441,19 +446,20 @@ def default_rules(world, player): set_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Fairy Ascension Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: state.has('Mirror', player)) # can erase block - set_rule(world.get_entrance('Death Mountain (Top)', player), lambda state: state.has('Hammer', player)) + 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('Turtle Rock Teleporter', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player)) - set_rule(world.get_entrance('East Death Mountain (Top)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_location('Catfish', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Northeast Dark World Broken Bridge Pass', player), lambda state: state.has_Pearl(player) and (state.can_lift_rocks(player) or state.has('Hammer', player) or state.has('Flippers', player))) - set_rule(world.get_entrance('East Dark World Broken Bridge Pass', player), lambda state: state.has_Pearl(player) and (state.can_lift_rocks(player) or state.has('Hammer', player))) - set_rule(world.get_entrance('South Dark World Bridge', player), lambda state: state.has('Hammer', player) and state.has_Pearl(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('Hammer Bridge Pegs (North)', player), lambda state: state.has('Hammer', player) and state.has_Pearl(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('West Dark World Gap', player), lambda state: state.has_Pearl(player) and state.has('Hookshot', 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('Palace of Darkness', player), lambda state: state.has_Pearl(player)) # kiki needs pearl - set_rule(world.get_entrance('Hyrule Castle Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Hyrule Castle Main Gate', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('HC Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Hyrule Castle Main Gate (South)', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Hyrule Castle Main Gate (North)', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Dark Lake Hylia Drop (East)', player), lambda state: (state.has_Pearl(player) and state.has('Flippers', player) or state.has_Mirror(player))) # Overworld Bunny Revival set_rule(world.get_location('Bombos Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has_beam_sword(player) and state.has_Mirror(player)) set_rule(world.get_entrance('Dark Lake Hylia Drop (South)', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) # ToDo any fake flipper set up? @@ -468,17 +474,17 @@ def default_rules(world, player): 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('Cave 45 Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('East Dark World Bridge', player), lambda state: state.has_Pearl(player) and state.has('Hammer', 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)) set_rule(world.get_entrance('Lake Hylia Central Island Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('East Dark World River Pier', player), lambda state: state.has_Pearl(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('Bumper Cave Entrance Rock', player), lambda state: state.has_Pearl(player) and state.can_lift_rocks(player)) - set_rule(world.get_entrance('Bumper Cave Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Bat Cave Drop Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('DM Ascent Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Bat Cave Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) 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('Village of Outcasts Eastern Rocks', player), lambda state: state.has_Pearl(player) and state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Peg Area Rocks', player), lambda state: state.has_Pearl(player) and state.can_lift_heavy_rocks(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('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('Bumper Cave Exit (Top)', player), lambda state: state.has('Cape', player)) @@ -486,15 +492,16 @@ def default_rules(world, player): 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('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('Desert Ledge (Northeast) 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)) - set_rule(world.get_entrance('Desert Palace Stairs Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Desert Palace Entrance (North) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('DP Stairs Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('DP Entrance (North) 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('Hookshot Cave', player), lambda state: state.can_lift_rocks(player) and state.has_Pearl(player)) - set_rule(world.get_entrance('East Death Mountain (Top) 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('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 @@ -503,6 +510,111 @@ def default_rules(world, player): set_rule(world.get_entrance('Floating Island Mirror Spot', player), lambda state: state.has_Mirror(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 (Top)', 'Region', player)) # sword required to cast magic (!) + # + set_rule(world.get_entrance('Lost Woods 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)) + set_rule(world.get_entrance('Lost Woods Pass East Top Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Lost Woods East Bottom Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Kakariko Fortune Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Kakariko Pond Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Forgotton Forest Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Bonk Rock Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Useless Fairy Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Useless Fairy 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)) + set_rule(world.get_entrance('Potion Shop Northeast Mirror Spot', player), lambda state: state.has_Mirror(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('Blacksmith 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 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('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('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)) + set_rule(world.get_entrance('C Whirlpool Outer Mirror Spot', player), lambda state: state.has_Mirror(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('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)) + set_rule(world.get_entrance('Purple Chest Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dam Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Statues Mirror Spot', player), lambda state: state.has_Mirror(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('South Shore 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)) + set_rule(world.get_entrance('TR Pegs Area Mirror Spot', player), lambda state: state.has_Mirror(player)) + + set_rule(world.get_entrance('Potion Shop Rock (South)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Potion Shop Rock (North)', player), lambda state: state.can_lift_rocks(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('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('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('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('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('Dig Game Drop To Ledge', 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('Potion Shop Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Zora Warning 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('Octoballoon 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('Dark Witch Water Drop', 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_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('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('Southeast DW Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) + + set_rule(world.get_entrance('C Whirlpool', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Useless Fairy Whirlpool', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Lake Hylia Whirlpool', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Zora Whirlpool', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Kakariko Pond Whirlpool', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Octoballoon Whirlpool', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Qirn Jump Whirlpool', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) + set_rule(world.get_entrance('Southeast DW Whirlpool', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) + + set_rule(world.get_entrance('Flute Spot 1', player), lambda state: state.can_flute(player)) + set_rule(world.get_entrance('Flute Spot 2', player), lambda state: state.can_flute(player)) + set_rule(world.get_entrance('Flute Spot 3', player), lambda state: state.can_flute(player)) + set_rule(world.get_entrance('Flute Spot 4', player), lambda state: state.can_flute(player)) + set_rule(world.get_entrance('Flute Spot 5', player), lambda state: state.can_flute(player)) + set_rule(world.get_entrance('Flute Spot 6', player), lambda state: state.can_flute(player)) + set_rule(world.get_entrance('Flute Spot 7', player), lambda state: state.can_flute(player)) + set_rule(world.get_entrance('Flute Spot 8', player), lambda state: state.can_flute(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('Ganons Tower', player), lambda state: False) # This is a safety for the TR function below to not require GT entrance in its key logic.