From 5c5cb7f531a87af39ed41a563957fead7004f663 Mon Sep 17 00:00:00 2001 From: StructuralMike <66819228+StructuralMike@users.noreply.github.com> Date: Sun, 7 Mar 2021 12:35:28 +0100 Subject: [PATCH] 1xPoD and 1xTR crystal room --- DoorShuffle.py | 24 ++++++++++++++++++++++-- Doors.py | 42 +++++++++++++++++++++++++++++++++++++++--- Dungeons.py | 7 +++++-- PotShuffle.py | 2 +- Regions.py | 27 +++++++++++++++++++++++---- Rules.py | 27 +++++++++++++++++++++++---- 6 files changed, 113 insertions(+), 16 deletions(-) diff --git a/DoorShuffle.py b/DoorShuffle.py index 37dfa28c..8c55bc6d 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -1986,7 +1986,6 @@ logical_connections = [ ('Desert Main Lobby Right Path', 'Desert Right Alcove'), ('Desert Left Alcove Path', 'Desert Main Lobby'), ('Desert Right Alcove Path', 'Desert Main Lobby'), - ('Hera Lobby to Front Barrier - Blue', 'Hera Front'), ('Hera Front to Lobby Barrier - Blue', 'Hera Lobby'), ('Hera Lobby to Crystal', 'Hera Lobby Crystal'), @@ -1999,7 +1998,6 @@ logical_connections = [ ('Hera Down Stairs to Front Barrier - Blue', 'Hera Front'), ('Hera Up Stairs to Front Barrier - Orange', 'Hera Front'), ('Hera Back to Front Barrier - Orange', 'Hera Front'), - ('Hera Big Chest Hook Path', 'Hera Big Chest Landing'), ('Hera Big Chest Landing Exit', 'Hera 4F'), ('PoD Pit Room Block Path N', 'PoD Pit Room Blocked'), @@ -2014,6 +2012,18 @@ logical_connections = [ ('PoD Basement Ledge Drop Down', 'PoD Stalfos Basement'), ('PoD Falling Bridge Path N', 'PoD Falling Bridge Ledge'), ('PoD Falling Bridge Path S', 'PoD Falling Bridge'), + ('PoD Dark Pegs Landing to Right', 'PoD Dark Pegs Right'), + ('PoD Dark Pegs Landing to Ranged Crystal', 'PoD Dark Pegs Landing - Ranged Crystal'), + ('PoD Dark Pegs Right to Landing', 'PoD Dark Pegs Landing'), + ('PoD Dark Pegs Right to Middle Barrier - Orange', 'PoD Dark Pegs Middle'), + ('PoD Dark Pegs Middle to Right Barrier - Orange', 'PoD Dark Pegs Right'), + ('PoD Dark Pegs Middle to Left Barrier - Blue', 'PoD Dark Pegs Left'), + ('PoD Dark Pegs Middle to Ranged Crystal', 'PoD Dark Pegs Middle - Ranged Crystal'), + ('PoD Dark Pegs Left to Middle Barrier - Blue', 'PoD Dark Pegs Middle'), + ('PoD Dark Pegs Left to Ranged Crystal', 'PoD Dark Pegs Left - Ranged Crystal'), + ('PoD Dark Pegs Landing Ranged Crystal Exit', 'PoD Dark Pegs Landing'), + ('PoD Dark Pegs Middle Ranged Crystal Exit', 'PoD Dark Pegs Middle'), + ('PoD Dark Pegs Left Ranged Crystal Exit', 'PoD Dark Pegs Left'), ('Swamp Lobby Moat', 'Swamp Entrance'), ('Swamp Entrance Moat', 'Swamp Lobby'), ('Swamp Trench 1 Approach Dry', 'Swamp Trench 1 Nexus'), @@ -2106,6 +2116,16 @@ logical_connections = [ ('TR Pipe Ledge Drop Down', 'TR Pipe Pit'), ('TR Big Chest Gap', 'TR Big Chest Entrance'), ('TR Big Chest Entrance Gap', 'TR Big Chest'), + ('TR Crystaroller Bottom to Middle Barrier - Orange', 'TR Crystaroller Middle'), + ('TR Crystaroller Bottom to Ranged Crystal', 'TR Crystaroller Bottom - Ranged Crystal'), + ('TR Crystaroller Middle to Bottom Barrier - Orange', 'TR Crystaroller Bottom'), + ('TR Crystaroller Middle to Chest Barrier - Blue', 'TR Crystaroller Chest'), + ('TR Crystaroller Middle to Top Barrier - Orange', 'TR Crystaroller Top'), + ('TR Crystaroller Middle to Ranged Crystal', 'TR Crystaroller Middle - Ranged Crystal'), + ('TR Crystaroller Top to Middle Barrier - Orange', 'TR Crystaroller Middle'), + ('TR Crystaroller Chest to Middle Barrier - Blue', 'TR Crystaroller Middle'), + ('TR Crystaroller Middle Ranged Crystal Exit', 'TR Crystaroller Middle'), + ('TR Crystaroller Bottom Ranged Crystal Exit', 'TR Crystaroller Bottom'), ('TR Crystal Maze Forwards Path', 'TR Crystal Maze End'), ('TR Crystal Maze Blue Path', 'TR Crystal Maze'), ('TR Crystal Maze Cane Path', 'TR Crystal Maze'), diff --git a/Doors.py b/Doors.py index e4c82ae3..1325887b 100644 --- a/Doors.py +++ b/Doors.py @@ -411,6 +411,20 @@ def create_doors(world, player): create_door(player, 'PoD Bow Statue SW', Intr).dir(So, 0x1b, Left, High).pos(0), create_door(player, 'PoD Bow Statue Down Ladder', Lddr).no_entrance(), create_door(player, 'PoD Dark Pegs Up Ladder', Lddr), + + create_door(player, 'PoD Dark Pegs Landing to Right', Lgcl), + create_door(player, 'PoD Dark Pegs Landing to Ranged Crystal', Lgcl), + create_door(player, 'PoD Dark Pegs Right to Landing', Lgcl), + create_door(player, 'PoD Dark Pegs Right to Middle Barrier - Orange', Lgcl), + create_door(player, 'PoD Dark Pegs Middle to Right Barrier - Orange', Lgcl), + create_door(player, 'PoD Dark Pegs Middle to Left Barrier - Blue', Lgcl), + create_door(player, 'PoD Dark Pegs Middle to Ranged Crystal', Lgcl), + create_door(player, 'PoD Dark Pegs Left to Middle Barrier - Blue', Lgcl), + create_door(player, 'PoD Dark Pegs Left to Ranged Crystal', Lgcl), + create_door(player, 'PoD Dark Pegs Landing Ranged Crystal Exit', Lgcl), + create_door(player, 'PoD Dark Pegs Middle Ranged Crystal Exit', Lgcl), + create_door(player, 'PoD Dark Pegs Left Ranged Crystal Exit', Lgcl), + create_door(player, 'PoD Dark Pegs WN', Intr).dir(We, 0x0b, Mid, High).small_key().pos(2), create_door(player, 'PoD Lonely Turtle SW', Intr).dir(So, 0x0b, Mid, High).pos(0), create_door(player, 'PoD Lonely Turtle EN', Intr).dir(Ea, 0x0b, Mid, High).small_key().pos(2), @@ -935,6 +949,16 @@ def create_doors(world, player): create_door(player, 'TR Rupees SE', Intr).dir(So, 0x04, Right, High).pos(3), create_door(player, 'TR Dash Room NW', Intr).dir(No, 0x04, Left, High).pos(1), create_door(player, 'TR Crystaroller SW', Intr).dir(So, 0x04, Left, High).pos(1), + create_door(player, 'TR Crystaroller Bottom to Middle Barrier - Orange', Lgcl), + create_door(player, 'TR Crystaroller Bottom to Ranged Crystal', Lgcl), + create_door(player, 'TR Crystaroller Middle to Bottom Barrier - Orange', Lgcl), + create_door(player, 'TR Crystaroller Middle to Chest Barrier - Blue', Lgcl), + create_door(player, 'TR Crystaroller Middle to Top Barrier - Orange', Lgcl), + create_door(player, 'TR Crystaroller Middle to Ranged Crystal', Lgcl), + create_door(player, 'TR Crystaroller Top to Middle Barrier - Orange', Lgcl), + create_door(player, 'TR Crystaroller Chest to Middle Barrier - Blue', Lgcl), + create_door(player, 'TR Crystaroller Middle Ranged Crystal Exit', Lgcl), + create_door(player, 'TR Crystaroller Bottom Ranged Crystal Exit', Lgcl), create_door(player, 'TR Crystaroller Down Stairs', Sprl).dir(Dn, 0x04, 0, HTH).ss(A, 0x12, 0x80, True, True).small_key().pos(0), create_door(player, 'TR Dark Ride Up Stairs', Sprl).dir(Up, 0xb5, 0, HTH).ss(A, 0x1b, 0x6c), create_door(player, 'TR Dark Ride SW', Nrml).dir(So, 0xb5, Left, High).trap(0x4).pos(0).portal(Z, 0x22), @@ -1179,8 +1203,13 @@ def create_doors(world, player): world.get_door('PoD Map Balcony South Stairs', player).c_switch() world.get_door('PoD Bow Statue SW', player).c_switch() world.get_door('PoD Bow Statue Down Ladder', player).c_switch() - world.get_door('PoD Dark Pegs Up Ladder', player).c_switch() - world.get_door('PoD Dark Pegs WN', player).c_switch() + world.get_door('PoD Dark Pegs Right to Middle Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('PoD Dark Pegs Middle to Right Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('PoD Dark Pegs Middle to Left Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('PoD Dark Pegs Left to Middle Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('PoD Dark Pegs Landing Ranged Crystal Exit', player).c_switch() + world.get_door('PoD Dark Pegs Middle Ranged Crystal Exit', player).c_switch() + world.get_door('PoD Dark Pegs Left Ranged Crystal Exit', player).c_switch() world.get_door('Swamp Crystal Switch EN', player).c_switch() world.get_door('Swamp Crystal Switch SE', player).c_switch() @@ -1249,7 +1278,14 @@ def create_doors(world, player): world.get_door('TR Chain Chomps Down Stairs', player).c_switch() world.get_door('TR Pokey 2 EN', player).c_switch() world.get_door('TR Pokey 2 ES', player).c_switch() - world.get_door('TR Crystaroller SW', player).c_switch() + world.get_door('TR Crystaroller Bottom to Middle Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('TR Crystaroller Middle to Bottom Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('TR Crystaroller Middle to Chest Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('TR Crystaroller Chest to Middle Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('TR Crystaroller Middle to Top Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('TR Crystaroller Top to Middle Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('TR Crystaroller Middle Ranged Crystal Exit', player).c_switch() + world.get_door('TR Crystaroller Bottom Ranged Crystal Exit', player).c_switch() world.get_door('TR Crystaroller Down Stairs', player).c_switch() world.get_door('TR Crystal Maze ES', player).c_switch() world.get_door('TR Crystal Maze Forwards Path', player).c_switch() diff --git a/Dungeons.py b/Dungeons.py index 275bbf98..8106a59b 100644 --- a/Dungeons.py +++ b/Dungeons.py @@ -214,7 +214,9 @@ pod_regions = [ 'PoD Map Balcony', 'PoD Conveyor', 'PoD Mimics 1', 'PoD Jelly Hall', 'PoD Warp Hint', 'PoD Warp Room', 'PoD Stalfos Basement', 'PoD Basement Ledge', 'PoD Big Key Landing', 'PoD Falling Bridge', 'PoD Falling Bridge Ledge', 'PoD Dark Maze', 'PoD Big Chest Balcony', 'PoD Compass Room', 'PoD Dark Basement', - 'PoD Harmless Hellway', 'PoD Mimics 2', 'PoD Bow Statue', 'PoD Dark Pegs', 'PoD Lonely Turtle', 'PoD Turtle Party', + 'PoD Harmless Hellway', 'PoD Mimics 2', 'PoD Bow Statue', 'PoD Dark Pegs Landing', 'PoD Dark Pegs Right', + 'PoD Dark Pegs Middle', 'PoD Dark Pegs Left', 'PoD Dark Pegs Landing - Ranged Crystal', + 'PoD Dark Pegs Middle - Ranged Crystal', 'PoD Dark Pegs Left - Ranged Crystal', 'PoD Lonely Turtle', 'PoD Turtle Party', 'PoD Dark Alley', 'PoD Callback', 'PoD Boss', 'Palace of Darkness Portal' ] @@ -282,7 +284,8 @@ tr_regions = [ 'TR Tile Room', 'TR Refill', 'TR Pokey 1', 'TR Chain Chomps', 'TR Pipe Pit', 'TR Pipe Ledge', 'TR Lava Dual Pipes', 'TR Lava Island', 'TR Lava Escape', 'TR Pokey 2', 'TR Twin Pokeys', 'TR Hallway', 'TR Dodgers', 'TR Big View', 'TR Big Chest', 'TR Big Chest Entrance', 'TR Lazy Eyes', 'TR Dash Room', 'TR Tongue Pull', 'TR Rupees', - 'TR Crystaroller', 'TR Dark Ride', 'TR Dash Bridge', 'TR Eye Bridge', 'TR Crystal Maze', 'TR Crystal Maze End', + 'TR Crystaroller Bottom', 'TR Crystaroller Middle', 'TR Crystaroller Top', 'TR Crystaroller Chest', 'TR Crystaroller Middle - Ranged Crystal', 'TR Crystaroller Bottom - Ranged Crystal', + 'TR Dark Ride', 'TR Dash Bridge', 'TR Eye Bridge', 'TR Crystal Maze', 'TR Crystal Maze End', 'TR Final Abyss', 'TR Boss', 'Turtle Rock Main Portal', 'Turtle Rock Lazy Eyes Portal', 'Turtle Rock Chest Portal', 'Turtle Rock Eye Bridge Portal' ] diff --git a/PotShuffle.py b/PotShuffle.py index 5fb99a86..9678d22b 100644 --- a/PotShuffle.py +++ b/PotShuffle.py @@ -24,7 +24,7 @@ vanilla_pots = { 9: [Pot(12, 4, PotItem.OneRupee, 'PoD Shooter Room'), Pot(48, 4, PotItem.Heart, 'PoD Shooter Room'), Pot(12, 12, PotItem.Switch, 'PoD Shooter Room')], 10: [Pot(96, 8, PotItem.Heart, 'PoD Stalfos Basement'), Pot(104, 8, PotItem.Heart, 'PoD Stalfos Basement'), Pot(204, 11, PotItem.Switch, 'PoD Stalfos Basement'), Pot(100, 9, PotItem.Nothing, 'PoD Stalfos Basement'), Pot(156, 17, PotItem.Bomb, 'PoD Basement Ledge', PotFlags.SwitchLogicChange), Pot(160, 17, PotItem.FiveArrows, 'PoD Basement Ledge', PotFlags.SwitchLogicChange)], - 11: [Pot(202, 3, PotItem.Bomb, 'PoD Dark Pegs'), Pot(202, 12, PotItem.Bomb, 'PoD Dark Pegs')], + 11: [Pot(202, 3, PotItem.Bomb, 'PoD Dark Pegs Left'), Pot(202, 12, PotItem.Bomb, 'PoD Dark Pegs Left')], 17: [Pot(152, 19, PotItem.Nothing, 'Sewers Secret Room'), Pot(152, 15, PotItem.Nothing, 'Sewers Secret Room'), Pot(144, 15, PotItem.Heart, 'Sewers Secret Room'), Pot(160, 15, PotItem.Heart, 'Sewers Secret Room'), Pot(144, 19, PotItem.Heart, 'Sewers Secret Room'), Pot(160, 19, PotItem.Heart, 'Sewers Secret Room')], 21: [Pot(96, 4, PotItem.Bomb, 'TR Pipe Pit'), Pot(100, 4, PotItem.SmallMagic, 'TR Pipe Pit'), Pot(104, 4, PotItem.Heart, 'TR Pipe Pit'), Pot(108, 4, PotItem.SmallMagic, 'TR Pipe Pit'), Pot(112, 4, PotItem.FiveArrows, 'TR Pipe Pit'), diff --git a/Regions.py b/Regions.py index 95a1051c..665c7d4e 100644 --- a/Regions.py +++ b/Regions.py @@ -409,7 +409,15 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'PoD Harmless Hellway', 'Palace of Darkness', ['Palace of Darkness - Harmless Hellway'], ['PoD Harmless Hellway NE', 'PoD Harmless Hellway SE']), create_dungeon_region(player, 'PoD Mimics 2', 'Palace of Darkness', None, ['PoD Mimics 2 SW', 'PoD Mimics 2 NW']), create_dungeon_region(player, 'PoD Bow Statue', 'Palace of Darkness', None, ['PoD Bow Statue SW', 'PoD Bow Statue Down Ladder']), - create_dungeon_region(player, 'PoD Dark Pegs', 'Palace of Darkness', None, ['PoD Dark Pegs Up Ladder', 'PoD Dark Pegs WN']), + + create_dungeon_region(player, 'PoD Dark Pegs Landing', 'Palace of Darkness', None, ['PoD Dark Pegs Up Ladder', 'PoD Dark Pegs Landing to Right', 'PoD Dark Pegs Landing to Ranged Crystal']), + create_dungeon_region(player, 'PoD Dark Pegs Right', 'Palace of Darkness', None, ['PoD Dark Pegs Right to Landing', 'PoD Dark Pegs Right to Middle Barrier - Orange']), + create_dungeon_region(player, 'PoD Dark Pegs Middle', 'Palace of Darkness', None, ['PoD Dark Pegs Middle to Right Barrier - Orange', 'PoD Dark Pegs Middle to Left Barrier - Blue', 'PoD Dark Pegs Middle to Ranged Crystal']), + create_dungeon_region(player, 'PoD Dark Pegs Left', 'Palace of Darkness', None, ['PoD Dark Pegs WN', 'PoD Dark Pegs Left to Middle Barrier - Blue', 'PoD Dark Pegs Left to Ranged Crystal']), + create_dungeon_region(player, 'PoD Dark Pegs Landing - Ranged Crystal', 'Palace of Darkness', None, ['PoD Dark Pegs Landing Ranged Crystal Exit']), + create_dungeon_region(player, 'PoD Dark Pegs Middle - Ranged Crystal', 'Palace of Darkness', None, ['PoD Dark Pegs Middle Ranged Crystal Exit']), + create_dungeon_region(player, 'PoD Dark Pegs Left - Ranged Crystal', 'Palace of Darkness', None, ['PoD Dark Pegs Left Ranged Crystal Exit']), + create_dungeon_region(player, 'PoD Lonely Turtle', 'Palace of Darkness', None, ['PoD Lonely Turtle SW', 'PoD Lonely Turtle EN']), create_dungeon_region(player, 'PoD Turtle Party', 'Palace of Darkness', None, ['PoD Turtle Party ES', 'PoD Turtle Party NW']), create_dungeon_region(player, 'PoD Dark Alley', 'Palace of Darkness', None, ['PoD Dark Alley NE']), @@ -659,7 +667,13 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'TR Dash Room', 'Turtle Rock', None, ['TR Dash Room SW', 'TR Dash Room ES', 'TR Dash Room NW']), create_dungeon_region(player, 'TR Tongue Pull', 'Turtle Rock', None, ['TR Tongue Pull WS', 'TR Tongue Pull NE']), create_dungeon_region(player, 'TR Rupees', 'Turtle Rock', None, ['TR Rupees SE']), - create_dungeon_region(player, 'TR Crystaroller', 'Turtle Rock', ['Turtle Rock - Crystaroller Room'], ['TR Crystaroller SW', 'TR Crystaroller Down Stairs']), + create_dungeon_region(player, 'TR Crystaroller Bottom' , 'Turtle Rock', None, ['TR Crystaroller Bottom to Middle Barrier - Orange', 'TR Crystaroller Bottom to Ranged Crystal', 'TR Crystaroller SW']), + create_dungeon_region(player, 'TR Crystaroller Middle', 'Turtle Rock', None, ['TR Crystaroller Middle to Bottom Barrier - Orange', 'TR Crystaroller Middle to Chest Barrier - Blue', 'TR Crystaroller Middle to Top Barrier - Orange', 'TR Crystaroller Middle to Ranged Crystal']), + create_dungeon_region(player, 'TR Crystaroller Top', 'Turtle Rock', None, ['TR Crystaroller Top to Middle Barrier - Orange', 'TR Crystaroller Down Stairs']), + create_dungeon_region(player, 'TR Crystaroller Chest', 'Turtle Rock', ['Turtle Rock - Crystaroller Room'], ['TR Crystaroller Chest to Middle Barrier - Blue']), + create_dungeon_region(player, 'TR Crystaroller Middle - Ranged Crystal', 'Turtle Rock', None, ['TR Crystaroller Middle Ranged Crystal Exit']), + create_dungeon_region(player, 'TR Crystaroller Bottom - Ranged Crystal', 'Turtle Rock', None, ['TR Crystaroller Bottom Ranged Crystal Exit']), + create_dungeon_region(player, 'TR Dark Ride', 'Turtle Rock', None, ['TR Dark Ride Up Stairs', 'TR Dark Ride SW']), create_dungeon_region(player, 'TR Dash Bridge', 'Turtle Rock', None, ['TR Dash Bridge NW', 'TR Dash Bridge SW', 'TR Dash Bridge WS']), create_dungeon_region(player, 'TR Eye Bridge', 'Turtle Rock', ['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right', @@ -771,7 +785,10 @@ def create_dungeon_regions(world, player): world.get_region('PoD Arena Bridge', player).crystal_switch = True # RANGED Weapon Required world.get_region('PoD Sexy Statue', player).crystal_switch = True world.get_region('PoD Bow Statue', player).crystal_switch = True # LADDER not accessible (maybe with cane) - world.get_region('PoD Dark Pegs', player).crystal_switch = True + world.get_region('PoD Dark Pegs Right', player).crystal_switch = True + world.get_region('PoD Dark Pegs Landing - Ranged Crystal', player).crystal_switch = True + world.get_region('PoD Dark Pegs Middle - Ranged Crystal', player).crystal_switch = True + world.get_region('PoD Dark Pegs Left - Ranged Crystal', player).crystal_switch = True world.get_region('Swamp Crystal Switch', player).crystal_switch = True world.get_region('Thieves Spike Switch', player).crystal_switch = True world.get_region('Ice Bomb Drop', player).crystal_switch = True @@ -784,7 +801,9 @@ def create_dungeon_regions(world, player): world.get_region('Mire Falling Foes', player).crystal_switch = True world.get_region('TR Chain Chomps', player).crystal_switch = True world.get_region('TR Pokey 2', player).crystal_switch = True - world.get_region('TR Crystaroller', player).crystal_switch = True + world.get_region('TR Crystaroller Top', player).crystal_switch = True + world.get_region('TR Crystaroller Middle - Ranged Crystal', player).crystal_switch = True + world.get_region('TR Crystaroller Bottom - Ranged Crystal', player).crystal_switch = True world.get_region('TR Crystal Maze', player).crystal_switch = True world.get_region('GT Crystal Conveyor', player).crystal_switch = True # INTERIOR not accessible world.get_region('GT Hookshot South Platform', player).crystal_switch = True diff --git a/Rules.py b/Rules.py index 4f9bd3fb..d16231ad 100644 --- a/Rules.py +++ b/Rules.py @@ -184,8 +184,8 @@ def global_rules(world, player): set_rule(world.get_entrance('PoD Mimics 2 NW', player), lambda state: state.can_shoot_arrows(player)) set_rule(world.get_entrance('PoD Bow Statue Down Ladder', player), lambda state: state.can_shoot_arrows(player)) set_rule(world.get_entrance('PoD Map Balcony Drop Down', player), lambda state: state.has('Hammer', player)) - set_rule(world.get_entrance('PoD Dark Pegs WN', player), lambda state: state.has('Hammer', player)) - set_rule(world.get_entrance('PoD Dark Pegs Up Ladder', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('PoD Dark Pegs Landing to Right', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('PoD Dark Pegs Right to Landing', player), lambda state: state.has('Hammer', player)) set_defeat_dungeon_boss_rule(world.get_location('Palace of Darkness - Boss', player)) set_defeat_dungeon_boss_rule(world.get_location('Palace of Darkness - Prize', player)) @@ -358,6 +358,15 @@ def global_rules(world, player): set_rule(world.get_entrance('Hera Front to Back Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('Hera Front', player), player)) set_rule(world.get_entrance('Hera Back to Front Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('Hera Back', player), player)) set_rule(world.get_entrance('PoD Arena Crystal Path', player), lambda state: state.can_reach_blue(world.get_region('PoD Arena Crystal', player), player)) + + set_rule(world.get_entrance('PoD Dark Pegs Landing to Ranged Crystal', player), lambda state: state.has('Cane of Somaria', player)) + set_rule(world.get_entrance('PoD Dark Pegs Right to Middle Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('PoD Dark Pegs Right', player), player)) + set_rule(world.get_entrance('PoD Dark Pegs Middle to Right Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('PoD Dark Pegs Middle', player), player)) + set_rule(world.get_entrance('PoD Dark Pegs Middle to Left Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('PoD Dark Pegs Middle', player), player)) + set_rule(world.get_entrance('PoD Dark Pegs Middle to Ranged Crystal', player), lambda state: state.has_beam_sword(player) or state.can_shoot_arrows(player) or state.can_use_bombs(player) or state.has('Red Boomerang', player) or state.has('Fire Rod', player) or state.has('Ice Rod', player) or state.has('Cane of Somaria', player)) + set_rule(world.get_entrance('PoD Dark Pegs Left to Middle Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('PoD Dark Pegs Left', player), player)) + set_rule(world.get_entrance('PoD Dark Pegs Left to Ranged Crystal', player), lambda state: state.has_beam_sword(player) or state.can_shoot_arrows(player) or state.has('Red Boomerang', player) or state.has('Fire Rod', player) or state.has('Ice Rod', player) or state.has('Cane of Somaria', player)) + set_rule(world.get_entrance('Swamp Trench 2 Pots Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Swamp Trench 2 Pots', player), player)) set_rule(world.get_entrance('Swamp Shortcut Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Swamp Shortcut', player), player)) set_rule(world.get_entrance('Thieves Hellway Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Thieves Hellway', player), player)) @@ -382,6 +391,14 @@ def global_rules(world, player): set_rule(world.get_entrance('Mire Compass Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Mire Compass Room', player), player)) set_rule(world.get_entrance('Mire Crystal Mid Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Mire Crystal Mid', player), player)) set_rule(world.get_entrance('Mire Crystal Left Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Mire Crystal Left', player), player)) + set_rule(world.get_entrance('TR Crystaroller Bottom to Middle Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('TR Crystaroller Bottom', player), player)) + set_rule(world.get_entrance('TR Crystaroller Bottom to Ranged Crystal', player), lambda state: state.has_beam_sword(player) or state.can_shoot_arrows(player) or state.has('Fire Rod', player) or state.has('Ice Rod', player) or state.has('Cane of Somaria', player)) + set_rule(world.get_entrance('TR Crystaroller Middle to Bottom Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('TR Crystaroller Middle', player), player)) + set_rule(world.get_entrance('TR Crystaroller Middle to Chest Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('TR Crystaroller Middle', player), player)) + set_rule(world.get_entrance('TR Crystaroller Middle to Top Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('TR Crystaroller Middle', player), player)) + set_rule(world.get_entrance('TR Crystaroller Middle to Ranged Crystal', player), lambda state: state.can_hit_switch_through_barrier(player)) + set_rule(world.get_entrance('TR Crystaroller Top to Middle Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('TR Crystaroller Top', player), player)) + set_rule(world.get_entrance('TR Crystaroller Chest to Middle Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('TR Crystaroller Chest', player), player)) set_rule(world.get_entrance('TR Crystal Maze Blue Path', player), lambda state: state.can_reach_blue(world.get_region('TR Crystal Maze End', player), player)) set_rule(world.get_entrance('GT Hookshot Entry Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('GT Hookshot South Entry', player), player)) set_rule(world.get_entrance('GT Double Switch Key Blue Path', player), lambda state: state.can_reach_blue(world.get_region('GT Double Switch Key Spot', player), player)) @@ -802,7 +819,8 @@ def no_glitches_rules(world, player): 'PoD Callback': {'sewer': False, 'entrances': ['PoD Callback WS', 'PoD Callback Warp'], 'locations': []}, 'PoD Turtle Party': {'sewer': False, 'entrances': ['PoD Turtle Party ES', 'PoD Turtle Party NW'], 'locations': []}, 'PoD Lonely Turtle': {'sewer': False, 'entrances': ['PoD Lonely Turtle SW', 'PoD Lonely Turtle EN'], 'locations': []}, - 'PoD Dark Pegs': {'sewer': False, 'entrances': ['PoD Dark Pegs Up Ladder', 'PoD Dark Pegs WN'], 'locations': []}, + 'PoD Dark Pegs Landing': {'sewer': False, 'entrances': ['PoD Dark Pegs Up Ladder', 'PoD Dark Pegs Landing to Right', 'PoD Dark Pegs Landing to Ranged Crystal'], 'locations': []}, + 'PoD Dark Pegs Left': {'sewer': False, 'entrances': ['PoD Dark Pegs WN', 'PoD Dark Pegs Left to Middle Barrier - Blue', 'PoD Dark Pegs Left to Ranged Crystal'], 'locations': []}, 'PoD Dark Basement': {'sewer': False, 'entrances': ['PoD Dark Basement W Up Stairs', 'PoD Dark Basement E Up Stairs'], 'locations': ['Palace of Darkness - Dark Basement - Left', 'Palace of Darkness - Dark Basement - Right']}, 'PoD Dark Maze': {'sewer': False, 'entrances': ['PoD Dark Maze EN', 'PoD Dark Maze E'], 'locations': ['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom']}, 'Eastern Dark Square': {'sewer': False, 'entrances': ['Eastern Dark Square NW', 'Eastern Dark Square Key Door WN', 'Eastern Dark Square EN'], 'locations': []}, @@ -1606,7 +1624,8 @@ bunny_impassible_doors = { 'PoD Pit Room Block Path S', 'PoD Stalfos Basement Warp', 'PoD Arena Main SW', 'PoD Arena Main Crystal Path', 'PoD Arena Bonk Path', 'PoD Arena Crystal Path', 'PoD Sexy Statue NW', 'PoD Map Balcony Drop Down', 'PoD Mimics 1 NW', 'PoD Warp Hint Warp', 'PoD Falling Bridge Path N', 'PoD Falling Bridge Path S', - 'PoD Mimics 2 NW', 'PoD Bow Statue Down Ladder', 'PoD Dark Pegs Up Ladder', 'PoD Dark Pegs WN', + 'PoD Mimics 2 NW', 'PoD Bow Statue Down Ladder', 'PoD Dark Pegs Landing to Right', 'PoD Dark Pegs Landing to Ranged Crystal', + 'PoD Dark Pegs Left to Middle Barrier - Blue', 'PoD Dark Pegs Left to Ranged Crystal', 'PoD Turtle Party ES', 'PoD Turtle Party NW', 'PoD Callback Warp', 'Swamp Lobby Moat', 'Swamp Entrance Moat', 'Swamp Trench 1 Approach Swim Depart', 'Swamp Trench 1 Approach Key', 'Swamp Trench 1 Key Approach', 'Swamp Trench 1 Key Ledge Depart', 'Swamp Trench 1 Departure Approach', 'Swamp Trench 1 Departure Key',