From b4173044d7ddda09a1964ae98b152b0aa2c4c3ab Mon Sep 17 00:00:00 2001 From: codemann8 Date: Tue, 30 Nov 2021 11:27:44 -0600 Subject: [PATCH] Modeled Woods Pass regions more correctly --- OWEdges.py | 20 ++++++++++++++------ OverworldShuffle.py | 18 ++++++++++++------ Regions.py | 10 ++++++---- Rules.py | 25 +++++++++++++++++-------- 4 files changed, 49 insertions(+), 24 deletions(-) diff --git a/OWEdges.py b/OWEdges.py index f13e3b32..8e1917cc 100644 --- a/OWEdges.py +++ b/OWEdges.py @@ -720,6 +720,7 @@ OWTileRegions = bidict({ 'Lost Woods Pass West Area': 0x10, 'Lost Woods Pass East Top Area': 0x10, + 'Lost Woods Pass Portal Area': 0x10, 'Lost Woods Pass East Bottom Area': 0x10, 'Kakariko Fortune Area': 0x11, @@ -862,6 +863,7 @@ OWTileRegions = bidict({ 'Skull Woods Pass West Area': 0x50, 'Skull Woods Pass East Top Area': 0x50, + 'Skull Woods Pass Portal Area': 0x50, 'Skull Woods Pass East Bottom Area': 0x50, 'Dark Fortune Area': 0x51, @@ -1518,6 +1520,10 @@ OWExitTypes = { 'Zora Waterfall Water Entry', 'Waterfall of Wishing Cave Entry', 'Zora Waterfall Landing', + 'Lost Woods Pass Hammer (North)', + 'Lost Woods Pass Hammer (South)', + 'Lost Woods Pass Rock (North)', + 'Lost Woods Pass Rock (South)', 'Kings Grave Outer Rocks', 'Graveyard Ladder (Bottom)', 'Graveyard Ladder (Top)', @@ -1587,8 +1593,10 @@ OWExitTypes = { 'Bumper Cave Entrance Rock', 'Skull Woods Pass Bush Row (West)', 'Skull Woods Pass Bush Row (East)', - 'Skull Woods Pass Rock (Top)', - 'Skull Woods Pass Rock (Bottom)', + 'Skull Woods Pass Bush (North)', + 'Skull Woods Pass Bush (South)', + 'Skull Woods Pass Rock (North)', + 'Skull Woods Pass Rock (South)', 'Dark Graveyard Bush (South)', 'Dark Graveyard Bush (North)', 'Qirn Jump East Water Drop', @@ -1632,8 +1640,7 @@ OWExitTypes = { 'Portal': ['West Death Mountain Teleporter', 'East Death Mountain Teleporter', 'TR Pegs Teleporter', - 'Kakariko Teleporter (Hammer)', - 'Kakariko Teleporter (Rock)', + 'Kakariko Teleporter', 'Top of Pyramid', 'Top of Pyramid (Inner)', 'East Hyrule Teleporter', @@ -1643,8 +1650,7 @@ OWExitTypes = { 'Dark Death Mountain Teleporter (West)', 'Dark Death Mountain Teleporter (East)', 'Turtle Rock Teleporter', - 'West Dark World Teleporter (Hammer)', - 'West Dark World Teleporter (Rock)', + 'West Dark World Teleporter', 'Post Aga Inverted Teleporter', 'East Dark World Teleporter', 'Misery Mire Teleporter', @@ -1687,6 +1693,7 @@ OWExitTypes = { 'Catfish Mirror Spot', 'Skull Woods Pass West Mirror Spot', 'Skull Woods Pass East Top Mirror Spot', + 'Skull Woods Pass Portal Mirror Spot', 'Skull Woods Pass East Bottom Mirror Spot', 'Outcast Fortune Mirror Spot', 'Outcast Pond Mirror Spot', @@ -1777,6 +1784,7 @@ OWExitTypes = { 'Zora Waterfall Mirror Spot', 'Lost Woods Pass West Mirror Spot', 'Lost Woods Pass East Top Mirror Spot', + 'Lost Woods Pass Portal Mirror Spot', 'Lost Woods Pass East Bottom Mirror Spot', 'Kakariko Fortune Mirror Spot', 'Kakariko Pond Mirror Spot', diff --git a/OverworldShuffle.py b/OverworldShuffle.py index e2e15dd2..3154c961 100644 --- a/OverworldShuffle.py +++ b/OverworldShuffle.py @@ -954,6 +954,10 @@ mandatory_connections = [# Intra-tile OW Connections ('Zora Waterfall Water Drop', 'Zora Waterfall Water'), #flippers ('Zora Waterfall Water Entry', 'Zora Waterfall Water'), #flippers ('Waterfall of Wishing Cave Entry', 'Waterfall of Wishing Cave'), #flippers + ('Lost Woods Pass Hammer (North)', 'Lost Woods Pass Portal Area'), #hammer + ('Lost Woods Pass Hammer (South)', 'Lost Woods Pass East Top Area'), #hammer + ('Lost Woods Pass Rock (North)', 'Lost Woods Pass East Bottom Area'), #mitts + ('Lost Woods Pass Rock (South)', 'Lost Woods Pass Portal Area'), #mitts ('Bonk Rock Ledge Drop', 'Sanctuary Area'), ('Graveyard Ledge Drop', 'Graveyard Area'), ('Kings Grave Outer Rocks', 'Kings Grave Area'), #mitts @@ -1041,8 +1045,10 @@ mandatory_connections = [# Intra-tile OW Connections ('Bumper Cave Entrance Drop', 'Bumper Cave Area'), ('Skull Woods Pass Bush Row (West)', 'Skull Woods Pass East Top Area'), #pearl ('Skull Woods Pass Bush Row (East)', 'Skull Woods Pass West Area'), #pearl - ('Skull Woods Pass Rock (Top)', 'Skull Woods Pass East Bottom Area'), #mitts - ('Skull Woods Pass Rock (Bottom)', 'Skull Woods Pass East Top Area'), #mitts + ('Skull Woods Pass Bush (North)', 'Skull Woods Pass Portal Area'), #pearl + ('Skull Woods Pass Bush (South)', 'Skull Woods Pass East Top Area'), #pearl + ('Skull Woods Pass Rock (North)', 'Skull Woods Pass East Bottom Area'), #mitts + ('Skull Woods Pass Rock (South)', 'Skull Woods Pass Portal Area'), #mitts ('Dark Graveyard Bush (South)', 'Dark Graveyard North'), #pearl ('Dark Graveyard Bush (North)', 'Dark Graveyard Area'), #pearl ('Qirn Jump Water Drop', 'Qirn Jump Water'), #flippers @@ -1252,15 +1258,15 @@ ow_connections = { 0x10: ([ ('Lost Woods Pass West Mirror Spot', 'Lost Woods Pass West Area'), ('Lost Woods Pass East Top Mirror Spot', 'Lost Woods Pass East Top Area'), + ('Lost Woods Pass Portal Mirror Spot', 'Lost Woods Pass Portal Area'), ('Lost Woods Pass East Bottom Mirror Spot', 'Lost Woods Pass East Bottom Area'), - ('Kakariko Teleporter (Hammer)', 'Skull Woods Pass East Top Area'), - ('Kakariko Teleporter (Rock)', 'Skull Woods Pass East Top Area') + ('Kakariko Teleporter', 'Skull Woods Pass Portal Area') ], [ ('Skull Woods Pass West Mirror Spot', 'Skull Woods Pass West Area'), ('Skull Woods Pass East Top Mirror Spot', 'Skull Woods Pass East Top Area'), + ('Skull Woods Pass Portal Mirror Spot', 'Skull Woods Pass Portal Area'), ('Skull Woods Pass East Bottom Mirror Spot', 'Skull Woods Pass East Bottom Area'), - ('West Dark World Teleporter (Hammer)', 'Lost Woods Pass East Top Area'), - ('West Dark World Teleporter (Rock)', 'Lost Woods Pass East Bottom Area') + ('West Dark World Teleporter', 'Lost Woods Pass Portal Area') ]), 0x11: ([ ('Kakariko Fortune Mirror Spot', 'Kakariko Fortune Area') diff --git a/Regions.py b/Regions.py index a5d3309d..b4a48d73 100644 --- a/Regions.py +++ b/Regions.py @@ -34,8 +34,9 @@ def create_regions(world, player): create_lw_region(player, 'Waterfall of Wishing Cave', None, ['Zora Waterfall Water Drop', 'Waterfall of Wishing']), create_lw_region(player, 'Zoras Domain', ['King Zora', 'Zora\'s Ledge'], ['Zoras Domain SW']), create_lw_region(player, 'Lost Woods Pass West Area', None, ['Skull Woods Pass West Mirror Spot', 'Lost Woods Pass NW', 'Lost Woods Pass SW']), - create_lw_region(player, 'Lost Woods Pass East Top Area', None, ['Skull Woods Pass East Top Mirror Spot', 'Kakariko Teleporter (Hammer)', 'Lost Woods Pass NE']), - create_lw_region(player, 'Lost Woods Pass East Bottom Area', None, ['Skull Woods Pass East Bottom Mirror Spot', 'Kakariko Teleporter (Rock)', 'Lost Woods Pass SE']), + create_lw_region(player, 'Lost Woods Pass East Top Area', None, ['Skull Woods Pass East Top Mirror Spot', 'Lost Woods Pass Hammer (North)', 'Lost Woods Pass NE']), + create_lw_region(player, 'Lost Woods Pass Portal Area', None, ['Skull Woods Pass Portal Mirror Spot', 'Kakariko Teleporter', 'Lost Woods Pass Hammer (South)', 'Lost Woods Pass Rock (North)']), + create_lw_region(player, 'Lost Woods Pass East Bottom Area', None, ['Skull Woods Pass East Bottom Mirror Spot', 'Lost Woods Pass Rock (South)', 'Lost Woods Pass SE']), create_lw_region(player, 'Kakariko Fortune Area', None, ['Fortune Teller (Light)', 'Outcast Fortune Mirror Spot', 'Kakariko Fortune NE', 'Kakariko Fortune EN', 'Kakariko Fortune ES', 'Kakariko Fortune SC']), create_lw_region(player, 'Kakariko Pond Area', None, ['Outcast Pond Mirror Spot', 'Kakariko Pond NE', 'Kakariko Pond WN', 'Kakariko Pond WS', 'Kakariko Pond SW', 'Kakariko Pond SE', 'Kakariko Pond EN', 'Kakariko Pond ES', 'Kakariko Pond Whirlpool']), create_lw_region(player, 'Sanctuary Area', None, ['Sanctuary', 'Dark Chapel Mirror Spot', 'Sanctuary WS', 'Sanctuary EC']), @@ -144,8 +145,9 @@ def create_regions(world, player): create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave Entrance Drop', 'Bumper Cave (Top)', 'Mountain Entry Ledge Mirror Spot']), create_dw_region(player, 'Catfish Area', ['Catfish'], ['Zora Waterfall Mirror Spot', 'Catfish SE']), create_dw_region(player, 'Skull Woods Pass West Area', None, ['Skull Woods Pass Bush Row (West)', 'Lost Woods Pass West Mirror Spot', 'Skull Woods Pass NW', 'Skull Woods Pass SW']), - create_dw_region(player, 'Skull Woods Pass East Top Area', None, ['Skull Woods Pass Bush Row (East)', 'Skull Woods Pass Rock (Top)', 'West Dark World Teleporter (Hammer)', 'West Dark World Teleporter (Rock)', 'Lost Woods Pass East Top Mirror Spot', 'Skull Woods Pass NE']), - create_dw_region(player, 'Skull Woods Pass East Bottom Area', None, ['Skull Woods Pass Rock (Bottom)', 'Lost Woods Pass East Bottom Mirror Spot', 'Skull Woods Pass SE']), + create_dw_region(player, 'Skull Woods Pass East Top Area', None, ['Lost Woods Pass East Top Mirror Spot', 'Skull Woods Pass Bush Row (East)', 'Skull Woods Pass Bush (North)', 'Skull Woods Pass NE']), + create_dw_region(player, 'Skull Woods Pass Portal Area', None, ['Lost Woods Pass Portal Mirror Spot', 'West Dark World Teleporter', 'Skull Woods Pass Bush (South)', 'Skull Woods Pass Rock (North)']), + create_dw_region(player, 'Skull Woods Pass East Bottom Area', None, ['Lost Woods Pass East Bottom Mirror Spot', 'Skull Woods Pass Rock (South)', 'Skull Woods Pass SE']), create_dw_region(player, 'Dark Fortune Area', None, ['Fortune Teller (Dark)', 'Kakariko Fortune Mirror Spot', 'Dark Fortune NE', 'Dark Fortune EN', 'Dark Fortune ES', 'Dark Fortune SC']), create_dw_region(player, 'Outcast Pond Area', None, ['Kakariko Pond Mirror Spot', 'Outcast Pond NE', 'Outcast Pond WN', 'Outcast Pond WS', 'Outcast Pond SW', 'Outcast Pond SE', 'Outcast Pond EN', 'Outcast Pond ES']), create_dw_region(player, 'Dark Chapel Area', None, ['Dark Sanctuary Hint', 'Sanctuary Mirror Spot', 'Bonk Rock Ledge Mirror Spot', 'Dark Chapel WN', 'Dark Chapel WS', 'Dark Chapel EC']), diff --git a/Rules.py b/Rules.py index 535eb6ec..efadaf6e 100644 --- a/Rules.py +++ b/Rules.py @@ -757,6 +757,10 @@ def default_rules(world, player): set_rule(world.get_entrance('TR Pegs Ledge Leave', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Mountain Entry Entrance Rock (West)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Mountain Entry Entrance Rock (East)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Lost Woods Pass Hammer (North)', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('Lost Woods Pass Hammer (South)', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('Lost Woods Pass Rock (North)', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Lost Woods Pass Rock (South)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Kings Grave Outer Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Kings Grave Inner Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Potion Shop Rock (South)', player), lambda state: state.can_lift_rocks(player)) @@ -779,8 +783,8 @@ def default_rules(world, player): set_rule(world.get_entrance('Skull Woods Bush Rock (West)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Skull Woods Bush Rock (East)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Bumper Cave Entrance Rock', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Skull Woods Pass Rock (Top)', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Skull Woods Pass Rock (Bottom)', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Skull Woods Pass Rock (North)', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Skull Woods Pass Rock (South)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Dark Witch Rock (North)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Dark Witch Rock (South)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Catfish Approach Rocks (West)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player)) @@ -930,15 +934,14 @@ def ow_rules(world, player): if (world.mode[player] == 'inverted') == (0x10 in world.owswaps[player][0] and world.owMixed[player]): set_rule(world.get_entrance('Lost Woods Pass West Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Lost Woods Pass East Top Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Lost Woods Pass Portal Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Lost Woods Pass East Bottom Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Kakariko Teleporter (Hammer)', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot lift bushes - set_rule(world.get_entrance('Kakariko Teleporter (Rock)', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player)) # bunny cannot lift bushes + set_rule(world.get_entrance('Kakariko Teleporter', player), lambda state: state.can_lift_rocks(player)) else: set_rule(world.get_entrance('Skull Woods Pass West Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Skull Woods Pass East Top Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Skull Woods Pass Portal Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Skull Woods Pass East Bottom Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('West Dark World Teleporter (Hammer)', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) - set_rule(world.get_entrance('West Dark World Teleporter (Rock)', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player)) # bunny cannot lift bushes if (world.mode[player] == 'inverted') == (0x11 in world.owswaps[player][0] and world.owMixed[player]): set_rule(world.get_entrance('Kakariko Fortune Mirror Spot', player), lambda state: state.has_Mirror(player)) @@ -1237,6 +1240,10 @@ def ow_bunny_rules(world, player): add_bunny_rule(world.get_entrance('TR Pegs Ledge Entry', player), player) add_bunny_rule(world.get_entrance('Mountain Entry Entrance Rock (West)', player), player) add_bunny_rule(world.get_entrance('Mountain Entry Entrance Rock (East)', player), player) + add_bunny_rule(world.get_entrance('Lost Woods Pass Hammer (North)', player), player) + add_bunny_rule(world.get_entrance('Lost Woods Pass Hammer (South)', player), player) + add_bunny_rule(world.get_entrance('Lost Woods Pass Rock (North)', player), player) + add_bunny_rule(world.get_entrance('Lost Woods Pass Rock (South)', player), player) add_bunny_rule(world.get_entrance('Kings Grave Outer Rocks', player), player) add_bunny_rule(world.get_entrance('Kings Grave Inner Rocks', player), player) add_bunny_rule(world.get_entrance('Potion Shop Rock (South)', player), player) @@ -1273,8 +1280,10 @@ def ow_bunny_rules(world, player): add_bunny_rule(world.get_entrance('Bumper Cave Entrance Rock', player), player) add_bunny_rule(world.get_entrance('Skull Woods Pass Bush Row (West)', player), player) add_bunny_rule(world.get_entrance('Skull Woods Pass Bush Row (East)', player), player) - add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (Top)', player), player) - add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (Bottom)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Bush (South)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (North)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (South)', player), player) add_bunny_rule(world.get_entrance('Dark Graveyard Bush (South)', player), player) add_bunny_rule(world.get_entrance('Dark Graveyard Bush (North)', player), player) add_bunny_rule(world.get_entrance('Dark Witch Rock (North)', player), player)