diff --git a/.gitignore b/.gitignore index ebaefc6a..c6a04651 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,7 @@ weights/ /MultiMystery/ /Players/ /QUsb2Snes/ -/tests +/tests/ resources/user/* !resources/user/.gitkeep diff --git a/DoorShuffle.py b/DoorShuffle.py index b20a8237..be4c9182 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -2164,6 +2164,7 @@ logical_connections = [ ('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'), + ('GT Blocked Stairs Block Path', 'GT Big Chest'), ('GT Speed Torch South Path', 'GT Speed Torch'), ('GT Speed Torch North Path', 'GT Speed Torch Upper'), @@ -2175,20 +2176,35 @@ logical_connections = [ ('GT Hookshot South-North Path', 'GT Hookshot North Platform'), ('GT Hookshot Platform Blue Barrier', 'GT Hookshot South Entry'), ('GT Hookshot Entry Blue Barrier', 'GT Hookshot South Platform'), - ('GT Hookshot Entry Boomerang Path', 'GT Hookshot South Platform'), - ('GT Double Switch Orange Barrier', 'GT Double Switch Switches'), - ('GT Double Switch Orange Barrier 2', 'GT Double Switch Key Spot'), - ('GT Double Switch Transition Blue', 'GT Double Switch Exit'), - ('GT Double Switch Blue Path', 'GT Double Switch Transition'), - ('GT Double Switch Orange Path', 'GT Double Switch Entry'), - ('GT Double Switch Key Blue Path', 'GT Double Switch Exit'), - ('GT Double Switch Key Orange Path', 'GT Double Switch Entry'), - ('GT Double Switch Blue Barrier', 'GT Double Switch Key Spot'), + ('GT Hookshot South Entry to Ranged Crystal', 'GT Hookshot South Entry - Ranged Crystal'), + ('GT HookShot South Entry Ranged Crystal Exit', 'GT Hookshot South Entry'), + ('GT Double Switch to Pot Corners Barrier - Orange', 'GT Double Switch Pot Corners'), + ('GT Double Switch Pot Corners to Barrier - Orange', 'GT Double Switch Entry'), + ('GT Double Switch Pot Corners to Barrier - Blue', 'GT Double Switch Exit'), + ('GT Double Switch Pot Corners to Ranged Switches', 'GT Double Switch Pot Corners - Ranged Switches'), + ('GT Double Switch Pot Corners Ranged Switches Exit', 'GT Double Switch Pot Corners'), + ('GT Double Switch Exit to Blue Barrier', 'GT Double Switch Pot Corners'), ('GT Warp Maze - Pit Section Warp Spot', 'GT Warp Maze - Pit Exit Warp Spot'), ('GT Warp Maze Exit Section Warp Spot', 'GT Warp Maze - Pit Exit Warp Spot'), ('GT Firesnake Room Hook Path', 'GT Firesnake Room Ledge'), + + ('GT Crystal Conveyor to Corner Barrier - Blue', 'GT Crystal Conveyor Corner'), + ('GT Crystal Conveyor to Ranged Crystal', 'GT Crystal Conveyor - Ranged Crystal'), + ('GT Crystal Conveyor Corner to Barrier - Blue', 'GT Crystal Conveyor Left'), + ('GT Crystal Conveyor Corner to Barrier - Orange', 'GT Crystal Conveyor'), + ('GT Crystal Conveyor Corner to Ranged Crystal', 'GT Crystal Conveyor Corner - Ranged Crystal'), + ('GT Crystal Conveyor Left to Corner Barrier - Orange', 'GT Crystal Conveyor Corner'), + ('GT Crystal Conveyor Left to Ranged Crystal', 'GT Crystal Conveyor Left - Ranged Crystal'), + ('GT Crystal Conveyor Ranged Crystal Exit', 'GT Crystal Conveyor'), + ('GT Crystal Conveyor Corner Ranged Crystal Exit', 'GT Crystal Conveyor Corner'), + ('GT Crystal Conveyor Left Ranged Crystal Exit', 'GT Crystal Conveyor Left'), + ('GT Left Moldorm Ledge Drop Down', 'GT Moldorm'), ('GT Right Moldorm Ledge Drop Down', 'GT Moldorm'), + ('GT Crystal Circles Barrier - Orange', 'GT Crystal Inner Circle'), + ('GT Crystal Circles to Ranged Crystal', 'GT Crystal Circles - Ranged Crystal'), + ('GT Crystal Inner Circle Barrier - Orange', 'GT Crystal Circles'), + ('GT Crystal Circles Ranged Crystal Exit', 'GT Crystal Circles'), ('GT Moldorm Gap', 'GT Validation'), ('GT Validation Block Path', 'GT Validation Door') ] diff --git a/Doors.py b/Doors.py index 184520d7..9491af2b 100644 --- a/Doors.py +++ b/Doors.py @@ -1035,6 +1035,16 @@ def create_doors(world, player): create_door(player, 'GT Pots n Blocks ES', Intr).dir(Ea, 0x8d, Bot, High).pos(4), create_door(player, 'GT Speed Torch SE', Nrml).dir(So, 0x8d, Right, High).trap(0x4).pos(0).portal(X, 0x02), create_door(player, 'GT Crystal Conveyor NE', Nrml).dir(No, 0x9d, Right, High).pos(0).kill(), + create_door(player, 'GT Crystal Conveyor to Corner Barrier - Blue', Lgcl), + create_door(player, 'GT Crystal Conveyor to Ranged Crystal', Lgcl), + create_door(player, 'GT Crystal Conveyor Corner to Barrier - Blue', Lgcl), + create_door(player, 'GT Crystal Conveyor Corner to Barrier - Orange', Lgcl), + create_door(player, 'GT Crystal Conveyor Corner to Ranged Crystal', Lgcl), + create_door(player, 'GT Crystal Conveyor Left to Corner Barrier - Orange', Lgcl), + create_door(player, 'GT Crystal Conveyor Left to Ranged Crystal', Lgcl), + create_door(player, 'GT Crystal Conveyor Ranged Crystal Exit', Lgcl), + create_door(player, 'GT Crystal Conveyor Corner Ranged Crystal Exit', Lgcl), + create_door(player, 'GT Crystal Conveyor Left Ranged Crystal Exit', Lgcl), create_door(player, 'GT Crystal Conveyor WN', Intr).dir(We, 0x9d, Top, High).pos(2), create_door(player, 'GT Compass Room EN', Intr).dir(Ea, 0x9d, Top, High).pos(2), create_door(player, 'GT Compass Room Warp', Warp), @@ -1054,20 +1064,19 @@ def create_doors(world, player): create_door(player, 'GT Hookshot South-North Path', Lgcl), create_door(player, 'GT Hookshot Platform Blue Barrier', Lgcl), create_door(player, 'GT Hookshot Entry Blue Barrier', Lgcl), - create_door(player, 'GT Hookshot Entry Boomerang Path', Lgcl), + create_door(player, 'GT Hookshot South Entry to Ranged Crystal', Lgcl), + create_door(player, 'GT HookShot South Entry Ranged Crystal Exit', Lgcl), create_door(player, 'GT Hookshot NW', Nrml).dir(No, 0x8b, Left, High).pos(4), create_door(player, 'GT Hookshot ES', Intr).dir(Ea, 0x8b, Bot, High).small_key().pos(1), create_door(player, 'GT Map Room WS', Intr).dir(We, 0x8b, Bot, High).small_key().pos(1), create_door(player, 'GT Hookshot SW', Nrml).dir(So, 0x8b, Left, High).pos(3).portal(Z, 0x02), create_door(player, 'GT Double Switch NW', Nrml).dir(No, 0x9b, Left, High).pos(1).kill(), - create_door(player, 'GT Double Switch Orange Barrier', Lgcl), - create_door(player, 'GT Double Switch Orange Barrier 2', Lgcl), - create_door(player, 'GT Double Switch Blue Path', Lgcl), - create_door(player, 'GT Double Switch Orange Path', Lgcl), - create_door(player, 'GT Double Switch Key Blue Path', Lgcl), - create_door(player, 'GT Double Switch Key Orange Path', Lgcl), - create_door(player, 'GT Double Switch Blue Barrier', Lgcl), - create_door(player, 'GT Double Switch Transition Blue', Lgcl), + create_door(player, 'GT Double Switch to Pot Corners Barrier - Orange', Lgcl), + create_door(player, 'GT Double Switch Pot Corners to Barrier - Orange', Lgcl), + create_door(player, 'GT Double Switch Pot Corners to Barrier - Blue', Lgcl), + create_door(player, 'GT Double Switch Pot Corners to Ranged Switches', Lgcl), + create_door(player, 'GT Double Switch Pot Corners Ranged Switches Exit', Lgcl), + create_door(player, 'GT Double Switch Exit to Blue Barrier', Lgcl), create_door(player, 'GT Double Switch EN', Intr).dir(Ea, 0x9b, Top, High).small_key().pos(0), create_door(player, 'GT Spike Crystals WN', Intr).dir(We, 0x9b, Top, High).small_key().pos(0), create_door(player, 'GT Spike Crystals Warp', Warp), @@ -1157,6 +1166,10 @@ def create_doors(world, player): create_door(player, 'GT Bomb Conveyor EN', Intr).dir(Ea, 0x3d, Top, High).small_key().pos(1), create_door(player, 'GT Bomb Conveyor SW', Intr).dir(So, 0x3d, Left, High).pos(3), create_door(player, 'GT Crystal Circles NW', Intr).dir(No, 0x3d, Left, High).pos(3), + create_door(player, 'GT Crystal Circles Barrier - Orange', Lgcl), + create_door(player, 'GT Crystal Inner Circle Barrier - Orange', Lgcl), + create_door(player, 'GT Crystal Circles to Ranged Crystal', Lgcl), + create_door(player, 'GT Crystal Circles Ranged Crystal Exit', Lgcl), create_door(player, 'GT Crystal Circles SW', Nrml).dir(So, 0x3d, Left, High).small_key().pos(2).portal(Z, 0x00), create_door(player, 'GT Left Moldorm Ledge NW', Nrml).dir(No, 0x4d, Left, High).small_key().pos(0).kill(), create_door(player, 'GT Left Moldorm Ledge Drop Down', Lgcl), @@ -1333,31 +1346,36 @@ def create_doors(world, player): world.get_door('TR Crystal Maze Cane Path', player).c_switch() world.get_door('TR Crystal Maze Blue Path', player).barrier(CrystalBarrier.Blue) - world.get_door('GT Crystal Conveyor NE', player).c_switch() - world.get_door('GT Crystal Conveyor WN', player).c_switch() + world.get_door('GT Crystal Conveyor to Corner Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('GT Crystal Conveyor Corner to Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('GT Crystal Conveyor Corner to Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('GT Crystal Conveyor Left to Corner Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('GT Crystal Conveyor Ranged Crystal Exit', player).c_switch() + world.get_door('GT Crystal Conveyor Corner Ranged Crystal Exit', player).c_switch() + world.get_door('GT Crystal Conveyor Left Ranged Crystal Exit', player).c_switch() + world.get_door('GT Hookshot South-North Path', player).c_switch() world.get_door('GT Hookshot South-East Path', player).c_switch() world.get_door('GT Hookshot ES', player).c_switch() - world.get_door('GT Hookshot Platform Blue Barrier', player).c_switch() - world.get_door('GT Hookshot Entry Boomerang Path', player).c_switch() - world.get_door('GT Double Switch Orange Path', player).c_switch() - world.get_door('GT Double Switch Blue Path', player).c_switch() + world.get_door('GT Hookshot Platform Blue Barrier', player).barrier(CrystalBarrier.Blue) + world.get_door('GT HookShot South Entry Ranged Crystal Exit', player).c_switch() world.get_door('GT Spike Crystals WN', player).c_switch() world.get_door('GT Spike Crystals Warp', player).c_switch() world.get_door('GT Crystal Paths Down Stairs', player).c_switch() world.get_door('GT Crystal Paths SW', player).c_switch() world.get_door('GT Hidden Spikes SE', player).c_switch() world.get_door('GT Hidden Spikes EN', player).c_switch() - world.get_door('GT Crystal Circles NW', player).c_switch() - world.get_door('GT Crystal Circles SW', player).c_switch() + + world.get_door('GT Crystal Circles Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('GT Crystal Inner Circle Barrier - Orange', player).c_switch() + world.get_door('GT Crystal Circles Ranged Crystal Exit', player).c_switch() + world.get_door('GT Hookshot Entry Blue Barrier', player).barrier(CrystalBarrier.Blue) - world.get_door('GT Double Switch Orange Barrier', player).barrier(CrystalBarrier.Orange) - world.get_door('GT Double Switch Orange Barrier 2', player).barrier(CrystalBarrier.Orange) - world.get_door('GT Double Switch Orange Path', player).barrier(CrystalBarrier.Orange) - world.get_door('GT Double Switch Key Orange Path', player).barrier(CrystalBarrier.Orange) - world.get_door('GT Double Switch Key Blue Path', player).barrier(CrystalBarrier.Blue) - world.get_door('GT Double Switch Blue Barrier', player).barrier(CrystalBarrier.Blue) - world.get_door('GT Double Switch Transition Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('GT Double Switch to Pot Corners Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('GT Double Switch Pot Corners to Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('GT Double Switch Pot Corners to Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('GT Double Switch Pot Corners Ranged Switches Exit', player).c_switch() + world.get_door('GT Double Switch Exit to Blue Barrier', player).barrier(CrystalBarrier.Blue) # nifty dynamic logical doors: south_controller = world.get_door('Ice Cross Bottom SE', player) diff --git a/Dungeons.py b/Dungeons.py index 82de5e27..5cade689 100644 --- a/Dungeons.py +++ b/Dungeons.py @@ -295,9 +295,11 @@ tr_regions = [ gt_regions = [ 'GT Lobby', 'GT Bob\'s Torch', 'GT Hope Room', 'GT Big Chest', 'GT Blocked Stairs', 'GT Bob\'s Room', 'GT Tile Room', 'GT Speed Torch', 'GT Speed Torch Upper', 'GT Pots n Blocks', 'GT Crystal Conveyor', + 'GT Crystal Conveyor Corner', 'GT Crystal Conveyor Left', 'GT Crystal Conveyor - Ranged Crystal', + 'GT Crystal Conveyor Corner - Ranged Crystal', 'GT Crystal Conveyor Left - Ranged Crystal', 'GT Compass Room', 'GT Invisible Bridges', 'GT Invisible Catwalk', 'GT Conveyor Cross', 'GT Hookshot East Platform', - 'GT Hookshot North Platform', 'GT Hookshot South Platform', 'GT Hookshot South Entry', 'GT Map Room', - 'GT Double Switch Entry', 'GT Double Switch Switches', 'GT Double Switch Transition', 'GT Double Switch Key Spot', + 'GT Hookshot North Platform', 'GT Hookshot South Platform', 'GT Hookshot South Entry', 'GT Hookshot South Entry - Ranged Crystal', 'GT Map Room', + 'GT Double Switch Entry', 'GT Double Switch Pot Corners - Ranged Switches', 'GT Double Switch Pot Corners', 'GT Double Switch Exit', 'GT Spike Crystals', 'GT Warp Maze - Left Section', 'GT Warp Maze - Mid Section', 'GT Warp Maze - Right Section', 'GT Warp Maze - Pit Section', 'GT Warp Maze - Pit Exit Warp Spot', 'GT Warp Maze Exit Section', 'GT Firesnake Room', 'GT Firesnake Room Ledge', 'GT Warp Maze - Rail Choice', @@ -307,9 +309,9 @@ gt_regions = [ 'GT Dash Hall', 'GT Hidden Spikes', 'GT Cannonball Bridge', 'GT Refill', 'GT Gauntlet 1', 'GT Gauntlet 2', 'GT Gauntlet 3', 'GT Gauntlet 4', 'GT Gauntlet 5', 'GT Beam Dash', 'GT Lanmolas 2', 'GT Quad Pot', 'GT Wizzrobes 1', 'GT Dashing Bridge', 'GT Wizzrobes 2', 'GT Conveyor Bridge', 'GT Torch Cross', 'GT Staredown', 'GT Falling Torches', - 'GT Mini Helmasaur Room', 'GT Bomb Conveyor', 'GT Crystal Circles', 'GT Left Moldorm Ledge', - 'GT Right Moldorm Ledge', 'GT Moldorm', 'GT Moldorm Pit', 'GT Validation', 'GT Validation Door', 'GT Frozen Over', - 'GT Brightly Lit Hall', 'GT Agahnim 2', 'Ganons Tower Portal' + 'GT Mini Helmasaur Room', 'GT Bomb Conveyor', 'GT Crystal Circles', 'GT Crystal Inner Circle', 'GT Crystal Circles - Ranged Crystal', + 'GT Left Moldorm Ledge', 'GT Right Moldorm Ledge', 'GT Moldorm', 'GT Moldorm Pit', 'GT Validation', 'GT Validation Door', + 'GT Frozen Over', 'GT Brightly Lit Hall', 'GT Agahnim 2', 'Ganons Tower Portal' ] diff --git a/PotShuffle.py b/PotShuffle.py index 9678d22b..78d8ef5e 100644 --- a/PotShuffle.py +++ b/PotShuffle.py @@ -68,8 +68,8 @@ vanilla_pots = { 57: [Pot(12, 20, PotItem.Heart, 'Skull Spike Corner'), Pot(48, 28, PotItem.FiveArrows, 'Skull Spike Corner'), Pot(100, 22, PotItem.SmallMagic, 'Skull Final Drop'), Pot(100, 26, PotItem.FiveArrows, 'Skull Final Drop')], 60: [Pot(24, 8, PotItem.SmallMagic, 'Hookshot Cave'), Pot(64, 12, PotItem.FiveRupees, 'Hookshot Cave'), Pot(20, 14, PotItem.OneRupee, 'Hookshot Cave'), Pot(20, 19, PotItem.Nothing, 'Hookshot Cave'), Pot(68, 18, PotItem.FiveRupees, 'Hookshot Cave'), Pot(96, 19, PotItem.Heart, 'Hookshot Cave'), Pot(64, 20, PotItem.FiveRupees, 'Hookshot Cave'), Pot(64, 26, PotItem.FiveRupees, 'Hookshot Cave')], - 61: [Pot(76, 12, PotItem.Bomb, 'GT Mini Helmasaur Room'), Pot(112, 12, PotItem.Bomb, 'GT Mini Helmasaur Room'), Pot(24, 22, PotItem.Heart, 'GT Crystal Circles'), Pot(40, 22, PotItem.FiveArrows, 'GT Crystal Circles'), - Pot(32, 24, PotItem.Heart, 'GT Crystal Circles'), Pot(20, 26, PotItem.FiveRupees, 'GT Crystal Circles'), Pot(36, 26, PotItem.BigMagic, 'GT Crystal Circles')], + 61: [Pot(76, 12, PotItem.Bomb, 'GT Mini Helmasaur Room'), Pot(112, 12, PotItem.Bomb, 'GT Mini Helmasaur Room'), Pot(24, 22, PotItem.Heart, 'GT Crystal Inner Circle'), Pot(40, 22, PotItem.FiveArrows, 'GT Crystal Inner Circle'), + Pot(32, 24, PotItem.Heart, 'GT Crystal Inner Circle'), Pot(20, 26, PotItem.FiveRupees, 'GT Crystal Inner Circle'), Pot(36, 26, PotItem.BigMagic, 'GT Crystal Inner Circle')], 62: [Pot(96, 6, PotItem.Bomb, 'Ice Stalfos Hint'), Pot(100, 6, PotItem.SmallMagic, 'Ice Stalfos Hint'), Pot(88, 10, PotItem.Heart, 'Ice Stalfos Hint'), Pot(92, 10, PotItem.SmallMagic, 'Ice Stalfos Hint')], 63: [Pot(12, 25, PotItem.OneRupee, 'Ice Hammer Block'), Pot(20, 25, PotItem.OneRupee, 'Ice Hammer Block'), Pot(12, 26, PotItem.Bomb, 'Ice Hammer Block'), Pot(20, 26, PotItem.Bomb, 'Ice Hammer Block'), Pot(12, 27, PotItem.Switch, 'Ice Hammer Block'), Pot(20, 27, PotItem.Heart, 'Ice Hammer Block'), Pot(28, 23, PotItem.Key, 'Ice Hammer Block')], @@ -166,9 +166,9 @@ vanilla_pots = { 150: [Pot(14, 18, PotItem.Nothing, 'GT Torch Cross'), Pot(32, 5, PotItem.Nothing, 'GT Torch Cross'), Pot(32, 17, PotItem.SmallMagic, 'GT Torch Cross'), Pot(32, 24, PotItem.SmallMagic, 'GT Torch Cross'), Pot(14, 24, PotItem.Nothing, 'GT Torch Cross'), Pot(76, 21, PotItem.Heart, 'GT Staredown'), Pot(112, 21, PotItem.BigMagic, 'GT Staredown')], 153: [Pot(40, 20, PotItem.SmallMagic, 'Eastern Darkness'), Pot(84, 20, PotItem.Heart, 'Eastern Darkness')], - 155: [Pot(48, 4, PotItem.SmallMagic, 'GT Double Switch Key Spot'), Pot(48, 12, PotItem.Key, 'GT Double Switch Key Spot'), Pot(28, 24, PotItem.Nothing, 'GT Warp Maze - Mid Section'), Pot(32, 24, PotItem.Nothing, 'GT Warp Maze - Mid Section')], + 155: [Pot(48, 4, PotItem.SmallMagic, 'GT Double Switch Pot Corners'), Pot(48, 12, PotItem.Key, 'GT Double Switch Pot Corners'), Pot(28, 24, PotItem.Nothing, 'GT Warp Maze - Mid Section'), Pot(32, 24, PotItem.Nothing, 'GT Warp Maze - Mid Section')], 156: [Pot(56, 8, PotItem.SmallMagic, 'GT Invisible Catwalk'), Pot(56, 9, PotItem.FiveArrows, 'GT Invisible Catwalk')], - 157: [Pot(76, 4, PotItem.Bomb, 'GT Crystal Conveyor'), Pot(84, 4, PotItem.SmallMagic, 'GT Crystal Conveyor'), Pot(32, 7, PotItem.Nothing, 'GT Compass Room'), Pot(40, 9, PotItem.Nothing, 'GT Compass Room')], + 157: [Pot(76, 4, PotItem.Bomb, 'GT Crystal Conveyor Left'), Pot(84, 4, PotItem.SmallMagic, 'GT Crystal Conveyor Left'), Pot(32, 7, PotItem.Nothing, 'GT Compass Room'), Pot(40, 9, PotItem.Nothing, 'GT Compass Room')], 159: [Pot(138, 20, PotItem.Nothing, 'Ice Many Pots'), Pot(138, 19, PotItem.Heart, 'Ice Many Pots'), Pot(178, 19, PotItem.Heart, 'Ice Many Pots'), Pot(40, 21, PotItem.Switch, 'Ice Many Pots'), Pot(138, 21, PotItem.Key, 'Ice Many Pots'), Pot(20, 27, PotItem.Heart, 'Ice Many Pots'), Pot(138, 27, PotItem.Heart, 'Ice Many Pots'), Pot(178, 28, PotItem.Heart, 'Ice Many Pots'), Pot(178, 21, PotItem.Nothing, 'Ice Many Pots'), Pot(178, 20, PotItem.Nothing, 'Ice Many Pots'), Pot(40, 27, PotItem.Nothing, 'Ice Many Pots'), Pot(178, 27, PotItem.Nothing, 'Ice Many Pots'), Pot(178, 26, PotItem.Nothing, 'Ice Many Pots'), Pot(138, 28, PotItem.Nothing, 'Ice Many Pots'), Pot(138, 26, PotItem.Nothing, 'Ice Many Pots'), diff --git a/Regions.py b/Regions.py index 5c646f5f..e2226e86 100644 --- a/Regions.py +++ b/Regions.py @@ -620,8 +620,10 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'Mire Over Bridge', 'Misery Mire', None, ['Mire Over Bridge E', 'Mire Over Bridge W']), create_dungeon_region(player, 'Mire Right Bridge', 'Misery Mire', ['Misery Mire - Bridge Chest'], ['Mire Right Bridge SE']), create_dungeon_region(player, 'Mire Left Bridge', 'Misery Mire', None, ['Mire Left Bridge S', 'Mire Left Bridge Down Stairs', 'Mire Left Bridge Hook Path']), + create_dungeon_region(player, 'Mire Fishbone', 'Misery Mire', ['Misery Mire - Fishbone Pot Key'], ['Mire Fishbone E', 'Mire Fishbone Blue Barrier']), create_dungeon_region(player, 'Mire South Fish', 'Misery Mire', None, ['Mire South Fish Blue Barrier', 'Mire Fishbone SE']), + create_dungeon_region(player, 'Mire Spike Barrier', 'Misery Mire', None, ['Mire Spike Barrier NE', 'Mire Spike Barrier SE', 'Mire Spike Barrier ES']), create_dungeon_region(player, 'Mire Square Rail', 'Misery Mire', None, ['Mire Square Rail WS', 'Mire Square Rail NW']), create_dungeon_region(player, 'Mire Lone Warp', 'Misery Mire', None, ['Mire Lone Warp SW', 'Mire Lone Warp Warp']), @@ -713,7 +715,13 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'GT Speed Torch', 'Ganon\'s Tower', None, ['GT Speed Torch WS', 'GT Speed Torch SE', 'GT Speed Torch North Path']), create_dungeon_region(player, 'GT Speed Torch Upper', 'Ganon\'s Tower', None, ['GT Speed Torch WN', 'GT Speed Torch NE', 'GT Speed Torch South Path']), create_dungeon_region(player, 'GT Pots n Blocks', 'Ganon\'s Tower', None, ['GT Pots n Blocks ES']), - create_dungeon_region(player, 'GT Crystal Conveyor', 'Ganon\'s Tower', None, ['GT Crystal Conveyor NE', 'GT Crystal Conveyor WN']), + create_dungeon_region(player, 'GT Crystal Conveyor', 'Ganon\'s Tower', None, ['GT Crystal Conveyor NE', 'GT Crystal Conveyor to Corner Barrier - Blue', 'GT Crystal Conveyor to Ranged Crystal']), + create_dungeon_region(player, 'GT Crystal Conveyor Corner', 'Ganon\'s Tower', None, ['GT Crystal Conveyor Corner to Barrier - Blue', 'GT Crystal Conveyor Corner to Barrier - Orange', 'GT Crystal Conveyor Corner to Ranged Crystal']), + create_dungeon_region(player, 'GT Crystal Conveyor Left', 'Ganon\'s Tower', None, ['GT Crystal Conveyor WN', 'GT Crystal Conveyor Left to Corner Barrier - Orange', 'GT Crystal Conveyor Left to Ranged Crystal']), + create_dungeon_region(player, 'GT Crystal Conveyor - Ranged Crystal', 'Ganon\'s Tower', None, ['GT Crystal Conveyor Ranged Crystal Exit']), + create_dungeon_region(player, 'GT Crystal Conveyor Corner - Ranged Crystal', 'Ganon\'s Tower', None, ['GT Crystal Conveyor Corner Ranged Crystal Exit']), + create_dungeon_region(player, 'GT Crystal Conveyor Left - Ranged Crystal', 'Ganon\'s Tower', None, ['GT Crystal Conveyor Left Ranged Crystal Exit']), + create_dungeon_region(player, 'GT Compass Room', 'Ganon\'s Tower', ['Ganons Tower - Compass Room - Top Left', 'Ganons Tower - Compass Room - Top Right', 'Ganons Tower - Compass Room - Bottom Left', 'Ganons Tower - Compass Room - Bottom Right'], ['GT Compass Room EN', 'GT Compass Room Warp']), create_dungeon_region(player, 'GT Invisible Bridges', 'Ganon\'s Tower', None, ['GT Invisible Bridges WS']), @@ -722,13 +730,15 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'GT Hookshot East Platform', 'Ganon\'s Tower', None, ['GT Hookshot EN', 'GT Hookshot East-North Path', 'GT Hookshot East-South Path']), create_dungeon_region(player, 'GT Hookshot North Platform', 'Ganon\'s Tower', None, ['GT Hookshot NW', 'GT Hookshot North-East Path', 'GT Hookshot North-South Path']), create_dungeon_region(player, 'GT Hookshot South Platform', 'Ganon\'s Tower', None, ['GT Hookshot ES', 'GT Hookshot South-East Path', 'GT Hookshot South-North Path', 'GT Hookshot Platform Blue Barrier']), - create_dungeon_region(player, 'GT Hookshot South Entry', 'Ganon\'s Tower', None, ['GT Hookshot SW', 'GT Hookshot Entry Blue Barrier', 'GT Hookshot Entry Boomerang Path']), + create_dungeon_region(player, 'GT Hookshot South Entry', 'Ganon\'s Tower', None, ['GT Hookshot SW', 'GT Hookshot Entry Blue Barrier', 'GT Hookshot South Entry to Ranged Crystal']), + create_dungeon_region(player, 'GT Hookshot South Entry - Ranged Crystal', 'Ganon\'s Tower', None, ['GT HookShot South Entry Ranged Crystal Exit']), create_dungeon_region(player, 'GT Map Room', 'Ganon\'s Tower', ['Ganons Tower - Map Chest'], ['GT Map Room WS']), - create_dungeon_region(player, 'GT Double Switch Entry', 'Ganon\'s Tower', None, ['GT Double Switch NW', 'GT Double Switch Orange Barrier', 'GT Double Switch Orange Barrier 2']), - create_dungeon_region(player, 'GT Double Switch Switches', 'Ganon\'s Tower', None, ['GT Double Switch Blue Path', 'GT Double Switch Orange Path']), - create_dungeon_region(player, 'GT Double Switch Transition', 'Ganon\'s Tower', None, ['GT Double Switch Transition Blue']), - create_dungeon_region(player, 'GT Double Switch Key Spot', 'Ganon\'s Tower', ['Ganons Tower - Double Switch Pot Key'], ['GT Double Switch Key Blue Path', 'GT Double Switch Key Orange Path']), - create_dungeon_region(player, 'GT Double Switch Exit', 'Ganon\'s Tower', None, ['GT Double Switch EN', 'GT Double Switch Blue Barrier']), + + create_dungeon_region(player, 'GT Double Switch Entry', 'Ganon\'s Tower', None, ['GT Double Switch NW', 'GT Double Switch to Pot Corners Barrier - Orange']), + create_dungeon_region(player, 'GT Double Switch Pot Corners', 'Ganon\'s Tower', ['Ganons Tower - Double Switch Pot Key'], ['GT Double Switch Pot Corners to Barrier - Orange', 'GT Double Switch Pot Corners to Barrier - Blue', 'GT Double Switch Pot Corners to Ranged Switches']), + create_dungeon_region(player, 'GT Double Switch Pot Corners - Ranged Switches', 'Ganon\'s Tower', None, ['GT Double Switch Pot Corners Ranged Switches Exit']), + create_dungeon_region(player, 'GT Double Switch Exit', 'Ganon\'s Tower', None, ['GT Double Switch EN', 'GT Double Switch Exit to Blue Barrier']), + create_dungeon_region(player, 'GT Spike Crystals', 'Ganon\'s Tower', None, ['GT Spike Crystals WN', 'GT Spike Crystals Warp']), create_dungeon_region(player, 'GT Warp Maze - Left Section', 'Ganon\'s Tower', None, ['GT Warp Maze - Left Section Warp']), create_dungeon_region(player, 'GT Warp Maze - Mid Section', 'Ganon\'s Tower', None, ['GT Warp Maze - Mid Section Left Warp', 'GT Warp Maze - Mid Section Right Warp']), @@ -780,7 +790,11 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'GT Mini Helmasaur Room', 'Ganon\'s Tower', ['Ganons Tower - Mini Helmasaur Room - Left', 'Ganons Tower - Mini Helmasaur Room - Right', 'Ganons Tower - Mini Helmasaur Key Drop'], ['GT Mini Helmasaur Room SE', 'GT Mini Helmasaur Room WN']), create_dungeon_region(player, 'GT Bomb Conveyor', 'Ganon\'s Tower', None, ['GT Bomb Conveyor EN', 'GT Bomb Conveyor SW']), - create_dungeon_region(player, 'GT Crystal Circles', 'Ganon\'s Tower', ['Ganons Tower - Pre-Moldorm Chest'], ['GT Crystal Circles NW', 'GT Crystal Circles SW']), + + create_dungeon_region(player, 'GT Crystal Circles', 'Ganon\'s Tower', None, ['GT Crystal Circles NW', 'GT Crystal Circles SW', 'GT Crystal Circles Barrier - Orange', 'GT Crystal Circles to Ranged Crystal']), + create_dungeon_region(player, 'GT Crystal Inner Circle', 'Ganon\'s Tower', ['Ganons Tower - Pre-Moldorm Chest'], ['GT Crystal Inner Circle Barrier - Orange']), + create_dungeon_region(player, 'GT Crystal Circles - Ranged Crystal', 'Ganon\'s Tower', None, ['GT Crystal Circles Ranged Crystal Exit']), + create_dungeon_region(player, 'GT Left Moldorm Ledge', 'Ganon\'s Tower', None, ['GT Left Moldorm Ledge Drop Down', 'GT Left Moldorm Ledge NW']), create_dungeon_region(player, 'GT Right Moldorm Ledge', 'Ganon\'s Tower', None, ['GT Right Moldorm Ledge Down Stairs', 'GT Right Moldorm Ledge Drop Down']), create_dungeon_region(player, 'GT Moldorm', 'Ganon\'s Tower', None, ['GT Moldorm Hole', 'GT Moldorm Gap']), @@ -832,15 +846,18 @@ def create_dungeon_regions(world, player): 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 Crystal Conveyor - Ranged Crystal', player).crystal_switch = True + world.get_region('GT Crystal Conveyor Corner - Ranged Crystal', player).crystal_switch = True + world.get_region('GT Crystal Conveyor Left - Ranged Crystal', player).crystal_switch = True world.get_region('GT Hookshot South Platform', player).crystal_switch = True + world.get_region('GT Hookshot South Entry - Ranged Crystal', player).crystal_switch = True # Relevant to indicate north door can access c_switch - world.get_region('GT Double Switch Switches', player).crystal_switch = True + world.get_region('GT Double Switch Pot Corners - Ranged Switches', player).crystal_switch = True world.get_region('GT Spike Crystals', player).crystal_switch = True world.get_region('GT Crystal Paths', player).crystal_switch = True world.get_region('GT Hidden Spikes', player).crystal_switch = True - world.get_region('GT Crystal Circles', player).crystal_switch = True - + world.get_region('GT Crystal Inner Circle', player).crystal_switch = True + world.get_region('GT Crystal Circles - Ranged Crystal', player).crystal_switch = True def create_menu_region(player, name, locations=None, exits=None): return _create_region(player, name, RegionType.Menu, 'Menu', locations, exits) diff --git a/Rules.py b/Rules.py index 54cc1dc5..7e37f4a2 100644 --- a/Rules.py +++ b/Rules.py @@ -312,7 +312,6 @@ def global_rules(world, player): set_rule(world.get_entrance('GT Hookshot East-South Path', player), lambda state: state.has('Hookshot', player) or state.has_Boots(player)) set_rule(world.get_entrance('GT Hookshot North-East Path', player), lambda state: state.has('Hookshot', player) or state.has_Boots(player)) set_rule(world.get_entrance('GT Hookshot North-South Path', player), lambda state: state.has('Hookshot', player) or state.has_Boots(player)) - set_rule(world.get_entrance('GT Hookshot Entry Boomerang Path', player), lambda state: state.has('Blue Boomerang', player) or state.has('Red Boomerang', player)) set_rule(world.get_entrance('GT Firesnake Room Hook Path', player), lambda state: state.has('Hookshot', player)) # I am tempted to stick an invincibility rule for getting across falling bridge @@ -430,10 +429,22 @@ def global_rules(world, 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 Platform Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('GT Hookshot South Platform', player), player)) + set_rule(world.get_entrance('GT Hookshot South Entry to Ranged Crystal', player), lambda state: state.can_use_bombs(player) or state.has('Blue Boomerang', player) or state.has('Red Boomerang', player) or state.has('Cane of Somaria', 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)) - set_rule(world.get_entrance('GT Double Switch Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('GT Double Switch Switches', player), player)) - set_rule(world.get_entrance('GT Double Switch Transition Blue', player), lambda state: state.can_reach_blue(world.get_region('GT Double Switch Transition', player), player)) + set_rule(world.get_entrance('GT Double Switch to Pot Corners Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('GT Double Switch Entry', player), player)) + set_rule(world.get_entrance('GT Double Switch Pot Corners to Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('GT Double Switch Pot Corners', player), player)) + set_rule(world.get_entrance('GT Double Switch Pot Corners to Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('GT Double Switch Pot Corners', player), player)) + set_rule(world.get_entrance('GT Double Switch Pot Corners to Ranged Switches', player), lambda state: (state.has('Blue Boomerang', player) and state.has('Hookshot', player)) or state.has('Red Boomerang', player) or state.has('Cane of Somaria', player) or state.can_use_bombs(player)) + set_rule(world.get_entrance('GT Double Switch Exit to Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('GT Double Switch Exit', player), player)) + + set_rule(world.get_entrance('GT Crystal Conveyor to Corner Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('GT Crystal Conveyor', player), player)) + set_rule(world.get_entrance('GT Crystal Conveyor to Ranged Crystal', player), lambda state: state.can_use_bombs(player) or state.has('Cane of Somaria', player)) + set_rule(world.get_entrance('GT Crystal Conveyor Corner to Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('GT Crystal Conveyor Corner', player), player)) + set_rule(world.get_entrance('GT Crystal Conveyor Corner to Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('GT Crystal Conveyor Corner', player), player)) + set_rule(world.get_entrance('GT Crystal Conveyor Corner to Ranged Crystal', player), lambda state: state.can_use_bombs(player) or state.has('Cane of Somaria', player)) + set_rule(world.get_entrance('GT Crystal Conveyor Left to Corner Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('GT Crystal Conveyor Left', player), player)) + set_rule(world.get_entrance('GT Crystal Conveyor Left to Ranged Crystal', player), lambda state: state.can_use_bombs(player) or state.has('Cane of Somaria', player)) set_rule(world.get_entrance('Swamp Barrier Ledge - Orange', player), lambda state: state.can_reach_orange(world.get_region('Swamp Barrier Ledge', player), player)) set_rule(world.get_entrance('Swamp Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('Swamp Barrier', player), player)) @@ -447,10 +458,9 @@ def global_rules(world, player): set_rule(world.get_entrance('Mire Crystal Mid Orange Barrier', player), lambda state: state.can_reach_orange(world.get_region('Mire Crystal Mid', player), player)) set_rule(world.get_entrance('Mire Firesnake Skip Orange Barrier', player), lambda state: state.can_reach_orange(world.get_region('Mire Firesnake Skip', player), player)) set_rule(world.get_entrance('Mire Antechamber Orange Barrier', player), lambda state: state.can_reach_orange(world.get_region('Mire Antechamber', player), player)) - set_rule(world.get_entrance('GT Double Switch Orange Barrier', player), lambda state: state.can_reach_orange(world.get_region('GT Double Switch Entry', player), player)) - set_rule(world.get_entrance('GT Double Switch Orange Barrier 2', player), lambda state: state.can_reach_orange(world.get_region('GT Double Switch Entry', player), player)) - set_rule(world.get_entrance('GT Double Switch Orange Path', player), lambda state: state.can_reach_orange(world.get_region('GT Double Switch Switches', player), player)) - set_rule(world.get_entrance('GT Double Switch Key Orange Path', player), lambda state: state.can_reach_orange(world.get_region('GT Double Switch Key Spot', player), player)) + set_rule(world.get_entrance('GT Crystal Circles Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('GT Crystal Circles', player), player)) + set_rule(world.get_entrance('GT Crystal Circles to Ranged Crystal', player), lambda state: state.can_hit_switch_through_barrier(player) or state.has_blunt_weapon(player) or state.has('Cane of Byrna', player)) + add_key_logic_rules(world, player) # End of door rando rules. @@ -1637,33 +1647,31 @@ def set_inverted_bunny_rules(world, player): bunny_impassible_doors = { - 'Hyrule Dungeon Armory S', 'Hyrule Dungeon Armory ES', 'Sewers Secret Room Push Block', 'Sewers Pull Switch S', + 'Hyrule Dungeon Armory S', 'Hyrule Dungeon Armory ES', 'Sewers Pull Switch S', 'Eastern Lobby N', 'Eastern Courtyard Ledge W', 'Eastern Courtyard Ledge E', 'Eastern Pot Switch SE', - 'Eastern Map Balcony Hook Path', 'Eastern Stalfos Spawn ES', 'Eastern Stalfos Spawn NW', - 'Eastern Hint Tile Push Block', 'Eastern Darkness S', 'Eastern Darkness NE', 'Eastern Darkness Up Stairs', + 'Eastern Map Balcony Hook Path', 'Eastern Stalfos Spawn ES', 'Eastern Stalfos Spawn NW', + 'Eastern Darkness S', 'Eastern Darkness NE', 'Eastern Darkness Up Stairs', 'Eastern Attic Start WS', 'Eastern Single Eyegore NE', 'Eastern Duo Eyegores NE', 'Desert Main Lobby Left Path', 'Desert Main Lobby Right Path', 'Desert Left Alcove Path', 'Desert Right Alcove Path', 'Desert Compass NW', 'Desert West Lobby NW', 'Desert Back Lobby NW', 'Desert Four Statues NW', 'Desert Four Statues ES', 'Desert Beamos Hall WS', 'Desert Beamos Hall NE', 'Desert Wall Slide NW', 'Hera Lobby to Front Barrier - Blue', 'Hera Front to Lobby Barrier - Blue', 'Hera Front to Down Stairs Barrier - Blue', - 'Hera Front to Up Stairs Barrier - Orange', 'Hera Front to Back Barrier - Orange', 'Hera Down Stairs to Front Barrier - Blue', - 'Hera Up Stairs to Front Barrier - Orange', 'Hera Back to Front Barrier - Orange', 'Hera Tile Room EN', 'Hera Tridorm SE', 'Hera Beetles WS', + 'Hera Down Stairs to Front Barrier - Blue', 'Hera Tile Room EN', 'Hera Tridorm SE', 'Hera Beetles WS', 'Hera 4F Down Stairs', 'Tower Gold Knights SW', 'Tower Dark Maze EN', 'Tower Dark Pits ES', 'Tower Dark Archers WN', 'Tower Red Spears WN', 'Tower Red Guards EN', 'Tower Red Guards SW', 'Tower Circle of Pots NW', 'Tower Altar NW', - 'PoD Left Cage SW', 'PoD Middle Cage SE', 'PoD Pit Room Bomb Hole', 'PoD Stalfos Basement Warp', 'PoD Arena Main SW', + 'PoD Left Cage SW', 'PoD Middle Cage SE', 'PoD Pit Room Bomb Hole', 'PoD Stalfos Basement Warp', 'PoD Arena Main to Ranged Crystal', 'PoD Arena Bridge to Ranged Crystal', 'PoD Arena Landing to Ranged Crystal', 'PoD Arena Landing Bonk 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 1 NW', 'PoD Falling Bridge Path N', 'PoD Falling Bridge Path S', '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', - 'Swamp Hub Hook Path', 'Swamp Compass Donut Push Block', - 'Swamp Shortcut Blue Barrier', 'Swamp Trench 2 Pots Blue Barrier', 'Swamp Trench 2 Pots Wet', - 'Swamp Trench 2 Departure Wet', 'Swamp West Shallows Push Blocks', 'Swamp West Ledge Hook Path', - 'Swamp Barrier Ledge Hook Path', 'Swamp Attic Left Pit', 'Swamp Attic Right Pit', 'Swamp Push Statue NW', - 'Swamp Push Statue NE', 'Swamp Drain Right Switch', 'Swamp Waterway NE', 'Swamp Waterway N', 'Swamp Waterway NW', + 'Swamp Hub Hook Path', 'Swamp Compass Donut Push Block', 'Swamp Shortcut Blue Barrier', 'Swamp Trench 2 Pots Blue Barrier', + 'Swamp Trench 2 Pots Wet', 'Swamp Trench 2 Departure Wet', 'Swamp West Ledge Hook Path', 'Swamp Barrier Ledge Hook Path', + 'Swamp Attic Left Pit', 'Swamp Attic Right Pit', 'Swamp Push Statue NW', 'Swamp Push Statue NE', + 'Swamp Drain Right Switch', 'Swamp Waterway NE', 'Swamp Waterway N', 'Swamp Waterway NW', 'Skull Pot Circle WN', 'Skull Pot Circle Star Path', 'Skull Pull Switch S', 'Skull Big Chest N', 'Skull Big Chest Hookpath', 'Skull 2 East Lobby NW', 'Skull Back Drop Star Path', 'Skull 2 West Lobby NW', 'Skull 3 Lobby EN', 'Skull Star Pits SW', 'Skull Star Pits ES', 'Skull Torch Room WN', 'Skull Vines NW', @@ -1671,9 +1679,7 @@ bunny_impassible_doors = { 'Thieves Hellway Blue Barrier', 'Thieves Hellway Crystal Blue Barrier', 'Thieves Attic ES', 'Thieves Basement Block Path', 'Thieves Blocked Entry Path', 'Thieves Conveyor Bridge Block Path', 'Thieves Conveyor Block Path', 'Ice Lobby WS', 'Ice Cross Left Push Block', 'Ice Cross Bottom Push Block Left', - 'Ice Cross Bottom Push Block Right', 'Ice Cross Right Push Block Top', 'Ice Cross Right Push Block Bottom', - 'Ice Cross Top Push Block Bottom', 'Ice Cross Top Push Block Right', 'Ice Bomb Drop Hole', 'Ice Pengator Switch WS', - 'Ice Pengator Switch ES', 'Ice Big Key Push Block', 'Ice Stalfos Hint SE', 'Ice Bomb Jump EN', + 'Ice Bomb Drop Hole', 'Ice Pengator Switch WS', 'Ice Pengator Switch ES', 'Ice Big Key Push Block', 'Ice Stalfos Hint SE', 'Ice Bomb Jump EN', 'Ice Pengator Trap NE', 'Ice Hammer Block ES', 'Ice Tongue Pull WS', 'Ice Freezors Bomb Hole', 'Ice Tall Hint WS', 'Ice Hookshot Ledge Path', 'Ice Hookshot Balcony Path', 'Ice Many Pots SW', 'Ice Many Pots WS', 'Ice Crystal Right Blue Hole', 'Ice Crystal Left Blue Barrier', 'Ice Big Chest Landing Push Blocks', @@ -1682,8 +1688,7 @@ bunny_impassible_doors = { 'Mire Hub Right Blue Barrier', 'Mire Hub Top Blue Barrier', 'Mire Hub Switch Blue Barrier N', 'Mire Hub Switch Blue Barrier S', 'Mire Falling Bridge WN', 'Mire Map Spike Side Blue Barrier', 'Mire Map Spot Blue Barrier', 'Mire Crystal Dead End Left Barrier', 'Mire Crystal Dead End Right Barrier', - 'Mire Cross ES', 'Mire Hidden Shooters Block Path S', 'Mire Hidden Shooters Block Path N', - 'Mire Left Bridge Hook Path', 'Mire Fishbone Blue Barrier', + 'Mire Cross ES', 'Mire Left Bridge Hook Path', 'Mire Fishbone Blue Barrier', 'Mire South Fish Blue Barrier', 'Mire Tile Room NW', 'Mire Compass Blue Barrier', 'Mire Attic Hint Hole', 'Mire Dark Shooters SW', 'Mire Crystal Mid Blue Barrier', 'Mire Crystal Left Blue Barrier', 'TR Main Lobby Gap', 'TR Lobby Ledge Gap', 'TR Hub SW', 'TR Hub SE', 'TR Hub ES', 'TR Hub EN', 'TR Hub NW', 'TR Hub NE', 'TR Torches NW', @@ -1695,9 +1700,8 @@ bunny_impassible_doors = { 'GT Crystal Conveyor NE', 'GT Crystal Conveyor WN', 'GT Conveyor Cross EN', 'GT Conveyor Cross WN', 'GT Hookshot East-North Path', 'GT Hookshot East-South Path', 'GT Hookshot North-East Path', 'GT Hookshot North-South Path', 'GT Hookshot South-East Path', 'GT Hookshot South-North Path', - 'GT Hookshot Platform Blue Barrier', 'GT Hookshot Entry Blue Barrier', 'GT Hookshot Entry Boomerang Path', - 'GT Double Switch Blue Path', 'GT Double Switch Key Blue Path', 'GT Double Switch Blue Barrier', - 'GT Double Switch Transition Blue', 'GT Firesnake Room Hook Path', 'GT Falling Bridge WN', 'GT Falling Bridge WS', + 'GT Hookshot Platform Blue Barrier', 'GT Hookshot Entry Blue Barrier', 'GT Double Switch Pot Corners to Barrier - Blue', + 'GT Double Switch Exit to Blue Barrier', 'GT Firesnake Room Hook Path', 'GT Falling Bridge WN', 'GT Falling Bridge WS', 'GT Ice Armos NE', 'GT Ice Armos WS', 'GT Crystal Paths SW', 'GT Mimics 1 NW', 'GT Mimics 1 ES', 'GT Mimics 2 WS', 'GT Mimics 2 NE', 'GT Hidden Spikes EN', 'GT Cannonball Bridge SE', 'GT Gauntlet 1 WN', 'GT Gauntlet 2 EN', 'GT Gauntlet 2 SW', 'GT Gauntlet 3 NW', 'GT Gauntlet 3 SW', 'GT Gauntlet 4 NW', 'GT Gauntlet 4 SW',