From 3a75b2dafdb1617e8d64f0947f23e50b86e27011 Mon Sep 17 00:00:00 2001 From: StructuralMike <66819228+StructuralMike@users.noreply.github.com> Date: Sun, 7 Mar 2021 17:28:12 +0100 Subject: [PATCH] lots of PoD crystal logic --- DoorShuffle.py | 38 +++++++++++++++++++++---- Doors.py | 75 ++++++++++++++++++++++++++++++++++++-------------- Dungeons.py | 15 +++++----- Regions.py | 56 +++++++++++++++++++++++++------------ Rules.py | 41 ++++++++++++++++++++++----- 5 files changed, 168 insertions(+), 57 deletions(-) diff --git a/DoorShuffle.py b/DoorShuffle.py index 8c55bc6d..cae9b651 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -2002,16 +2002,34 @@ logical_connections = [ ('Hera Big Chest Landing Exit', 'Hera 4F'), ('PoD Pit Room Block Path N', 'PoD Pit Room Blocked'), ('PoD Pit Room Block Path S', 'PoD Pit Room'), - ('PoD Arena Bonk Path', 'PoD Arena Bridge'), - ('PoD Arena Main Crystal Path', 'PoD Arena Crystal'), - ('PoD Arena Crystal Path', 'PoD Arena Main'), - ('PoD Arena Main Orange Barrier', 'PoD Arena North'), + ('PoD Arena Landing Bonk Path', 'PoD Arena Bridge'), ('PoD Arena North Drop Down', 'PoD Arena Main'), ('PoD Arena Bridge Drop Down', 'PoD Arena Main'), + + ('PoD Arena North to Landing Barrier - Orange', 'PoD Arena Landing'), + ('PoD Arena Main to Ranged Crystal', 'PoD Arena Main - Ranged Crystal'), + ('PoD Arena Main to Landing Barrier - Blue', 'PoD Arena Landing'), + ('PoD Arena Main to North Ranged Barrier - Orange', 'PoD Arena North'), + ('PoD Arena Main Ranged Crystal Exit', 'PoD Arena Main'), + ('PoD Arena Bridge to Ranged Crystal', 'PoD Arena Bridge - Ranged Crystal'), + ('PoD Arena Bridge Ranged Crystal Exit', 'PoD Arena Bridge'), + ('PoD Arena Landing to Main Barrier - Blue', 'PoD Arena Main'), + ('PoD Arena Landing to Right Barrier - Blue', 'PoD Arena Right'), + ('PoD Arena Landing to North Barrier - Orange', 'PoD Arena North'), + ('PoD Arena Landing to Ranged Crystal', 'PoD Arena Landing - Ranged Crystal'), + ('PoD Arena Landing Ranged Crystal Exit', 'PoD Arena Landing'), + ('PoD Arena Right to Landing Barrier - Blue', 'PoD Arena Landing'), + ('PoD Map Balcony Drop Down', 'PoD Sexy Statue'), + ('PoD Map Balcony to Ranged Crystal', 'PoD Map Balcony - Ranged Crystal'), + ('PoD Map Balcony Ranged Crystal Exit', 'PoD Map Balcony'), ('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 Bow Statue Left to Right Barrier - Orange', 'PoD Bow Statue Right'), + ('PoD Bow Statue Right to Left Barrier - Orange', 'PoD Bow Statue Left'), + ('PoD Bow Statue Right to Ranged Crystal', 'PoD Bow Statue Right - Ranged Crystal'), + ('PoD Bow Statue Ranged Crystal Exit', 'PoD Bow Statue Right'), ('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'), @@ -2101,6 +2119,8 @@ logical_connections = [ ('Mire Hidden Shooters Block Path S', 'Mire Hidden Shooters'), ('Mire Hidden Shooters Block Path N', 'Mire Hidden Shooters Blocked'), ('Mire Left Bridge Hook Path', 'Mire Right Bridge'), + ('Mire Tall Dark and Roomy to Ranged Crystal', 'Mire Tall Dark and Roomy - Ranged Crystal'), + ('Mire Tall Dark and Roomy Ranged Crystal Exit', 'Mire Tall Dark and Roomy'), ('Mire Crystal Right Orange Barrier', 'Mire Crystal Mid'), ('Mire Crystal Mid Orange Barrier', 'Mire Crystal Right'), ('Mire Crystal Mid Blue Barrier', 'Mire Crystal Left'), @@ -2116,6 +2136,14 @@ 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 Chain Chomps Top to Bottom Barrier - Orange', 'TR Chain Chomps Bottom'), + ('TR Chain Chomps Bottom to Top Barrier - Orange', 'TR Chain Chomps Top'), + ('TR Chain Chomps Bottom to Ranged Crystal', 'TR Chain Chomps Bottom - Ranged Crystal'), + ('TR Chain Chomps Bottom Ranged Crystal Exit', 'TR Chain Chomps Bottom'), + ('TR Pokey 2 Top to Bottom Barrier - Blue', 'TR Pokey 2 Bottom'), + ('TR Pokey 2 Bottom to Top Barrier - Blue', 'TR Pokey 2 Top'), + ('TR Pokey 2 Bottom to Ranged Crystal', 'TR Pokey 2 Bottom - Ranged Crystal'), + ('TR Pokey 2 Bottom Ranged Crystal Exit', 'TR Pokey 2 Bottom'), ('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'), @@ -2713,8 +2741,8 @@ default_door_connections = [ ('TR Torches NW', 'TR Roller Room SW'), ('TR Pipe Pit WN', 'TR Lava Dual Pipes EN'), ('TR Lava Island ES', 'TR Pipe Ledge WS'), - ('TR Lava Dual Pipes WN', 'TR Pokey 2 EN'), ('TR Lava Dual Pipes SW', 'TR Twin Pokeys NW'), + ('TR Lava Dual Pipes WN', 'TR Pokey 2 EN'), ('TR Pokey 2 ES', 'TR Lava Island WS'), ('TR Dodgers NE', 'TR Lava Escape SE'), ('TR Lava Escape NW', 'TR Dash Room SW'), diff --git a/Doors.py b/Doors.py index 1325887b..9f4dbbfc 100644 --- a/Doors.py +++ b/Doors.py @@ -368,17 +368,29 @@ def create_doors(world, player): create_door(player, 'PoD Arena Bridge SE', Nrml).dir(So, 0x2a, Right, High).pos(5).portal(X, 0x22), create_door(player, 'PoD Arena Main NW', Nrml).dir(No, 0x2a, Left, High).small_key().pos(1), create_door(player, 'PoD Arena Main NE', Nrml).dir(No, 0x2a, Right, High).no_exit().trap(0x4).pos(0), - create_door(player, 'PoD Arena Main Crystal Path', Lgcl), - create_door(player, 'PoD Arena Main Orange Barrier', Lgcl), - create_door(player, 'PoD Arena North Drop Down', Lgcl), - create_door(player, 'PoD Arena Bonk Path', Lgcl), create_door(player, 'PoD Arena Crystals E', Nrml).dir(Ea, 0x2a, Mid, High).pos(3), - create_door(player, 'PoD Arena Crystal Path', Lgcl), + create_door(player, 'PoD Arena Landing Bonk Path', Lgcl), + create_door(player, 'PoD Arena North Drop Down', Lgcl), create_door(player, 'PoD Arena Bridge Drop Down', Lgcl), + create_door(player, 'PoD Arena North to Landing Barrier - Orange', Lgcl), + create_door(player, 'PoD Arena Main to Ranged Crystal', Lgcl), + create_door(player, 'PoD Arena Main to Landing Barrier - Blue', Lgcl), + create_door(player, 'PoD Arena Main to North Ranged Barrier - Orange', Lgcl), + create_door(player, 'PoD Arena Main Ranged Crystal Exit', Lgcl), + create_door(player, 'PoD Arena Bridge to Ranged Crystal', Lgcl), + create_door(player, 'PoD Arena Bridge Ranged Crystal Exit', Lgcl), + create_door(player, 'PoD Arena Landing to Main Barrier - Blue', Lgcl), + create_door(player, 'PoD Arena Landing to Right Barrier - Blue', Lgcl), + create_door(player, 'PoD Arena Landing to North Barrier - Orange', Lgcl), + create_door(player, 'PoD Arena Landing to Ranged Crystal', Lgcl), + create_door(player, 'PoD Arena Landing Ranged Crystal Exit', Lgcl), + create_door(player, 'PoD Arena Right to Landing Barrier - Blue', Lgcl), create_door(player, 'PoD Arena Ledge ES', Nrml).dir(Ea, 0x2a, Bot, High).pos(2), create_door(player, 'PoD Sexy Statue W', Nrml).dir(We, 0x2b, Mid, High).pos(3), create_door(player, 'PoD Sexy Statue NW', Nrml).dir(No, 0x2b, Left, High).trap(0x1).pos(2), create_door(player, 'PoD Map Balcony Drop Down', Lgcl), + create_door(player, 'PoD Map Balcony to Ranged Crystal', Lgcl), + create_door(player, 'PoD Map Balcony Ranged Crystal Exit', Lgcl), create_door(player, 'PoD Map Balcony WS', Nrml).dir(We, 0x2b, Bot, High).pos(1), create_door(player, 'PoD Map Balcony South Stairs', StrS).dir(So, 0x2b, Left, High), create_door(player, 'PoD Conveyor North Stairs', StrS).dir(No, 0x3b, Left, High), @@ -409,6 +421,10 @@ def create_doors(world, player): create_door(player, 'PoD Mimics 2 SW', Nrml).dir(So, 0x1b, Left, High).pos(1).kill().portal(Z, 0x00), create_door(player, 'PoD Mimics 2 NW', Intr).dir(No, 0x1b, Left, High).pos(0), create_door(player, 'PoD Bow Statue SW', Intr).dir(So, 0x1b, Left, High).pos(0), + create_door(player, 'PoD Bow Statue Left to Right Barrier - Orange', Lgcl), + create_door(player, 'PoD Bow Statue Right to Left Barrier - Orange', Lgcl), + create_door(player, 'PoD Bow Statue Right to Ranged Crystal', Lgcl), + create_door(player, 'PoD Bow Statue Ranged Crystal Exit', Lgcl), create_door(player, 'PoD Bow Statue Down Ladder', Lddr).no_entrance(), create_door(player, 'PoD Dark Pegs Up Ladder', Lddr), @@ -875,6 +891,8 @@ def create_doors(world, player): create_door(player, 'Mire Tall Dark and Roomy WN', Intr).dir(We, 0x92, Top, High).pos(0), create_door(player, 'Mire Shooter Rupees EN', Intr).dir(Ea, 0x92, Top, High).pos(0), create_door(player, 'Mire Tall Dark and Roomy WS', Intr).dir(We, 0x92, Bot, High).pos(3), + create_door(player, 'Mire Tall Dark and Roomy to Ranged Crystal', Lgcl), + create_door(player, 'Mire Tall Dark and Roomy Ranged Crystal Exit', Lgcl), create_door(player, 'Mire Crystal Right ES', Intr).dir(Ea, 0x92, Bot, High).pos(3), create_door(player, 'Mire Crystal Mid NW', Intr).dir(No, 0x92, Left, High).pos(1), create_door(player, 'Mire Crystal Top SW', Intr).dir(So, 0x92, Left, High).pos(1), @@ -912,6 +930,10 @@ def create_doors(world, player): create_door(player, 'TR Refill SE', Intr).dir(So, 0xb6, Right, High).pos(1), create_door(player, 'TR Pokey 1 NW', Intr).dir(No, 0xb6, Left, High).small_key().pos(3), create_door(player, 'TR Chain Chomps SW', Intr).dir(So, 0xb6, Left, High).small_key().pos(3), + create_door(player, 'TR Chain Chomps Top to Bottom Barrier - Orange', Lgcl), + create_door(player, 'TR Chain Chomps Bottom to Top Barrier - Orange', Lgcl), + create_door(player, 'TR Chain Chomps Bottom to Ranged Crystal', Lgcl), + create_door(player, 'TR Chain Chomps Bottom Ranged Crystal Exit', Lgcl), create_door(player, 'TR Chain Chomps Down Stairs', Sprl).dir(Dn, 0xb6, 0, HTH).ss(A, 0x12, 0x80, True, True).small_key().pos(0), create_door(player, 'TR Pipe Pit Up Stairs', Sprl).dir(Up, 0x15, 0, HTH).ss(A, 0x1b, 0x6c), create_door(player, 'TR Pipe Pit WN', Nrml).dir(We, 0x15, Top, High).pos(1), @@ -925,6 +947,10 @@ def create_doors(world, player): create_door(player, 'TR Lava Escape SE', Nrml).dir(So, 0x14, Right, High).small_key().pos(0), create_door(player, 'TR Lava Escape NW', Nrml).dir(No, 0x14, Left, High).pos(2), create_door(player, 'TR Pokey 2 EN', Nrml).dir(Ea, 0x13, Top, High).pos(1), + create_door(player, 'TR Pokey 2 Top to Bottom Barrier - Blue', Lgcl), + create_door(player, 'TR Pokey 2 Bottom to Top Barrier - Blue', Lgcl), + create_door(player, 'TR Pokey 2 Bottom to Ranged Crystal', Lgcl), + create_door(player, 'TR Pokey 2 Bottom Ranged Crystal Exit', Lgcl), create_door(player, 'TR Pokey 2 ES', Nrml).dir(Ea, 0x13, Bot, High).small_key().pos(0), create_door(player, 'TR Twin Pokeys NW', Nrml).dir(No, 0x24, Left, High).pos(5), create_door(player, 'TR Twin Pokeys SW', Intr).dir(So, 0x24, Left, High).pos(2), @@ -1189,20 +1215,25 @@ def create_doors(world, player): world.get_door('Hera Startile Wide Up Stairs', player).c_switch() world.get_door('Hera Startile Wide Holes', player).c_switch() - world.get_door('PoD Arena Main SW', player).c_switch() - world.get_door('PoD Arena Bonk Path', player).c_switch() - world.get_door('PoD Arena Bridge SE', player).c_switch() - world.get_door('PoD Arena Bridge Drop Down', player).c_switch() - world.get_door('PoD Arena Main Orange Barrier', player).barrier(CrystalBarrier.Orange) - # maybe you can cross this way with blue up?? - world.get_door('PoD Arena Main Crystal Path', player).barrier(CrystalBarrier.Blue) - world.get_door('PoD Arena Crystal Path', player).barrier(CrystalBarrier.Blue) + world.get_door('PoD Arena North to Landing Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('PoD Arena Main to Landing Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('PoD Arena Main to North Ranged Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('PoD Arena Main Ranged Crystal Exit', player).c_switch() + world.get_door('PoD Arena Bridge Ranged Crystal Exit', player).c_switch() + world.get_door('PoD Arena Landing to Main Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('PoD Arena Landing to Right Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('PoD Arena Landing to North Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('PoD Arena Landing Ranged Crystal Exit', player).c_switch() + world.get_door('PoD Arena Right to Landing Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('PoD Sexy Statue W', player).c_switch() world.get_door('PoD Sexy Statue NW', player).c_switch() - world.get_door('PoD Map Balcony WS', player).c_switch() - world.get_door('PoD Map Balcony South Stairs', player).c_switch() + world.get_door('PoD Map Balcony Ranged Crystal Exit', 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 Bow Statue Left to Right Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('PoD Bow Statue Right to Left Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('PoD Bow Statue Ranged Crystal Exit', 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) @@ -1248,9 +1279,7 @@ def create_doors(world, player): world.get_door('Mire Conveyor Crystal ES', player).c_switch() world.get_door('Mire Conveyor Crystal SE', player).c_switch() world.get_door('Mire Conveyor Crystal WS', player).c_switch() - world.get_door('Mire Tall Dark and Roomy ES', player).c_switch() - world.get_door('Mire Tall Dark and Roomy WN', player).c_switch() - world.get_door('Mire Tall Dark and Roomy WS', player).c_switch() + world.get_door('Mire Tall Dark and Roomy Ranged Crystal Exit', player).c_switch() world.get_door('Mire Crystal Top SW', player).c_switch() world.get_door('Mire Falling Foes ES', player).c_switch() world.get_door('Mire Falling Foes Up Stairs', player).c_switch() @@ -1274,10 +1303,14 @@ def create_doors(world, player): world.get_door('Mire Firesnake Skip Orange Barrier', player).barrier(CrystalBarrier.Orange) world.get_door('Mire Antechamber Orange Barrier', player).barrier(CrystalBarrier.Orange) - world.get_door('TR Chain Chomps SW', player).c_switch() world.get_door('TR Chain Chomps Down Stairs', player).c_switch() + world.get_door('TR Chain Chomps Top to Bottom Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('TR Chain Chomps Bottom to Top Barrier - Orange', player).barrier(CrystalBarrier.Orange) + world.get_door('TR Chain Chomps Bottom Ranged Crystal Exit', 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 Pokey 2 Top to Bottom Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('TR Pokey 2 Bottom to Top Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('TR Pokey 2 Bottom Ranged Crystal Exit', 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) diff --git a/Dungeons.py b/Dungeons.py index 8106a59b..5490cbbd 100644 --- a/Dungeons.py +++ b/Dungeons.py @@ -210,12 +210,13 @@ tower_regions = [ pod_regions = [ 'PoD Lobby', 'PoD Left Cage', 'PoD Middle Cage', 'PoD Shooter Room', 'PoD Pit Room', 'PoD Pit Room Blocked', - 'PoD Arena Main', 'PoD Arena North', 'PoD Arena Crystal', 'PoD Arena Bridge', 'PoD Arena Ledge', 'PoD Sexy Statue', - 'PoD Map Balcony', 'PoD Conveyor', 'PoD Mimics 1', 'PoD Jelly Hall', 'PoD Warp Hint', 'PoD Warp Room', + 'PoD Arena Main', 'PoD Arena Main - Ranged Crystal', 'PoD Arena North', 'PoD Arena Bridge', 'PoD Arena Bridge - Ranged Crystal', + 'PoD Arena Landing', 'PoD Arena Landing - Ranged Crystal', 'PoD Arena Right', 'PoD Arena Ledge', 'PoD Sexy Statue', + 'PoD Map Balcony', 'PoD Map Balcony - Ranged Crystal', '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 Landing', 'PoD Dark Pegs Right', - 'PoD Dark Pegs Middle', 'PoD Dark Pegs Left', 'PoD Dark Pegs Landing - Ranged Crystal', + 'PoD Harmless Hellway', 'PoD Mimics 2', 'PoD Bow Statue Left', 'PoD Bow Statue Right', 'PoD Bow Statue Right - Ranged Crystal', + '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' ] @@ -274,15 +275,15 @@ mire_regions = [ 'Mire Wizzrobe Bypass', 'Mire Conveyor Crystal', 'Mire Tile Room', 'Mire Compass Room', 'Mire Compass Chest', 'Mire Neglected Room', 'Mire Chest View', 'Mire Conveyor Barrier', 'Mire BK Chest Ledge', 'Mire Warping Pool', 'Mire Torches Top', 'Mire Torches Bottom', 'Mire Attic Hint', 'Mire Dark Shooters', 'Mire Key Rupees', - 'Mire Block X', 'Mire Tall Dark and Roomy', 'Mire Crystal Right', 'Mire Crystal Mid', 'Mire Crystal Left', + 'Mire Block X', 'Mire Tall Dark and Roomy', 'Mire Tall Dark and Roomy - Ranged Crystal', 'Mire Crystal Right', 'Mire Crystal Mid', 'Mire Crystal Left', 'Mire Crystal Top', 'Mire Shooter Rupees', 'Mire Falling Foes', 'Mire Firesnake Skip', 'Mire Antechamber', 'Mire Boss', 'Mire Portal' ] tr_regions = [ 'TR Main Lobby', 'TR Lobby Ledge', 'TR Compass Room', 'TR Hub', 'TR Torches Ledge', 'TR Torches', 'TR Roller Room', - '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 Tile Room', 'TR Refill', 'TR Pokey 1', 'TR Chain Chomps Top', 'TR Chain Chomps Bottom', 'TR Chain Chomps Bottom - Ranged Crystal', 'TR Pipe Pit', 'TR Pipe Ledge', 'TR Lava Dual Pipes', + 'TR Lava Island', 'TR Lava Escape', 'TR Pokey 2 Top', 'TR Pokey 2 Bottom', 'TR Pokey 2 Bottom - Ranged Crystal', '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 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', diff --git a/Regions.py b/Regions.py index 665c7d4e..7233336d 100644 --- a/Regions.py +++ b/Regions.py @@ -385,13 +385,20 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'PoD Shooter Room', 'Palace of Darkness', ['Palace of Darkness - Shooter Room'], ['PoD Shooter Room Up Stairs']), create_dungeon_region(player, 'PoD Pit Room', 'Palace of Darkness', None, ['PoD Pit Room S', 'PoD Pit Room NW', 'PoD Pit Room Bomb Hole', 'PoD Pit Room Block Path N']), create_dungeon_region(player, 'PoD Pit Room Blocked', 'Palace of Darkness', None, ['PoD Pit Room NE', 'PoD Pit Room Freefall', 'PoD Pit Room Block Path S']), - create_dungeon_region(player, 'PoD Arena Main', 'Palace of Darkness', None, ['PoD Arena Main SW', 'PoD Arena Main Crystal Path', 'PoD Arena Main Orange Barrier', 'PoD Arena Bonk Path']), - create_dungeon_region(player, 'PoD Arena North', 'Palace of Darkness', None, ['PoD Arena Main NW', 'PoD Arena Main NE', 'PoD Arena North Drop Down']), - create_dungeon_region(player, 'PoD Arena Crystal', 'Palace of Darkness', None, ['PoD Arena Crystals E', 'PoD Arena Crystal Path']), - create_dungeon_region(player, 'PoD Arena Bridge', 'Palace of Darkness', ['Palace of Darkness - The Arena - Bridge'], ['PoD Arena Bridge SE', 'PoD Arena Bridge Drop Down']), + + create_dungeon_region(player, 'PoD Arena Main', 'Palace of Darkness', None, ['PoD Arena Main SW', 'PoD Arena Main to Ranged Crystal', 'PoD Arena Main to Landing Barrier - Blue', 'PoD Arena Main to North Ranged Barrier - Orange']), + create_dungeon_region(player, 'PoD Arena Main - Ranged Crystal', 'Palace of Darkness', None, ['PoD Arena Main Ranged Crystal Exit']), + create_dungeon_region(player, 'PoD Arena North', 'Palace of Darkness', None, ['PoD Arena Main NW', 'PoD Arena Main NE', 'PoD Arena North Drop Down', 'PoD Arena North to Landing Barrier - Orange']), + create_dungeon_region(player, 'PoD Arena Bridge', 'Palace of Darkness', ['Palace of Darkness - The Arena - Bridge'], ['PoD Arena Bridge SE', 'PoD Arena Bridge Drop Down', 'PoD Arena Bridge to Ranged Crystal']), + create_dungeon_region(player, 'PoD Arena Bridge - Ranged Crystal', 'Palace of Darkness', None, ['PoD Arena Bridge Ranged Crystal Exit']), + create_dungeon_region(player, 'PoD Arena Landing', 'Palace of Darkness', None, ['PoD Arena Landing to Main Barrier - Blue', 'PoD Arena Landing to Right Barrier - Blue', 'PoD Arena Landing to North Barrier - Orange', 'PoD Arena Landing to Ranged Crystal', 'PoD Arena Landing Bonk Path']), + create_dungeon_region(player, 'PoD Arena Landing - Ranged Crystal', 'Palace of Darkness', None, ['PoD Arena Landing Ranged Crystal Exit']), + create_dungeon_region(player, 'PoD Arena Right', 'Palace of Darkness', None, ['PoD Arena Crystals E', 'PoD Arena Right to Landing Barrier - Blue']), + create_dungeon_region(player, 'PoD Arena Ledge', 'Palace of Darkness', ['Palace of Darkness - The Arena - Ledge'], ['PoD Arena Ledge ES']), create_dungeon_region(player, 'PoD Sexy Statue', 'Palace of Darkness', None, ['PoD Sexy Statue W', 'PoD Sexy Statue NW']), - create_dungeon_region(player, 'PoD Map Balcony', 'Palace of Darkness', ['Palace of Darkness - Map Chest'], ['PoD Map Balcony WS', 'PoD Map Balcony South Stairs', 'PoD Map Balcony Drop Down']), + create_dungeon_region(player, 'PoD Map Balcony', 'Palace of Darkness', ['Palace of Darkness - Map Chest'], ['PoD Map Balcony to Ranged Crystal', 'PoD Map Balcony WS', 'PoD Map Balcony South Stairs', 'PoD Map Balcony Drop Down']), + create_dungeon_region(player, 'PoD Map Balcony - Ranged Crystal', 'Palace of Darkness', None, ['PoD Map Balcony Ranged Crystal Exit']), create_dungeon_region(player, 'PoD Conveyor', 'Palace of Darkness', None, ['PoD Conveyor North Stairs', 'PoD Conveyor SW']), create_dungeon_region(player, 'PoD Mimics 1', 'Palace of Darkness', None, ['PoD Mimics 1 NW', 'PoD Mimics 1 SW']), create_dungeon_region(player, 'PoD Jelly Hall', 'Palace of Darkness', None, ['PoD Jelly Hall NW', 'PoD Jelly Hall NE']), @@ -410,6 +417,10 @@ def create_dungeon_regions(world, player): 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 Bow Statue Left', 'Palace of Darkness', None, ['PoD Bow Statue SW', 'PoD Bow Statue Left to Right Barrier - Orange']), + create_dungeon_region(player, 'PoD Bow Statue Right', 'Palace of Darkness', None, ['PoD Bow Statue Right to Left Barrier - Orange', 'PoD Bow Statue Right to Ranged Crystal', 'PoD Bow Statue Down Ladder']), + create_dungeon_region(player, 'PoD Bow Statue Right - Ranged Crystal', 'Palace of Darkness', None, ['PoD Bow Statue Ranged Crystal Exit']), + 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']), @@ -628,7 +639,8 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'Mire Dark Shooters', 'Misery Mire', None, ['Mire Dark Shooters Up Stairs', 'Mire Dark Shooters SW', 'Mire Dark Shooters SE']), create_dungeon_region(player, 'Mire Key Rupees', 'Misery Mire', None, ['Mire Key Rupees NE']), create_dungeon_region(player, 'Mire Block X', 'Misery Mire', None, ['Mire Block X NW', 'Mire Block X WS']), - create_dungeon_region(player, 'Mire Tall Dark and Roomy', 'Misery Mire', None, ['Mire Tall Dark and Roomy ES', 'Mire Tall Dark and Roomy WS', 'Mire Tall Dark and Roomy WN']), + create_dungeon_region(player, 'Mire Tall Dark and Roomy', 'Misery Mire', None, ['Mire Tall Dark and Roomy ES', 'Mire Tall Dark and Roomy WS', 'Mire Tall Dark and Roomy WN', 'Mire Tall Dark and Roomy to Ranged Crystal']), + create_dungeon_region(player, 'Mire Tall Dark and Roomy - Ranged Crystal', 'Misery Mire', None, ['Mire Tall Dark and Roomy Ranged Crystal Exit']), create_dungeon_region(player, 'Mire Crystal Right', 'Misery Mire', None, ['Mire Crystal Right ES', 'Mire Crystal Right Orange Barrier']), create_dungeon_region(player, 'Mire Crystal Mid', 'Misery Mire', None, ['Mire Crystal Mid Orange Barrier', 'Mire Crystal Mid Blue Barrier', 'Mire Crystal Mid NW']), create_dungeon_region(player, 'Mire Crystal Left', 'Misery Mire', None, ['Mire Crystal Left Blue Barrier', 'Mire Crystal Left WS']), @@ -650,13 +662,18 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'TR Tile Room', 'Turtle Rock', None, ['TR Tile Room SE', 'TR Tile Room NE']), create_dungeon_region(player, 'TR Refill', 'Turtle Rock', None, ['TR Refill SE']), create_dungeon_region(player, 'TR Pokey 1', 'Turtle Rock', ['Turtle Rock - Pokey 1 Key Drop'], ['TR Pokey 1 SW', 'TR Pokey 1 NW']), - create_dungeon_region(player, 'TR Chain Chomps', 'Turtle Rock', ['Turtle Rock - Chain Chomps'], ['TR Chain Chomps SW', 'TR Chain Chomps Down Stairs']), + create_dungeon_region(player, 'TR Chain Chomps Top', 'Turtle Rock', ['Turtle Rock - Chain Chomps'], ['TR Chain Chomps Down Stairs', 'TR Chain Chomps Top to Bottom Barrier - Orange']), + create_dungeon_region(player, 'TR Chain Chomps Bottom', 'Turtle Rock', None, ['TR Chain Chomps SW', 'TR Chain Chomps Bottom to Top Barrier - Orange', 'TR Chain Chomps Bottom to Ranged Crystal']), + create_dungeon_region(player, 'TR Chain Chomps Bottom - Ranged Crystal', 'Turtle Rock', None, ['TR Chain Chomps Bottom Ranged Crystal Exit']), + create_dungeon_region(player, 'TR Pipe Pit', 'Turtle Rock', None, ['TR Pipe Pit Up Stairs', 'TR Pipe Pit WN']), create_dungeon_region(player, 'TR Pipe Ledge', 'Turtle Rock', None, ['TR Pipe Ledge WS', 'TR Pipe Ledge Drop Down']), create_dungeon_region(player, 'TR Lava Dual Pipes', 'Turtle Rock', None, ['TR Lava Dual Pipes EN', 'TR Lava Dual Pipes WN', 'TR Lava Dual Pipes SW']), create_dungeon_region(player, 'TR Lava Island', 'Turtle Rock', ['Turtle Rock - Big Key Chest'], ['TR Lava Island WS', 'TR Lava Island ES']), create_dungeon_region(player, 'TR Lava Escape', 'Turtle Rock', None, ['TR Lava Escape SE', 'TR Lava Escape NW']), - create_dungeon_region(player, 'TR Pokey 2', 'Turtle Rock', ['Turtle Rock - Pokey 2 Key Drop'], ['TR Pokey 2 EN', 'TR Pokey 2 ES']), + create_dungeon_region(player, 'TR Pokey 2 Top', 'Turtle Rock', None, ['TR Pokey 2 EN', 'TR Pokey 2 Top to Bottom Barrier - Blue']), + create_dungeon_region(player, 'TR Pokey 2 Bottom', 'Turtle Rock', ['Turtle Rock - Pokey 2 Key Drop'], ['TR Pokey 2 ES', 'TR Pokey 2 Bottom to Top Barrier - Blue', 'TR Pokey 2 Bottom to Ranged Crystal']), + create_dungeon_region(player, 'TR Pokey 2 Bottom - Ranged Crystal', 'Turtle Rock', None, ['TR Pokey 2 Bottom Ranged Crystal Exit']), create_dungeon_region(player, 'TR Twin Pokeys', 'Turtle Rock', None, ['TR Twin Pokeys NW', 'TR Twin Pokeys EN', 'TR Twin Pokeys SW']), create_dungeon_region(player, 'TR Hallway', 'Turtle Rock', None, ['TR Hallway NW', 'TR Hallway ES', 'TR Hallway WS']), create_dungeon_region(player, 'TR Dodgers', 'Turtle Rock', None, ['TR Dodgers WN', 'TR Dodgers SE', 'TR Dodgers NE']), @@ -673,12 +690,11 @@ def create_dungeon_regions(world, player): 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', 'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'], - ['TR Eye Bridge SW', 'TR Eye Bridge NW']), + ['TR Eye Bridge SW', 'TR Eye Bridge NW']), create_dungeon_region(player, 'TR Crystal Maze', 'Turtle Rock', None, ['TR Crystal Maze ES', 'TR Crystal Maze Forwards Path']), create_dungeon_region(player, 'TR Crystal Maze End', 'Turtle Rock', None, ['TR Crystal Maze Blue Path', 'TR Crystal Maze Cane Path', 'TR Crystal Maze North Stairs']), create_dungeon_region(player, 'TR Final Abyss', 'Turtle Rock', None, ['TR Final Abyss South Stairs', 'TR Final Abyss NW']), @@ -781,12 +797,15 @@ def create_dungeon_regions(world, player): world.get_region('Hera Tile Room', player).crystal_switch = True # INTERIOR not accessible (maybe with cane) world.get_region('Hera Tridorm', player).crystal_switch = True world.get_region('Hera Startile Wide', player).crystal_switch = True - world.get_region('PoD Arena Main', player).crystal_switch = True - world.get_region('PoD Arena Bridge', player).crystal_switch = True # RANGED Weapon Required + world.get_region('PoD Arena Main - Ranged Crystal', player).crystal_switch = True + world.get_region('PoD Arena Bridge - Ranged Crystal', player).crystal_switch = True + world.get_region('PoD Arena Landing - Ranged Crystal', player).crystal_switch = True + world.get_region('PoD Map Balcony - Ranged Crystal', player).crystal_switch = True 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 Right', player).crystal_switch = True + world.get_region('PoD Bow Statue Left', player).crystal_switch = True + world.get_region('PoD Bow Statue Right - Ranged Crystal', player).crystal_switch = True world.get_region('PoD Dark Pegs Landing - Ranged Crystal', player).crystal_switch = True + world.get_region('PoD Dark Pegs Right', 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 @@ -796,12 +815,15 @@ def create_dungeon_regions(world, player): world.get_region('Ice Refill', player).crystal_switch = True world.get_region('Mire Fishbone', player).crystal_switch = True world.get_region('Mire Conveyor Crystal', player).crystal_switch = True - world.get_region('Mire Tall Dark and Roomy', player).crystal_switch = True + world.get_region('Mire Tall Dark and Roomy - Ranged Crystal', player).crystal_switch = True world.get_region('Mire Crystal Top', player).crystal_switch = True 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 Chain Chomps Top', player).crystal_switch = True + world.get_region('TR Chain Chomps Bottom - Ranged Crystal', player).crystal_switch = True + world.get_region('TR Pokey 2 Top', player).crystal_switch = True + world.get_region('TR Pokey 2 Bottom - Ranged Crystal', player).crystal_switch = True world.get_region('TR Crystaroller Top', player).crystal_switch = True + world.get_region('TR Crystaroller Bottom - Ranged Crystal', 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 diff --git a/Rules.py b/Rules.py index d16231ad..118ae95b 100644 --- a/Rules.py +++ b/Rules.py @@ -179,7 +179,7 @@ def global_rules(world, player): set_defeat_dungeon_boss_rule(world.get_location('Agahnim 1', player)) - set_rule(world.get_entrance('PoD Arena Bonk Path', player), lambda state: state.has_Boots(player)) + set_rule(world.get_entrance('PoD Arena Landing Bonk Path', player), lambda state: state.has_Boots(player)) set_rule(world.get_entrance('PoD Mimics 1 NW', player), lambda state: state.can_shoot_arrows(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)) @@ -284,6 +284,7 @@ def global_rules(world, player): set_rule(world.get_entrance('TR Hub EN', player), lambda state: state.has('Cane of Somaria', player)) set_rule(world.get_entrance('TR Hub NW', player), lambda state: state.has('Cane of Somaria', player)) set_rule(world.get_entrance('TR Hub NE', player), lambda state: state.has('Cane of Somaria', player)) + set_rule(world.get_location('Turtle Rock - Chain Chomps', player), lambda state: state.can_hit_switch_through_barrier(player)) set_rule(world.get_entrance('TR Torches NW', player), lambda state: state.has('Cane of Somaria', player) and state.has('Fire Rod', player)) set_rule(world.get_entrance('TR Big Chest Entrance Gap', player), lambda state: state.has('Cane of Somaria', player) or state.has('Hookshot', player)) set_rule(world.get_entrance('TR Big Chest Gap', player), lambda state: state.has('Cane of Somaria', player) or state.has_Boots(player)) @@ -357,8 +358,23 @@ def global_rules(world, player): set_rule(world.get_entrance('Hera Up Stairs to Front Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('Hera Up Stairs Landing', player), 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 Arena Main to Ranged Crystal', player), lambda state: state.can_hit_switch_through_barrier(player) or state.has('Hookshot', player)) + set_rule(world.get_entrance('PoD Arena Bridge 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('PoD Arena Landing to Ranged Crystal', player), lambda state: state.has('Red Boomerang', player) or (state.has('Cane of Somaria', player) and state.has_Boots(player))) + set_rule(world.get_entrance('PoD Arena Main to North Ranged Barrier - Orange', player), lambda state: state.can_use_bombs(player) or state.has('Cane of Somaria', player)) + set_rule(world.get_entrance('PoD Arena North to Landing Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('PoD Arena North', player), player)) + set_rule(world.get_entrance('PoD Arena Landing to North Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('PoD Arena Landing', player), player)) + set_rule(world.get_entrance('PoD Arena Main to Landing Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('PoD Arena Main', player), player)) + set_rule(world.get_entrance('PoD Arena Landing to Main Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('PoD Arena Landing', player), player)) + set_rule(world.get_entrance('PoD Arena Landing to Right Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('PoD Arena Landing', player), player)) + set_rule(world.get_entrance('PoD Arena Right to Landing Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('PoD Arena Right', player), player)) + + set_rule(world.get_entrance('PoD Map Balcony to Ranged Crystal', player), lambda state: state.has('Cane of Somaria', player) or state.can_use_bombs(player)) + set_rule(world.get_entrance('PoD Bow Statue Left to Right Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('PoD Bow Statue Left', player), player)) + set_rule(world.get_entrance('PoD Bow Statue Right to Left Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('PoD Bow Statue Right', player), player)) + set_rule(world.get_entrance('PoD Bow Statue Right to Ranged Crystal', player), lambda state: state.has('Cane of Somaria', 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)) @@ -377,6 +393,7 @@ def global_rules(world, player): set_rule(world.get_entrance('Ice Crystal Right Blue Hole', player), lambda state: state.can_reach_blue(world.get_region('Ice Crystal Right', player), player)) set_rule(world.get_entrance('Ice Crystal Left Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Ice Crystal Left', player), player)) set_rule(world.get_entrance('Ice Backwards Room Hole', player), lambda state: state.can_reach_blue(world.get_region('Ice Backwards Room', player), player)) + set_rule(world.get_entrance('Mire Hub Upper Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Mire Hub', player), player)) set_rule(world.get_entrance('Mire Hub Lower Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Mire Hub', player), player)) set_rule(world.get_entrance('Mire Hub Right Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Mire Hub Right', player), player)) @@ -389,8 +406,17 @@ def global_rules(world, player): set_rule(world.get_entrance('Mire Crystal Dead End Right Barrier', player), lambda state: state.can_reach_blue(world.get_region('Mire Crystal Dead End', player), player)) set_rule(world.get_entrance('Mire South Fish Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Mire South Fish', player), 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 Tall Dark and Roomy to Ranged Crystal', player), lambda state: state.can_hit_switch_through_barrier(player) or state.has('Hookshot') or state.has_Boots(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 Chain Chomps Top to Bottom Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('TR Chain Chomps Top', player), player)) + set_rule(world.get_entrance('TR Chain Chomps Bottom to Top Barrier - Orange', player), lambda state: state.can_reach_orange(world.get_region('TR Chain Chomps Bottom', player), player)) + set_rule(world.get_entrance('TR Chain Chomps Bottom to Ranged Crystal', player), lambda state: state.can_hit_switch_through_barrier(player)) + set_rule(world.get_entrance('TR Pokey 2 Top to Bottom Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('TR Pokey 2 Top', player), player)) + set_rule(world.get_entrance('TR Pokey 2 Bottom to Top Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('TR Pokey 2 Bottom', player), player)) + set_rule(world.get_entrance('TR Pokey 2 Bottom to Ranged Crystal', player), lambda state: state.can_hit_switch_through_barrier(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)) @@ -400,6 +426,7 @@ def global_rules(world, 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)) 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)) @@ -809,7 +836,7 @@ def no_glitches_rules(world, player): 'Mire Dark Shooters': {'sewer': False, 'entrances': ['Mire Dark Shooters Up Stairs', 'Mire Dark Shooters SW', 'Mire Dark Shooters SE'], 'locations': []}, 'Mire Key Rupees': {'sewer': False, 'entrances': ['Mire Key Rupees NE'], 'locations': []}, 'Mire Block X': {'sewer': False, 'entrances': ['Mire Block X NW', 'Mire Block X WS'], 'locations': []}, - 'Mire Tall Dark and Roomy': {'sewer': False, 'entrances': ['Mire Tall Dark and Roomy ES', 'Mire Tall Dark and Roomy WS', 'Mire Tall Dark and Roomy WN'], 'locations': []}, + 'Mire Tall Dark and Roomy': {'sewer': False, 'entrances': ['Mire Tall Dark and Roomy ES', 'Mire Tall Dark and Roomy WS', 'Mire Tall Dark and Roomy WN', 'Mire Tall Dark and Roomy to Ranged Crystal'], 'locations': []}, 'Mire Crystal Right': {'sewer': False, 'entrances': ['Mire Crystal Right ES'], 'locations': []}, 'Mire Crystal Mid': {'sewer': False, 'entrances': ['Mire Crystal Mid NW'], 'locations': []}, 'Mire Crystal Left': {'sewer': False, 'entrances': ['Mire Crystal Left WS'], 'locations': []}, @@ -1620,9 +1647,9 @@ bunny_impassible_doors = { 'Hera Up Stairs to Front Barrier - Orange', 'Hera Back to Front Barrier - Orange', '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 Pit Room Block Path N', - '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 Left Cage SW', 'PoD Middle Cage SE', 'PoD Pit Room Bomb Hole', 'PoD Stalfos Basement Warp', 'PoD Arena Main SW', + '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 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', @@ -1657,7 +1684,7 @@ bunny_impassible_doors = { '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', - 'TR Pokey 2 EN', 'TR Pokey 2 ES', 'TR Twin Pokeys SW', 'TR Twin Pokeys EN', 'TR Big Chest Gap', + 'TR Pokey 2 Bottom to Top Barrier - Blue', 'TR Pokey 2 Top to Bottom Barrier - Blue', 'TR Twin Pokeys SW', 'TR Twin Pokeys EN', 'TR Big Chest Gap', 'TR Big Chest Entrance Gap', 'TR Lazy Eyes ES', 'TR Tongue Pull WS', 'TR Tongue Pull NE', 'TR Dark Ride Up Stairs', 'TR Dark Ride SW', 'TR Crystal Maze Forwards Path', 'TR Crystal Maze Blue Path', 'TR Crystal Maze Cane Path', 'TR Final Abyss South Stairs', 'TR Final Abyss NW', 'GT Hope Room EN', 'GT Blocked Stairs Block Path',