diff --git a/DoorShuffle.py b/DoorShuffle.py index 5b8dfee5..c244385a 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -2071,6 +2071,12 @@ logical_connections = [ ('Swamp Trench 1 Departure Key', 'Swamp Trench 1 Key Ledge'), ('Swamp Hub Hook Path', 'Swamp Hub North Ledge'), ('Swamp Hub North Ledge Drop Down', 'Swamp Hub'), + ('Swamp Crystal Switch Outer to Inner Barrier - Blue', 'Swamp Crystal Switch Inner'), + ('Swamp Crystal Switch Outer to Ranged Crystal', 'Swamp Crystal Switch Outer - Ranged Crystal'), + ('Swamp Crystal Switch Outer to Inner Bypass', 'Swamp Crystal Switch Inner'), + ('Swamp Crystal Switch Outer Ranged Crystal Exit', 'Swamp Crystal Switch Outer'), + ('Swamp Crystal Switch Inner to Outer Barrier - Blue', 'Swamp Crystal Switch Outer'), + ('Swamp Crystal Switch Inner to Outer Bypass', 'Swamp Crystal Switch Outer'), ('Swamp Compass Donut Push Block', 'Swamp Donut Top'), ('Swamp Shortcut Blue Barrier', 'Swamp Trench 2 Pots'), ('Swamp Trench 2 Pots Blue Barrier', 'Swamp Shortcut'), diff --git a/Doors.py b/Doors.py index b2810a61..9ad7928f 100644 --- a/Doors.py +++ b/Doors.py @@ -503,6 +503,12 @@ def create_doors(world, player): create_door(player, 'Swamp Compass Donut Push Block', Lgcl), create_door(player, 'Swamp Crystal Switch EN', Nrml).dir(Ea, 0x35, Top, High).small_key().pos(0), create_door(player, 'Swamp Crystal Switch SE', Intr).dir(So, 0x35, Right, High).pos(3), + create_door(player, 'Swamp Crystal Switch Outer to Inner Barrier - Blue', Lgcl), + create_door(player, 'Swamp Crystal Switch Outer to Ranged Crystal', Lgcl), + create_door(player, 'Swamp Crystal Switch Outer to Inner Bypass', Lgcl), + create_door(player, 'Swamp Crystal Switch Outer Ranged Crystal Exit', Lgcl), + create_door(player, 'Swamp Crystal Switch Inner to Outer Barrier - Blue', Lgcl), + create_door(player, 'Swamp Crystal Switch Inner to Outer Bypass', Lgcl), create_door(player, 'Swamp Shortcut NE', Intr).dir(No, 0x35, Right, High).pos(3), create_door(player, 'Swamp Shortcut Blue Barrier', Lgcl), create_door(player, 'Swamp Trench 2 Pots ES', Nrml).dir(Ea, 0x35, Bot, High).pos(4), @@ -1286,8 +1292,11 @@ def create_doors(world, player): 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() + world.get_door('Swamp Crystal Switch Outer to Inner Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('Swamp Crystal Switch Outer to Inner Bypass', player).barrier(CrystalBarrier.Orange) + world.get_door('Swamp Crystal Switch Inner to Outer Barrier - Blue', player).barrier(CrystalBarrier.Blue) + world.get_door('Swamp Crystal Switch Inner to Outer Bypass', player).barrier(CrystalBarrier.Orange) + world.get_door('Swamp Crystal Switch Outer Ranged Crystal Exit', player).c_switch() world.get_door('Swamp Shortcut Blue Barrier', player).barrier(CrystalBarrier.Blue) world.get_door('Swamp Trench 2 Pots Blue Barrier', player).barrier(CrystalBarrier.Blue) world.get_door('Swamp Barrier Ledge - Orange', player).barrier(CrystalBarrier.Orange) diff --git a/Dungeons.py b/Dungeons.py index 44e38e4d..6903d474 100644 --- a/Dungeons.py +++ b/Dungeons.py @@ -226,7 +226,8 @@ swamp_regions = [ 'Swamp Lobby', 'Swamp Entrance', 'Swamp Pot Row', 'Swamp Map Ledge', 'Swamp Trench 1 Approach', 'Swamp Trench 1 Nexus', 'Swamp Trench 1 Alcove', 'Swamp Trench 1 Key Ledge', 'Swamp Trench 1 Departure', 'Swamp Hammer Switch', 'Swamp Hub', 'Swamp Hub Dead Ledge', 'Swamp Hub North Ledge', 'Swamp Donut Top', - 'Swamp Donut Bottom', 'Swamp Compass Donut', 'Swamp Crystal Switch', 'Swamp Shortcut', 'Swamp Trench 2 Pots', + 'Swamp Donut Bottom', 'Swamp Compass Donut', 'Swamp Crystal Switch Outer', 'Swamp Crystal Switch Outer - Ranged Crystal', + 'Swamp Crystal Switch Inner', 'Swamp Shortcut', 'Swamp Trench 2 Pots', 'Swamp Trench 2 Blocks', 'Swamp Trench 2 Alcove', 'Swamp Trench 2 Departure', 'Swamp Big Key Ledge', 'Swamp West Shallows', 'Swamp West Block Path', 'Swamp West Ledge', 'Swamp Barrier Ledge', 'Swamp Barrier', 'Swamp Attic', 'Swamp Push Statue', 'Swamp Shooters', 'Swamp Left Elbow', 'Swamp Right Elbow', 'Swamp Drain Left', diff --git a/Regions.py b/Regions.py index 0b2dfa27..8bbec49c 100644 --- a/Regions.py +++ b/Regions.py @@ -450,7 +450,10 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'Swamp Donut Top', 'Swamp Palace', None, ['Swamp Donut Top N', 'Swamp Donut Top SE']), create_dungeon_region(player, 'Swamp Donut Bottom', 'Swamp Palace', None, ['Swamp Donut Bottom NE', 'Swamp Donut Bottom NW']), create_dungeon_region(player, 'Swamp Compass Donut', 'Swamp Palace', ['Swamp Palace - Compass Chest'], ['Swamp Compass Donut SW', 'Swamp Compass Donut Push Block']), - create_dungeon_region(player, 'Swamp Crystal Switch', 'Swamp Palace', ['Trench 2 Switch'], ['Swamp Crystal Switch EN', 'Swamp Crystal Switch SE']), + create_dungeon_region(player, 'Swamp Crystal Switch Outer', 'Swamp Palace', None, ['Swamp Crystal Switch EN', 'Swamp Crystal Switch SE', 'Swamp Crystal Switch Outer to Inner Barrier - Blue', 'Swamp Crystal Switch Outer to Ranged Crystal', 'Swamp Crystal Switch Outer to Inner Bypass']), + create_dungeon_region(player, 'Swamp Crystal Switch Outer - Ranged Crystal', 'Swamp Palace', None, ['Swamp Crystal Switch Outer Ranged Crystal Exit']), + create_dungeon_region(player, 'Swamp Crystal Switch Inner', 'Swamp Palace', ['Trench 2 Switch'], ['Swamp Crystal Switch Inner to Outer Bypass', 'Swamp Crystal Switch Inner to Outer Barrier - Blue']), + create_dungeon_region(player, 'Swamp Shortcut', 'Swamp Palace', None, ['Swamp Shortcut NE', 'Swamp Shortcut Blue Barrier']), create_dungeon_region(player, 'Swamp Trench 2 Pots', 'Swamp Palace', None, ['Swamp Trench 2 Pots ES', 'Swamp Trench 2 Pots Blue Barrier', 'Swamp Trench 2 Pots Dry', 'Swamp Trench 2 Pots Wet']), create_dungeon_region(player, 'Swamp Trench 2 Blocks', 'Swamp Palace', None, ['Swamp Trench 2 Blocks Pots', 'Swamp Trench 2 Blocks N']), @@ -826,7 +829,8 @@ def create_dungeon_regions(world, player): 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 + world.get_region('Swamp Crystal Switch Inner', player).crystal_switch = True + world.get_region('Swamp Crystal Switch Outer - Ranged Crystal', player).crystal_switch = True world.get_region('Thieves Spike Switch', player).crystal_switch = True world.get_region('Ice Bomb Drop', player).crystal_switch = True world.get_region('Ice Conveyor', player).crystal_switch = True diff --git a/Rules.py b/Rules.py index b2b44c68..c0c075bc 100644 --- a/Rules.py +++ b/Rules.py @@ -388,11 +388,17 @@ def global_rules(world, player): set_rule(world.get_entrance('PoD Dark Pegs Right to Middle Bypass', player), lambda state: state.has('Blue Boomerang', player)) set_rule(world.get_entrance('PoD Dark Pegs Middle to Left Bypass', player), lambda state: state.can_use_bombs(player)) + set_rule(world.get_entrance('Swamp Crystal Switch Outer to Inner Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('Swamp Trench 2 Pots', player), player)) + set_rule(world.get_entrance('Swamp Crystal Switch Inner to Outer Barrier - Blue', player), lambda state: state.can_reach_blue(world.get_region('Swamp Trench 2 Pots', player), 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('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)) + set_rule(world.get_entrance('Swamp Crystal Switch Outer to Ranged Crystal', player), lambda state: state.can_hit_crystal_through_barrier(player) or state.has_beam_sword(player)) # It is the length of the sword, not the beam itself that allows this + set_rule(world.get_entrance('Swamp Crystal Switch Outer to Inner Bypass', player), lambda state: state.world.can_take_damage or state.has('Cape', player) or state.has('Cane of Byrna', player)) + set_rule(world.get_entrance('Swamp Crystal Switch Inner to Outer Bypass', player), lambda state: state.world.can_take_damage or state.has('Cape', player) or state.has('Cane of Byrna', player)) + set_rule(world.get_entrance('Thieves Hellway Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Thieves Hellway', player), player)) set_rule(world.get_entrance('Thieves Hellway Orange Barrier', player), lambda state: state.can_reach_orange(world.get_region('Thieves Hellway', player), player)) set_rule(world.get_entrance('Thieves Hellway Crystal Blue Barrier', player), lambda state: state.can_reach_blue(world.get_region('Thieves Hellway N Crystal', player), player))