Merge branch 'OverworldShuffleDev' into OverworldShuffle

This commit is contained in:
codemann8
2023-06-16 20:27:52 -05:00
20 changed files with 777 additions and 784 deletions
+1
View File
@@ -2897,6 +2897,7 @@ class Spoiler(object):
'pseudoboots': self.world.pseudoboots, 'pseudoboots': self.world.pseudoboots,
'triforcegoal': self.world.treasure_hunt_count, 'triforcegoal': self.world.treasure_hunt_count,
'triforcepool': self.world.treasure_hunt_total, 'triforcepool': self.world.treasure_hunt_total,
'race': self.world.settings.world_rep['meta']['race'],
'code': {p: Settings.make_code(self.world, p) for p in range(1, self.world.players + 1)} 'code': {p: Settings.make_code(self.world, p) for p in range(1, self.world.players + 1)}
} }
+8 -2
View File
@@ -1,5 +1,11 @@
# Changelog # Changelog
## 0.3.1.1
- \~Merged in DR v1.2.0.17~
- Various renames/reorganizations of region/rule definition to match upcoming DR world remodel
- Minor improvements to item GFX draw routine
- Minor change to terrain/logic of Spiral/Mimic Ledge in Inverted 2.0
## 0.3.1.0 ## 0.3.1.0
- Added new Triforce Cutscene when getting Triforce item (turning in TF Pieces) - Added new Triforce Cutscene when getting Triforce item (turning in TF Pieces)
- Fixed issue with enemy key drops displaying the wrong GFX - Fixed issue with enemy key drops displaying the wrong GFX
@@ -381,7 +387,7 @@
- Removed sortedcontainers dependency - Removed sortedcontainers dependency
### 0.1.6.7 ### 0.1.6.7
- Mountain Entry and West Death Mountain are now Swapped independently (Old Man rescue is always in your starting world) - Mountain Pass and West Death Mountain are now Swapped independently (Old Man rescue is always in your starting world)
- Fixed issue with AT/GT access logic - Fixed issue with AT/GT access logic
- Improved spoiler log playthru accuracy - Improved spoiler log playthru accuracy
- Fixed Boss Music when boss room is entered thru straight stairs - Fixed Boss Music when boss room is entered thru straight stairs
@@ -407,7 +413,7 @@
### 0.1.6.2 ### 0.1.6.2
- Added Balanced option for Flute Shuffle - Added Balanced option for Flute Shuffle
- Fixed issue with Flute Spot to Mountain Entry softlocking - Fixed issue with Flute Spot to Mountain Pass softlocking
- Fixed logic bug with Inverted Kakariko Portal - Fixed logic bug with Inverted Kakariko Portal
### 0.1.6.1 ### 0.1.6.1
+2 -2
View File
@@ -473,7 +473,7 @@ def choose_portals(world, player):
if portal_region.type == RegionType.LightWorld: if portal_region.type == RegionType.LightWorld:
world.get_portal(portal, player).light_world = True world.get_portal(portal, player).light_world = True
if name in world.inaccessible_regions[player] or (hc_flag and portal != 'Hyrule Castle South'): if name in world.inaccessible_regions[player] or (hc_flag and portal != 'Hyrule Castle South'):
name_key = 'Desert Ledge' if name == 'Desert Palace Entrance (North) Spot' else name name_key = 'Desert Ledge' if name == 'Desert Ledge Keep' else name
region_map[name_key].append(portal) region_map[name_key].append(portal)
inaccessible_portals.append(portal) inaccessible_portals.append(portal)
else: else:
@@ -626,7 +626,7 @@ def analyze_portals(world, player):
if portal_region.type == RegionType.LightWorld: if portal_region.type == RegionType.LightWorld:
world.get_portal(portal, player).light_world = True world.get_portal(portal, player).light_world = True
if name in world.inaccessible_regions[player]: if name in world.inaccessible_regions[player]:
name_key = 'Desert Ledge' if name == 'Desert Palace Entrance (North) Spot' else name name_key = 'Desert Ledge' if name == 'Desert Ledge Keep' else name
region_map[name_key].append(portal) region_map[name_key].append(portal)
inaccessible_portals.append(portal) inaccessible_portals.append(portal)
else: else:
+2 -2
View File
@@ -1538,8 +1538,8 @@ def calc_allowance_and_dead_ends(builder, connections_tuple, world, player):
if entrance in connections.keys(): if entrance in connections.keys():
enabling_region = connections[entrance] enabling_region = connections[entrance]
check_list = list(potentials[enabling_region]) check_list = list(potentials[enabling_region])
if enabling_region.name in ['Desert Ledge', 'Desert Palace Entrance (North) Spot']: if enabling_region.name in ['Desert Ledge', 'Desert Ledge Keep']:
alternate = 'Desert Palace Entrance (North) Spot' if enabling_region.name == 'Desert Ledge' else 'Desert Ledge' alternate = 'Desert Ledge Keep' if enabling_region.name == 'Desert Ledge' else 'Desert Ledge'
if world.get_region(alternate, player) in potentials: if world.get_region(alternate, player) in potentials:
check_list.extend(potentials[world.get_region(alternate, player)]) check_list.extend(potentials[world.get_region(alternate, player)])
connecting_entrances = [x for x in check_list if x != entrance and x not in dead_entrances and x not in drop_entrances_allowance] connecting_entrances = [x for x in check_list if x != entrance and x not in dead_entrances and x not in drop_entrances_allowance]
+3 -3
View File
@@ -1298,7 +1298,7 @@ def full_shuffle_dungeons(world, Dungeon_Exits, player):
dw_must_exit.append(ledge.pop()) dw_must_exit.append(ledge.pop())
dw_related.extend(ledge) dw_related.extend(ledge)
if not world.is_tile_swapped(0x30, player): if not world.is_tile_swapped(0x30, player):
if 'Desert Palace Mouth' in world.inaccessible_regions[player]: if 'Desert Mouth' in world.inaccessible_regions[player]:
lw_entrances.remove('Desert Palace Entrance (East)') lw_entrances.remove('Desert Palace Entrance (East)')
lw_must_exit.append('Desert Palace Entrance (East)') lw_must_exit.append('Desert Palace Entrance (East)')
else: else:
@@ -1501,8 +1501,8 @@ def connect_inaccessible_regions(world, lw_entrances, dw_entrances, caves, playe
inaccessible_regions = list(world.inaccessible_regions[player]) inaccessible_regions = list(world.inaccessible_regions[player])
# find OW regions that don't have a multi-entrance dungeon exit connected # find OW regions that don't have a multi-entrance dungeon exit connected
glitch_regions = ['Central Cliffs', 'Eastern Cliff', 'Desert Northeast Cliffs', 'Hyrule Castle Water', glitch_regions = ['Central Cliffs', 'Eastern Cliff', 'Desert Northern Cliffs', 'Hyrule Castle Water',
'Dark Central Cliffs', 'Darkness Cliff', 'Mire Northeast Cliffs', 'Pyramid Water'] 'Dark Central Cliffs', 'Darkness Cliff', 'Mire Northern Cliffs', 'Pyramid Water']
multi_dungeon_exits = { multi_dungeon_exits = {
'Hyrule Castle South Portal', 'Hyrule Castle West Portal', 'Hyrule Castle East Portal', 'Sanctuary Portal', 'Hyrule Castle South Portal', 'Hyrule Castle West Portal', 'Hyrule Castle East Portal', 'Sanctuary Portal',
'Desert South Portal', 'Desert West Portal', 'Desert South Portal', 'Desert West Portal',
+5 -1
View File
@@ -279,6 +279,10 @@ def recovery_placement(item_to_place, locations, world, state, base_state, itemp
if spot_to_fill: if spot_to_fill:
return spot_to_fill return spot_to_fill
return None return None
# explicitly fail these cases
elif world.algorithm in ['dungeon_only', 'major_only']:
raise FillError(f'Rare placement for {world.algorithm} detected. {item_to_place} unable to be placed.'
f' Try a different seed')
else: else:
other_locations = [x for x in locations if x not in attempted] other_locations = [x for x in locations if x not in attempted]
for location in other_locations: for location in other_locations:
@@ -425,7 +429,7 @@ def distribute_items_restrictive(world, gftower_trash=False, fill_locations=None
else: else:
max_trash = gt_count max_trash = gt_count
scaled_trash = math.floor(max_trash * scale_factor) scaled_trash = math.floor(max_trash * scale_factor)
if world.goal[player] in ['triforcehunt', 'trinity', 'ganonhunt']: if world.goal[player] in ['triforcehunt', 'trinity', 'ganonhunt'] or world.algorithm == 'dungeon_only':
gftower_trash_count = random.randint(scaled_trash, max_trash) gftower_trash_count = random.randint(scaled_trash, max_trash)
else: else:
gftower_trash_count = random.randint(0, scaled_trash) gftower_trash_count = random.randint(0, scaled_trash)
+7 -9
View File
@@ -213,7 +213,7 @@ def generate_itempool(world, player):
loc.forced_item = loc.item loc.forced_item = loc.item
if not world.is_tile_swapped(0x18, player): if not world.is_tile_swapped(0x18, player):
region = world.get_region('Kakariko Area',player) region = world.get_region('Kakariko Village',player)
loc = Location(player, "Flute Activation", parent=region) loc = Location(player, "Flute Activation", parent=region)
region.locations.append(loc) region.locations.append(loc)
@@ -589,10 +589,10 @@ def create_dynamic_shop_locations(world, player):
def create_farm_locations(world, player): def create_farm_locations(world, player):
bush_bombs = ['Flute Boy Approach Area', bush_bombs = ['Flute Boy Approach Area',
'Kakariko Area', 'Kakariko Village',
'Village of Outcasts Area', 'Village of Outcasts',
'Forgotten Forest Area', 'Forgotten Forest Area',
'Bat Cave Ledge', 'Blacksmith Ledge',
'East Dark Death Mountain (Bottom)'] 'East Dark Death Mountain (Bottom)']
rock_bombs = ['Links House Area', rock_bombs = ['Links House Area',
'Dark Chapel Area', 'Dark Chapel Area',
@@ -606,7 +606,7 @@ def create_farm_locations(world, player):
'Dark Fortune Area', 'Dark Fortune Area',
'Qirn Jump Area', 'Qirn Jump Area',
'Shield Shop Area', 'Shield Shop Area',
'Palace of Darkness Nook Area', 'Darkness Nook Area',
'Swamp Nook Area', 'Swamp Nook Area',
'Dark South Pass Area'] 'Dark South Pass Area']
bonk_bombs = ['Kakariko Fortune Area', 'Dark Graveyard Area'] #TODO: Flute Boy Approach Area and Bonk Rock Ledge are available post-Aga bonk_bombs = ['Kakariko Fortune Area', 'Dark Graveyard Area'] #TODO: Flute Boy Approach Area and Bonk Rock Ledge are available post-Aga
@@ -622,10 +622,10 @@ def create_farm_locations(world, player):
'Hype Cave Area', 'Hype Cave Area',
'Dark South Pass Area', 'Dark South Pass Area',
'Bumper Cave Area'] 'Bumper Cave Area']
pre_aga_tree_pulls = ['Hyrule Castle Courtyard', 'Mountain Entry Area'] pre_aga_tree_pulls = ['Hyrule Castle Courtyard', 'Mountain Pass Area']
post_aga_tree_pulls = ['Statues Area', 'Eastern Palace Area'] post_aga_tree_pulls = ['Statues Area', 'Eastern Palace Area']
bush_crabs = ['Lost Woods East Area', 'Mountain Entry Area'] bush_crabs = ['Lost Woods East Area', 'Mountain Pass Area']
pre_aga_bush_crabs = ['Lumberjack Area', 'South Pass Area'] pre_aga_bush_crabs = ['Lumberjack Area', 'South Pass Area']
rock_crabs = ['Desert Pass Area'] rock_crabs = ['Desert Pass Area']
@@ -1118,8 +1118,6 @@ def get_pool_core(world, player, progressive, shuffle, difficulty, treasure_hunt
pool.remove('Fighter Sword') pool.remove('Fighter Sword')
pool.extend(['Rupees (50)']) pool.extend(['Rupees (50)'])
#TODO: Remove test placements
#place_item('Purple Chest', 'Magic Mirror')
if timer in ['timed', 'timed-countdown']: if timer in ['timed', 'timed-countdown']:
pool.extend(diff.timedother) pool.extend(diff.timedother)
clock_mode = 'stopwatch' if timer == 'timed' else 'countdown' clock_mode = 'stopwatch' if timer == 'timed' else 'countdown'
+2 -2
View File
@@ -36,7 +36,7 @@ from source.overworld.EntranceShuffle2 import link_entrances_new
from source.tools.BPS import create_bps_from_data from source.tools.BPS import create_bps_from_data
from source.classes.CustomSettings import CustomSettings from source.classes.CustomSettings import CustomSettings
version_number = '1.2.0.16' version_number = '1.2.0.17'
version_branch = '-u' version_branch = '-u'
__version__ = f'{version_number}{version_branch}' __version__ = f'{version_number}{version_branch}'
@@ -786,7 +786,7 @@ def create_playthrough(world):
prog_locations = [location for location in world.get_filled_locations() if location.item.advancement prog_locations = [location for location in world.get_filled_locations() if location.item.advancement
or world.goal[location.player] == 'completionist'] or world.goal[location.player] == 'completionist']
optional_locations = ['Trench 1 Switch', 'Trench 2 Switch', 'Ice Block Drop', 'Skull Star Tile', 'Flute Activation'] optional_locations = ['Trench 1 Switch', 'Trench 2 Switch', 'Ice Block Drop', 'Skull Star Tile', 'Flute Activation']
optional_locations.extend(['Hyrule Castle Courtyard Tree Pull', 'Mountain Entry Area Tree Pull']) # adding pre-aga tree pulls optional_locations.extend(['Hyrule Castle Courtyard Tree Pull', 'Mountain Pass Tree Pull']) # adding pre-aga tree pulls
optional_locations.extend(['Lumberjack Area Crab Drop', 'South Pass Area Crab Drop']) # adding pre-aga bush crabs optional_locations.extend(['Lumberjack Area Crab Drop', 'South Pass Area Crab Drop']) # adding pre-aga bush crabs
state_cache = [None] state_cache = [None]
collection_spheres = [] collection_spheres = []
+91 -91
View File
@@ -51,8 +51,8 @@ def create_owedges(world, player):
create_owedge(player, 'East Death Mountain WS', 0x05, We, Ld, 0x03, 0x0d).coordInfo(0x0340, 0x1660), create_owedge(player, 'East Death Mountain WS', 0x05, We, Ld, 0x03, 0x0d).coordInfo(0x0340, 0x1660),
create_owedge(player, 'East Death Mountain EN', 0x05, Ea, Ld, 0x02, 0x06).coordInfo(0x0078, 0x0180), create_owedge(player, 'East Death Mountain EN', 0x05, Ea, Ld, 0x02, 0x06).coordInfo(0x0078, 0x0180),
create_owedge(player, 'Death Mountain TR Pegs WN', 0x07, We, Ld, 0x02) .coordInfo(0x0078, 0x00e0), create_owedge(player, 'Death Mountain TR Pegs WN', 0x07, We, Ld, 0x02) .coordInfo(0x0078, 0x00e0),
create_owedge(player, 'Mountain Entry NW', 0x0a, No, Ld, 0x01) .coordInfo(0x04cc, 0x180a), create_owedge(player, 'Mountain Pass NW', 0x0a, No, Ld, 0x01) .coordInfo(0x04cc, 0x180a),
create_owedge(player, 'Mountain Entry SE', 0x0a, So, Ld, 0x04) .coordInfo(0x0518, 0x1012), create_owedge(player, 'Mountain Pass SE', 0x0a, So, Ld, 0x04) .coordInfo(0x0518, 0x1012),
create_owedge(player, 'Zora Waterfall NE', 0x0f, No, Ld, 0x02) .coordInfo(0x0f80, 0x009a).special_entrance(0x82), create_owedge(player, 'Zora Waterfall NE', 0x0f, No, Ld, 0x02) .coordInfo(0x0f80, 0x009a).special_entrance(0x82),
create_owedge(player, 'Zora Waterfall SE', 0x0f, So, Ld, 0x05) .coordInfo(0x0f80, 0x1020), create_owedge(player, 'Zora Waterfall SE', 0x0f, So, Ld, 0x05) .coordInfo(0x0f80, 0x1020),
create_owedge(player, 'Lost Woods Pass NW', 0x10, No, Ld, 0x03) .coordInfo(0x0058, 0x1800), create_owedge(player, 'Lost Woods Pass NW', 0x10, No, Ld, 0x03) .coordInfo(0x0058, 0x1800),
@@ -402,7 +402,7 @@ OWEdgeGroups = {
(Op, LW, Vt, Ld, PL, 1): ( (Op, LW, Vt, Ld, PL, 1): (
[ [
['Lumberjack SW'], ['Lumberjack SW'],
['Mountain Entry SE'], ['Mountain Pass SE'],
['Lost Woods SE'], ['Lost Woods SE'],
['Zora Waterfall SE'], ['Zora Waterfall SE'],
['Kakariko Fortune SC'], ['Kakariko Fortune SC'],
@@ -420,7 +420,7 @@ OWEdgeGroups = {
['Ice Cave SE'] ['Ice Cave SE']
], ],
[ [
['Mountain Entry NW'], ['Mountain Pass NW'],
['Kakariko Pond NE'], ['Kakariko Pond NE'],
['Kakariko Fortune NE'], ['Kakariko Fortune NE'],
['Zora Approach NE'], ['Zora Approach NE'],
@@ -764,7 +764,7 @@ OWEdgeGroupsTerrain = {
(Op, LW, Vt, None, PL, 1): ( (Op, LW, Vt, None, PL, 1): (
[ [
['Lumberjack SW'], ['Lumberjack SW'],
['Mountain Entry SE'], ['Mountain Pass SE'],
['Lost Woods SE'], ['Lost Woods SE'],
['Zora Waterfall SE'], ['Zora Waterfall SE'],
['Kakariko Fortune SC'], ['Kakariko Fortune SC'],
@@ -780,7 +780,7 @@ OWEdgeGroupsTerrain = {
['Statues SC'] ['Statues SC']
], ],
[ [
['Mountain Entry NW'], ['Mountain Pass NW'],
['Kakariko Pond NE'], ['Kakariko Pond NE'],
['Kakariko Fortune NE'], ['Kakariko Fortune NE'],
['Zora Approach NE'], ['Zora Approach NE'],
@@ -1037,12 +1037,12 @@ OWTileRegions = bidict({
'East Death Mountain (Bottom)': 0x05, 'East Death Mountain (Bottom)': 0x05,
'Death Mountain Floating Island': 0x05, 'Death Mountain Floating Island': 0x05,
'Death Mountain TR Pegs': 0x07, 'Death Mountain TR Pegs Area': 0x07,
'Death Mountain TR Pegs Ledge': 0x07, 'Death Mountain TR Pegs Ledge': 0x07,
'Mountain Entry Area': 0x0a, 'Mountain Pass Area': 0x0a,
'Mountain Entry Entrance': 0x0a, 'Mountain Pass Entry': 0x0a,
'Mountain Entry Ledge': 0x0a, 'Mountain Pass Ledge': 0x0a,
'Zora Waterfall Area': 0x0f, 'Zora Waterfall Area': 0x0f,
'Zora Waterfall Water': 0x0f, 'Zora Waterfall Water': 0x0f,
@@ -1076,9 +1076,9 @@ OWTileRegions = bidict({
'Zora Approach Ledge': 0x17, 'Zora Approach Ledge': 0x17,
'Zora Approach Water': 0x17, 'Zora Approach Water': 0x17,
'Kakariko Area': 0x18, 'Kakariko Village': 0x18,
'Kakariko Southwest': 0x18, 'Kakariko Southwest': 0x18,
'Kakariko Grass Yard': 0x18, 'Kakariko Bush Yard': 0x18,
'Forgotten Forest Area': 0x1a, 'Forgotten Forest Area': 0x1a,
@@ -1097,7 +1097,7 @@ OWTileRegions = bidict({
'Eastern Palace Area': 0x1e, 'Eastern Palace Area': 0x1e,
'Blacksmith Area': 0x22, 'Blacksmith Area': 0x22,
'Bat Cave Ledge': 0x22, 'Blacksmith Ledge': 0x22,
'Sand Dunes Area': 0x25, 'Sand Dunes Area': 0x25,
@@ -1125,11 +1125,11 @@ OWTileRegions = bidict({
'Desert Area': 0x30, 'Desert Area': 0x30,
'Desert Ledge': 0x30, 'Desert Ledge': 0x30,
'Desert Palace Entrance (North) Spot': 0x30, 'Desert Ledge Keep': 0x30,
'Desert Checkerboard Ledge': 0x30, 'Desert Checkerboard Ledge': 0x30,
'Desert Palace Stairs': 0x30, 'Desert Stairs': 0x30,
'Desert Palace Mouth': 0x30, 'Desert Mouth': 0x30,
'Desert Palace Teleporter Ledge': 0x30, 'Desert Teleporter Ledge': 0x30,
'Bombos Tablet Ledge': 0x30, 'Bombos Tablet Ledge': 0x30,
'Flute Boy Approach Area': 0x32, 'Flute Boy Approach Area': 0x32,
@@ -1144,9 +1144,9 @@ OWTileRegions = bidict({
'Statues Area': 0x34, 'Statues Area': 0x34,
'Statues Water': 0x34, 'Statues Water': 0x34,
'Lake Hylia Area': 0x35, 'Lake Hylia Northwest Bank': 0x35,
'Lake Hylia South Shore': 0x35,
'Lake Hylia Northeast Bank': 0x35, 'Lake Hylia Northeast Bank': 0x35,
'Lake Hylia South Shore': 0x35,
'Lake Hylia Central Island': 0x35, 'Lake Hylia Central Island': 0x35,
'Lake Hylia Island': 0x35, 'Lake Hylia Island': 0x35,
'Lake Hylia Water': 0x35, 'Lake Hylia Water': 0x35,
@@ -1176,7 +1176,7 @@ OWTileRegions = bidict({
'Dark Lumberjack Area': 0x42, 'Dark Lumberjack Area': 0x42,
'West Dark Death Mountain (Top)': 0x43, 'West Dark Death Mountain (Top)': 0x43,
'GT Approach': 0x43, 'GT Stairs': 0x43,
'West Dark Death Mountain (Bottom)': 0x43, 'West Dark Death Mountain (Bottom)': 0x43,
'East Dark Death Mountain (Top)': 0x45, 'East Dark Death Mountain (Top)': 0x45,
@@ -1191,7 +1191,7 @@ OWTileRegions = bidict({
'Turtle Rock Ledge': 0x47, 'Turtle Rock Ledge': 0x47,
'Bumper Cave Area': 0x4a, 'Bumper Cave Area': 0x4a,
'Bumper Cave Entrance': 0x4a, 'Bumper Cave Entry': 0x4a,
'Bumper Cave Ledge': 0x4a, 'Bumper Cave Ledge': 0x4a,
'Catfish Area': 0x4f, 'Catfish Area': 0x4f,
@@ -1222,8 +1222,8 @@ OWTileRegions = bidict({
'Catfish Approach Ledge': 0x57, 'Catfish Approach Ledge': 0x57,
'Catfish Approach Water': 0x57, 'Catfish Approach Water': 0x57,
'Village of Outcasts Area': 0x58, 'Village of Outcasts': 0x58,
'Dark Grassy Lawn': 0x58, 'Village of Outcasts Bush Yard': 0x58,
'Shield Shop Area': 0x5a, 'Shield Shop Area': 0x5a,
'Shield Shop Fence': 0x5a, 'Shield Shop Fence': 0x5a,
@@ -1267,10 +1267,10 @@ OWTileRegions = bidict({
'Dark Tree Line Area': 0x6e, 'Dark Tree Line Area': 0x6e,
'Dark Tree Line Water': 0x6e, 'Dark Tree Line Water': 0x6e,
'Palace of Darkness Nook Area': 0x6f, 'Darkness Nook Area': 0x6f,
'Misery Mire Area': 0x70, 'Mire Area': 0x70,
'Misery Mire Teleporter Ledge': 0x70, 'Mire Teleporter Ledge': 0x70,
'Stumpy Approach Area': 0x72, 'Stumpy Approach Area': 0x72,
'Stumpy Approach Bush Entry': 0x72, 'Stumpy Approach Bush Entry': 0x72,
@@ -1283,12 +1283,12 @@ OWTileRegions = bidict({
'Hype Cave Area': 0x74, 'Hype Cave Area': 0x74,
'Hype Cave Water': 0x74, 'Hype Cave Water': 0x74,
'Ice Lake Area': 0x75, 'Ice Lake Northwest Bank': 0x75,
'Ice Lake Northeast Bank': 0x75, 'Ice Lake Northeast Bank': 0x75,
'Ice Lake Ledge (West)': 0x75, 'Ice Lake Southwest Ledge': 0x75,
'Ice Lake Ledge (East)': 0x75, 'Ice Lake Southeast Ledge': 0x75,
'Ice Lake Water': 0x75, 'Ice Lake Water': 0x75,
'Ice Lake Moat': 0x75, 'Ice Lake Iceberg': 0x75,
'Ice Palace Area': 0x75, 'Ice Palace Area': 0x75,
'Shopping Mall Area': 0x77, 'Shopping Mall Area': 0x77,
@@ -1321,8 +1321,8 @@ parallel_links = bidict({'Lost Woods SW': 'Skull Woods SW',
'East Death Mountain WS': 'East Dark Death Mountain WS', 'East Death Mountain WS': 'East Dark Death Mountain WS',
'East Death Mountain EN': 'East Dark Death Mountain EN', 'East Death Mountain EN': 'East Dark Death Mountain EN',
'Death Mountain TR Pegs WN': 'Turtle Rock WN', 'Death Mountain TR Pegs WN': 'Turtle Rock WN',
'Mountain Entry NW': 'Bumper Cave NW', 'Mountain Pass NW': 'Bumper Cave NW',
'Mountain Entry SE': 'Bumper Cave SE', 'Mountain Pass SE': 'Bumper Cave SE',
'Zora Waterfall SE': 'Catfish SE', 'Zora Waterfall SE': 'Catfish SE',
'Lost Woods Pass NW': 'Skull Woods Pass NW', 'Lost Woods Pass NW': 'Skull Woods Pass NW',
'Lost Woods Pass NE': 'Skull Woods Pass NE', 'Lost Woods Pass NE': 'Skull Woods Pass NE',
@@ -1448,18 +1448,18 @@ parallel_links = bidict({'Lost Woods SW': 'Skull Woods SW',
OWExitTypes = { OWExitTypes = {
'OWEdge': [], 'OWEdge': [],
'Ledge': ['West Death Mountain Drop', 'Ledge': ['West Death Mountain Drop',
'Spectacle Rock Drop', 'Spectacle Rock Ledge Drop',
'East Death Mountain Spiral Ledge Drop', 'EDM To Spiral Ledge Drop',
'East Death Mountain Fairy Ledge Drop', 'EDM To Fairy Ledge Drop',
'East Death Mountain Mimic Ledge Drop', 'EDM To Mimic Ledge Drop',
'EDM Ledge Drop',
'Spiral Ledge Drop', 'Spiral Ledge Drop',
'Mimic Ledge Drop',
'Spiral Mimic Ledge Drop', 'Spiral Mimic Ledge Drop',
'Fairy Ascension Ledge Drop', 'Fairy Ascension Ledge Drop',
'Fairy Ascension Plateau Ledge Drop', 'Fairy Ascension Plateau Ledge Drop',
'TR Pegs Ledge Drop', 'TR Pegs Ledge Drop',
'Mountain Entry Entrance Ledge Drop', 'Mountain Pass Entry Ledge Drop',
'Mountain Entry Ledge Drop', 'Mountain Pass Ledge Drop',
'Zora Waterfall Water Drop', 'Zora Waterfall Water Drop',
'Bonk Rock Ledge Drop', 'Bonk Rock Ledge Drop',
'Graveyard Ledge Drop', 'Graveyard Ledge Drop',
@@ -1472,15 +1472,15 @@ OWExitTypes = {
'Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Ledge Courtyard Drop',
'Wooden Bridge Water Drop', 'Wooden Bridge Water Drop',
'Wooden Bridge Northeast Water Drop', 'Wooden Bridge Northeast Water Drop',
'Sand Dunes Ledge Drop', 'Sand Dunes Cliff Ledge Drop',
'Stone Bridge East Ledge Drop', 'Stone Bridge East Cliff Ledge Drop',
'Tree Line Ledge Drop', 'Tree Line Cliff Ledge Drop',
'Eastern Palace Ledge Drop', 'Eastern Palace Cliff Ledge Drop',
'Maze Race Ledge Drop', 'Maze Race Ledge Drop',
'Central Bonk Rocks Cliff Ledge Drop', 'Central Bonk Rocks Cliff Ledge Drop',
'Links House Cliff Ledge Drop', 'Links House Cliff Ledge Drop',
'Stone Bridge Cliff Ledge Drop', 'Stone Bridge Cliff Ledge Drop',
'Lake Hylia Area Cliff Ledge Drop', 'Lake Hylia Northwest Cliff Ledge Drop',
'Lake Hylia Island FAWT Ledge Drop', 'Lake Hylia Island FAWT Ledge Drop',
'Stone Bridge EC Cliff Water Drop', 'Stone Bridge EC Cliff Water Drop',
'Tree Line WC Cliff Water Drop', 'Tree Line WC Cliff Water Drop',
@@ -1492,7 +1492,6 @@ OWExitTypes = {
'Checkerboard Ledge Drop', 'Checkerboard Ledge Drop',
'Desert Mouth Drop', 'Desert Mouth Drop',
'Desert Teleporter Drop', 'Desert Teleporter Drop',
'Desert Boss Cliff Ledge Drop',
'Checkerboard Cliff Ledge Drop', 'Checkerboard Cliff Ledge Drop',
'Suburb Cliff Ledge Drop', 'Suburb Cliff Ledge Drop',
'Cave 45 Cliff Ledge Drop', 'Cave 45 Cliff Ledge Drop',
@@ -1505,29 +1504,29 @@ OWExitTypes = {
'Lake Hylia Island Water Drop', 'Lake Hylia Island Water Drop',
'Desert Pass Ledge Drop', 'Desert Pass Ledge Drop',
'Octoballoon Waterfall Water Drop', 'Octoballoon Waterfall Water Drop',
'Dark Death Mountain Drop (West)', 'West Dark Death Mountain Drop',
'Dark Death Mountain Drop (East)', 'East Dark Death Mountain Drop',
'Floating Island Drop', 'Floating Island Drop',
'Turtle Rock Tail Ledge Drop', 'Turtle Rock Tail Ledge Drop',
'Turtle Rock Ledge Drop', 'Turtle Rock Ledge Drop',
'Bumper Cave Ledge Drop', 'Bumper Cave Ledge Drop',
'Bumper Cave Entrance Drop', 'Bumper Cave Entry Drop',
'Qirn Jump Water Drop', 'Qirn Jump Water Drop',
'Dark Witch Water Drop', 'Dark Witch Water Drop',
'Dark Witch Northeast Water Drop', 'Dark Witch Northeast Water Drop',
'Catfish Approach Bottom Ledge Drop', 'Catfish Approach Bottom Ledge Drop',
'Catfish Approach Water Drop', 'Catfish Approach Water Drop',
'Catfish Approach Ledge Drop', 'Catfish Approach Ledge Drop',
'Shield Shop Fence (Outer) Ledge Drop', 'Shield Shop Fence Drop (Outer)',
'Shield Shop Fence (Inner) Ledge Drop', 'Shield Shop Fence Drop (Inner)',
'Pyramid Exit Ledge Drop', 'Pyramid Exit Ledge Drop',
'Broken Bridge Water Drop', 'Broken Bridge Water Drop',
'Broken Bridge Northeast Water Drop', 'Broken Bridge Northeast Water Drop',
'Broken Bridge West Water Drop', 'Broken Bridge West Water Drop',
'Dark Dunes Ledge Drop', 'Dark Dunes Cliff Ledge Drop',
'Hammer Bridge North Ledge Drop', 'Hammer Bridge North Cliff Ledge Drop',
'Dark Tree Line Ledge Drop', 'Dark Tree Line Cliff Ledge Drop',
'Palace of Darkness Ledge Drop', 'Palace of Darkness Cliff Ledge Drop',
'Dig Game To Ledge Drop', 'Dig Game To Ledge Drop',
'Dig Game Ledge Drop', 'Dig Game Ledge Drop',
'Frog Ledge Drop', 'Frog Ledge Drop',
@@ -1535,8 +1534,8 @@ OWExitTypes = {
'Dark Bonk Rocks Cliff Ledge Drop', 'Dark Bonk Rocks Cliff Ledge Drop',
'Bomb Shop Cliff Ledge Drop', 'Bomb Shop Cliff Ledge Drop',
'Hammer Bridge South Cliff Ledge Drop', 'Hammer Bridge South Cliff Ledge Drop',
'Ice Lake Moat Bomb Jump', 'Ice Lake Iceberg Bomb Jump',
'Ice Lake Area Cliff Ledge Drop', 'Ice Lake Northwest Cliff Ledge Drop',
'Ice Palace Island FAWT Ledge Drop', 'Ice Palace Island FAWT Ledge Drop',
'Hammer Bridge EC Cliff Water Drop', 'Hammer Bridge EC Cliff Water Drop',
'Dark Tree Line WC Cliff Water Drop', 'Dark Tree Line WC Cliff Water Drop',
@@ -1544,7 +1543,7 @@ OWExitTypes = {
'Dark C Whirlpool Cliff Ledge Drop', 'Dark C Whirlpool Cliff Ledge Drop',
'Dark C Whirlpool Portal Cliff Ledge Drop', 'Dark C Whirlpool Portal Cliff Ledge Drop',
'Hype Cliff Ledge Drop', 'Hype Cliff Ledge Drop',
'Misery Mire Teleporter Ledge Drop', 'Mire Teleporter Ledge Drop',
'Mire Cliff Ledge Drop', 'Mire Cliff Ledge Drop',
'Dark Checkerboard Cliff Ledge Drop', 'Dark Checkerboard Cliff Ledge Drop',
'Archery Game Cliff Ledge Drop', 'Archery Game Cliff Ledge Drop',
@@ -1565,30 +1564,30 @@ OWExitTypes = {
'DM Hammer Bridge (West)', 'DM Hammer Bridge (West)',
'DM Hammer Bridge (East)', 'DM Hammer Bridge (East)',
'Floating Island Bridge (East)', 'Floating Island Bridge (East)',
'Fairy Ascension Rocks (North)', 'Fairy Ascension Rocks (Inner)',
'DM Broken Bridge (West)', 'DM Broken Bridge (West)',
'DM Broken Bridge (East)', 'DM Broken Bridge (East)',
'Spiral Mimic Bridge (West)', 'Spiral Mimic Bridge (West)',
'Spiral Mimic Bridge (East)', 'Spiral Mimic Bridge (East)',
'Spiral Ledge Approach', 'Spiral Ledge Approach',
'Mimic Ledge Approach', 'Mimic Ledge Approach',
'Fairy Ascension Rocks (South)', 'Fairy Ascension Rocks (Outer)',
'Floating Island Bridge (West)', 'Floating Island Bridge (West)',
'TR Pegs Ledge Entry', 'TR Pegs Ledge Entry',
'TR Pegs Ledge Leave', 'TR Pegs Ledge Leave',
'Mountain Entry Entrance Rock (West)', 'Mountain Pass Rock (Outer)',
'Mountain Entry Entrance Rock (East)', 'Mountain Pass Rock (Inner)',
'Zora Waterfall Water Entry', 'Zora Waterfall Water Entry',
'Zora Waterfall Water Approach', 'Zora Waterfall Approach',
'Zora Waterfall Landing', 'Zora Waterfall Landing',
'Lost Woods Pass Hammer (North)', 'Lost Woods Pass Hammer (North)',
'Lost Woods Pass Hammer (South)', 'Lost Woods Pass Hammer (South)',
'Lost Woods Pass Rock (North)', 'Lost Woods Pass Rock (North)',
'Lost Woods Pass Rock (South)', 'Lost Woods Pass Rock (South)',
'Kings Grave Outer Rocks', 'Kings Grave Rocks (Outer)',
'Graveyard Ladder (Bottom)', 'Graveyard Ladder (Bottom)',
'Graveyard Ladder (Top)', 'Graveyard Ladder (Top)',
'Kings Grave Inner Rocks', 'Kings Grave Rocks (Inner)',
'River Bend Water Drop', 'River Bend Water Drop',
'River Bend West Pier', 'River Bend West Pier',
'River Bend East Water Drop', 'River Bend East Water Drop',
@@ -1602,33 +1601,33 @@ OWExitTypes = {
'Kakariko Southwest Bush (South)', 'Kakariko Southwest Bush (South)',
'Kakariko Yard Bush (North)', 'Kakariko Yard Bush (North)',
'Hyrule Castle Main Gate (South)', 'Hyrule Castle Main Gate (South)',
'Hyrule Castle Inner East Rock', 'Hyrule Castle East Rock (Inner)',
'Hyrule Castle Southwest Bush (North)', 'Hyrule Castle Southwest Bush (North)',
'Hyrule Castle Southwest Bush (South)', 'Hyrule Castle Southwest Bush (South)',
'Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Courtyard Bush (South)',
'Hyrule Castle Main Gate (North)', 'Hyrule Castle Main Gate (North)',
'Hyrule Castle Courtyard Bush (North)', 'Hyrule Castle Courtyard Bush (North)',
'Hyrule Castle Outer East Rock', 'Hyrule Castle East Rock (Outer)',
'Wooden Bridge Bush (South)', 'Wooden Bridge Bush (South)',
'Wooden Bridge Bush (North)', 'Wooden Bridge Bush (North)',
'Bat Cave Ledge Peg', 'Blacksmith Ledge Peg (West)',
'Bat Cave Ledge Peg (East)', 'Blacksmith Ledge Peg (East)',
'Maze Race Game', 'Maze Race Game',
'Stone Bridge Northbound', 'Stone Bridge (Northbound)',
'Stone Bridge Southbound', 'Stone Bridge (Southbound)',
'Desert Palace Statue Move', 'Desert Statue Move',
'Checkerboard Ledge Approach', 'Checkerboard Ledge Approach',
'Desert Ledge Outer Rocks', 'Desert Ledge Rocks (Outer)',
'Desert Ledge Inner Rocks', 'Desert Ledge Rocks (Inner)',
'Checkerboard Ledge Leave', 'Checkerboard Ledge Leave',
'Flute Boy Bush (South)', 'Flute Boy Bush (South)',
'Cave 45 Inverted Approach', 'Cave 45 Approach',
'Flute Boy Bush (North)', 'Flute Boy Bush (North)',
'Cave 45 Inverted Leave', 'Cave 45 Leave',
'C Whirlpool Rock (Bottom)', 'C Whirlpool Rock (Bottom)',
'C Whirlpool Rock (Top)', 'C Whirlpool Rock (Top)',
'C Whirlpool Pegs (Right)', 'C Whirlpool Pegs (Outer)',
'C Whirlpool Pegs (Left)', 'C Whirlpool Pegs (Inner)',
'C Whirlpool Water Entry', 'C Whirlpool Water Entry',
'C Whirlpool Landing', 'C Whirlpool Landing',
'Statues Water Entry', 'Statues Water Entry',
@@ -1649,14 +1648,15 @@ OWExitTypes = {
'Middle Aged Man', 'Middle Aged Man',
'Octoballoon Water Drop', 'Octoballoon Water Drop',
'Octoballoon Pier', 'Octoballoon Pier',
'Skull Woods Bush Rock (East)', 'Skull Woods Rock (East)',
'Skull Woods Bush Rock (West)', 'Skull Woods Rock (West)',
'Skull Woods Forgotten Bush (West)', 'Skull Woods Forgotten Bush (West)',
'Skull Woods Forgotten Bush (East)', 'Skull Woods Forgotten Bush (East)',
'GT Entry Approach', 'GT Approach',
'GT Entry Leave', 'GT Leave',
'East Dark Death Mountain Bushes', 'East Dark Death Mountain Bushes',
'Bumper Cave Entrance Rock', 'Bumper Cave Rock (Outer)',
'Bumper Cave Rock (Inner)',
'Skull Woods Pass Bush Row (West)', 'Skull Woods Pass Bush Row (West)',
'Skull Woods Pass Bush Row (East)', 'Skull Woods Pass Bush Row (East)',
'Skull Woods Pass Bush (North)', 'Skull Woods Pass Bush (North)',
@@ -1671,8 +1671,8 @@ OWExitTypes = {
'Dark Witch Rock (North)', 'Dark Witch Rock (North)',
'Catfish Approach Rocks (West)', 'Catfish Approach Rocks (West)',
'Catfish Approach Rocks (East)', 'Catfish Approach Rocks (East)',
'Village of Outcasts Pegs', 'Bush Yard Pegs (Outer)',
'Grassy Lawn Pegs', 'Bush Yard Pegs (Inner)',
'Pyramid Crack', 'Pyramid Crack',
'Broken Bridge Hammer Rock (South)', 'Broken Bridge Hammer Rock (South)',
'Broken Bridge Hammer Rock (North)', 'Broken Bridge Hammer Rock (North)',
@@ -1690,8 +1690,8 @@ OWExitTypes = {
'Stumpy Approach Bush (North)', 'Stumpy Approach Bush (North)',
'Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Rock (Bottom)',
'Dark C Whirlpool Rock (Top)', 'Dark C Whirlpool Rock (Top)',
'Dark C Whirlpool Pegs (Right)', 'Dark C Whirlpool Pegs (Outer)',
'Dark C Whirlpool Pegs (Left)', 'Dark C Whirlpool Pegs (Inner)',
'Dark C Whirlpool Water Entry', 'Dark C Whirlpool Water Entry',
'Dark C Whirlpool Landing', 'Dark C Whirlpool Landing',
'Hype Cave Water Entry', 'Hype Cave Water Entry',
@@ -1699,7 +1699,7 @@ OWExitTypes = {
'Ice Lake Northeast Water Drop', 'Ice Lake Northeast Water Drop',
'Ice Lake Northeast Pier', 'Ice Lake Northeast Pier',
'Ice Lake Northeast Pier Hop', 'Ice Lake Northeast Pier Hop',
'Ice Lake Moat Water Entry', 'Ice Lake Iceberg Water Entry',
'Bomber Corner Water Drop', 'Bomber Corner Water Drop',
'Bomber Corner Pier' 'Bomber Corner Pier'
], ],
@@ -1714,14 +1714,14 @@ OWExitTypes = {
'South Hyrule Teleporter', 'South Hyrule Teleporter',
'Lake Hylia Teleporter', 'Lake Hylia Teleporter',
'Dark Death Mountain Teleporter (West)', 'Dark Death Mountain Teleporter (West)',
'Dark Death Mountain Teleporter (East)', 'East Dark Death Mountain Teleporter',
'Turtle Rock Teleporter', 'Turtle Rock Teleporter',
'West Dark World Teleporter', 'West Dark World Teleporter',
'Post Aga Inverted Teleporter', 'Post Aga Teleporter',
'East Dark World Teleporter', 'East Dark World Teleporter',
'Misery Mire Teleporter', 'Mire Teleporter',
'South Dark World Teleporter', 'South Dark World Teleporter',
'Ice Palace Teleporter' 'Ice Lake Teleporter'
], ],
'Whirlpool': ['Zora Whirlpool', 'Whirlpool': ['Zora Whirlpool',
'Kakariko Pond Whirlpool', 'Kakariko Pond Whirlpool',
+37 -37
View File
@@ -347,14 +347,14 @@ def set_owg_rules(player, world, connections, default_rule):
connection.access_rule = rule connection.access_rule = rule
glitch_regions = (['Central Cliffs', 'Eastern Cliff', 'Desert Northeast Cliffs'], glitch_regions = (['Central Cliffs', 'Eastern Cliff', 'Desert Northern Cliffs'],
['Dark Central Cliffs', 'Darkness Cliff', 'Mire Northeast Cliffs']) ['Dark Central Cliffs', 'Darkness Cliff', 'Mire Northern Cliffs'])
# same screen clips, no Tile Flip OWR implications # same screen clips, no Tile Flip OWR implications
boots_clips_local = [ # (name, from_region, to_region) boots_clips_local = [ # (name, from_region, to_region)
('Hera Ascent Clip', 'West Death Mountain (Bottom)', 'West Death Mountain (Top)'), #cannot guarantee camera correction, but a bomb clip exists ('Hera Ascent Clip', 'West Death Mountain (Bottom)', 'West Death Mountain (Top)'), #cannot guarantee camera correction, but a bomb clip exists
('WDDM Bomb Clip', 'West Dark Death Mountain (Bottom)', 'West Dark Death Mountain (Top)'), #cannot guarantee camera correction, but a bomb clip exists ('WDDM Bomb Clip', 'West Dark Death Mountain (Bottom)', 'West Dark Death Mountain (Top)'), #cannot guarantee camera correction, but a bomb clip exists
('Ganons Tower Screen Wrap Clip', 'West Dark Death Mountain (Bottom)', 'GT Approach'), # This only gets you to the GT entrance ('Ganons Tower Screen Wrap Clip', 'West Dark Death Mountain (Bottom)', 'GT Stairs'), # This only gets you to the GT entrance
('Spectacle Rock Ledge Clip', 'West Death Mountain (Top)', 'Spectacle Rock Ledge'), ('Spectacle Rock Ledge Clip', 'West Death Mountain (Top)', 'Spectacle Rock Ledge'),
('Floating Island Clip', 'East Death Mountain (Top East)', 'Death Mountain Floating Island'), ('Floating Island Clip', 'East Death Mountain (Top East)', 'Death Mountain Floating Island'),
@@ -367,14 +367,14 @@ boots_clips_local = [ # (name, from_region, to_region)
('WDDM To EDDM Bottom Clip', 'East Dark Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom)'), ('WDDM To EDDM Bottom Clip', 'East Dark Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom)'),
('TR Bridge Clip', 'East Dark Death Mountain (Top)', 'Dark Death Mountain Ledge'), ('TR Bridge Clip', 'East Dark Death Mountain (Top)', 'Dark Death Mountain Ledge'),
('TR Pegs Ledge Clip', 'Death Mountain TR Pegs', 'Death Mountain TR Pegs Ledge'), ('TR Pegs Ledge Clip', 'Death Mountain TR Pegs Area', 'Death Mountain TR Pegs Ledge'),
('TR Pegs Ledge Descent Clip', 'Death Mountain TR Pegs Ledge', 'Death Mountain TR Pegs'), # inverted only, but doesn't hurt to exist always ('TR Pegs Ledge Descent Clip', 'Death Mountain TR Pegs Ledge', 'Death Mountain TR Pegs Area'), # inverted only, but doesn't hurt to exist always
('Turtle Rock Ledge Clip', 'Turtle Rock Area', 'Turtle Rock Ledge'), ('Turtle Rock Ledge Clip', 'Turtle Rock Area', 'Turtle Rock Ledge'),
('Mountain Entry To Ledge Clip', 'Mountain Entry Area', 'Mountain Entry Ledge'), ('Mountain Pass To Ledge Clip', 'Mountain Pass Area', 'Mountain Pass Ledge'),
('Bumper Cave Ledge Clip', 'Bumper Cave Area', 'Bumper Cave Ledge'), ('Bumper Cave Ledge Clip', 'Bumper Cave Area', 'Bumper Cave Ledge'),
('Mountain Ledge Drop Clip', 'Mountain Entry Ledge', 'Mountain Entry Entrance'), ('Mountain Ledge Drop Clip', 'Mountain Pass Ledge', 'Mountain Pass Entry'),
('Bumper Cave Ledge Drop Clip', 'Bumper Cave Ledge', 'Bumper Cave Entrance'), ('Bumper Cave Ledge Drop Clip', 'Bumper Cave Ledge', 'Bumper Cave Entry'),
('Potion Shop Northbound Rock Bypass Clip', 'Potion Shop Area', 'Potion Shop Northeast'), ('Potion Shop Northbound Rock Bypass Clip', 'Potion Shop Area', 'Potion Shop Northeast'),
('Potion Shop Southbound Rock Bypass Clip', 'Potion Shop Northeast', 'Potion Shop Area'), ('Potion Shop Southbound Rock Bypass Clip', 'Potion Shop Northeast', 'Potion Shop Area'),
@@ -383,19 +383,19 @@ boots_clips_local = [ # (name, from_region, to_region)
('Hyrule Castle To Water Clip', 'Hyrule Castle Area', 'Hyrule Castle Water'), #fake flipper ('Hyrule Castle To Water Clip', 'Hyrule Castle Area', 'Hyrule Castle Water'), #fake flipper
#('Bat Cave River Clip Spot', 'Blacksmith Area', 'Bat Cave Ledge'), #cannot guarantee camera correction ('Bat Cave River Clip Spot', 'Blacksmith Area', 'Blacksmith Ledge'), #cannot guarantee camera correction
('Maze Race Item Get Ledge Clip', 'Maze Race Area', 'Maze Race Prize'), ('Maze Race Item Get Ledge Clip', 'Maze Race Area', 'Maze Race Prize'),
('Tree Line Water Clip', 'Tree Line Area', 'Tree Line Water'), #requires flippers ('Tree Line Water Clip', 'Tree Line Area', 'Tree Line Water'), #requires flippers
('Dark Tree Line Water Clip', 'Dark Tree Line Area', 'Dark Tree Line Water'), #requires flippers ('Dark Tree Line Water Clip', 'Dark Tree Line Area', 'Dark Tree Line Water'), #requires flippers
('Desert To Teleporter Clip', 'Desert Area', 'Desert Palace Teleporter Ledge'), ('Desert To Teleporter Clip', 'Desert Area', 'Desert Teleporter Ledge'),
('Mire To Teleporter Clip', 'Misery Mire Area', 'Misery Mire Teleporter Ledge'), ('Mire To Teleporter Clip', 'Mire Area', 'Mire Teleporter Ledge'),
('Desert To Bombos Tablet Clip', 'Desert Area', 'Bombos Tablet Ledge'), ('Desert To Bombos Tablet Clip', 'Desert Area', 'Bombos Tablet Ledge'),
('Lake Hylia To Shore Clip', 'Lake Hylia Area', 'Lake Hylia South Shore'), ('Lake Hylia To Shore Clip', 'Lake Hylia Northwest Bank', 'Lake Hylia South Shore'),
('Ice Lake To Shore Clip', 'Ice Lake Area', 'Ice Lake Ledge (West)') ('Ice Lake To Shore Clip', 'Ice Lake Northwest Bank', 'Ice Lake Southwest Ledge')
#('Desert Pass To Zora Clip', 'Desert Pass Area', 'Zoras Domain', ) #revisit when Zora is shuffled #('Desert Pass To Zora Clip', 'Desert Pass Area', 'Zoras Domain', ) #revisit when Zora is shuffled
] ]
@@ -416,20 +416,20 @@ boots_clips = [
(['Kings Grave DMD Clip', 'Dark Kings Grave DMD Clip'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['Kings Grave Area', None]), (['Kings Grave DMD Clip', 'Dark Kings Grave DMD Clip'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['Kings Grave Area', None]),
(['EDM to WDM Top Clip', 'EDDM To WDDM Clip'], ['East Death Mountain (Top West)', 'East Dark Death Mountain (Top)'], ['West Death Mountain (Top)', 'West Dark Death Mountain (Top)']), (['EDM to WDM Top Clip', 'EDDM To WDDM Clip'], ['East Death Mountain (Top West)', 'East Dark Death Mountain (Top)'], ['West Death Mountain (Top)', 'West Dark Death Mountain (Top)']),
(['EDM To TR Pegs Clip', 'EDDM To TR Clip'], ['East Death Mountain (Top East)', 'East Dark Death Mountain (Top)'], ['Death Mountain TR Pegs', None]), (['EDM To TR Pegs Clip', 'EDDM To TR Clip'], ['East Death Mountain (Top East)', 'East Dark Death Mountain (Top)'], ['Death Mountain TR Pegs Area', None]),
(['EDM DMD FAWT Clip', 'Dark Witch DMD FAWT Clip'], ['East Death Mountain (Bottom)', 'East Dark Death Mountain (Bottom)'], ['Potion Shop Area', 'Dark Witch Area']), (['EDM DMD FAWT Clip', 'Dark Witch DMD FAWT Clip'], ['East Death Mountain (Bottom)', 'East Dark Death Mountain (Bottom)'], ['Potion Shop Area', 'Dark Witch Area']),
(['WDM DMD To River Bend Clip', 'WDDM DMD To Qirn Jump Clip'], ['East Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom Left)'], ['River Bend Area', 'Qirn Jump Area']), (['WDM DMD To River Bend Clip', 'WDDM DMD To Qirn Jump Clip'], ['East Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom Left)'], ['River Bend Area', 'Qirn Jump Area']),
(['EDM DMD To River Bend Clip', 'EDDM DMD To Qirn Jump Clip'], ['East Death Mountain (Bottom)', 'East Dark Death Mountain (Bottom)'], ['River Bend Area', 'Qirn Jump Area']), (['EDM DMD To River Bend Clip', 'EDDM DMD To Qirn Jump Clip'], ['East Death Mountain (Bottom)', 'East Dark Death Mountain (Bottom)'], ['River Bend Area', 'Qirn Jump Area']),
(['TR Pegs To EDM Clip', 'TR To EDDM Clip'], ['Death Mountain TR Pegs', 'Turtle Rock Area'], ['East Death Mountain (Top East)', 'East Dark Death Mountain (Top)']), (['TR Pegs To EDM Clip', 'TR To EDDM Clip'], ['Death Mountain TR Pegs Area', 'Turtle Rock Area'], ['East Death Mountain (Top East)', 'East Dark Death Mountain (Top)']),
(['Zora DMD Clip', 'Catfish DMD Clip'], ['Death Mountain TR Pegs', 'Turtle Rock Area'], ['Zora Waterfall Area', 'Catfish Area']), (['Zora DMD Clip', 'Catfish DMD Clip'], ['Death Mountain TR Pegs Area', 'Turtle Rock Area'], ['Zora Waterfall Area', 'Catfish Area']),
(['Mountain Entry To Pond Clip', 'Bumper Cave To Pond Clip'], ['Mountain Entry Area', 'Bumper Cave Area'], ['Kakariko Pond Area', 'Outcast Pond Area']), (['Mountain Pass To Pond Clip', 'Bumper Cave To Pond Clip'], ['Mountain Pass Area', 'Bumper Cave Area'], ['Kakariko Pond Area', 'Outcast Pond Area']),
(['Zora Waterfall Ledge Clip', 'Catfish Ledge Clip'], ['Zora Waterfall Area', 'Catfish Area'], ['Zora Approach Area', 'Catfish Approach Area']), (['Zora Waterfall Ledge Clip', 'Catfish Ledge Clip'], ['Zora Waterfall Area', 'Catfish Area'], ['Zora Approach Area', 'Catfish Approach Area']),
#(['Pond DMA Clip', 'Dark Pond DMA Clip'], ['Kakariko Pond Area', 'Outcast Pond Area'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)']), #cannot guarantee camera correction #(['Pond DMA Clip', 'Dark Pond DMA Clip'], ['Kakariko Pond Area', 'Outcast Pond Area'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)']), #cannot guarantee camera correction
(['Pond To Mountain Entry Clip', 'Pond To Bumper Cave Clip'], ['Kakariko Pond Area', 'Outcast Pond Area'], ['Mountain Entry Area', 'Bumper Cave Area']), (['Pond To Mountain Pass Clip', 'Pond To Bumper Cave Clip'], ['Kakariko Pond Area', 'Outcast Pond Area'], ['Mountain Pass Area', 'Bumper Cave Area']),
(['Pond To Bonk Rocks Clip', 'Pond To Chapel Clip'], ['Kakariko Pond Area', 'Outcast Pond Area'], ['Bonk Rock Ledge', 'Dark Chapel Area']), (['Pond To Bonk Rocks Clip', 'Pond To Chapel Clip'], ['Kakariko Pond Area', 'Outcast Pond Area'], ['Bonk Rock Ledge', 'Dark Chapel Area']),
(['River Bend To Potion Shop Clip', 'Qirn Jump To Dark Witch Clip'], ['River Bend East Bank', 'Qirn Jump East Bank'], ['Potion Shop Area', 'Dark Witch Area']), (['River Bend To Potion Shop Clip', 'Qirn Jump To Dark Witch Clip'], ['River Bend East Bank', 'Qirn Jump East Bank'], ['Potion Shop Area', 'Dark Witch Area']),
@@ -443,8 +443,8 @@ boots_clips = [
(['Zora Approach To Potion Shop Clip', 'Catfish Approach To Dark Witch Clip'], ['Zora Approach Area', 'Catfish Approach Area'], ['Potion Shop Area', 'Dark Witch Area']), (['Zora Approach To Potion Shop Clip', 'Catfish Approach To Dark Witch Clip'], ['Zora Approach Area', 'Catfish Approach Area'], ['Potion Shop Area', 'Dark Witch Area']),
(['Zora Approach To PoD Clip', 'Catfish Approach To PoD Clip'], ['Zora Approach Area', 'Catfish Approach Area'], [None, 'Palace of Darkness Area']), (['Zora Approach To PoD Clip', 'Catfish Approach To PoD Clip'], ['Zora Approach Area', 'Catfish Approach Area'], [None, 'Palace of Darkness Area']),
(['Kakariko Bomb Hut Clip', 'VoO To Dig Game Clip'], ['Kakariko Southwest', 'Village of Outcasts Area'], ['Maze Race Area', 'Dig Game Area']), (['Kakariko Bomb Hut Clip', 'VoO To Dig Game Clip'], ['Kakariko Southwest', 'Village of Outcasts'], ['Maze Race Area', 'Dig Game Area']),
(['Kakariko To Dig Game Hook Clip', 'VoO To Dig Game Hook Clip'], ['Kakariko Southwest', 'Village of Outcasts Area'], [None, 'Dig Game Ledge']), #requires hookshot (['Kakariko To Dig Game Hook Clip', 'VoO To Dig Game Hook Clip'], ['Kakariko Southwest', 'Village of Outcasts'], [None, 'Dig Game Ledge']), #requires hookshot
(['Forgotten Forest To Blacksmith Clip', None], ['Forgotten Forest Area', None], ['Hyrule Castle Water', 'Pyramid Water']), #fake flipper (['Forgotten Forest To Blacksmith Clip', None], ['Forgotten Forest Area', None], ['Hyrule Castle Water', 'Pyramid Water']), #fake flipper
@@ -452,30 +452,30 @@ boots_clips = [
(['Wooden Bridge To Water Clip', 'Broken Bridge To Water Clip'], ['Wooden Bridge Area', 'Broken Bridge West'], [None, 'Pyramid Water']), #fake flipper (['Wooden Bridge To Water Clip', 'Broken Bridge To Water Clip'], ['Wooden Bridge Area', 'Broken Bridge West'], [None, 'Pyramid Water']), #fake flipper
(['Eastern Palace To Zora Approach Clip', None], ['Eastern Palace Area', None], ['Zora Approach Area', 'Catfish Approach Area']), (['Eastern Palace To Zora Approach Clip', None], ['Eastern Palace Area', None], ['Zora Approach Area', 'Catfish Approach Area']),
(['Eastern Palace To Nook Clip', None], ['Eastern Palace Area', None], ['Eastern Nook Area', 'Palace of Darkness Nook Area']), (['Eastern Palace To Nook Clip', None], ['Eastern Palace Area', None], ['Eastern Nook Area', 'Darkness Nook Area']),
(['Eastern Palace To Cliff Clip', 'PoD To Cliff Clip'], ['Eastern Palace Area', 'Palace of Darkness Area'], ['Eastern Cliff', 'Darkness Cliff']), (['Eastern Palace To Cliff Clip', 'PoD To Cliff Clip'], ['Eastern Palace Area', 'Palace of Darkness Area'], ['Eastern Cliff', 'Darkness Cliff']),
(['Sand Dunes To Cliff Clip', 'Dark Dunes To Cliff Clip'], ['Sand Dunes Area', 'Dark Dunes Area'], ['Eastern Cliff', 'Darkness Cliff']), (['Sand Dunes To Cliff Clip', 'Dark Dunes To Cliff Clip'], ['Sand Dunes Area', 'Dark Dunes Area'], ['Eastern Cliff', 'Darkness Cliff']),
(['Sand Dunes To Water Clip', 'Dark Dunes To Water Clip'], ['Sand Dunes Area', 'Dark Dunes Area'], [None, 'Pyramid Water']), #fake flipper (['Sand Dunes To Water Clip', 'Dark Dunes To Water Clip'], ['Sand Dunes Area', 'Dark Dunes Area'], [None, 'Pyramid Water']), #fake flipper
(['Maze Race To Desert Ledge Clip', 'Dig Game To Mire Clip'], ['Maze Race Area', 'Dig Game Area'], ['Desert Ledge', 'Misery Mire Area']), (['Maze Race To Desert Ledge Clip', 'Dig Game To Mire Clip'], ['Maze Race Area', 'Dig Game Area'], ['Desert Ledge', 'Mire Area']),
(['Maze Race To Desert Boss Clip', 'Dig Game To Desert Boss Clip'], ['Maze Race Area', 'Dig Game Area'], ['Desert Palace Entrance (North) Spot', None]), (['Maze Race To Desert Boss Clip', 'Dig Game To Desert Boss Clip'], ['Maze Race Area', 'Dig Game Area'], ['Desert Ledge Keep', None]),
(['Suburb To Cliff Clip', 'Archery Game To Cliff Clip'], ['Kakariko Suburb Area', 'Archery Game Area'], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']), (['Suburb To Cliff Clip', 'Archery Game To Cliff Clip'], ['Kakariko Suburb Area', 'Archery Game Area'], ['Desert Northern Cliffs', 'Mire Northern Cliffs']),
(['Central Bonk Rocks To Cliff Clip', 'Dark Bonk Rocks To Cliff Clip'], ['Central Bonk Rocks Area', 'Dark Bonk Rocks Area'], ['Central Cliffs', 'Dark Central Cliffs']), (['Central Bonk Rocks To Cliff Clip', 'Dark Bonk Rocks To Cliff Clip'], ['Central Bonk Rocks Area', 'Dark Bonk Rocks Area'], ['Central Cliffs', 'Dark Central Cliffs']),
(['Links House To Cliff Clip', 'Bomb Shop To Cliff Clip'], ['Links House Area', 'Big Bomb Shop Area'], ['Central Cliffs', 'Dark Central Cliffs']), (['Links House To Cliff Clip', 'Bomb Shop To Cliff Clip'], ['Links House Area', 'Big Bomb Shop Area'], ['Central Cliffs', 'Dark Central Cliffs']),
(['Stone Bridge To Cliff Clip', 'Hammer Bridge To Cliff Clip'], ['Stone Bridge South Area', 'Hammer Bridge South Area'], ['Central Cliffs', 'Dark Central Cliffs']), (['Stone Bridge To Cliff Clip', 'Hammer Bridge To Cliff Clip'], ['Stone Bridge South Area', 'Hammer Bridge South Area'], ['Central Cliffs', 'Dark Central Cliffs']),
(['Eastern Nook To Eastern Clip', None], ['Eastern Nook Area', None], ['Eastern Palace Area', 'Palace of Darkness Area']), (['Eastern Nook To Eastern Clip', None], ['Eastern Nook Area', None], ['Eastern Palace Area', 'Palace of Darkness Area']),
(['Eastern Nook To Ice Cave FAWT Clip', 'PoD Nook To Shopping Mall FAWT Clip'], ['Eastern Nook Area', 'Palace of Darkness Nook Area'], ['Ice Cave Area', 'Shopping Mall Area']), (['Eastern Nook To Ice Cave FAWT Clip', 'PoD Nook To Shopping Mall FAWT Clip'], ['Eastern Nook Area', 'Darkness Nook Area'], ['Ice Cave Area', 'Shopping Mall Area']),
(['Links To Bridge FAWT Clip', 'Bomb Shop To Hammer Bridge FAWT Clip'], ['Links House Area', 'Big Bomb Shop Area'], ['Stone Bridge North Area', 'Hammer Bridge North Area']), #fake flipper (['Links To Bridge FAWT Clip', 'Bomb Shop To Hammer Bridge FAWT Clip'], ['Links House Area', 'Big Bomb Shop Area'], ['Stone Bridge North Area', 'Hammer Bridge North Area']), #fake flipper
(['Stone Bridge To Water Clip', 'Hammer Bridge To Water Clip'], ['Stone Bridge North Area', 'Hammer Bridge North Area'], [None, 'Pyramid Water']), #fake flipper (['Stone Bridge To Water Clip', 'Hammer Bridge To Water Clip'], ['Stone Bridge North Area', 'Hammer Bridge North Area'], [None, 'Pyramid Water']), #fake flipper
(['Desert To Maze Race Clip', None], ['Desert Ledge', None], ['Maze Race Area', 'Dig Game Area']), (['Desert To Maze Race Clip', None], ['Desert Ledge', None], ['Maze Race Area', 'Dig Game Area']),
(['Desert To Cliff Clip', 'Mire To Cliff Clip'], ['Desert Area', 'Misery Mire Area'], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']), (['Desert To Cliff Clip', 'Mire To Cliff Clip'], ['Desert Area', 'Mire Area'], ['Desert Northern Cliffs', 'Mire Northern Cliffs']),
(['Flute Boy To Cliff Clip', 'Stumpy To Cliff Clip'], ['Flute Boy Approach Area', 'Stumpy Approach Area'], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']), (['Flute Boy To Cliff Clip', 'Stumpy To Cliff Clip'], ['Flute Boy Approach Area', 'Stumpy Approach Area'], ['Desert Northern Cliffs', 'Mire Northern Cliffs']),
(['Cave 45 To Cliff Clip', None], ['Cave 45 Ledge', None], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']), (['Cave 45 To Cliff Clip', None], ['Cave 45 Ledge', None], ['Desert Northern Cliffs', 'Mire Northern Cliffs']),
(['C Whirlpool To Cliff Clip', 'Dark C Whirlpool To Cliff Clip'], ['C Whirlpool Area', 'Dark C Whirlpool Area'], ['Central Cliffs', 'Dark Central Cliffs']), (['C Whirlpool To Cliff Clip', 'Dark C Whirlpool To Cliff Clip'], ['C Whirlpool Area', 'Dark C Whirlpool Area'], ['Central Cliffs', 'Dark Central Cliffs']),
(['C Whirlpool Outer To Cliff Clip', 'Dark C Whirlpool Outer To Cliff Clip'], ['C Whirlpool Outer Area', 'Dark C Whirlpool Outer Area'], ['Central Cliffs', 'Dark Central Cliffs']), (['C Whirlpool Outer To Cliff Clip', 'Dark C Whirlpool Outer To Cliff Clip'], ['C Whirlpool Outer Area', 'Dark C Whirlpool Outer Area'], ['Central Cliffs', 'Dark Central Cliffs']),
@@ -483,25 +483,25 @@ boots_clips = [
(['Statues To Cliff Clip', 'Hype To Cliff Clip'], ['Statues Area', 'Hype Cave Area'], ['Central Cliffs', 'Dark Central Cliffs']), (['Statues To Cliff Clip', 'Hype To Cliff Clip'], ['Statues Area', 'Hype Cave Area'], ['Central Cliffs', 'Dark Central Cliffs']),
(['Lake Hylia To Statues Clip', 'Ice Lake To Hype Clip'], ['Lake Hylia Area', 'Ice Lake Area'], ['Statues Area', 'Hype Cave Area']), (['Lake Hylia To Statues Clip', 'Ice Lake To Hype Clip'], ['Lake Hylia Northwest Bank', 'Ice Lake Northwest Bank'], ['Statues Area', 'Hype Cave Area']),
(['Lake Hylia To South Pass Clip', 'Ice Lake To South Pass Clip'], ['Lake Hylia Area', 'Ice Lake Area'], ['South Pass Area', 'Dark South Pass Area']), (['Lake Hylia To South Pass Clip', 'Ice Lake To South Pass Clip'], ['Lake Hylia Northwest Bank', 'Ice Lake Northwest Bank'], ['South Pass Area', 'Dark South Pass Area']),
(['Desert Pass To Cliff Clip', 'Swamp Nook To Cliff Clip'], ['Desert Pass Area', 'Swamp Nook Area'], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']), (['Desert Pass To Cliff Clip', 'Swamp Nook To Cliff Clip'], ['Desert Pass Area', 'Swamp Nook Area'], ['Desert Northern Cliffs', 'Mire Northern Cliffs']),
(['Desert Pass Southeast To Cliff Clip', None], ['Desert Pass Southeast', None], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']), (['Desert Pass Southeast To Cliff Clip', None], ['Desert Pass Southeast', None], ['Desert Northern Cliffs', 'Mire Northern Cliffs']),
(['Dam To Cliff Clip', 'Swamp To Cliff Clip'], ['Dam Area', 'Swamp Area'], ['Desert Northeast Cliffs', 'Mire Northeast Cliffs']), (['Dam To Cliff Clip', 'Swamp To Cliff Clip'], ['Dam Area', 'Swamp Area'], ['Desert Northern Cliffs', 'Mire Northern Cliffs']),
(['Dam To Desert Pass Southeast Clip', 'Swamp To Desert Pass Southeast Clip'], ['Dam Area', 'Swamp Area'], ['Desert Pass Southeast', None]), (['Dam To Desert Pass Southeast Clip', 'Swamp To Desert Pass Southeast Clip'], ['Dam Area', 'Swamp Area'], ['Desert Pass Southeast', None]),
(['South Pass To Lake Hylia Clip', 'South Pass To Ice Lake Clip'], ['South Pass Area', 'Dark South Pass Area'], ['Lake Hylia Area', 'Ice Lake Area']), (['South Pass To Lake Hylia Clip', 'South Pass To Ice Lake Clip'], ['South Pass Area', 'Dark South Pass Area'], ['Lake Hylia Northwest Bank', 'Ice Lake Northwest Bank']),
(['South Pass To Shore Clip', 'South Pass To Dark Shore Clip'], ['South Pass Area', 'Dark South Pass Area'], ['Lake Hylia South Shore', 'Ice Lake Ledge (West)']), (['South Pass To Shore Clip', 'South Pass To Dark Shore Clip'], ['South Pass Area', 'Dark South Pass Area'], ['Lake Hylia South Shore', 'Ice Lake Southwest Ledge']),
#(['Octoballoon To Shore Clip', 'Bomber Corner To Shore Clip'], ['Octoballoon Area', 'Bomber Corner Area'], ['Lake Hylia South Shore', 'Ice Lake Ledge (East)']), #map wrap hardlock risk #(['Octoballoon To Shore Clip', 'Bomber Corner To Shore Clip'], ['Octoballoon Area', 'Bomber Corner Area'], ['Lake Hylia South Shore', 'Ice Lake Southeast Ledge']), #map wrap hardlock risk
(['HC Water To Blacksmith Clip', 'Pyramid Water To Hammerpegs Clip'], ['Hyrule Castle Water', 'Pyramid Water'], ['Blacksmith Area', 'Hammer Pegs Area']), #TODO: THIS IS NOT A BOOTS CLIP, this is a normal connection that needs to occur somewhere (['HC Water To Blacksmith Clip', 'Pyramid Water To Hammerpegs Clip'], ['Hyrule Castle Water', 'Pyramid Water'], ['Blacksmith Area', 'Hammer Pegs Area']), #TODO: THIS IS NOT A BOOTS CLIP, this is a normal connection that needs to occur somewhere
([None, 'Pyramid Water To Bomb Shop Clip'], [None, 'Pyramid Water'], ['Links House Area', 'Big Bomb Shop Area']) #TODO: THIS IS NOT A BOOTS CLIP, this is a normal connection that needs to occur somewhere ([None, 'Pyramid Water To Bomb Shop Clip'], [None, 'Pyramid Water'], ['Links House Area', 'Big Bomb Shop Area']) #TODO: THIS IS NOT A BOOTS CLIP, this is a normal connection that needs to occur somewhere
] ]
mirror_clips_local = [ mirror_clips_local = [
('Desert East Mirror Clip', 'Misery Mire Area', 'Desert Palace Mouth'), ('Desert East Mirror Clip', 'Mire Area', 'Desert Mouth'),
('EDDM Mirror Clip', 'East Dark Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom)'), ('EDDM Mirror Clip', 'East Dark Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom)'),
('EDDM Mirror Clip', 'East Dark Death Mountain (Top)', 'Dark Death Mountain Ledge') ('EDDM Mirror Clip', 'East Dark Death Mountain (Top)', 'Dark Death Mountain Ledge')
] ]
+290 -288
View File
@@ -7,7 +7,7 @@ from OWEdges import OWTileRegions, OWEdgeGroups, OWEdgeGroupsTerrain, OWExitType
from OverworldGlitchRules import create_owg_connections from OverworldGlitchRules import create_owg_connections
from Utils import bidict from Utils import bidict
version_number = '0.3.1.0' version_number = '0.3.1.1'
# branch indicator is intentionally different across branches # branch indicator is intentionally different across branches
version_branch = '' version_branch = ''
@@ -470,7 +470,7 @@ def link_overworld(world, player):
target_spots = len(new_spots) + spots_to_place target_spots = len(new_spots) + spots_to_place
logging.getLogger('').debug(f'Sector of {sector[0]} regions gets {spots_to_place} spot(s)') logging.getLogger('').debug(f'Sector of {sector[0]} regions gets {spots_to_place} spot(s)')
if 'Desert Palace Teleporter Ledge' in sector[1] or 'Misery Mire Teleporter Ledge' in sector[1]: if 'Desert Teleporter Ledge' in sector[1] or 'Mire Teleporter Ledge' in sector[1]:
addSpot(0x38, False) # guarantee desert/mire access addSpot(0x38, False) # guarantee desert/mire access
random.shuffle(sector[1]) random.shuffle(sector[1])
@@ -887,7 +887,6 @@ def create_flute_exits(world, player):
exitname = 'Flute From ' + region.name exitname = 'Flute From ' + region.name
exit = Entrance(region.player, exitname, region) exit = Entrance(region.player, exitname, region)
exit.spot_type = 'Flute' exit.spot_type = 'Flute'
exit.access_rule = lambda state: state.can_flute(player)
exit.connect(world.get_region('Flute Sky', player)) exit.connect(world.get_region('Flute Sky', player))
region.exits.append(exit) region.exits.append(exit)
@@ -1128,17 +1127,17 @@ def validate_layout(world, player):
'East Death Mountain (Bottom)': ['East Death Mountain (Top East)'], 'East Death Mountain (Bottom)': ['East Death Mountain (Top East)'],
'Kakariko Suburb Area': ['Maze Race Ledge'], 'Kakariko Suburb Area': ['Maze Race Ledge'],
'Maze Race Ledge': ['Kakariko Suburb Area'], 'Maze Race Ledge': ['Kakariko Suburb Area'],
'Desert Area': ['Desert Ledge', 'Desert Palace Mouth'], 'Desert Area': ['Desert Ledge', 'Desert Mouth'],
'East Dark Death Mountain (Top)': ['Dark Death Mountain Floating Island'], 'East Dark Death Mountain (Top)': ['Dark Death Mountain Floating Island'],
'East Dark Death Mountain (Bottom)': ['East Dark Death Mountain (Top)'], 'East Dark Death Mountain (Bottom)': ['East Dark Death Mountain (Top)'],
'Turtle Rock Area': ['Dark Death Mountain Ledge', 'Turtle Rock Area': ['Dark Death Mountain Ledge',
'Dark Death Mountain Isolated Ledge'], 'Dark Death Mountain Isolated Ledge'],
'Dark Death Mountain Ledge': ['Turtle Rock Area'], 'Dark Death Mountain Ledge': ['Turtle Rock Area'],
'Dark Death Mountain Isolated Ledge': ['Turtle Rock Area'], 'Dark Death Mountain Isolated Ledge': ['Turtle Rock Area'],
'Mountain Entry Entrance': ['West Death Mountain (Bottom)'], 'Mountain Pass Entry': ['West Death Mountain (Bottom)'],
'Mountain Entry Ledge': ['West Death Mountain (Bottom)'], 'Mountain Pass Ledge': ['West Death Mountain (Bottom)'],
'West Death Mountain (Bottom)': ['Mountain Entry Ledge'], 'West Death Mountain (Bottom)': ['Mountain Pass Ledge'],
'Bumper Cave Entrance': ['Bumper Cave Ledge'] 'Bumper Cave Entry': ['Bumper Cave Ledge']
} }
sane_connectors = { sane_connectors = {
# guaranteed dungeon access # guaranteed dungeon access
@@ -1197,9 +1196,9 @@ def validate_layout(world, player):
explore_region(start_region) explore_region(start_region)
if not world.is_tile_swapped(0x30, player): if not world.is_tile_swapped(0x30, player):
start_region = 'Desert Palace Teleporter Ledge' start_region = 'Desert Teleporter Ledge'
else: else:
start_region = 'Misery Mire Teleporter Ledge' start_region = 'Mire Teleporter Ledge'
explore_region(start_region) explore_region(start_region)
if not world.is_tile_swapped(0x1b, player): if not world.is_tile_swapped(0x1b, player):
@@ -1259,201 +1258,206 @@ test_connections = [
] ]
# these are connections that cannot be shuffled and always exist. They link together separate parts of the world we need to divide into regions # these are connections that cannot be shuffled and always exist. They link together separate parts of the world we need to divide into regions
mandatory_connections = [('Old Man S&Q', 'Old Man House'), mandatory_connections = [
('Old Man S&Q', 'Old Man House'),
# Intra-tile OW Connections # Intra-tile OW Connections
('Lost Woods Bush (West)', 'Lost Woods East Area'), #pearl ('Lost Woods Bush (West)', 'Lost Woods East Area'), #pearl
('Lost Woods Bush (East)', 'Lost Woods West Area'), #pearl ('Lost Woods Bush (East)', 'Lost Woods West Area'), #pearl
('West Death Mountain Drop', 'West Death Mountain (Bottom)'), ('West Death Mountain Drop', 'West Death Mountain (Bottom)'),
('Spectacle Rock Drop', 'West Death Mountain (Top)'), ('Spectacle Rock Ledge Drop', 'West Death Mountain (Top)'),
('Old Man Drop Off', 'Old Man Drop Off'), ('Old Man Drop Off', 'Old Man Drop Off'),
('DM Hammer Bridge (West)', 'East Death Mountain (Top East)'), #hammer ('DM Hammer Bridge (West)', 'East Death Mountain (Top East)'), #hammer
('DM Hammer Bridge (East)', 'East Death Mountain (Top West)'), #hammer ('DM Hammer Bridge (East)', 'East Death Mountain (Top West)'), #hammer
('East Death Mountain Spiral Ledge Drop', 'Spiral Cave Ledge'), ('EDM To Spiral Ledge Drop', 'Spiral Cave Ledge'),
('Spiral Ledge Drop', 'East Death Mountain (Bottom)'), ('EDM Ledge Drop', 'East Death Mountain (Bottom)'),
('East Death Mountain Fairy Ledge Drop', 'Fairy Ascension Ledge'), ('Spiral Ledge Drop', 'East Death Mountain (Bottom)'),
('Fairy Ascension Ledge Drop', 'Fairy Ascension Plateau'), ('Fairy Ascension Ledge Drop', 'Fairy Ascension Plateau'),
('Fairy Ascension Plateau Ledge Drop', 'East Death Mountain (Bottom)'), ('Fairy Ascension Plateau Ledge Drop', 'East Death Mountain (Bottom)'),
('Fairy Ascension Rocks (North)', 'East Death Mountain (Bottom)'), #mitts ('Fairy Ascension Rocks (Inner)', 'East Death Mountain (Bottom)'), #mitts
('Fairy Ascension Rocks (South)', 'Fairy Ascension Plateau'), #mitts ('Fairy Ascension Rocks (Outer)', 'Fairy Ascension Plateau'), #mitts
('DM Broken Bridge (West)', 'East Death Mountain (Bottom)'), #hookshot ('DM Broken Bridge (West)', 'East Death Mountain (Bottom)'), #hookshot
('DM Broken Bridge (East)', 'East Death Mountain (Bottom Left)'), #hookshot ('DM Broken Bridge (East)', 'East Death Mountain (Bottom Left)'), #hookshot
('TR Pegs Ledge Entry', 'Death Mountain TR Pegs Ledge'), #mitts ('TR Pegs Ledge Entry', 'Death Mountain TR Pegs Ledge'), #mitts
('TR Pegs Ledge Leave', 'Death Mountain TR Pegs'), #mitts ('TR Pegs Ledge Leave', 'Death Mountain TR Pegs Area'), #mitts
('TR Pegs Ledge Drop', 'Death Mountain TR Pegs'), ('Mountain Pass Rock (Outer)', 'Mountain Pass Entry'), #glove
('Mountain Entry Entrance Rock (West)', 'Mountain Entry Entrance'), #glove ('Mountain Pass Rock (Inner)', 'Mountain Pass Area'), #glove
('Mountain Entry Entrance Rock (East)', 'Mountain Entry Area'), #glove ('Mountain Pass Entry Ledge Drop', 'Mountain Pass Area'),
('Mountain Entry Entrance Ledge Drop', 'Mountain Entry Area'), ('Mountain Pass Ledge Drop', 'Mountain Pass Area'),
('Mountain Entry Ledge Drop', 'Mountain Entry Area'), ('Zora Waterfall Landing', 'Zora Waterfall Area'),
('Zora Waterfall Landing', 'Zora Waterfall Area'), ('Zora Waterfall Water Drop', 'Zora Waterfall Water'), #flippers
('Zora Waterfall Water Drop', 'Zora Waterfall Water'), #flippers ('Zora Waterfall Water Entry', 'Zora Waterfall Water'), #flippers
('Zora Waterfall Water Entry', 'Zora Waterfall Water'), #flippers ('Zora Waterfall Approach', 'Zora Waterfall Entryway'), #flippers
('Zora Waterfall Water Approach', 'Zora Waterfall Entryway'), #flippers ('Lost Woods Pass Hammer (North)', 'Lost Woods Pass Portal Area'), #hammer
('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 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 (North)', 'Lost Woods Pass East Bottom Area'), #mitts ('Lost Woods Pass Rock (South)', 'Lost Woods Pass Portal Area'), #mitts
('Lost Woods Pass Rock (South)', 'Lost Woods Pass Portal Area'), #mitts ('Bonk Rock Ledge Drop', 'Sanctuary Area'),
('Bonk Rock Ledge Drop', 'Sanctuary Area'), ('Graveyard Ledge Drop', 'Graveyard Area'),
('Graveyard Ledge Drop', 'Graveyard Area'), ('Kings Grave Rocks (Outer)', 'Kings Grave Area'), #mitts
('Kings Grave Outer Rocks', 'Kings Grave Area'), #mitts ('Kings Grave Rocks (Inner)', 'Graveyard Area'), #mitts
('Kings Grave Inner Rocks', 'Graveyard Area'), #mitts ('River Bend Water Drop', 'River Bend Water'), #flippers
('River Bend Water Drop', 'River Bend Water'), #flippers ('River Bend East Water Drop', 'River Bend Water'), #flippers
('River Bend East Water Drop', 'River Bend Water'), #flippers ('River Bend West Pier', 'River Bend Area'),
('River Bend West Pier', 'River Bend Area'), ('River Bend East Pier', 'River Bend East Bank'),
('River Bend East Pier', 'River Bend East Bank'), ('Potion Shop Water Drop', 'Potion Shop Water'), #flippers
('Potion Shop Water Drop', 'Potion Shop Water'), #flippers ('Potion Shop Northeast Water Drop', 'Potion Shop Water'), #flippers
('Potion Shop Northeast Water Drop', 'Potion Shop Water'), #flippers ('Potion Shop Rock (South)', 'Potion Shop Northeast'), #glove
('Potion Shop Rock (South)', 'Potion Shop Northeast'), #glove ('Potion Shop Rock (North)', 'Potion Shop Area'), #glove
('Potion Shop Rock (North)', 'Potion Shop Area'), #glove ('Zora Approach Water Drop', 'Zora Approach Water'), #flippers
('Zora Approach Water Drop', 'Zora Approach Water'), #flippers ('Zora Approach Rocks (West)', 'Zora Approach Ledge'), #mitts/boots
('Zora Approach Rocks (West)', 'Zora Approach Ledge'), #mitts/boots ('Zora Approach Rocks (East)', 'Zora Approach Area'), #mitts/boots
('Zora Approach Rocks (East)', 'Zora Approach Area'), #mitts/boots ('Zora Approach Bottom Ledge Drop', 'Zora Approach Ledge'),
('Zora Approach Bottom Ledge Drop', 'Zora Approach Ledge'), ('Zora Approach Ledge Drop', 'Zora Approach Area'),
('Zora Approach Ledge Drop', 'Zora Approach Area'), ('Kakariko Southwest Bush (North)', 'Kakariko Southwest'), #pearl
('Kakariko Southwest Bush (North)', 'Kakariko Southwest'), #pearl ('Kakariko Southwest Bush (South)', 'Kakariko Village'), #pearl
('Kakariko Southwest Bush (South)', 'Kakariko Area'), #pearl ('Kakariko Yard Bush (South)', 'Kakariko Bush Yard'), #pearl
('Kakariko Yard Bush (South)', 'Kakariko Grass Yard'), #pearl ('Kakariko Yard Bush (North)', 'Kakariko Village'), #pearl
('Kakariko Yard Bush (North)', 'Kakariko Area'), #pearl ('Hyrule Castle Southwest Bush (North)', 'Hyrule Castle Southwest'), #pearl
('Hyrule Castle Southwest Bush (North)', 'Hyrule Castle Southwest'), #pearl ('Hyrule Castle Southwest Bush (South)', 'Hyrule Castle Area'), #pearl
('Hyrule Castle Southwest Bush (South)', 'Hyrule Castle Area'), #pearl ('Hyrule Castle Courtyard Bush (North)', 'Hyrule Castle Courtyard'), #pearl
('Hyrule Castle Courtyard Bush (North)', 'Hyrule Castle Courtyard'), #pearl ('Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Courtyard Northeast'), #pearl
('Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Courtyard Northeast'), #pearl ('Hyrule Castle Main Gate (South)', 'Hyrule Castle Courtyard'), #aga+mirror
('Hyrule Castle Main Gate (South)', 'Hyrule Castle Courtyard'), #aga+mirror ('Hyrule Castle Main Gate (North)', 'Hyrule Castle Area'), #aga+mirror
('Hyrule Castle Main Gate (North)', 'Hyrule Castle Area'), #aga+mirror ('Hyrule Castle Ledge Drop', 'Hyrule Castle Area'),
('Hyrule Castle Ledge Drop', 'Hyrule Castle Area'), ('Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Courtyard'),
('Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Courtyard'), ('Hyrule Castle East Rock (Inner)', 'Hyrule Castle East Entry'), #glove
('Hyrule Castle Inner East Rock', 'Hyrule Castle East Entry'), #glove ('Hyrule Castle East Rock (Outer)', 'Hyrule Castle Area'), #glove
('Hyrule Castle Outer East Rock', 'Hyrule Castle Area'), #glove ('Wooden Bridge Bush (South)', 'Wooden Bridge Northeast'), #pearl
('Wooden Bridge Bush (South)', 'Wooden Bridge Northeast'), #pearl ('Wooden Bridge Bush (North)', 'Wooden Bridge Area'), #pearl
('Wooden Bridge Bush (North)', 'Wooden Bridge Area'), #pearl ('Wooden Bridge Water Drop', 'Wooden Bridge Water'), #flippers
('Wooden Bridge Water Drop', 'Wooden Bridge Water'), #flippers ('Wooden Bridge Northeast Water Drop', 'Wooden Bridge Water'), #flippers
('Wooden Bridge Northeast Water Drop', 'Wooden Bridge Water'), #flippers ('Blacksmith Ledge Peg (West)', 'Blacksmith Ledge'), #hammer
('Bat Cave Ledge Peg', 'Bat Cave Ledge'), #hammer ('Blacksmith Ledge Peg (East)', 'Blacksmith Area'), #hammer
('Bat Cave Ledge Peg (East)', 'Blacksmith Area'), #hammer ('Maze Race Game', 'Maze Race Prize'), #pearl
('Maze Race Game', 'Maze Race Prize'), #pearl ('Maze Race Ledge Drop', 'Maze Race Area'),
('Maze Race Ledge Drop', 'Maze Race Area'), ('Stone Bridge (Southbound)', 'Stone Bridge South Area'),
('Stone Bridge Southbound', 'Stone Bridge South Area'), ('Stone Bridge (Northbound)', 'Stone Bridge North Area'),
('Stone Bridge Northbound', 'Stone Bridge North Area'), ('Desert Statue Move', 'Desert Stairs'), #book
('Desert Palace Statue Move', 'Desert Palace Stairs'), #book ('Desert Ledge Drop', 'Desert Area'),
('Desert Ledge Drop', 'Desert Area'), ('Desert Ledge Rocks (Outer)', 'Desert Ledge Keep'), #glove
('Desert Ledge Outer Rocks', 'Desert Palace Entrance (North) Spot'), #glove ('Desert Ledge Rocks (Inner)', 'Desert Ledge'), #glove
('Desert Ledge Inner Rocks', 'Desert Ledge'), #glove ('Checkerboard Ledge Drop', 'Desert Area'),
('Checkerboard Ledge Drop', 'Desert Area'), ('Desert Mouth Drop', 'Desert Area'),
('Desert Mouth Drop', 'Desert Area'), ('Desert Teleporter Drop', 'Desert Area'),
('Desert Teleporter Drop', 'Desert Area'), ('Bombos Tablet Drop', 'Desert Area'),
('Bombos Tablet Drop', 'Desert Area'), ('Flute Boy Bush (North)', 'Flute Boy Approach Area'), #pearl
('Flute Boy Bush (North)', 'Flute Boy Approach Area'), #pearl ('Flute Boy Bush (South)', 'Flute Boy Bush Entry'), #pearl
('Flute Boy Bush (South)', 'Flute Boy Bush Entry'), #pearl ('C Whirlpool Water Entry', 'C Whirlpool Water'), #flippers
('C Whirlpool Water Entry', 'C Whirlpool Water'), #flippers ('C Whirlpool Landing', 'C Whirlpool Area'),
('C Whirlpool Landing', 'C Whirlpool Area'), ('C Whirlpool Rock (Bottom)', 'C Whirlpool Outer Area'), #glove
('C Whirlpool Rock (Bottom)', 'C Whirlpool Outer Area'), #glove ('C Whirlpool Rock (Top)', 'C Whirlpool Area'), #glove
('C Whirlpool Rock (Top)', 'C Whirlpool Area'), #glove ('C Whirlpool Pegs (Outer)', 'C Whirlpool Portal Area'), #hammer
('C Whirlpool Pegs (Right)', 'C Whirlpool Portal Area'), #hammer ('C Whirlpool Pegs (Inner)', 'C Whirlpool Area'), #hammer
('C Whirlpool Pegs (Left)', 'C Whirlpool Area'), #hammer ('Statues Water Entry', 'Statues Water'), #flippers
('Statues Water Entry', 'Statues Water'), #flippers ('Statues Landing', 'Statues Area'),
('Statues Landing', 'Statues Area'), ('Lake Hylia Water Drop', 'Lake Hylia Water'), #flippers
('Lake Hylia Water Drop', 'Lake Hylia Water'), #flippers ('Lake Hylia South Water Drop', 'Lake Hylia Water'), #flippers
('Lake Hylia South Water Drop', 'Lake Hylia Water'), #flippers ('Lake Hylia Northeast Water Drop', 'Lake Hylia Water'), #flippers
('Lake Hylia Northeast Water Drop', 'Lake Hylia Water'), #flippers ('Lake Hylia Central Water Drop', 'Lake Hylia Water'), #flippers
('Lake Hylia Central Water Drop', 'Lake Hylia Water'), #flippers ('Lake Hylia Island Water Drop', 'Lake Hylia Water'), #flippers
('Lake Hylia Island Water Drop', 'Lake Hylia Water'), #flippers ('Lake Hylia Central Island Pier', 'Lake Hylia Central Island'),
('Lake Hylia Central Island Pier', 'Lake Hylia Central Island'), ('Lake Hylia West Pier', 'Lake Hylia Northwest Bank'),
('Lake Hylia West Pier', 'Lake Hylia Area'), ('Lake Hylia East Pier', 'Lake Hylia Northeast Bank'),
('Lake Hylia East Pier', 'Lake Hylia Northeast Bank'), ('Lake Hylia Water D Approach', 'Lake Hylia Water D'),
('Lake Hylia Water D Approach', 'Lake Hylia Water D'), ('Lake Hylia Water D Leave', 'Lake Hylia Water'), #flippers
('Lake Hylia Water D Leave', 'Lake Hylia Water'), #flippers ('Ice Cave Water Drop', 'Ice Cave Water'), #flippers
('Desert Pass Ledge Drop', 'Desert Pass Area'), ('Ice Cave Pier', 'Ice Cave Area'),
('Desert Pass Rocks (North)', 'Desert Pass Southeast'), #glove ('Desert Pass Ledge Drop', 'Desert Pass Area'),
('Desert Pass Rocks (South)', 'Desert Pass Area'), #glove ('Desert Pass Rocks (North)', 'Desert Pass Southeast'), #glove
('Middle Aged Man', 'Middle Aged Man'), ('Desert Pass Rocks (South)', 'Desert Pass Area'), #glove
('Octoballoon Water Drop', 'Octoballoon Water'), #flippers ('Middle Aged Man', 'Middle Aged Man'),
('Octoballoon Waterfall Water Drop', 'Octoballoon Water'), #flippers ('Octoballoon Water Drop', 'Octoballoon Water'), #flippers
('Octoballoon Pier', 'Octoballoon Area'), ('Octoballoon Waterfall Water Drop', 'Octoballoon Water'), #flippers
('Octoballoon Pier', 'Octoballoon Area'),
('Skull Woods Bush Rock (West)', 'Skull Woods Forest'), #glove ('Skull Woods Rock (West)', 'Skull Woods Forest'), #glove
('Skull Woods Bush Rock (East)', 'Skull Woods Portal Entry'), #glove ('Skull Woods Rock (East)', 'Skull Woods Portal Entry'), #glove
('Skull Woods Forgotten Bush (West)', 'Skull Woods Forgotten Path (Northeast)'), #pearl ('Skull Woods Forgotten Bush (West)', 'Skull Woods Forgotten Path (Northeast)'), #pearl
('Skull Woods Forgotten Bush (East)', 'Skull Woods Forgotten Path (Southwest)'), #pearl ('Skull Woods Forgotten Bush (East)', 'Skull Woods Forgotten Path (Southwest)'), #pearl
('Dark Death Mountain Drop (West)', 'West Dark Death Mountain (Bottom)'), ('West Dark Death Mountain Drop', 'West Dark Death Mountain (Bottom)'),
('GT Entry Approach', 'GT Approach'), ('GT Approach', 'GT Stairs'),
('GT Entry Leave', 'West Dark Death Mountain (Top)'), ('GT Leave', 'West Dark Death Mountain (Top)'),
('Floating Island Drop', 'East Dark Death Mountain (Top)'), ('Floating Island Drop', 'East Dark Death Mountain (Top)'),
('Dark Death Mountain Drop (East)', 'East Dark Death Mountain (Bottom)'), ('East Dark Death Mountain Drop', 'East Dark Death Mountain (Bottom)'),
('East Dark Death Mountain Bushes', 'East Dark Death Mountain (Bushes)'), ('East Dark Death Mountain Bushes', 'East Dark Death Mountain (Bushes)'),
('Turtle Rock Ledge Drop', 'Turtle Rock Area'), ('Turtle Rock Ledge Drop', 'Turtle Rock Area'),
('Bumper Cave Entrance Rock', 'Bumper Cave Entrance'), #glove ('Bumper Cave Rock (Outer)', 'Bumper Cave Entry'), #glove
('Bumper Cave Ledge Drop', 'Bumper Cave Area'), ('Bumper Cave Rock (Inner)', 'Bumper Cave Area'), #glove
('Bumper Cave Entrance Drop', 'Bumper Cave Area'), ('Bumper Cave Ledge Drop', 'Bumper Cave Area'),
('Skull Woods Pass Bush Row (West)', 'Skull Woods Pass East Top Area'), #pearl ('Bumper Cave Entry Drop', 'Bumper Cave Area'),
('Skull Woods Pass Bush Row (East)', 'Skull Woods Pass West Area'), #pearl ('Skull Woods Pass Bush Row (West)', 'Skull Woods Pass East Top Area'), #pearl
('Skull Woods Pass Bush (North)', 'Skull Woods Pass Portal Area'), #pearl ('Skull Woods Pass Bush Row (East)', 'Skull Woods Pass West Area'), #pearl
('Skull Woods Pass Bush (South)', 'Skull Woods Pass East Top Area'), #pearl ('Skull Woods Pass Bush (North)', 'Skull Woods Pass Portal Area'), #pearl
('Skull Woods Pass Rock (North)', 'Skull Woods Pass East Bottom Area'), #mitts ('Skull Woods Pass Bush (South)', 'Skull Woods Pass East Top Area'), #pearl
('Skull Woods Pass Rock (South)', 'Skull Woods Pass Portal Area'), #mitts ('Skull Woods Pass Rock (North)', 'Skull Woods Pass East Bottom Area'), #mitts
('Dark Graveyard Bush (South)', 'Dark Graveyard North'), #pearl ('Skull Woods Pass Rock (South)', 'Skull Woods Pass Portal Area'), #mitts
('Dark Graveyard Bush (North)', 'Dark Graveyard Area'), #pearl ('Dark Graveyard Bush (South)', 'Dark Graveyard North'), #pearl
('Qirn Jump Water Drop', 'Qirn Jump Water'), #flippers ('Dark Graveyard Bush (North)', 'Dark Graveyard Area'), #pearl
('Qirn Jump East Water Drop', 'Qirn Jump Water'), #flippers ('Qirn Jump Water Drop', 'Qirn Jump Water'), #flippers
('Qirn Jump Pier', 'Qirn Jump East Bank'), ('Qirn Jump East Water Drop', 'Qirn Jump Water'), #flippers
('Dark Witch Water Drop', 'Dark Witch Water'), #flippers ('Qirn Jump Pier', 'Qirn Jump East Bank'),
('Dark Witch Northeast Water Drop', 'Dark Witch Water'), #flippers ('Dark Witch Water Drop', 'Dark Witch Water'), #flippers
('Dark Witch Rock (North)', 'Dark Witch Area'), #glove ('Dark Witch Northeast Water Drop', 'Dark Witch Water'), #flippers
('Dark Witch Rock (South)', 'Dark Witch Northeast'), #glove ('Dark Witch Rock (North)', 'Dark Witch Area'), #glove
('Catfish Approach Rocks (West)', 'Catfish Approach Ledge'), #mitts/boots ('Dark Witch Rock (South)', 'Dark Witch Northeast'), #glove
('Catfish Approach Rocks (East)', 'Catfish Approach Area'), #mitts/boots ('Catfish Approach Water Drop', 'Catfish Approach Water'), #flippers
('Catfish Approach Bottom Ledge Drop', 'Catfish Approach Ledge'), ('Catfish Approach Rocks (West)', 'Catfish Approach Ledge'), #mitts/boots
('Catfish Approach Ledge Drop', 'Catfish Approach Area'), ('Catfish Approach Rocks (East)', 'Catfish Approach Area'), #mitts/boots
('Catfish Approach Water Drop', 'Catfish Approach Water'), #flippers ('Catfish Approach Bottom Ledge Drop', 'Catfish Approach Ledge'),
('Village of Outcasts Pegs', 'Dark Grassy Lawn'), #hammer ('Catfish Approach Ledge Drop', 'Catfish Approach Area'),
('Grassy Lawn Pegs', 'Village of Outcasts Area'), #hammer ('Bush Yard Pegs (Outer)', 'Village of Outcasts Bush Yard'), #hammer
('Shield Shop Fence (Outer) Ledge Drop', 'Shield Shop Fence'), ('Bush Yard Pegs (Inner)', 'Village of Outcasts'), #hammer
('Shield Shop Fence (Inner) Ledge Drop', 'Shield Shop Area'), ('Shield Shop Fence Drop (Outer)', 'Shield Shop Fence'),
('Pyramid Exit Ledge Drop', 'Pyramid Area'), ('Shield Shop Fence Drop (Inner)', 'Shield Shop Area'),
('Pyramid Crack', 'Pyramid Crack'), ('Pyramid Exit Ledge Drop', 'Pyramid Area'),
('Broken Bridge Hammer Rock (South)', 'Broken Bridge Northeast'), #hammer/glove ('Pyramid Crack', 'Pyramid Crack'),
('Broken Bridge Hammer Rock (North)', 'Broken Bridge Area'), #hammer/glove ('Broken Bridge Hammer Rock (South)', 'Broken Bridge Northeast'), #hammer/glove
('Broken Bridge Hookshot Gap', 'Broken Bridge West'), #hookshot ('Broken Bridge Hammer Rock (North)', 'Broken Bridge Area'), #hammer/glove
('Broken Bridge Water Drop', 'Broken Bridge Water'), #flippers ('Broken Bridge Hookshot Gap', 'Broken Bridge West'), #hookshot
('Broken Bridge Northeast Water Drop', 'Broken Bridge Water'), #flippers ('Broken Bridge Water Drop', 'Broken Bridge Water'), #flippers
('Broken Bridge West Water Drop', 'Broken Bridge Water'), #flippers ('Broken Bridge Northeast Water Drop', 'Broken Bridge Water'), #flippers
('Peg Area Rocks (West)', 'Hammer Pegs Area'), #mitts ('Broken Bridge West Water Drop', 'Broken Bridge Water'), #flippers
('Peg Area Rocks (East)', 'Hammer Pegs Entry'), #mitts ('Peg Area Rocks (West)', 'Hammer Pegs Area'), #mitts
('Dig Game To Ledge Drop', 'Dig Game Ledge'), #mitts ('Peg Area Rocks (East)', 'Hammer Pegs Entry'), #mitts
('Dig Game Ledge Drop', 'Dig Game Area'), ('Dig Game To Ledge Drop', 'Dig Game Ledge'), #mitts
('Frog Ledge Drop', 'Archery Game Area'), ('Dig Game Ledge Drop', 'Dig Game Area'),
('Frog Rock (Inner)', 'Frog Area'), #mitts ('Frog Ledge Drop', 'Archery Game Area'),
('Frog Rock (Outer)', 'Frog Prison'), #mitts ('Frog Rock (Inner)', 'Frog Area'), #mitts
('Archery Game Rock (North)', 'Archery Game Area'), #mitts ('Frog Rock (Outer)', 'Frog Prison'), #mitts
('Archery Game Rock (South)', 'Frog Area'), #mitts ('Archery Game Rock (North)', 'Archery Game Area'), #mitts
('Hammer Bridge Pegs (North)', 'Hammer Bridge South Area'), #hammer ('Archery Game Rock (South)', 'Frog Area'), #mitts
('Hammer Bridge Pegs (South)', 'Hammer Bridge North Area'), #hammer ('Hammer Bridge Pegs (North)', 'Hammer Bridge South Area'), #hammer
('Hammer Bridge Water Drop', 'Hammer Bridge Water'), #flippers ('Hammer Bridge Pegs (South)', 'Hammer Bridge North Area'), #hammer
('Hammer Bridge Pier', 'Hammer Bridge North Area'), ('Hammer Bridge Water Drop', 'Hammer Bridge Water'), #flippers
('Misery Mire Teleporter Ledge Drop', 'Misery Mire Area'), ('Hammer Bridge Pier', 'Hammer Bridge North Area'),
('Stumpy Approach Bush (North)', 'Stumpy Approach Area'), #pearl ('Mire Teleporter Ledge Drop', 'Mire Area'),
('Stumpy Approach Bush (South)', 'Stumpy Approach Bush Entry'), #pearl ('Stumpy Approach Bush (North)', 'Stumpy Approach Area'), #pearl
('Dark C Whirlpool Water Entry', 'Dark C Whirlpool Water'), #flippers ('Stumpy Approach Bush (South)', 'Stumpy Approach Bush Entry'), #pearl
('Dark C Whirlpool Landing', 'Dark C Whirlpool Area'), ('Dark C Whirlpool Water Entry', 'Dark C Whirlpool Water'), #flippers
('Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Outer Area'), #glove ('Dark C Whirlpool Landing', 'Dark C Whirlpool Area'),
('Dark C Whirlpool Rock (Top)', 'Dark C Whirlpool Area'), #glove ('Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Outer Area'), #glove
('Dark C Whirlpool Pegs (Right)', 'Dark C Whirlpool Portal Area'), #hammer ('Dark C Whirlpool Rock (Top)', 'Dark C Whirlpool Area'), #glove
('Dark C Whirlpool Pegs (Left)', 'Dark C Whirlpool Area'), #hammer ('Dark C Whirlpool Pegs (Outer)', 'Dark C Whirlpool Portal Area'), #hammer
('Hype Cave Water Entry', 'Hype Cave Water'), #flippers ('Dark C Whirlpool Pegs (Inner)', 'Dark C Whirlpool Area'), #hammer
('Hype Cave Landing', 'Hype Cave Area'), ('Hype Cave Water Entry', 'Hype Cave Water'), #flippers
('Ice Lake Water Drop', 'Ice Lake Water'), #flippers ('Hype Cave Landing', 'Hype Cave Area'),
('Ice Lake Northeast Water Drop', 'Ice Lake Water'), #flippers ('Ice Lake Water Drop', 'Ice Lake Water'), #flippers
('Ice Lake Southwest Water Drop', 'Ice Lake Water'), #flippers ('Ice Lake Northeast Water Drop', 'Ice Lake Water'), #flippers
('Ice Lake Southeast Water Drop', 'Ice Lake Water'), #flippers ('Ice Lake Southwest Water Drop', 'Ice Lake Water'), #flippers
('Ice Lake Moat Water Entry', 'Ice Lake Water'), #flippers ('Ice Lake Southeast Water Drop', 'Ice Lake Water'), #flippers
('Ice Lake Northeast Pier', 'Ice Lake Northeast Bank'), ('Ice Lake Iceberg Water Entry', 'Ice Lake Water'), #flippers
('Bomber Corner Water Drop', 'Bomber Corner Water'), #flippers ('Ice Lake Northeast Pier', 'Ice Lake Northeast Bank'),
('Bomber Corner Waterfall Water Drop', 'Bomber Corner Water'), #flippers ('Shopping Mall Water Drop', 'Shopping Mall Water'), #flippers
('Bomber Corner Pier', 'Bomber Corner Area'), ('Shopping Mall Pier', 'Shopping Mall Area'),
('Bomber Corner Water Drop', 'Bomber Corner Water'), #flippers
('Bomber Corner Waterfall Water Drop', 'Bomber Corner Water'), #flippers
('Bomber Corner Pier', 'Bomber Corner Area'),
# OWG In-Bounds Connections # OWG In-Bounds Connections
('Ice Lake Northeast Pier Hop', 'Ice Lake Northeast Bank'), ('Ice Lake Northeast Pier Hop', 'Ice Lake Northeast Bank'),
('Ice Lake Moat Bomb Jump', 'Ice Lake Moat') ('Ice Lake Iceberg Bomb Jump', 'Ice Lake Iceberg')
] ]
default_whirlpool_connections = [ default_whirlpool_connections = [
((0x33, 'C Whirlpool', 'C Whirlpool Water'), (0x15, 'River Bend Whirlpool', 'River Bend Water')), ((0x33, 'C Whirlpool', 'C Whirlpool Water'), (0x15, 'River Bend Whirlpool', 'River Bend Water')),
@@ -1475,21 +1479,22 @@ ow_connections = {
('Dark Death Mountain Teleporter (West)', 'West Death Mountain (Bottom)') ('Dark Death Mountain Teleporter (West)', 'West Death Mountain (Bottom)')
]), ]),
0x05: ([ 0x05: ([
('EDM To Fairy Ledge Drop', 'Fairy Ascension Ledge'),
('East Death Mountain Teleporter', 'East Dark Death Mountain (Bottom)') ('East Death Mountain Teleporter', 'East Dark Death Mountain (Bottom)')
], [ ], [
('Floating Island Bridge (West)', 'East Death Mountain (Top East)'), ('Floating Island Bridge (West)', 'East Death Mountain (Top East)'),
('Floating Island Bridge (East)', 'Death Mountain Floating Island'), ('Floating Island Bridge (East)', 'Death Mountain Floating Island'),
('East Death Mountain Mimic Ledge Drop', 'Mimic Cave Ledge'), ('EDM To Mimic Ledge Drop', 'Mimic Cave Ledge'),
('Mimic Ledge Drop', 'East Death Mountain (Bottom)'),
('Spiral Mimic Bridge (West)', 'Spiral Mimic Ledge Extend'), ('Spiral Mimic Bridge (West)', 'Spiral Mimic Ledge Extend'),
('Spiral Mimic Bridge (East)', 'Spiral Mimic Ledge Extend'), ('Spiral Mimic Bridge (East)', 'Spiral Mimic Ledge Extend'),
('Spiral Ledge Approach', 'Spiral Cave Ledge'), ('Spiral Ledge Approach', 'Spiral Cave Ledge'),
('Mimic Ledge Approach', 'Mimic Cave Ledge'), ('Mimic Ledge Approach', 'Mimic Cave Ledge'),
('Spiral Mimic Ledge Drop', 'Fairy Ascension Ledge'), ('Spiral Mimic Ledge Drop', 'Fairy Ascension Ledge'),
('Dark Death Mountain Teleporter (East)', 'East Death Mountain (Bottom)') ('East Dark Death Mountain Teleporter', 'East Death Mountain (Bottom)')
]), ]),
0x07: ([ 0x07: ([
('TR Pegs Teleporter', 'Turtle Rock Ledge') ('TR Pegs Teleporter', 'Turtle Rock Ledge'),
('TR Pegs Ledge Drop', 'Death Mountain TR Pegs Area')
], [ ], [
('Turtle Rock Tail Ledge Drop', 'Turtle Rock Ledge'), ('Turtle Rock Tail Ledge Drop', 'Turtle Rock Ledge'),
('Turtle Rock Teleporter', 'Death Mountain TR Pegs Ledge') ('Turtle Rock Teleporter', 'Death Mountain TR Pegs Ledge')
@@ -1509,21 +1514,21 @@ ow_connections = {
('Castle Gate Teleporter', 'Pyramid Area'), ('Castle Gate Teleporter', 'Pyramid Area'),
('Castle Gate Teleporter (Inner)', 'Pyramid Area') ('Castle Gate Teleporter (Inner)', 'Pyramid Area')
], [ ], [
('Post Aga Inverted Teleporter', 'Hyrule Castle Area') ('Post Aga Teleporter', 'Hyrule Castle Area')
]), ]),
0x1e: ([ 0x1e: ([
('Eastern Palace Ledge Drop', 'Eastern Palace Area'), # OWG ('Eastern Palace Cliff Ledge Drop', 'Eastern Palace Area'), # OWG
('Palace of Darkness Ledge Drop', 'Palace of Darkness Area') # OWG ('Palace of Darkness Cliff Ledge Drop', 'Palace of Darkness Area') # OWG
], [ ], [
('Eastern Palace Ledge Drop', 'Palace of Darkness Area'), # OWG ('Eastern Palace Cliff Ledge Drop', 'Palace of Darkness Area'), # OWG
('Palace of Darkness Ledge Drop', 'Eastern Palace Area') # OWG ('Palace of Darkness Cliff Ledge Drop', 'Eastern Palace Area') # OWG
]), ]),
0x25: ([ 0x25: ([
('Sand Dunes Ledge Drop', 'Sand Dunes Area'), # OWG ('Sand Dunes Cliff Ledge Drop', 'Sand Dunes Area'), # OWG
('Dark Dunes Ledge Drop', 'Dark Dunes Area') # OWG ('Dark Dunes Cliff Ledge Drop', 'Dark Dunes Area') # OWG
], [ ], [
('Sand Dunes Ledge Drop', 'Dark Dunes Area'), # OWG ('Sand Dunes Cliff Ledge Drop', 'Dark Dunes Area'), # OWG
('Dark Dunes Ledge Drop', 'Sand Dunes Area') # OWG ('Dark Dunes Cliff Ledge Drop', 'Sand Dunes Area') # OWG
]), ]),
0x29: ([ 0x29: ([
('Suburb Cliff Ledge Drop', 'Kakariko Suburb Area'), # OWG ('Suburb Cliff Ledge Drop', 'Kakariko Suburb Area'), # OWG
@@ -1547,8 +1552,8 @@ ow_connections = {
('Bomb Shop Cliff Ledge Drop', 'Links House Area') # OWG ('Bomb Shop Cliff Ledge Drop', 'Links House Area') # OWG
]), ]),
0x2d: ([ 0x2d: ([
('Stone Bridge East Ledge Drop', 'Stone Bridge North Area'), # OWG ('Stone Bridge East Cliff Ledge Drop', 'Stone Bridge North Area'), # OWG
('Hammer Bridge North Ledge Drop', 'Hammer Bridge North Area'), # OWG ('Hammer Bridge North Cliff Ledge Drop', 'Hammer Bridge North Area'), # OWG
('Stone Bridge Cliff Ledge Drop', 'Stone Bridge South Area'), # OWG ('Stone Bridge Cliff Ledge Drop', 'Stone Bridge South Area'), # OWG
('Hammer Bridge South Cliff Ledge Drop', 'Hammer Bridge South Area'), # OWG ('Hammer Bridge South Cliff Ledge Drop', 'Hammer Bridge South Area'), # OWG
('Stone Bridge EC Cliff Water Drop', 'Stone Bridge Water'), # fake flipper ('Stone Bridge EC Cliff Water Drop', 'Stone Bridge Water'), # fake flipper
@@ -1556,8 +1561,8 @@ ow_connections = {
('Tree Line WC Cliff Water Drop', 'Tree Line Water'), # fake flipper ('Tree Line WC Cliff Water Drop', 'Tree Line Water'), # fake flipper
('Dark Tree Line WC Cliff Water Drop', 'Dark Tree Line Water') # fake flipper ('Dark Tree Line WC Cliff Water Drop', 'Dark Tree Line Water') # fake flipper
], [ ], [
('Stone Bridge East Ledge Drop', 'Hammer Bridge North Area'), # OWG ('Stone Bridge East Cliff Ledge Drop', 'Hammer Bridge North Area'), # OWG
('Hammer Bridge North Ledge Drop', 'Stone Bridge North Area'), # OWG ('Hammer Bridge North Cliff Ledge Drop', 'Stone Bridge North Area'), # OWG
('Stone Bridge Cliff Ledge Drop', 'Hammer Bridge South Area'), # OWG ('Stone Bridge Cliff Ledge Drop', 'Hammer Bridge South Area'), # OWG
('Hammer Bridge South Cliff Ledge Drop', 'Stone Bridge South Area'), # OWG ('Hammer Bridge South Cliff Ledge Drop', 'Stone Bridge South Area'), # OWG
('Stone Bridge EC Cliff Water Drop', 'Hammer Bridge Water'), # fake flipper ('Stone Bridge EC Cliff Water Drop', 'Hammer Bridge Water'), # fake flipper
@@ -1566,29 +1571,27 @@ ow_connections = {
('Dark Tree Line WC Cliff Water Drop', 'Tree Line Water') # fake flipper ('Dark Tree Line WC Cliff Water Drop', 'Tree Line Water') # fake flipper
]), ]),
0x2e: ([ 0x2e: ([
('Tree Line Ledge Drop', 'Tree Line Area'), # OWG ('Tree Line Cliff Ledge Drop', 'Tree Line Area'), # OWG
('Dark Tree Line Ledge Drop', 'Dark Tree Line Area') # OWG ('Dark Tree Line Cliff Ledge Drop', 'Dark Tree Line Area') # OWG
], [ ], [
('Tree Line Ledge Drop', 'Dark Tree Line Area'), # OWG ('Tree Line Cliff Ledge Drop', 'Dark Tree Line Area'), # OWG
('Dark Tree Line Ledge Drop', 'Tree Line Area') # OWG ('Dark Tree Line Cliff Ledge Drop', 'Tree Line Area') # OWG
]), ]),
0x2f: ([ 0x2f: ([
('East Hyrule Teleporter', 'Palace of Darkness Nook Area') ('East Hyrule Teleporter', 'Darkness Nook Area')
], [ ], [
('East Dark World Teleporter', 'Eastern Nook Area') ('East Dark World Teleporter', 'Eastern Nook Area')
]), ]),
0x30: ([ 0x30: ([
('Mirror To Bombos Tablet Ledge', 'Bombos Tablet Ledge'), # OWG ('Mirror To Bombos Tablet Ledge', 'Bombos Tablet Ledge'), # OWG
('Desert Teleporter', 'Misery Mire Teleporter Ledge'), ('Desert Teleporter', 'Mire Teleporter Ledge'),
('Desert Boss Cliff Ledge Drop', 'Desert Palace Entrance (North) Spot'), # OWG ('Mire Cliff Ledge Drop', 'Mire Area'), # OWG
('Mire Cliff Ledge Drop', 'Misery Mire Area'), # OWG
('Checkerboard Cliff Ledge Drop', 'Desert Checkerboard Ledge') # OWG ('Checkerboard Cliff Ledge Drop', 'Desert Checkerboard Ledge') # OWG
], [ ], [
('Checkerboard Ledge Approach', 'Desert Checkerboard Ledge'), ('Checkerboard Ledge Approach', 'Desert Checkerboard Ledge'),
('Checkerboard Ledge Leave', 'Desert Area'), ('Checkerboard Ledge Leave', 'Desert Area'),
('Misery Mire Teleporter', 'Desert Palace Teleporter Ledge'), ('Mire Teleporter', 'Desert Teleporter Ledge'),
('Desert Boss Cliff Ledge Drop', 'Misery Mire Area'), # OWG ('Mire Cliff Ledge Drop', 'Desert Ledge Keep'), # OWG
('Mire Cliff Ledge Drop', 'Desert Palace Entrance (North) Spot'), # OWG
('Dark Checkerboard Cliff Ledge Drop', 'Desert Checkerboard Ledge') # OWG ('Dark Checkerboard Cliff Ledge Drop', 'Desert Checkerboard Ledge') # OWG
]), ]),
0x32: ([ 0x32: ([
@@ -1596,8 +1599,8 @@ ow_connections = {
('Cave 45 Cliff Ledge Drop', 'Cave 45 Ledge'), # OWG ('Cave 45 Cliff Ledge Drop', 'Cave 45 Ledge'), # OWG
('Stumpy Approach Cliff Ledge Drop', 'Stumpy Approach Area') # OWG ('Stumpy Approach Cliff Ledge Drop', 'Stumpy Approach Area') # OWG
], [ ], [
('Cave 45 Inverted Leave', 'Flute Boy Approach Area'), ('Cave 45 Leave', 'Flute Boy Approach Area'),
('Cave 45 Inverted Approach', 'Cave 45 Ledge'), ('Cave 45 Approach', 'Cave 45 Ledge'),
('Cave 45 Cliff Ledge Drop', 'Stumpy Approach Area'), # OWG ('Cave 45 Cliff Ledge Drop', 'Stumpy Approach Area'), # OWG
('Stumpy Approach Cliff Ledge Drop', 'Cave 45 Ledge') # OWG ('Stumpy Approach Cliff Ledge Drop', 'Cave 45 Ledge') # OWG
]), ]),
@@ -1631,17 +1634,16 @@ ow_connections = {
]), ]),
0x35: ([ 0x35: ([
('Lake Hylia Teleporter', 'Ice Palace Area'), ('Lake Hylia Teleporter', 'Ice Palace Area'),
#('Ice Palace Ledge Drop', 'Ice Lake Moat'), ('Lake Hylia Northwest Cliff Ledge Drop', 'Lake Hylia Northwest Bank'), # OWG
('Lake Hylia Area Cliff Ledge Drop', 'Lake Hylia Area'), # OWG ('Ice Lake Northwest Cliff Ledge Drop', 'Ice Lake Northwest Bank'), # OWG
('Ice Lake Area Cliff Ledge Drop', 'Ice Lake Area'), # OWG
('Lake Hylia Island FAWT Ledge Drop', 'Lake Hylia Island'), # OWG ('Lake Hylia Island FAWT Ledge Drop', 'Lake Hylia Island'), # OWG
('Ice Palace Island FAWT Ledge Drop', 'Ice Lake Moat') # OWG ('Ice Palace Island FAWT Ledge Drop', 'Ice Lake Iceberg') # OWG
], [ ], [
('Lake Hylia Island Pier', 'Lake Hylia Island'), ('Lake Hylia Island Pier', 'Lake Hylia Island'),
('Ice Palace Teleporter', 'Lake Hylia Water D'), ('Ice Lake Teleporter', 'Lake Hylia Water D'),
('Lake Hylia Area Cliff Ledge Drop', 'Ice Lake Area'), # OWG ('Lake Hylia Northwest Cliff Ledge Drop', 'Ice Lake Northwest Bank'), # OWG
('Ice Lake Area Cliff Ledge Drop', 'Lake Hylia Area'), # OWG ('Ice Lake Northwest Cliff Ledge Drop', 'Lake Hylia Northwest Bank'), # OWG
('Lake Hylia Island FAWT Ledge Drop', 'Ice Lake Moat'), # OWG ('Lake Hylia Island FAWT Ledge Drop', 'Ice Lake Iceberg'), # OWG
('Ice Palace Island FAWT Ledge Drop', 'Lake Hylia Island') # OWG ('Ice Palace Island FAWT Ledge Drop', 'Lake Hylia Island') # OWG
]), ]),
0x3a: ([ 0x3a: ([
@@ -1681,11 +1683,11 @@ mirror_connections = {
'East Dark Death Mountain (Bushes)': ['Fairy Ascension Plateau'], 'East Dark Death Mountain (Bushes)': ['Fairy Ascension Plateau'],
'East Dark Death Mountain (Bottom Left)': ['East Death Mountain (Bottom Left)'], 'East Dark Death Mountain (Bottom Left)': ['East Death Mountain (Bottom Left)'],
'Turtle Rock Area': ['Death Mountain TR Pegs'], 'Turtle Rock Area': ['Death Mountain TR Pegs Area'],
'Bumper Cave Area': ['Mountain Entry Area'], 'Bumper Cave Area': ['Mountain Pass Area'],
'Bumper Cave Entrance': ['Mountain Entry Entrance'], 'Bumper Cave Entry': ['Mountain Pass Entry'],
'Bumper Cave Ledge': ['Mountain Entry Ledge'], 'Bumper Cave Ledge': ['Mountain Pass Ledge'],
'Catfish Area': ['Zora Waterfall Area'], 'Catfish Area': ['Zora Waterfall Area'],
@@ -1712,8 +1714,8 @@ mirror_connections = {
'Catfish Approach Area': ['Zora Approach Area'], 'Catfish Approach Area': ['Zora Approach Area'],
'Catfish Approach Ledge': ['Zora Approach Ledge'], 'Catfish Approach Ledge': ['Zora Approach Ledge'],
'Village of Outcasts Area': ['Kakariko Area'], 'Village of Outcasts': ['Kakariko Village'],
'Dark Grassy Lawn': ['Kakariko Area'], 'Village of Outcasts Bush Yard': ['Kakariko Village'],
'Shield Shop Area': ['Forgotten Forest Area'], 'Shield Shop Area': ['Forgotten Forest Area'],
'Shield Shop Fence': ['Forgotten Forest Area'], 'Shield Shop Fence': ['Forgotten Forest Area'],
@@ -1728,7 +1730,7 @@ mirror_connections = {
'Palace of Darkness Area': ['Eastern Palace Area'], 'Palace of Darkness Area': ['Eastern Palace Area'],
'Hammer Pegs Area': ['Blacksmith Area', 'Bat Cave Ledge'], 'Hammer Pegs Area': ['Blacksmith Area', 'Blacksmith Ledge'],
'Hammer Pegs Entry': ['Blacksmith Area'], 'Hammer Pegs Entry': ['Blacksmith Area'],
'Dark Dunes Area': ['Sand Dunes Area'], 'Dark Dunes Area': ['Sand Dunes Area'],
@@ -1752,9 +1754,9 @@ mirror_connections = {
'Dark Tree Line Area': ['Tree Line Area'], 'Dark Tree Line Area': ['Tree Line Area'],
'Palace of Darkness Nook Area': ['Eastern Nook Area'], 'Darkness Nook Area': ['Eastern Nook Area'],
'Misery Mire Area': ['Desert Area', 'Desert Ledge', 'Desert Checkerboard Ledge', 'Desert Palace Stairs', 'Desert Palace Entrance (North) Spot'], 'Mire Area': ['Desert Area', 'Desert Ledge', 'Desert Checkerboard Ledge', 'Desert Stairs', 'Desert Ledge Keep'],
'Stumpy Approach Area': ['Cave 45 Ledge'], 'Stumpy Approach Area': ['Cave 45 Ledge'],
'Stumpy Approach Bush Entry': ['Flute Boy Bush Entry'], 'Stumpy Approach Bush Entry': ['Flute Boy Bush Entry'],
@@ -1764,13 +1766,13 @@ mirror_connections = {
'Hype Cave Area': ['Statues Area'], 'Hype Cave Area': ['Statues Area'],
'Ice Lake Area': ['Lake Hylia Area'], 'Ice Lake Northwest Bank': ['Lake Hylia Northwest Bank'],
'Ice Lake Northeast Bank': ['Lake Hylia Northeast Bank'], 'Ice Lake Northeast Bank': ['Lake Hylia Northeast Bank'],
'Ice Lake Ledge (West)': ['Lake Hylia South Shore'], 'Ice Lake Southwest Ledge': ['Lake Hylia South Shore'],
'Ice Lake Ledge (East)': ['Lake Hylia South Shore'], 'Ice Lake Southeast Ledge': ['Lake Hylia South Shore'],
'Ice Lake Water': ['Lake Hylia Island'], 'Ice Lake Water': ['Lake Hylia Island'],
'Ice Palace Area': ['Lake Hylia Central Island'], 'Ice Palace Area': ['Lake Hylia Central Island'],
'Ice Lake Moat': ['Lake Hylia Water', 'Lake Hylia Water D'], #needs flippers 'Ice Lake Iceberg': ['Lake Hylia Water', 'Lake Hylia Water D'], #first one needs flippers
'Shopping Mall Area': ['Ice Cave Area'], 'Shopping Mall Area': ['Ice Cave Area'],
@@ -1803,12 +1805,12 @@ mirror_connections = {
'East Death Mountain (Bottom)': ['East Dark Death Mountain (Bottom)'], 'East Death Mountain (Bottom)': ['East Dark Death Mountain (Bottom)'],
'Death Mountain Floating Island': ['Dark Death Mountain Floating Island'], 'Death Mountain Floating Island': ['Dark Death Mountain Floating Island'],
'Death Mountain TR Pegs': ['Turtle Rock Area'], 'Death Mountain TR Pegs Area': ['Turtle Rock Area'],
'Death Mountain TR Pegs Ledge': ['Turtle Rock Ledge'], 'Death Mountain TR Pegs Ledge': ['Turtle Rock Ledge'],
'Mountain Entry Area': ['Bumper Cave Area'], 'Mountain Pass Area': ['Bumper Cave Area'],
'Mountain Entry Entrance': ['Bumper Cave Entrance'], 'Mountain Pass Entry': ['Bumper Cave Entry'],
'Mountain Entry Ledge': ['Bumper Cave Ledge'], 'Mountain Pass Ledge': ['Bumper Cave Ledge'],
'Zora Waterfall Area': ['Catfish Area'], 'Zora Waterfall Area': ['Catfish Area'],
@@ -1837,9 +1839,9 @@ mirror_connections = {
'Zora Approach Area': ['Catfish Approach Area'], 'Zora Approach Area': ['Catfish Approach Area'],
'Zora Approach Ledge': ['Catfish Approach Ledge'], 'Zora Approach Ledge': ['Catfish Approach Ledge'],
'Kakariko Area': ['Village of Outcasts Area'], 'Kakariko Village': ['Village of Outcasts'],
'Kakariko Southwest': ['Village of Outcasts Area'], 'Kakariko Southwest': ['Village of Outcasts'],
'Kakariko Grass Yard': ['Dark Grassy Lawn'], 'Kakariko Bush Yard': ['Village of Outcasts Bush Yard'],
'Forgotten Forest Area': ['Shield Shop Area'], 'Forgotten Forest Area': ['Shield Shop Area'],
@@ -1877,13 +1879,13 @@ mirror_connections = {
'Tree Line Area': ['Dark Tree Line Area'], 'Tree Line Area': ['Dark Tree Line Area'],
'Eastern Nook Area': ['Palace of Darkness Nook Area'], 'Eastern Nook Area': ['Darkness Nook Area'],
'Desert Area': ['Misery Mire Area'], 'Desert Area': ['Mire Area'],
'Desert Ledge': ['Misery Mire Area'], 'Desert Ledge': ['Mire Area'],
'Desert Palace Entrance (North) Spot': ['Misery Mire Area'], 'Desert Ledge Keep': ['Mire Area'],
'Desert Checkerboard Ledge': ['Misery Mire Area'], 'Desert Checkerboard Ledge': ['Mire Area'],
'Desert Palace Stairs': ['Misery Mire Area'], 'Desert Stairs': ['Mire Area'],
'Flute Boy Approach Area': ['Stumpy Approach Area'], 'Flute Boy Approach Area': ['Stumpy Approach Area'],
'Cave 45 Ledge': ['Stumpy Approach Area'], 'Cave 45 Ledge': ['Stumpy Approach Area'],
@@ -1894,11 +1896,11 @@ mirror_connections = {
'Statues Area': ['Hype Cave Area'], 'Statues Area': ['Hype Cave Area'],
'Lake Hylia Area': ['Ice Lake Area'], 'Lake Hylia Northwest Bank': ['Ice Lake Northwest Bank'],
'Lake Hylia South Shore': ['Ice Lake Ledge (West)', 'Ice Lake Ledge (East)'], 'Lake Hylia South Shore': ['Ice Lake Southwest Ledge', 'Ice Lake Southeast Ledge'],
'Lake Hylia Northeast Bank': ['Ice Lake Northeast Bank'], 'Lake Hylia Northeast Bank': ['Ice Lake Northeast Bank'],
'Lake Hylia Central Island': ['Ice Palace Area'], 'Lake Hylia Central Island': ['Ice Palace Area'],
'Lake Hylia Water D': ['Ice Lake Moat'], 'Lake Hylia Water D': ['Ice Lake Iceberg'],
'Ice Cave Area': ['Shopping Mall Area'], 'Ice Cave Area': ['Shopping Mall Area'],
@@ -1923,8 +1925,8 @@ default_connections = [('Lost Woods NW', 'Master Sword Meadow SC'),
('Lost Woods SC', 'Lost Woods Pass NE'), ('Lost Woods SC', 'Lost Woods Pass NE'),
('Lost Woods SE', 'Kakariko Fortune NE'), ('Lost Woods SE', 'Kakariko Fortune NE'),
('Lost Woods EN', 'Lumberjack WN'), ('Lost Woods EN', 'Lumberjack WN'),
('Lumberjack SW', 'Mountain Entry NW'), ('Lumberjack SW', 'Mountain Pass NW'),
('Mountain Entry SE', 'Kakariko Pond NE'), ('Mountain Pass SE', 'Kakariko Pond NE'),
('Zora Waterfall NE', 'Zoras Domain SW'), ('Zora Waterfall NE', 'Zoras Domain SW'),
('Lost Woods Pass SW', 'Kakariko NW'), ('Lost Woods Pass SW', 'Kakariko NW'),
('Lost Woods Pass SE', 'Kakariko NC'), ('Lost Woods Pass SE', 'Kakariko NC'),
@@ -2068,7 +2070,7 @@ one_way_ledges = {
'East Death Mountain (Bottom)': {'East Death Mountain (Top East)', 'East Death Mountain (Bottom)': {'East Death Mountain (Top East)',
'Spiral Cave Ledge'}, 'Spiral Cave Ledge'},
'Fairy Ascension Plateau': {'Fairy Ascension Ledge'}, 'Fairy Ascension Plateau': {'Fairy Ascension Ledge'},
'Mountain Entry Area': {'Mountain Entry Ledge'}, 'Mountain Pass Area': {'Mountain Pass Ledge'},
'Sanctuary Area': {'Bonk Rock Ledge'}, 'Sanctuary Area': {'Bonk Rock Ledge'},
'Graveyard Area': {'Graveyard Ledge'}, 'Graveyard Area': {'Graveyard Ledge'},
'Potion Shop Water': {'Potion Shop Area', 'Potion Shop Water': {'Potion Shop Area',
@@ -2083,9 +2085,9 @@ one_way_ledges = {
'Flute Boy Approach Area': {'Cave 45 Ledge'}, 'Flute Boy Approach Area': {'Cave 45 Ledge'},
'Desert Area': {'Desert Ledge', 'Desert Area': {'Desert Ledge',
'Desert Checkerboard Ledge', 'Desert Checkerboard Ledge',
'Desert Palace Mouth', 'Desert Mouth',
'Bombos Tablet Ledge', 'Bombos Tablet Ledge',
'Desert Palace Teleporter Ledge'}, 'Desert Teleporter Ledge'},
'Desert Pass Area': {'Desert Pass Ledge'}, 'Desert Pass Area': {'Desert Pass Ledge'},
'Lake Hylia Water': {'Lake Hylia South Shore', 'Lake Hylia Water': {'Lake Hylia South Shore',
'Lake Hylia Island'}, 'Lake Hylia Island'},
@@ -2102,22 +2104,22 @@ one_way_ledges = {
'Broken Bridge Water': {'Broken Bridge West', 'Broken Bridge Water': {'Broken Bridge West',
'Broken Bridge Area', 'Broken Bridge Area',
'Broken Bridge Northeast'}, 'Broken Bridge Northeast'},
'Misery Mire Area': {'Misery Mire Teleporter Ledge'}, 'Mire Area': {'Mire Teleporter Ledge'},
'Ice Lake Water': {'Ice Lake Area', 'Ice Lake Water': {'Ice Lake Northwest Bank',
'Ice Lake Ledge (West)', 'Ice Lake Southwest Ledge',
'Ice Lake Ledge (East)'} 'Ice Lake Southeast Ledge'}
} }
isolated_regions = [ isolated_regions = [
'Death Mountain Floating Island', 'Death Mountain Floating Island',
'Mimic Cave Ledge', 'Mimic Cave Ledge',
'Spiral Mimic Ledge Extend', 'Spiral Mimic Ledge Extend',
'Mountain Entry Ledge', 'Mountain Pass Ledge',
'Maze Race Prize', 'Maze Race Prize',
'Maze Race Ledge', 'Maze Race Ledge',
'Desert Ledge', 'Desert Ledge',
'Desert Palace Entrance (North) Spot', 'Desert Ledge Keep',
'Desert Palace Mouth', 'Desert Mouth',
'Dark Death Mountain Floating Island', 'Dark Death Mountain Floating Island',
'Dark Death Mountain Ledge', 'Dark Death Mountain Ledge',
'Dark Death Mountain Isolated Ledge', 'Dark Death Mountain Isolated Ledge',
@@ -2133,8 +2135,8 @@ flute_data = {
0x02: (['Lumberjack Area', 'Dark Lumberjack Area'], 0x02, 0x059c, 0x00d6, 0x04e6, 0x0138, 0x0558, 0x0143, 0x0563, 0xfffa, 0xfffa, 0x0138, 0x0550), 0x02: (['Lumberjack Area', 'Dark Lumberjack Area'], 0x02, 0x059c, 0x00d6, 0x04e6, 0x0138, 0x0558, 0x0143, 0x0563, 0xfffa, 0xfffa, 0x0138, 0x0550),
0x0b: (['West Death Mountain (Bottom)', 'West Dark Death Mountain (Top)'], 0x03, 0x1600, 0x02ca, 0x060e, 0x0328, 0x0678, 0x0337, 0x0683, 0xfff6, 0xfff2, 0x035b, 0x0680, 0x0118, 0x0860, 0x05c0, 0x00b8, 0x07ec, 0x0127, 0x086b, 0xfff8, 0x0004, 0x0148, 0x0850), 0x0b: (['West Death Mountain (Bottom)', 'West Dark Death Mountain (Top)'], 0x03, 0x1600, 0x02ca, 0x060e, 0x0328, 0x0678, 0x0337, 0x0683, 0xfff6, 0xfff2, 0x035b, 0x0680, 0x0118, 0x0860, 0x05c0, 0x00b8, 0x07ec, 0x0127, 0x086b, 0xfff8, 0x0004, 0x0148, 0x0850),
0x0e: (['East Death Mountain (Bottom)', 'East Dark Death Mountain (Bottom)'], 0x05, 0x1860, 0x031e, 0x0d00, 0x0388, 0x0da8, 0x038d, 0x0d7d, 0x0000, 0x0000, 0x0388, 0x0da8), 0x0e: (['East Death Mountain (Bottom)', 'East Dark Death Mountain (Bottom)'], 0x05, 0x1860, 0x031e, 0x0d00, 0x0388, 0x0da8, 0x038d, 0x0d7d, 0x0000, 0x0000, 0x0388, 0x0da8),
0x07: (['Death Mountain TR Pegs', 'Turtle Rock Area'], 0x07, 0x0804, 0x0102, 0x0e1a, 0x0160, 0x0e90, 0x016f, 0x0e97, 0xfffe, 0x0006, 0x0160, 0x0f20), 0x07: (['Death Mountain TR Pegs Area', 'Turtle Rock Area'], 0x07, 0x0804, 0x0102, 0x0e1a, 0x0160, 0x0e90, 0x016f, 0x0e97, 0xfffe, 0x0006, 0x0160, 0x0f20),
0x0a: (['Mountain Entry Area', 'Bumper Cave Area'], 0x0a, 0x0180, 0x0220, 0x0406, 0x0280, 0x0488, 0x028f, 0x0493, 0x0000, 0xfffa, 0x0280, 0x0488), 0x0a: (['Mountain Pass Area', 'Bumper Cave Area'], 0x0a, 0x0180, 0x0220, 0x0406, 0x0280, 0x0488, 0x028f, 0x0493, 0x0000, 0xfffa, 0x0280, 0x0488),
0x0f: (['Zora Waterfall Area', 'Catfish Area'], 0x0f, 0x0316, 0x025c, 0x0eb2, 0x02c0, 0x0f28, 0x02cb, 0x0f2f, 0x0002, 0xfffe, 0x02d0, 0x0f38), 0x0f: (['Zora Waterfall Area', 'Catfish Area'], 0x0f, 0x0316, 0x025c, 0x0eb2, 0x02c0, 0x0f28, 0x02cb, 0x0f2f, 0x0002, 0xfffe, 0x02d0, 0x0f38),
0x10: (['Lost Woods Pass West Area', 'Skull Woods Pass West Area'], 0x10, 0x0080, 0x0400, 0x0000, 0x0448, 0x0058, 0x046f, 0x0085, 0x0000, 0x0000, 0x0448, 0x0058), 0x10: (['Lost Woods Pass West Area', 'Skull Woods Pass West Area'], 0x10, 0x0080, 0x0400, 0x0000, 0x0448, 0x0058, 0x046f, 0x0085, 0x0000, 0x0000, 0x0448, 0x0058),
0x11: (['Kakariko Fortune Area', 'Dark Fortune Area'], 0x11, 0x0912, 0x051e, 0x0292, 0x0588, 0x0318, 0x058d, 0x031f, 0x0000, 0xfffe, 0x0588, 0x0318), 0x11: (['Kakariko Fortune Area', 'Dark Fortune Area'], 0x11, 0x0912, 0x051e, 0x0292, 0x0588, 0x0318, 0x058d, 0x031f, 0x0000, 0xfffe, 0x0588, 0x0318),
@@ -2144,7 +2146,7 @@ flute_data = {
0x15: (['River Bend East Bank', 'Qirn Jump East Bank'], 0x15, 0x041a, 0x0486, 0x0ad2, 0x04e8, 0x0b48, 0x04f3, 0x0b4f, 0x0008, 0xfffe, 0x04f8, 0x0b60), 0x15: (['River Bend East Bank', 'Qirn Jump East Bank'], 0x15, 0x041a, 0x0486, 0x0ad2, 0x04e8, 0x0b48, 0x04f3, 0x0b4f, 0x0008, 0xfffe, 0x04f8, 0x0b60),
0x16: (['Potion Shop Area', 'Dark Witch Area'], 0x16, 0x0888, 0x0516, 0x0c4e, 0x0578, 0x0cc8, 0x0583, 0x0cd3, 0xfffa, 0xfff2, 0x0598, 0x0ccf), 0x16: (['Potion Shop Area', 'Dark Witch Area'], 0x16, 0x0888, 0x0516, 0x0c4e, 0x0578, 0x0cc8, 0x0583, 0x0cd3, 0xfffa, 0xfff2, 0x0598, 0x0ccf),
0x17: (['Zora Approach Ledge', 'Catfish Approach Ledge'], 0x17, 0x039e, 0x047e, 0x0ef2, 0x04e0, 0x0f68, 0x04eb, 0x0f6f, 0x0000, 0xfffe, 0x04e0, 0x0f68), 0x17: (['Zora Approach Ledge', 'Catfish Approach Ledge'], 0x17, 0x039e, 0x047e, 0x0ef2, 0x04e0, 0x0f68, 0x04eb, 0x0f6f, 0x0000, 0xfffe, 0x04e0, 0x0f68),
0x18: (['Kakariko Area', 'Village of Outcasts Area'], 0x18, 0x0b30, 0x0759, 0x017e, 0x07b7, 0x0200, 0x07c6, 0x020b, 0x0007, 0x0002, 0x07c0, 0x0210, 0x07c8, 0x01f8), 0x18: (['Kakariko Village', 'Village of Outcasts'], 0x18, 0x0b30, 0x0759, 0x017e, 0x07b7, 0x0200, 0x07c6, 0x020b, 0x0007, 0x0002, 0x07c0, 0x0210, 0x07c8, 0x01f8),
0x1a: (['Forgotten Forest Area', 'Shield Shop Fence'], 0x1a, 0x081a, 0x070f, 0x04d2, 0x0770, 0x0548, 0x077c, 0x054f, 0xffff, 0xfffe, 0x0770, 0x0548), 0x1a: (['Forgotten Forest Area', 'Shield Shop Fence'], 0x1a, 0x081a, 0x070f, 0x04d2, 0x0770, 0x0548, 0x077c, 0x054f, 0xffff, 0xfffe, 0x0770, 0x0548),
0x1b: (['Hyrule Castle Courtyard', 'Pyramid Area'], 0x1b, 0x0c30, 0x077a, 0x0786, 0x07d8, 0x07f8, 0x07e7, 0x0803, 0x0006, 0xfffa, 0x07d8, 0x07f8), 0x1b: (['Hyrule Castle Courtyard', 'Pyramid Area'], 0x1b, 0x0c30, 0x077a, 0x0786, 0x07d8, 0x07f8, 0x07e7, 0x0803, 0x0006, 0xfffa, 0x07d8, 0x07f8),
0x1d: (['Wooden Bridge Area', 'Broken Bridge Northeast'], 0x1d, 0x0602, 0x06c2, 0x0a0e, 0x0720, 0x0a80, 0x072f, 0x0a8b, 0xfffe, 0x0002, 0x0720, 0x0a80), 0x1d: (['Wooden Bridge Area', 'Broken Bridge Northeast'], 0x1d, 0x0602, 0x06c2, 0x0a0e, 0x0720, 0x0a80, 0x072f, 0x0a8b, 0xfffe, 0x0002, 0x0720, 0x0a80),
@@ -2158,13 +2160,13 @@ flute_data = {
0x2c: (['Links House Area', 'Big Bomb Shop Area'], 0x2c, 0x0588, 0x0ab9, 0x0840, 0x0b17, 0x08b8, 0x0b26, 0x08bf, 0xfff7, 0x0000, 0x0b20, 0x08b8), 0x2c: (['Links House Area', 'Big Bomb Shop Area'], 0x2c, 0x0588, 0x0ab9, 0x0840, 0x0b17, 0x08b8, 0x0b26, 0x08bf, 0xfff7, 0x0000, 0x0b20, 0x08b8),
0x2d: (['Stone Bridge South Area', 'Hammer Bridge South Area'], 0x2d, 0x0886, 0x0b1e, 0x0a2a, 0x0ba0, 0x0aa8, 0x0b8b, 0x0aaf, 0x0000, 0x0006, 0x0bc4, 0x0ad0), 0x2d: (['Stone Bridge South Area', 'Hammer Bridge South Area'], 0x2d, 0x0886, 0x0b1e, 0x0a2a, 0x0ba0, 0x0aa8, 0x0b8b, 0x0aaf, 0x0000, 0x0006, 0x0bc4, 0x0ad0),
0x2e: (['Tree Line Area', 'Dark Tree Line Area'], 0x2e, 0x0100, 0x0a1a, 0x0c00, 0x0a78, 0x0c30, 0x0a87, 0x0c7d, 0x0006, 0x0000, 0x0a78, 0x0c58), 0x2e: (['Tree Line Area', 'Dark Tree Line Area'], 0x2e, 0x0100, 0x0a1a, 0x0c00, 0x0a78, 0x0c30, 0x0a87, 0x0c7d, 0x0006, 0x0000, 0x0a78, 0x0c58),
0x2f: (['Eastern Nook Area', 'Palace of Darkness Nook Area'], 0x2f, 0x0798, 0x0afa, 0x0eb2, 0x0b58, 0x0f30, 0x0b67, 0x0f37, 0xfff6, 0x000e, 0x0b50, 0x0f30), 0x2f: (['Eastern Nook Area', 'Darkness Nook Area'], 0x2f, 0x0798, 0x0afa, 0x0eb2, 0x0b58, 0x0f30, 0x0b67, 0x0f37, 0xfff6, 0x000e, 0x0b50, 0x0f30),
0x38: (['Desert Palace Teleporter Ledge', 'Misery Mire Teleporter Ledge'], 0x30, 0x1880, 0x0f1e, 0x0000, 0x0fa8, 0x0078, 0x0f8d, 0x008d, 0x0000, 0x0000, 0x0fb0, 0x0070), 0x38: (['Desert Teleporter Ledge', 'Mire Teleporter Ledge'], 0x30, 0x1880, 0x0f1e, 0x0000, 0x0fa8, 0x0078, 0x0f8d, 0x008d, 0x0000, 0x0000, 0x0fb0, 0x0070),
0x32: (['Flute Boy Approach Area', 'Stumpy Approach Area'], 0x32, 0x03a0, 0x0c6c, 0x0500, 0x0cd0, 0x05a8, 0x0cdb, 0x0585, 0x0002, 0x0000, 0x0cd6, 0x0568), 0x32: (['Flute Boy Approach Area', 'Stumpy Approach Area'], 0x32, 0x03a0, 0x0c6c, 0x0500, 0x0cd0, 0x05a8, 0x0cdb, 0x0585, 0x0002, 0x0000, 0x0cd6, 0x0568),
0x33: (['C Whirlpool Outer Area', 'Dark C Whirlpool Outer Area'], 0x33, 0x0180, 0x0c20, 0x0600, 0x0c80, 0x0628, 0x0c8f, 0x067d, 0x0000, 0x0000, 0x0c80, 0x0628), 0x33: (['C Whirlpool Outer Area', 'Dark C Whirlpool Outer Area'], 0x33, 0x0180, 0x0c20, 0x0600, 0x0c80, 0x0628, 0x0c8f, 0x067d, 0x0000, 0x0000, 0x0c80, 0x0628),
0x34: (['Statues Area', 'Hype Cave Area'], 0x34, 0x088e, 0x0d00, 0x0866, 0x0d60, 0x08d8, 0x0d6f, 0x08e3, 0x0000, 0x000a, 0x0d60, 0x08d8), 0x34: (['Statues Area', 'Hype Cave Area'], 0x34, 0x088e, 0x0d00, 0x0866, 0x0d60, 0x08d8, 0x0d6f, 0x08e3, 0x0000, 0x000a, 0x0d60, 0x08d8),
#0x35: (['Lake Hylia Area', 'Ice Lake Area'], 0x35, 0x0d00, 0x0da6, 0x0a06, 0x0e08, 0x0a80, 0x0e13, 0x0a8b, 0xfffa, 0xfffa, 0x0d88, 0x0a88), #0x35: (['Lake Hylia Northwest Bank', 'Ice Lake Northwest Bank'], 0x35, 0x0d00, 0x0da6, 0x0a06, 0x0e08, 0x0a80, 0x0e13, 0x0a8b, 0xfffa, 0xfffa, 0x0d88, 0x0a88),
0x3e: (['Lake Hylia South Shore', 'Ice Lake Ledge (East)'], 0x35, 0x1860, 0x0f1e, 0x0d00, 0x0f98, 0x0da8, 0x0f8b, 0x0d85, 0x0000, 0x0000, 0x0f90, 0x0da4), 0x3e: (['Lake Hylia South Shore', 'Ice Lake Southeast Ledge'], 0x35, 0x1860, 0x0f1e, 0x0d00, 0x0f98, 0x0da8, 0x0f8b, 0x0d85, 0x0000, 0x0000, 0x0f90, 0x0da4),
0x37: (['Ice Cave Area', 'Shopping Mall Area'], 0x37, 0x0786, 0x0cf6, 0x0e2e, 0x0d58, 0x0ea0, 0x0d63, 0x0eab, 0x000a, 0x0002, 0x0d48, 0x0ed0), 0x37: (['Ice Cave Area', 'Shopping Mall Area'], 0x37, 0x0786, 0x0cf6, 0x0e2e, 0x0d58, 0x0ea0, 0x0d63, 0x0eab, 0x000a, 0x0002, 0x0d48, 0x0ed0),
0x3a: (['Desert Pass Area', 'Swamp Nook Area'], 0x3a, 0x001a, 0x0e08, 0x04c6, 0x0e70, 0x0540, 0x0e7d, 0x054b, 0x0006, 0x000a, 0x0e70, 0x0540), 0x3a: (['Desert Pass Area', 'Swamp Nook Area'], 0x3a, 0x001a, 0x0e08, 0x04c6, 0x0e70, 0x0540, 0x0e7d, 0x054b, 0x0006, 0x000a, 0x0e70, 0x0540),
0x3b: (['Dam Area', 'Swamp Area'], 0x3b, 0x069e, 0x0edf, 0x06f2, 0x0f3d, 0x0778, 0x0f4c, 0x077f, 0xfff1, 0xfffe, 0x0f30, 0x0770), 0x3b: (['Dam Area', 'Swamp Area'], 0x3b, 0x069e, 0x0edf, 0x06f2, 0x0f3d, 0x0778, 0x0f4c, 0x077f, 0xfff1, 0xfffe, 0x0f30, 0x0770),
+5
View File
@@ -109,6 +109,11 @@ These are now independent of retro mode and have three options: None, Random, an
# Bug Fixes and Notes # Bug Fixes and Notes
* 1.2.0.17u
* Fixed logic bug that allowed Pearl to be behind Graveyard Cave or King's Tomb entrances with only Mirror and West Dark World access (cross world shuffles only)
* Removed backup locations for Dungeon Only and Major Only algorithms. If item cannot be placed in the appropriate location, the seed will fail to generate instead
* Fix for Non-ER Inverted Experimental (Aga and GT weren't logically swapped)
* Fix for customizer setting crystals to 0 for either GT/Ganon
* 1.2.0.16u * 1.2.0.16u
* Fix for partial key logic on vanilla Mire * Fix for partial key logic on vanilla Mire
* Fix for Kholdstare Shell collision when at Lanmo 2 * Fix for Kholdstare Shell collision when at Lanmo 2
+152 -147
View File
@@ -7,154 +7,165 @@ from PotShuffle import key_drop_data, vanilla_pots, choose_pots, PotSecretTable
def create_regions(world, player): def create_regions(world, player):
world.regions += [ world.regions += [
create_menu_region(player, 'Menu', None, ['Links House S&Q', 'Sanctuary S&Q', 'Old Man S&Q', 'Other World S&Q']), create_menu_region(player, 'Menu', None, ['Links House S&Q', 'Sanctuary S&Q', 'Old Man S&Q', 'Other World S&Q']),
create_menu_region(player, 'Flute Sky', None, ['Flute Spot 1', 'Flute Spot 2', 'Flute Spot 3', 'Flute Spot 4', 'Flute Spot 5', 'Flute Spot 6', 'Flute Spot 7', 'Flute Spot 8']), create_menu_region(player, 'Flute Sky', None, ['Flute Spot 1', 'Flute Spot 2', 'Flute Spot 3', 'Flute Spot 4',
'Flute Spot 5', 'Flute Spot 6', 'Flute Spot 7', 'Flute Spot 8']),
create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal'], ['Master Sword Meadow SC']), create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal'], ['Master Sword Meadow SC']),
create_lw_region(player, 'Lost Woods West Area', None, ['Lost Woods Bush (West)', 'Lost Woods NW', 'Lost Woods SW', 'Lost Woods SC']), create_lw_region(player, 'Lost Woods West Area', None, ['Lost Woods Bush (West)', 'Lost Woods NW', 'Lost Woods SW', 'Lost Woods SC']),
create_lw_region(player, 'Lost Woods East Area', ['Mushroom'], ['Lost Woods Bush (East)', 'Lost Woods Gamble', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump', 'Lost Woods SE', 'Lost Woods EN']), create_lw_region(player, 'Lost Woods East Area', ['Mushroom'], ['Lost Woods Gamble', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump', 'Lost Woods Bush (East)', 'Lost Woods SE', 'Lost Woods EN']),
create_lw_region(player, 'Lumberjack Area', None, ['Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Lumberjack House', 'Lumberjack WN', 'Lumberjack SW']), create_lw_region(player, 'Lumberjack Area', None, ['Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Lumberjack House', 'Lumberjack WN', 'Lumberjack SW']),
create_lw_region(player, 'West Death Mountain (Top)', ['Ether Tablet'], ['Spectacle Rock Approach', 'West Death Mountain Drop', 'Tower of Hera', 'West Death Mountain EN']), create_lw_region(player, 'West Death Mountain (Top)', ['Ether Tablet'], ['Tower of Hera', 'Spectacle Rock Approach', 'West Death Mountain Drop', 'West Death Mountain EN']),
create_lw_region(player, 'Spectacle Rock Ledge', ['Spectacle Rock'], ['Spectacle Rock Leave', 'Spectacle Rock Drop']), create_lw_region(player, 'Spectacle Rock Ledge', ['Spectacle Rock'], ['Spectacle Rock Leave', 'Spectacle Rock Ledge Drop']),
create_lw_region(player, 'West Death Mountain (Bottom)', ['Old Man Drop Off'], ['Old Man Drop Off', 'Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)', 'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)', 'West Death Mountain Teleporter', 'West Death Mountain ES']), create_lw_region(player, 'West Death Mountain (Bottom)', ['Old Man Drop Off'], ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)',
'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)',
'Old Man Drop Off', 'West Death Mountain Teleporter', 'West Death Mountain ES']),
create_lw_region(player, 'Old Man Drop Off', ['Old Man'], None), create_lw_region(player, 'Old Man Drop Off', ['Old Man'], None),
create_lw_region(player, 'East Death Mountain (Top West)', None, ['DM Hammer Bridge (West)', 'East Death Mountain WN']), create_lw_region(player, 'East Death Mountain (Top West)', None, ['DM Hammer Bridge (West)', 'East Death Mountain WN']),
create_lw_region(player, 'East Death Mountain (Top East)', None, ['DM Hammer Bridge (East)', 'Floating Island Bridge (East)', 'East Death Mountain Spiral Ledge Drop', 'East Death Mountain Fairy Ledge Drop', 'East Death Mountain Mimic Ledge Drop', 'Paradox Cave (Top)', 'East Death Mountain EN']), create_lw_region(player, 'East Death Mountain (Top East)', None, ['Paradox Cave (Top)', 'DM Hammer Bridge (East)', 'Floating Island Bridge (East)',
create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Ledge Drop', 'Spiral Mimic Bridge (West)', 'Spiral Cave']), 'EDM To Spiral Ledge Drop', 'EDM To Fairy Ledge Drop', 'EDM To Mimic Ledge Drop', 'EDM Ledge Drop', 'East Death Mountain EN']),
create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Ledge Drop', 'Spiral Mimic Bridge (East)', 'Mimic Cave']),
create_lw_region(player, 'Spiral Mimic Ledge Extend', None, ['Spiral Ledge Approach', 'Mimic Ledge Approach', 'Spiral Mimic Ledge Drop']),
create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)']),
create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Rocks (North)', 'Fairy Ascension Plateau Ledge Drop', 'Fairy Ascension Cave (Bottom)']),
create_lw_region(player, 'East Death Mountain (Bottom Left)', None, ['DM Broken Bridge (West)', 'East Death Mountain WS']),
create_lw_region(player, 'East Death Mountain (Bottom)', None, ['DM Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'Hookshot Fairy', 'Spiral Cave (Bottom)', 'Fairy Ascension Rocks (South)', 'East Death Mountain Teleporter']),
create_lw_region(player, 'Death Mountain Floating Island', ['Floating Island'], ['Floating Island Bridge (West)']), create_lw_region(player, 'Death Mountain Floating Island', ['Floating Island'], ['Floating Island Bridge (West)']),
create_lw_region(player, 'Death Mountain TR Pegs', None, ['TR Pegs Ledge Entry', 'Death Mountain TR Pegs WN']), create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Ledge Drop', 'Spiral Mimic Bridge (West)']),
create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave', 'Spiral Mimic Bridge (East)']),
create_lw_region(player, 'Spiral Mimic Ledge Extend', None, ['Spiral Ledge Approach', 'Mimic Ledge Approach', 'Spiral Mimic Ledge Drop']),
create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Cave (Top)', 'Fairy Ascension Ledge Drop']),
create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Cave (Bottom)', 'Fairy Ascension Rocks (Inner)', 'Fairy Ascension Plateau Ledge Drop']),
create_lw_region(player, 'East Death Mountain (Bottom Left)', None, ['DM Broken Bridge (West)', 'East Death Mountain WS']),
create_lw_region(player, 'East Death Mountain (Bottom)', None, ['Spiral Cave (Bottom)', 'Hookshot Fairy', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)',
'DM Broken Bridge (East)', 'Fairy Ascension Rocks (Outer)', 'East Death Mountain Teleporter']),
create_lw_region(player, 'Death Mountain TR Pegs Area', None, ['TR Pegs Ledge Entry', 'Death Mountain TR Pegs WN']),
create_lw_region(player, 'Death Mountain TR Pegs Ledge', None, ['TR Pegs Ledge Leave', 'TR Pegs Ledge Drop', 'TR Pegs Teleporter']), create_lw_region(player, 'Death Mountain TR Pegs Ledge', None, ['TR Pegs Ledge Leave', 'TR Pegs Ledge Drop', 'TR Pegs Teleporter']),
create_lw_region(player, 'Mountain Entry Area', None, ['Mountain Entry Entrance Rock (West)', 'Mountain Entry NW', 'Mountain Entry SE']), create_lw_region(player, 'Mountain Pass Area', None, ['Mountain Pass Rock (Outer)', 'Mountain Pass NW', 'Mountain Pass SE']),
create_lw_region(player, 'Mountain Entry Entrance', None, ['Mountain Entry Entrance Rock (East)', 'Mountain Entry Entrance Ledge Drop', 'Old Man Cave (West)']), create_lw_region(player, 'Mountain Pass Ledge', None, ['Death Mountain Return Cave (West)', 'Mountain Pass Ledge Drop'], 'a ledge in the foothills'),
create_lw_region(player, 'Mountain Entry Ledge', None, ['Mountain Entry Ledge Drop', 'Death Mountain Return Cave (West)'], 'a ledge in the foothills'), create_lw_region(player, 'Mountain Pass Entry', None, ['Old Man Cave (West)', 'Mountain Pass Rock (Inner)', 'Mountain Pass Entry Ledge Drop']),
create_lw_region(player, 'Zora Waterfall Area', None, ['Zora Waterfall Water Entry', 'Zora Waterfall SE', 'Zora Waterfall NE']), create_lw_region(player, 'Zora Waterfall Area', None, ['Zora Waterfall Water Entry', 'Zora Waterfall SE', 'Zora Waterfall NE']),
create_lw_region(player, 'Zora Waterfall Water', None, ['Zora Waterfall Water Approach', 'Zora Waterfall Landing', 'Zora Whirlpool'], 'Light World', Terrain.Water), create_lw_region(player, 'Zora Waterfall Water', None, ['Zora Waterfall Approach', 'Zora Waterfall Landing', 'Zora Whirlpool'], 'Light World', Terrain.Water),
create_lw_region(player, 'Zora Waterfall Entryway', None, ['Zora Waterfall Water Drop', 'Waterfall of Wishing']), create_lw_region(player, 'Zora Waterfall Entryway', None, ['Waterfall of Wishing', 'Zora Waterfall Water Drop']),
create_lw_region(player, 'Zoras Domain', ['King Zora', 'Zora\'s Ledge'], ['Zoras Domain SW']), create_lw_region(player, 'Zoras Domain', ['King Zora', 'Zora\'s Ledge'], ['Zoras Domain SW']),
create_lw_region(player, 'Lost Woods Pass West Area', None, ['Lost Woods Pass NW', 'Lost Woods Pass SW']), create_lw_region(player, 'Lost Woods Pass West Area', None, ['Lost Woods Pass NW', 'Lost Woods Pass SW']),
create_lw_region(player, 'Lost Woods Pass East Top Area', None, ['Lost Woods Pass Hammer (North)', 'Lost Woods Pass NE']), create_lw_region(player, 'Lost Woods Pass East Top Area', None, ['Lost Woods Pass Hammer (North)', 'Lost Woods Pass NE']),
create_lw_region(player, 'Lost Woods Pass Portal Area', None, ['Kakariko Teleporter', 'Lost Woods Pass Hammer (South)', 'Lost Woods Pass Rock (North)']), create_lw_region(player, 'Lost Woods Pass Portal Area', None, ['Lost Woods Pass Hammer (South)', 'Lost Woods Pass Rock (North)', 'Kakariko Teleporter']),
create_lw_region(player, 'Lost Woods Pass East Bottom Area', None, ['Lost Woods Pass Rock (South)', 'Lost Woods Pass SE']), create_lw_region(player, 'Lost Woods Pass East Bottom Area', None, ['Lost Woods Pass Rock (South)', 'Lost Woods Pass SE']),
create_lw_region(player, 'Kakariko Fortune Area', None, ['Fortune Teller (Light)', 'Kakariko Fortune NE', 'Kakariko Fortune EN', 'Kakariko Fortune ES', 'Kakariko Fortune SC']), create_lw_region(player, 'Kakariko Fortune Area', None, ['Fortune Teller (Light)', 'Kakariko Fortune NE', 'Kakariko Fortune EN', 'Kakariko Fortune ES', 'Kakariko Fortune SC']),
create_lw_region(player, 'Kakariko Pond Area', None, ['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, 'Kakariko Pond Area', None, ['Kakariko Pond Whirlpool', 'Kakariko Pond NE', 'Kakariko Pond WN', 'Kakariko Pond WS',
'Kakariko Pond SW', 'Kakariko Pond SE', 'Kakariko Pond EN', 'Kakariko Pond ES']),
create_lw_region(player, 'Sanctuary Area', None, ['Sanctuary', 'Sanctuary WS', 'Sanctuary EC']), create_lw_region(player, 'Sanctuary Area', None, ['Sanctuary', 'Sanctuary WS', 'Sanctuary EC']),
create_lw_region(player, 'Bonk Rock Ledge', None, ['Bonk Rock Cave', 'Bonk Rock Ledge Drop', 'Sanctuary WN']), create_lw_region(player, 'Bonk Rock Ledge', None, ['Bonk Rock Cave', 'Bonk Rock Ledge Drop', 'Sanctuary WN']),
create_lw_region(player, 'Graveyard Area', None, ['Sanctuary Grave', 'Kings Grave Outer Rocks', 'Graveyard Ladder (Bottom)', 'Graveyard WC', 'Graveyard EC']), create_lw_region(player, 'Graveyard Area', None, ['Sanctuary Grave', 'Kings Grave Rocks (Outer)', 'Graveyard Ladder (Bottom)', 'Graveyard WC', 'Graveyard EC']),
create_lw_region(player, 'Graveyard Ledge', None, ['Graveyard Ledge Drop', 'Graveyard Ladder (Top)', 'Graveyard Cave']), create_lw_region(player, 'Graveyard Ledge', None, ['Graveyard Cave', 'Graveyard Ledge Drop', 'Graveyard Ladder (Top)']),
create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave Inner Rocks', 'Kings Grave']), create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Rocks (Inner)']),
create_lw_region(player, 'River Bend Area', None, ['North Fairy Cave Drop', 'River Bend Water Drop', 'North Fairy Cave', 'River Bend WC', 'River Bend SW']), create_lw_region(player, 'River Bend Area', None, ['North Fairy Cave Drop', 'North Fairy Cave', 'River Bend Water Drop', 'River Bend WC', 'River Bend SW']),
create_lw_region(player, 'River Bend East Bank', None, ['River Bend East Water Drop', 'River Bend SE', 'River Bend EC', 'River Bend ES']), create_lw_region(player, 'River Bend East Bank', None, ['River Bend East Water Drop', 'River Bend SE', 'River Bend EC', 'River Bend ES']),
create_lw_region(player, 'River Bend Water', None, ['River Bend West Pier', 'River Bend East Pier', 'River Bend EN', 'River Bend SC', 'River Bend Whirlpool'], 'Light World', Terrain.Water), create_lw_region(player, 'River Bend Water', None, ['River Bend West Pier', 'River Bend East Pier', 'River Bend Whirlpool', 'River Bend EN', 'River Bend SC'], 'Light World', Terrain.Water),
create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop Water Drop', 'Potion Shop Rock (South)', 'Potion Shop', 'Potion Shop WC', 'Potion Shop WS']), create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop', 'Potion Shop Water Drop', 'Potion Shop Rock (South)', 'Potion Shop WC', 'Potion Shop WS']),
create_lw_region(player, 'Potion Shop Northeast', None, ['Potion Shop Northeast Water Drop', 'Potion Shop Rock (North)', 'Potion Shop EC']), create_lw_region(player, 'Potion Shop Northeast', None, ['Potion Shop Northeast Water Drop', 'Potion Shop Rock (North)', 'Potion Shop EC']),
create_lw_region(player, 'Potion Shop Water', None, ['Potion Shop WN', 'Potion Shop EN'], 'Light World', Terrain.Water), create_lw_region(player, 'Potion Shop Water', None, ['Potion Shop WN', 'Potion Shop EN'], 'Light World', Terrain.Water),
create_lw_region(player, 'Zora Approach Area', None, ['Zora Approach Rocks (West)', 'Zora Approach Bottom Ledge Drop', 'Zora Approach Water Drop', 'Zora Approach WC']), create_lw_region(player, 'Zora Approach Area', None, ['Zora Approach Rocks (West)', 'Zora Approach Bottom Ledge Drop', 'Zora Approach Water Drop', 'Zora Approach WC']),
create_lw_region(player, 'Zora Approach Ledge', None, ['Zora Approach Rocks (East)', 'Zora Approach Ledge Drop', 'Zora Approach NE']), create_lw_region(player, 'Zora Approach Ledge', None, ['Zora Approach Rocks (East)', 'Zora Approach Ledge Drop', 'Zora Approach NE']),
create_lw_region(player, 'Zora Approach Water', None, ['Zora Approach WN'], 'Light World', Terrain.Water), create_lw_region(player, 'Zora Approach Water', None, ['Zora Approach WN'], 'Light World', Terrain.Water),
create_lw_region(player, 'Kakariko Area', ['Bottle Merchant'], ['Kakariko Southwest Bush (North)', 'Kakariko Yard Bush (South)', 'Kakariko Well Drop', 'Kakariko Well Cave', 'Blinds Hideout', create_lw_region(player, 'Kakariko Village', ['Bottle Merchant'], ['Kakariko Well Drop', 'Kakariko Well Cave', 'Blinds Hideout', 'Elder House (West)', 'Elder House (East)',
'Elder House (West)', 'Elder House (East)', 'Snitch Lady (West)', 'Snitch Lady (East)', 'Chicken House', 'Sick Kids House', 'Snitch Lady (West)', 'Snitch Lady (East)', 'Chicken House', 'Sick Kids House', 'Kakariko Shop', 'Tavern (Front)', 'Tavern North',
'Kakariko Shop', 'Tavern (Front)', 'Tavern North', 'Kakariko NW', 'Kakariko NC', 'Kakariko NE', 'Kakariko ES', 'Kakariko SE']), 'Kakariko Southwest Bush (North)', 'Kakariko Yard Bush (South)', 'Kakariko NW', 'Kakariko NC', 'Kakariko NE', 'Kakariko ES', 'Kakariko SE']),
create_lw_region(player, 'Kakariko Southwest', None, ['Kakariko Southwest Bush (South)', 'Light World Bomb Hut']), create_lw_region(player, 'Kakariko Southwest', None, ['Light World Bomb Hut', 'Kakariko Southwest Bush (South)']),
create_lw_region(player, 'Kakariko Grass Yard', None, ['Kakariko Yard Bush (North)', 'Bush Covered House']), create_lw_region(player, 'Kakariko Bush Yard', None, ['Bush Covered House', 'Kakariko Yard Bush (North)']),
create_lw_region(player, 'Forgotten Forest Area', None, ['Forgotten Forest NW', 'Forgotten Forest NE', 'Forgotten Forest ES']), create_lw_region(player, 'Forgotten Forest Area', None, ['Forgotten Forest NW', 'Forgotten Forest NE', 'Forgotten Forest ES']),
create_lw_region(player, 'Hyrule Castle Area', None, ['Hyrule Castle Secret Entrance Drop', 'Hyrule Castle Main Gate (South)', 'Hyrule Castle Inner East Rock', 'Hyrule Castle Southwest Bush (North)', 'Castle Gate Teleporter', 'Hyrule Castle WN', 'Hyrule Castle SE']), create_lw_region(player, 'Hyrule Castle Area', None, ['Hyrule Castle Secret Entrance Drop', 'Hyrule Castle East Rock (Inner)', 'Hyrule Castle Southwest Bush (North)',
'Hyrule Castle Main Gate (South)', 'Castle Gate Teleporter', 'Hyrule Castle WN', 'Hyrule Castle SE']),
create_lw_region(player, 'Hyrule Castle Southwest', None, ['Hyrule Castle Southwest Bush (South)', 'Hyrule Castle SW']), create_lw_region(player, 'Hyrule Castle Southwest', None, ['Hyrule Castle Southwest Bush (South)', 'Hyrule Castle SW']),
create_lw_region(player, 'Hyrule Castle Courtyard', None, ['Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Main Gate (North)', 'Hyrule Castle Entrance (South)', 'Castle Gate Teleporter (Inner)']), create_lw_region(player, 'Hyrule Castle Courtyard', None, ['Hyrule Castle Entrance (South)', 'Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Main Gate (North)', 'Castle Gate Teleporter (Inner)']),
create_lw_region(player, 'Hyrule Castle Courtyard Northeast', None, ['Hyrule Castle Courtyard Bush (North)', 'Hyrule Castle Secret Entrance Stairs']), create_lw_region(player, 'Hyrule Castle Courtyard Northeast', None, ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Courtyard Bush (North)']),
create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Ledge Drop', 'Hyrule Castle Ledge Courtyard Drop', 'Inverted Pyramid Entrance', 'Hyrule Castle Entrance (West)', 'Agahnims Tower', 'Hyrule Castle Entrance (East)', 'Inverted Pyramid Hole'], 'the castle rampart'), create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (West)', 'Agahnims Tower', 'Hyrule Castle Entrance (East)', 'Inverted Pyramid Entrance', 'Inverted Pyramid Hole',
create_lw_region(player, 'Hyrule Castle East Entry', None, ['Hyrule Castle Outer East Rock', 'Hyrule Castle ES']), 'Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Ledge Drop'], 'the castle rampart'),
create_lw_region(player, 'Hyrule Castle East Entry', None, ['Hyrule Castle East Rock (Outer)', 'Hyrule Castle ES']),
create_lw_region(player, 'Hyrule Castle Water', None, [], 'Light World', Terrain.Water), create_lw_region(player, 'Hyrule Castle Water', None, [], 'Light World', Terrain.Water),
create_lw_region(player, 'Wooden Bridge Area', None, ['Wooden Bridge Bush (South)', 'Wooden Bridge Water Drop', 'Wooden Bridge NW', 'Wooden Bridge SW']), create_lw_region(player, 'Wooden Bridge Area', None, ['Wooden Bridge Bush (South)', 'Wooden Bridge Water Drop', 'Wooden Bridge NW', 'Wooden Bridge SW']),
create_lw_region(player, 'Wooden Bridge Northeast', None, ['Wooden Bridge Bush (North)', 'Wooden Bridge Northeast Water Drop', 'Wooden Bridge NE']), create_lw_region(player, 'Wooden Bridge Northeast', None, ['Wooden Bridge Bush (North)', 'Wooden Bridge Northeast Water Drop', 'Wooden Bridge NE']),
create_lw_region(player, 'Wooden Bridge Water', None, ['Wooden Bridge NC'], 'Light World', Terrain.Water), create_lw_region(player, 'Wooden Bridge Water', None, ['Wooden Bridge NC'], 'Light World', Terrain.Water),
create_lw_region(player, 'Eastern Palace Area', None, ['Sahasrahlas Hut', 'Eastern Palace', 'Eastern Palace SW', 'Eastern Palace SE']), create_lw_region(player, 'Eastern Palace Area', None, ['Sahasrahlas Hut', 'Eastern Palace', 'Eastern Palace SW', 'Eastern Palace SE']),
create_lw_region(player, 'Eastern Cliff', None, ['Sand Dunes Ledge Drop', 'Stone Bridge East Ledge Drop', 'Tree Line Ledge Drop', 'Eastern Palace Ledge Drop']), create_lw_region(player, 'Eastern Cliff', None, ['Sand Dunes Cliff Ledge Drop', 'Stone Bridge East Cliff Ledge Drop', 'Tree Line Cliff Ledge Drop', 'Eastern Palace Cliff Ledge Drop']),
create_lw_region(player, 'Blacksmith Area', None, ['Blacksmiths Hut', 'Bat Cave Cave', 'Bat Cave Ledge Peg', 'Blacksmith WS']), create_lw_region(player, 'Blacksmith Area', None, ['Blacksmiths Hut', 'Bat Cave Cave', 'Blacksmith Ledge Peg (West)', 'Blacksmith WS']),
create_lw_region(player, 'Bat Cave Ledge', None, ['Bat Cave Ledge Peg (East)', 'Bat Cave Drop']), create_lw_region(player, 'Blacksmith Ledge', None, ['Bat Cave Drop', 'Blacksmith Ledge Peg (East)']),
create_lw_region(player, 'Sand Dunes Area', None, ['Sand Dunes NW', 'Sand Dunes WN', 'Sand Dunes SC']), create_lw_region(player, 'Sand Dunes Area', None, ['Sand Dunes NW', 'Sand Dunes WN', 'Sand Dunes SC']),
create_lw_region(player, 'Maze Race Area', None, ['Maze Race ES']), create_lw_region(player, 'Maze Race Area', None, ['Maze Race ES']),
create_lw_region(player, 'Maze Race Ledge', None, ['Two Brothers House (West)', 'Maze Race Game'], 'a race against time'), create_lw_region(player, 'Maze Race Ledge', None, ['Two Brothers House (West)', 'Maze Race Game'], 'a race against time'),
create_lw_region(player, 'Maze Race Prize', ['Maze Race'], ['Maze Race Ledge Drop']), #this is a separate region to make OWG item get possible without allowing the Entrance access create_lw_region(player, 'Maze Race Prize', ['Maze Race'], ['Maze Race Ledge Drop']), # this is a separate region to make OWG item get possible without allowing the Entrance access
create_lw_region(player, 'Kakariko Suburb Area', None, ['Library', 'Two Brothers House (East)', 'Kakariko Gamble Game', 'Kakariko Suburb NE', 'Kakariko Suburb WS', 'Kakariko Suburb ES']), create_lw_region(player, 'Kakariko Suburb Area', None, ['Library', 'Two Brothers House (East)', 'Kakariko Gamble Game', 'Kakariko Suburb NE', 'Kakariko Suburb WS', 'Kakariko Suburb ES']),
create_lw_region(player, 'Flute Boy Area', ['Flute Spot'], ['Flute Boy SC']), create_lw_region(player, 'Flute Boy Area', ['Flute Spot'], ['Flute Boy SC']),
create_lw_region(player, 'Flute Boy Pass', None, ['Flute Boy WS', 'Flute Boy SW']), create_lw_region(player, 'Flute Boy Pass', None, ['Flute Boy WS', 'Flute Boy SW']),
create_lw_region(player, 'Central Bonk Rocks Area', None, ['Bonk Fairy (Light)', 'Central Bonk Rocks NW', 'Central Bonk Rocks SW', 'Central Bonk Rocks EN', 'Central Bonk Rocks EC', 'Central Bonk Rocks ES']), create_lw_region(player, 'Central Bonk Rocks Area', None, ['Bonk Fairy (Light)', 'Central Bonk Rocks NW', 'Central Bonk Rocks SW',
'Central Bonk Rocks EN', 'Central Bonk Rocks EC', 'Central Bonk Rocks ES']),
create_lw_region(player, 'Links House Area', None, ['Links House', 'Links House NE', 'Links House WN', 'Links House WC', 'Links House WS', 'Links House SC', 'Links House ES']), create_lw_region(player, 'Links House Area', None, ['Links House', 'Links House NE', 'Links House WN', 'Links House WC', 'Links House WS', 'Links House SC', 'Links House ES']),
create_lw_region(player, 'Stone Bridge North Area', None, ['Stone Bridge Southbound', 'Stone Bridge NC', 'Stone Bridge EN']), create_lw_region(player, 'Stone Bridge North Area', None, ['Stone Bridge (Southbound)', 'Stone Bridge NC', 'Stone Bridge EN']),
create_lw_region(player, 'Stone Bridge South Area', None, ['Stone Bridge Northbound', 'Stone Bridge WS', 'Stone Bridge SC']), create_lw_region(player, 'Stone Bridge South Area', None, ['Stone Bridge (Northbound)', 'Stone Bridge WS', 'Stone Bridge SC']),
create_lw_region(player, 'Stone Bridge Water', None, ['Stone Bridge WC', 'Stone Bridge EC'], 'Light World', Terrain.Water), create_lw_region(player, 'Stone Bridge Water', None, ['Stone Bridge WC', 'Stone Bridge EC'], 'Light World', Terrain.Water),
create_lw_region(player, 'Hobo Bridge', ['Hobo'], ['Hobo EC'], 'Light World', Terrain.Water), create_lw_region(player, 'Hobo Bridge', ['Hobo'], ['Hobo EC'], 'Light World', Terrain.Water),
create_lw_region(player, 'Central Cliffs', None, ['Central Bonk Rocks Cliff Ledge Drop', 'Links House Cliff Ledge Drop', 'Stone Bridge Cliff Ledge Drop', 'Lake Hylia Area Cliff Ledge Drop', 'Lake Hylia Island FAWT Ledge Drop', 'Stone Bridge EC Cliff Water Drop', 'Tree Line WC Cliff Water Drop', 'C Whirlpool Outer Cliff Ledge Drop', 'C Whirlpool Cliff Ledge Drop', 'C Whirlpool Portal Cliff Ledge Drop', 'Statues Cliff Ledge Drop']), create_lw_region(player, 'Central Cliffs', None, ['Central Bonk Rocks Cliff Ledge Drop', 'Links House Cliff Ledge Drop', 'Stone Bridge Cliff Ledge Drop', 'Lake Hylia Northwest Cliff Ledge Drop', 'Lake Hylia Island FAWT Ledge Drop', 'Stone Bridge EC Cliff Water Drop', 'Tree Line WC Cliff Water Drop', 'C Whirlpool Outer Cliff Ledge Drop', 'C Whirlpool Cliff Ledge Drop', 'C Whirlpool Portal Cliff Ledge Drop', 'Statues Cliff Ledge Drop']),
create_lw_region(player, 'Tree Line Area', None, ['Lake Hylia Fairy', 'Tree Line WN', 'Tree Line NW', 'Tree Line SE']), create_lw_region(player, 'Tree Line Area', None, ['Lake Hylia Fairy', 'Tree Line WN', 'Tree Line NW', 'Tree Line SE']),
create_lw_region(player, 'Tree Line Water', None, ['Tree Line WC', 'Tree Line SC'], 'Light World', Terrain.Water), create_lw_region(player, 'Tree Line Water', None, ['Tree Line WC', 'Tree Line SC'], 'Light World', Terrain.Water),
create_lw_region(player, 'Eastern Nook Area', None, ['Long Fairy Cave', 'East Hyrule Teleporter', 'Eastern Nook NE']), create_lw_region(player, 'Eastern Nook Area', None, ['Long Fairy Cave', 'East Hyrule Teleporter', 'Eastern Nook NE']),
create_lw_region(player, 'Desert Area', None, ['Desert Palace Statue Move', 'Checkerboard Ledge Approach', 'Aginahs Cave', 'Desert ES']), create_lw_region(player, 'Desert Area', None, ['Aginahs Cave', 'Desert Statue Move', 'Checkerboard Ledge Approach', 'Desert ES']),
create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Ledge Outer Rocks', 'Desert Ledge Drop', 'Desert Palace Entrance (West)'], 'the desert ledge'), create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (West)', 'Desert Ledge Rocks (Outer)', 'Desert Ledge Drop'], 'the desert ledge'),
create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Ledge Inner Rocks', 'Desert Palace Entrance (North)'], 'the desert ledge'), create_lw_region(player, 'Desert Ledge Keep', None, ['Desert Palace Entrance (North)', 'Desert Ledge Rocks (Inner)'], 'the desert ledge'),
create_lw_region(player, 'Desert Checkerboard Ledge', None, ['Checkerboard Ledge Leave', 'Checkerboard Ledge Drop', 'Checkerboard Cave']), create_lw_region(player, 'Desert Checkerboard Ledge', None, ['Checkerboard Cave', 'Checkerboard Ledge Drop', 'Checkerboard Ledge Leave']),
create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)'], 'a sandy vista'), create_lw_region(player, 'Desert Stairs', None, ['Desert Palace Entrance (South)']),
create_lw_region(player, 'Desert Palace Mouth', None, ['Desert Mouth Drop', 'Desert Palace Entrance (East)']), create_lw_region(player, 'Desert Mouth', None, ['Desert Palace Entrance (East)', 'Desert Mouth Drop'], 'a sandy vista'),
create_lw_region(player, 'Desert Palace Teleporter Ledge', None, ['Desert Teleporter Drop', 'Desert Teleporter']), create_lw_region(player, 'Desert Teleporter Ledge', None, ['Desert Teleporter Drop', 'Desert Teleporter']),
create_lw_region(player, 'Desert Northeast Cliffs', None, ['Desert Boss Cliff Ledge Drop', 'Checkerboard Cliff Ledge Drop', 'Suburb Cliff Ledge Drop', 'Cave 45 Cliff Ledge Drop', 'Desert C Whirlpool Cliff Ledge Drop', 'Desert Pass Cliff Ledge Drop', 'Dam Cliff Ledge Drop']), create_lw_region(player, 'Desert Northern Cliffs', None, ['Checkerboard Cliff Ledge Drop', 'Suburb Cliff Ledge Drop', 'Cave 45 Cliff Ledge Drop', 'Desert C Whirlpool Cliff Ledge Drop', 'Desert Pass Cliff Ledge Drop', 'Dam Cliff Ledge Drop']),
create_lw_region(player, 'Bombos Tablet Ledge', ['Bombos Tablet'], ['Bombos Tablet Drop', 'Desert EC']), create_lw_region(player, 'Bombos Tablet Ledge', ['Bombos Tablet'], ['Bombos Tablet Drop', 'Desert EC']),
create_lw_region(player, 'Flute Boy Approach Area', None, ['Flute Boy Bush (South)', 'Cave 45 Inverted Approach', 'Flute Boy Approach NW', 'Flute Boy Approach EC']), create_lw_region(player, 'Flute Boy Approach Area', None, ['Flute Boy Bush (South)', 'Cave 45 Approach', 'Flute Boy Approach NW', 'Flute Boy Approach EC']),
create_lw_region(player, 'Flute Boy Bush Entry', None, ['Flute Boy Bush (North)', 'Flute Boy Approach NC']), create_lw_region(player, 'Flute Boy Bush Entry', None, ['Flute Boy Bush (North)', 'Flute Boy Approach NC']),
create_lw_region(player, 'Cave 45 Ledge', None, ['Cave 45 Inverted Leave', 'Cave 45 Ledge Drop', 'Cave 45']), create_lw_region(player, 'Cave 45 Ledge', None, ['Cave 45', 'Cave 45 Ledge Drop', 'Cave 45 Leave']),
create_lw_region(player, 'C Whirlpool Area', None, ['C Whirlpool Rock (Bottom)', 'C Whirlpool Pegs (Right)', 'C Whirlpool Water Entry', 'C Whirlpool EN', 'C Whirlpool ES', 'C Whirlpool SC']), create_lw_region(player, 'C Whirlpool Area', None, ['C Whirlpool Rock (Bottom)', 'C Whirlpool Pegs (Outer)', 'C Whirlpool Water Entry', 'C Whirlpool EN', 'C Whirlpool ES', 'C Whirlpool SC']),
create_lw_region(player, 'C Whirlpool Portal Area', None, ['C Whirlpool Pegs (Left)', 'South Hyrule Teleporter']), create_lw_region(player, 'C Whirlpool Portal Area', None, ['C Whirlpool Pegs (Inner)', 'South Hyrule Teleporter']),
create_lw_region(player, 'C Whirlpool Water', None, ['C Whirlpool Landing', 'C Whirlpool', 'C Whirlpool EC'], 'Light World', Terrain.Water), create_lw_region(player, 'C Whirlpool Water', None, ['C Whirlpool Landing', 'C Whirlpool', 'C Whirlpool EC'], 'Light World', Terrain.Water),
create_lw_region(player, 'C Whirlpool Outer Area', None, ['C Whirlpool Rock (Top)', 'C Whirlpool WC', 'C Whirlpool NW']), create_lw_region(player, 'C Whirlpool Outer Area', None, ['C Whirlpool Rock (Top)', 'C Whirlpool WC', 'C Whirlpool NW']),
create_lw_region(player, 'Statues Area', None, ['Statues Water Entry', 'Light Hype Fairy', 'Statues NC', 'Statues WN', 'Statues WS', 'Statues SC']), create_lw_region(player, 'Statues Area', None, ['Light Hype Fairy', 'Statues Water Entry', 'Statues NC', 'Statues WN', 'Statues WS', 'Statues SC']),
create_lw_region(player, 'Statues Water', None, ['Statues Landing', 'Statues WC'], 'Light World', Terrain.Water), create_lw_region(player, 'Statues Water', None, ['Statues Landing', 'Statues WC'], 'Light World', Terrain.Water),
create_lw_region(player, 'Lake Hylia Area', None, ['Lake Hylia Water Drop', 'Lake Hylia Fortune Teller', 'Lake Hylia Shop', 'Lake Hylia NW']), create_lw_region(player, 'Lake Hylia Northwest Bank', None, ['Lake Hylia Fortune Teller', 'Lake Hylia Shop', 'Lake Hylia Water Drop', 'Lake Hylia NW']),
create_lw_region(player, 'Lake Hylia South Shore', None, ['Lake Hylia South Water Drop', 'Mini Moldorm Cave', 'Lake Hylia WS', 'Lake Hylia ES']),
create_lw_region(player, 'Lake Hylia Northeast Bank', None, ['Lake Hylia Northeast Water Drop', 'Lake Hylia NE']), create_lw_region(player, 'Lake Hylia Northeast Bank', None, ['Lake Hylia Northeast Water Drop', 'Lake Hylia NE']),
create_lw_region(player, 'Lake Hylia Central Island', None, ['Lake Hylia Central Water Drop', 'Capacity Upgrade', 'Lake Hylia Teleporter']), create_lw_region(player, 'Lake Hylia South Shore', None, ['Mini Moldorm Cave', 'Lake Hylia South Water Drop', 'Lake Hylia WS', 'Lake Hylia ES']),
create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Water Drop', 'Lake Hylia Teleporter']),
create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island'], ['Lake Hylia Island Water Drop']), create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island'], ['Lake Hylia Island Water Drop']),
create_lw_region(player, 'Lake Hylia Water', None, ['Lake Hylia Central Island Pier', 'Lake Hylia Island Pier', 'Lake Hylia West Pier', 'Lake Hylia East Pier', 'Lake Hylia Water D Approach', 'Lake Hylia NC', 'Lake Hylia EC', 'Lake Hylia Whirlpool'], 'Light World', Terrain.Water), create_lw_region(player, 'Lake Hylia Water', None, ['Lake Hylia Central Island Pier', 'Lake Hylia Island Pier', 'Lake Hylia West Pier', 'Lake Hylia East Pier',
create_lw_region(player, 'Lake Hylia Water D', None, ['Lake Hylia Water D Leave'], 'Light World', Terrain.Water), 'Lake Hylia Water D Approach', 'Lake Hylia Whirlpool', 'Lake Hylia NC', 'Lake Hylia EC'], 'Light World', Terrain.Water),
create_lw_region(player, 'Ice Cave Area', None, ['Ice Rod Cave', 'Good Bee Cave', '20 Rupee Cave', 'Ice Cave SE', 'Ice Cave SW']), create_lw_region(player, 'Lake Hylia Water D', None, ['Lake Hylia Water D Leave']),
create_lw_region(player, 'Desert Pass Area', ['Middle Aged Man'], ['Desert Pass Ladder (South)', 'Middle Aged Man', 'Desert Fairy', '50 Rupee Cave', 'Desert Pass WS', 'Desert Pass EC', 'Desert Pass Rocks (North)']), create_lw_region(player, 'Ice Cave Area', None, ['Ice Rod Cave', 'Good Bee Cave', '20 Rupee Cave', 'Ice Cave Water Drop', 'Ice Cave SE']),
create_lw_region(player, 'Ice Cave Water', None, ['Ice Cave Pier', 'Ice Cave SW'], 'Light World', Terrain.Water),
create_lw_region(player, 'Desert Pass Area', ['Middle Aged Man'], ['Desert Fairy', '50 Rupee Cave', 'Middle Aged Man', 'Desert Pass Ladder (South)', 'Desert Pass Rocks (North)', 'Desert Pass WS', 'Desert Pass EC']),
create_lw_region(player, 'Middle Aged Man', ['Purple Chest'], None), create_lw_region(player, 'Middle Aged Man', ['Purple Chest'], None),
create_lw_region(player, 'Desert Pass Southeast', None, ['Desert Pass Rocks (South)', 'Desert Pass ES']), create_lw_region(player, 'Desert Pass Southeast', None, ['Desert Pass Rocks (South)', 'Desert Pass ES']),
create_lw_region(player, 'Desert Pass Ledge', None, ['Desert Pass Ladder (North)', 'Desert Pass Ledge Drop', 'Desert Pass WC']), create_lw_region(player, 'Desert Pass Ledge', None, ['Desert Pass Ladder (North)', 'Desert Pass Ledge Drop', 'Desert Pass WC']),
create_lw_region(player, 'Dam Area', ['Sunken Treasure'], ['Dam', 'Dam WC', 'Dam WS', 'Dam NC', 'Dam EC']), create_lw_region(player, 'Dam Area', ['Sunken Treasure'], ['Dam', 'Dam WC', 'Dam WS', 'Dam NC', 'Dam EC']),
create_lw_region(player, 'South Pass Area', None, ['South Pass WC', 'South Pass NC', 'South Pass ES']), create_lw_region(player, 'South Pass Area', None, ['South Pass WC', 'South Pass NC', 'South Pass ES']),
create_lw_region(player, 'Octoballoon Area', None, ['Octoballoon Water Drop', 'Octoballoon WS', 'Octoballoon NE']), create_lw_region(player, 'Octoballoon Area', None, ['Octoballoon Water Drop', 'Octoballoon WS', 'Octoballoon NE']),
create_lw_region(player, 'Octoballoon Water', None, ['Octoballoon Pier', 'Octoballoon WC', 'Octoballoon Whirlpool'], 'Light World', Terrain.Water), create_lw_region(player, 'Octoballoon Water', None, ['Octoballoon Pier', 'Octoballoon Whirlpool', 'Octoballoon WC'], 'Light World', Terrain.Water),
create_lw_region(player, 'Octoballoon Water Ledge', None, ['Octoballoon Waterfall Water Drop', 'Octoballoon NW'], 'Light World', Terrain.Water), create_lw_region(player, 'Octoballoon Water Ledge', None, ['Octoballoon Waterfall Water Drop', 'Octoballoon NW'], 'Light World', Terrain.Water),
create_dw_region(player, 'Skull Woods Forest', None, ['Skull Woods Bush Rock (East)', 'Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)', create_dw_region(player, 'Skull Woods Forest', None, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)',
'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)', 'Skull Woods SE']), 'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)', 'Skull Woods Rock (East)', 'Skull Woods SE']),
create_dw_region(player, 'Skull Woods Portal Entry', None, ['Skull Woods Bush Rock (West)', 'Skull Woods SC']), create_dw_region(player, 'Skull Woods Portal Entry', None, ['Skull Woods Rock (West)', 'Skull Woods SC']),
create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section'], 'a deep, dark forest'), create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section'], 'a deep, dark forest'),
create_dw_region(player, 'Skull Woods Forgotten Path (Southwest)', None, ['Skull Woods Forgotten Bush (West)', 'Skull Woods SW']), create_dw_region(player, 'Skull Woods Forgotten Path (Southwest)', None, ['Skull Woods Forgotten Bush (West)', 'Skull Woods SW']),
create_dw_region(player, 'Skull Woods Forgotten Path (Northeast)', None, ['Skull Woods Forgotten Bush (East)', 'Skull Woods EN']), create_dw_region(player, 'Skull Woods Forgotten Path (Northeast)', None, ['Skull Woods Forgotten Bush (East)', 'Skull Woods EN']),
create_dw_region(player, 'Dark Lumberjack Area', None, ['Dark Lumberjack Shop', 'Dark Lumberjack WN', 'Dark Lumberjack SW']), create_dw_region(player, 'Dark Lumberjack Area', None, ['Dark Lumberjack Shop', 'Dark Lumberjack WN', 'Dark Lumberjack SW']),
create_dw_region(player, 'West Dark Death Mountain (Top)', None, ['Dark Death Mountain Drop (West)', 'GT Entry Approach', 'West Dark Death Mountain EN']), create_dw_region(player, 'West Dark Death Mountain (Top)', None, ['GT Approach', 'West Dark Death Mountain Drop', 'West Dark Death Mountain EN']),
create_dw_region(player, 'GT Approach', None, ['GT Entry Leave', 'Ganons Tower']), create_dw_region(player, 'GT Stairs', None, ['Ganons Tower', 'GT Leave']),
create_dw_region(player, 'West Dark Death Mountain (Bottom)', None, ['Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Teleporter (West)', 'West Dark Death Mountain ES']), create_dw_region(player, 'West Dark Death Mountain (Bottom)', None, ['Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Teleporter (West)', 'West Dark Death Mountain ES']),
create_dw_region(player, 'East Dark Death Mountain (Top)', None, ['Dark Death Mountain Drop (East)', 'Superbunny Cave (Top)', 'Hookshot Cave', 'East Dark Death Mountain WN', 'East Dark Death Mountain EN']), create_dw_region(player, 'East Dark Death Mountain (Top)', None, ['Superbunny Cave (Top)', 'Hookshot Cave', 'East Dark Death Mountain Drop', 'East Dark Death Mountain WN', 'East Dark Death Mountain EN']),
create_dw_region(player, 'East Dark Death Mountain (Bottom)', None, ['East Dark Death Mountain Bushes', 'Superbunny Cave (Bottom)', 'Dark Death Mountain Shop', 'Dark Death Mountain Teleporter (East)']), create_dw_region(player, 'Dark Death Mountain Floating Island', None, ['Hookshot Cave Back Entrance', 'Floating Island Drop'], 'a dark floating island'),
create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (West)', 'Dark Death Mountain Ledge (East)'], 'a dark ledge'),
create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Turtle Rock Isolated Ledge Entrance'], 'a dark vista'),
create_dw_region(player, 'East Dark Death Mountain (Bottom)', None, ['Superbunny Cave (Bottom)', 'Dark Death Mountain Shop', 'East Dark Death Mountain Bushes', 'East Dark Death Mountain Teleporter']),
create_dw_region(player, 'East Dark Death Mountain (Bushes)', None, []), create_dw_region(player, 'East Dark Death Mountain (Bushes)', None, []),
create_dw_region(player, 'East Dark Death Mountain (Bottom Left)', None, ['East Dark Death Mountain WS']), create_dw_region(player, 'East Dark Death Mountain (Bottom Left)', None, ['East Dark Death Mountain WS']),
create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)'], 'a dark ledge'), create_dw_region(player, 'Turtle Rock Area', None, ['Turtle Rock', 'Turtle Rock Tail Ledge Drop', 'Turtle Rock WN']),
create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Turtle Rock Isolated Ledge Entrance'], 'a dark vista'),
create_dw_region(player, 'Dark Death Mountain Floating Island', None, ['Floating Island Drop', 'Hookshot Cave Back Entrance'], 'a dark floating island'),
create_dw_region(player, 'Turtle Rock Area', None, ['Turtle Rock Tail Ledge Drop', 'Turtle Rock', 'Turtle Rock WN']),
create_dw_region(player, 'Turtle Rock Ledge', ['Turtle Medallion Pad'], ['Turtle Rock Ledge Drop', 'Turtle Rock Teleporter']), create_dw_region(player, 'Turtle Rock Ledge', ['Turtle Medallion Pad'], ['Turtle Rock Ledge Drop', 'Turtle Rock Teleporter']),
create_dw_region(player, 'Bumper Cave Area', None, ['Bumper Cave Entrance Rock', 'Bumper Cave NW', 'Bumper Cave SE']), create_dw_region(player, 'Bumper Cave Area', None, ['Bumper Cave Rock (Outer)', 'Bumper Cave NW', 'Bumper Cave SE']),
create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave Ledge Drop', 'Bumper Cave (Bottom)']), create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave (Top)', 'Bumper Cave Ledge Drop'], 'a ledge with an item'),
create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave Entrance Drop', 'Bumper Cave (Top)'], 'a ledge with an item'), create_dw_region(player, 'Bumper Cave Entry', None, ['Bumper Cave (Bottom)', 'Bumper Cave Rock (Inner)', 'Bumper Cave Entry Drop']),
create_dw_region(player, 'Catfish Area', ['Catfish'], ['Catfish SE']), create_dw_region(player, 'Catfish Area', ['Catfish'], ['Catfish SE']),
create_dw_region(player, 'Skull Woods Pass West Area', None, ['Skull Woods Pass Bush Row (West)', 'Skull Woods Pass NW', 'Skull Woods Pass SW']), create_dw_region(player, 'Skull Woods Pass West Area', None, ['Skull Woods Pass Bush Row (West)', '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 Bush (North)', 'Skull Woods Pass NE']), create_dw_region(player, 'Skull Woods Pass East Top Area', None, ['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, ['West Dark World Teleporter', 'Skull Woods Pass Bush (South)', 'Skull Woods Pass Rock (North)']), create_dw_region(player, 'Skull Woods Pass Portal Area', None, ['Skull Woods Pass Bush (South)', 'Skull Woods Pass Rock (North)', 'West Dark World Teleporter']),
create_dw_region(player, 'Skull Woods Pass East Bottom Area', None, ['Skull Woods Pass Rock (South)', 'Skull Woods Pass SE']), create_dw_region(player, 'Skull Woods Pass East Bottom Area', None, ['Skull Woods Pass Rock (South)', 'Skull Woods Pass SE']),
create_dw_region(player, 'Dark Fortune Area', None, ['Fortune Teller (Dark)', 'Dark Fortune NE', 'Dark Fortune EN', 'Dark Fortune ES', 'Dark Fortune SC']), create_dw_region(player, 'Dark Fortune Area', None, ['Fortune Teller (Dark)', 'Dark Fortune NE', 'Dark Fortune EN', 'Dark Fortune ES', 'Dark Fortune SC']),
create_dw_region(player, 'Outcast Pond Area', None, ['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, 'Outcast Pond Area', None, ['Outcast Pond NE', 'Outcast Pond WN', 'Outcast Pond WS', 'Outcast Pond SW', 'Outcast Pond SE', 'Outcast Pond EN', 'Outcast Pond ES']),
@@ -164,35 +175,36 @@ def create_regions(world, player):
create_dw_region(player, 'Qirn Jump Area', None, ['Qirn Jump Water Drop', 'Qirn Jump WC', 'Qirn Jump SW']), create_dw_region(player, 'Qirn Jump Area', None, ['Qirn Jump Water Drop', 'Qirn Jump WC', 'Qirn Jump SW']),
create_dw_region(player, 'Qirn Jump East Bank', None, ['Qirn Jump East Water Drop', 'Qirn Jump SE', 'Qirn Jump EC', 'Qirn Jump ES']), create_dw_region(player, 'Qirn Jump East Bank', None, ['Qirn Jump East Water Drop', 'Qirn Jump SE', 'Qirn Jump EC', 'Qirn Jump ES']),
create_dw_region(player, 'Qirn Jump Water', None, ['Qirn Jump Pier', 'Qirn Jump Whirlpool', 'Qirn Jump EN', 'Qirn Jump SC'], 'Dark World', Terrain.Water), create_dw_region(player, 'Qirn Jump Water', None, ['Qirn Jump Pier', 'Qirn Jump Whirlpool', 'Qirn Jump EN', 'Qirn Jump SC'], 'Dark World', Terrain.Water),
create_dw_region(player, 'Dark Witch Area', None, ['Dark Witch Water Drop', 'Dark Witch Rock (South)', 'Dark Potion Shop', 'Dark Witch WC', 'Dark Witch WS']), create_dw_region(player, 'Dark Witch Area', None, ['Dark Potion Shop', 'Dark Witch Water Drop', 'Dark Witch Rock (South)', 'Dark Witch WC', 'Dark Witch WS']),
create_dw_region(player, 'Dark Witch Northeast', None, ['Dark Witch Northeast Water Drop', 'Dark Witch Rock (North)', 'Dark Witch EC']), create_dw_region(player, 'Dark Witch Northeast', None, ['Dark Witch Northeast Water Drop', 'Dark Witch Rock (North)', 'Dark Witch EC']),
create_dw_region(player, 'Dark Witch Water', None, ['Dark Witch WN', 'Dark Witch EN'], 'Dark World', Terrain.Water), create_dw_region(player, 'Dark Witch Water', None, ['Dark Witch WN', 'Dark Witch EN'], 'Dark World', Terrain.Water),
create_dw_region(player, 'Catfish Approach Area', None, ['Catfish Approach Rocks (West)', 'Catfish Approach Bottom Ledge Drop', 'Catfish Approach Water Drop', 'Catfish Approach WC']), create_dw_region(player, 'Catfish Approach Area', None, ['Catfish Approach Rocks (West)', 'Catfish Approach Bottom Ledge Drop', 'Catfish Approach Water Drop', 'Catfish Approach WC']),
create_dw_region(player, 'Catfish Approach Ledge', None, ['Catfish Approach Rocks (East)', 'Catfish Approach Ledge Drop', 'Catfish Approach NE']), create_dw_region(player, 'Catfish Approach Ledge', None, ['Catfish Approach Rocks (East)', 'Catfish Approach Ledge Drop', 'Catfish Approach NE']),
create_dw_region(player, 'Catfish Approach Water', None, ['Catfish Approach WN'], 'Dark World', Terrain.Water), create_dw_region(player, 'Catfish Approach Water', None, ['Catfish Approach WN'], 'Dark World', Terrain.Water),
create_dw_region(player, 'Village of Outcasts Area', None, ['Village of Outcasts Pegs', 'Chest Game', 'Thieves Town', 'C-Shaped House', 'Brewery', 'Village of Outcasts NW', 'Village of Outcasts NC', 'Village of Outcasts NE', 'Village of Outcasts ES', 'Village of Outcasts SE']), create_dw_region(player, 'Village of Outcasts', None, ['Chest Game', 'Thieves Town', 'C-Shaped House', 'Brewery', 'Bush Yard Pegs (Outer)',
create_dw_region(player, 'Dark Grassy Lawn', None, ['Grassy Lawn Pegs', 'Dark World Shop']), 'Village of Outcasts NW', 'Village of Outcasts NC', 'Village of Outcasts NE', 'Village of Outcasts ES', 'Village of Outcasts SE']),
create_dw_region(player, 'Shield Shop Area', None, ['Shield Shop Fence (Outer) Ledge Drop', 'Shield Shop NW', 'Shield Shop NE']), create_dw_region(player, 'Village of Outcasts Bush Yard', None, ['Dark World Shop', 'Bush Yard Pegs (Inner)']),
create_dw_region(player, 'Shield Shop Fence', None, ['Shield Shop Fence (Inner) Ledge Drop', 'Red Shield Shop']), create_dw_region(player, 'Shield Shop Area', None, ['Shield Shop Fence Drop (Outer)', 'Shield Shop NW', 'Shield Shop NE']),
create_dw_region(player, 'Pyramid Area', ['Pyramid Crack', 'Pyramid'], ['Pyramid Crack', 'Pyramid Hole', 'Pyramid ES']), create_dw_region(player, 'Shield Shop Fence', None, ['Red Shield Shop', 'Shield Shop Fence Drop (Inner)']),
create_dw_region(player, 'Pyramid Area', ['Pyramid Crack', 'Pyramid'], ['Pyramid Hole', 'Pyramid Crack', 'Pyramid ES']),
create_dw_region(player, 'Pyramid Crack', None, ['Pyramid Fairy']), create_dw_region(player, 'Pyramid Crack', None, ['Pyramid Fairy']),
create_dw_region(player, 'Pyramid Exit Ledge', None, ['Pyramid Exit Ledge Drop', 'Pyramid Entrance']), create_dw_region(player, 'Pyramid Exit Ledge', None, ['Pyramid Entrance', 'Pyramid Exit Ledge Drop']),
create_dw_region(player, 'Pyramid Pass', None, ['Post Aga Inverted Teleporter', 'Pyramid SW', 'Pyramid SE']), create_dw_region(player, 'Pyramid Pass', None, ['Post Aga Teleporter', 'Pyramid SW', 'Pyramid SE']),
create_dw_region(player, 'Pyramid Water', None, [], 'Dark World', Terrain.Water), create_dw_region(player, 'Pyramid Water', None, [], 'Dark World', Terrain.Water),
create_dw_region(player, 'Broken Bridge Area', None, ['Broken Bridge Hammer Rock (South)', 'Broken Bridge Water Drop', 'Broken Bridge SW']), create_dw_region(player, 'Broken Bridge Area', None, ['Broken Bridge Hammer Rock (South)', 'Broken Bridge Water Drop', 'Broken Bridge SW']),
create_dw_region(player, 'Broken Bridge Northeast', None, ['Broken Bridge Hammer Rock (North)', 'Broken Bridge Hookshot Gap', 'Broken Bridge Northeast Water Drop', 'Broken Bridge NE']), create_dw_region(player, 'Broken Bridge Northeast', None, ['Broken Bridge Hammer Rock (North)', 'Broken Bridge Hookshot Gap', 'Broken Bridge Northeast Water Drop', 'Broken Bridge NE']),
create_dw_region(player, 'Broken Bridge West', None, ['Broken Bridge West Water Drop', 'Broken Bridge NW']), create_dw_region(player, 'Broken Bridge West', None, ['Broken Bridge West Water Drop', 'Broken Bridge NW']),
create_dw_region(player, 'Broken Bridge Water', None, ['Broken Bridge NC'], 'Dark World', Terrain.Water), create_dw_region(player, 'Broken Bridge Water', None, ['Broken Bridge NC'], 'Dark World', Terrain.Water),
create_dw_region(player, 'Palace of Darkness Area', None, ['Palace of Darkness Hint', 'Palace of Darkness', 'Palace of Darkness SW', 'Palace of Darkness SE']), create_dw_region(player, 'Palace of Darkness Area', None, ['Palace of Darkness Hint', 'Palace of Darkness', 'Palace of Darkness SW', 'Palace of Darkness SE']),
create_dw_region(player, 'Darkness Cliff', None, ['Dark Dunes Ledge Drop', 'Hammer Bridge North Ledge Drop', 'Dark Tree Line Ledge Drop', 'Palace of Darkness Ledge Drop']), create_dw_region(player, 'Darkness Cliff', None, ['Dark Dunes Cliff Ledge Drop', 'Hammer Bridge North Cliff Ledge Drop', 'Dark Tree Line Cliff Ledge Drop', 'Palace of Darkness Cliff Ledge Drop']),
create_dw_region(player, 'Hammer Pegs Area', ['Dark Blacksmith Ruins'], ['Hammer Peg Cave', 'Peg Area Rocks (East)']),
create_dw_region(player, 'Hammer Pegs Entry', None, ['Peg Area Rocks (West)', 'Hammer Pegs WS']), create_dw_region(player, 'Hammer Pegs Entry', None, ['Peg Area Rocks (West)', 'Hammer Pegs WS']),
create_dw_region(player, 'Hammer Pegs Area', ['Dark Blacksmith Ruins'], ['Peg Area Rocks (East)', 'Hammer Peg Cave']),
create_dw_region(player, 'Dark Dunes Area', None, ['Dark Dunes NW', 'Dark Dunes WN', 'Dark Dunes SC']), create_dw_region(player, 'Dark Dunes Area', None, ['Dark Dunes NW', 'Dark Dunes WN', 'Dark Dunes SC']),
create_dw_region(player, 'Dig Game Area', ['Digging Game'], ['Dig Game To Ledge Drop', 'Dig Game ES']), create_dw_region(player, 'Dig Game Area', ['Digging Game'], ['Dig Game To Ledge Drop', 'Dig Game ES']),
create_dw_region(player, 'Dig Game Ledge', None, ['Dig Game Ledge Drop', 'Dig Game EC']), create_dw_region(player, 'Dig Game Ledge', None, ['Dig Game Ledge Drop', 'Dig Game EC']),
create_dw_region(player, 'Frog Area', None, ['Frog Ledge Drop', 'Frog Rock (Outer)', 'Archery Game Rock (North)', 'Frog NE']), create_dw_region(player, 'Frog Area', None, ['Frog Ledge Drop', 'Frog Rock (Outer)', 'Archery Game Rock (North)', 'Frog NE']),
create_dw_region(player, 'Frog Prison', ['Frog'], ['Frog Rock (Inner)']), create_dw_region(player, 'Frog Prison', ['Frog'], ['Frog Rock (Inner)']),
create_dw_region(player, 'Archery Game Area', None, ['Archery Game Rock (South)', 'Archery Game', 'Frog WC', 'Frog WS', 'Frog ES']), create_dw_region(player, 'Archery Game Area', None, ['Archery Game', 'Archery Game Rock (South)', 'Frog WC', 'Frog WS', 'Frog ES']),
create_dw_region(player, 'Stumpy Area', ['Stumpy'], ['Stumpy SC']), create_dw_region(player, 'Stumpy Area', ['Stumpy'], ['Stumpy SC']),
create_dw_region(player, 'Stumpy Pass', None, ['Stumpy WS', 'Stumpy SW']), create_dw_region(player, 'Stumpy Pass', None, ['Stumpy WS', 'Stumpy SW']),
create_dw_region(player, 'Dark Bonk Rocks Area', None, ['Bonk Fairy (Dark)', 'Dark Bonk Rocks NW', 'Dark Bonk Rocks SW', 'Dark Bonk Rocks EN', 'Dark Bonk Rocks EC', 'Dark Bonk Rocks ES']), create_dw_region(player, 'Dark Bonk Rocks Area', None, ['Bonk Fairy (Dark)', 'Dark Bonk Rocks NW', 'Dark Bonk Rocks SW', 'Dark Bonk Rocks EN', 'Dark Bonk Rocks EC', 'Dark Bonk Rocks ES']),
@@ -200,30 +212,32 @@ def create_regions(world, player):
create_dw_region(player, 'Hammer Bridge North Area', None, ['Hammer Bridge Pegs (North)', 'Hammer Bridge Water Drop', 'Hammer Bridge NC', 'Hammer Bridge EN']), create_dw_region(player, 'Hammer Bridge North Area', None, ['Hammer Bridge Pegs (North)', 'Hammer Bridge Water Drop', 'Hammer Bridge NC', 'Hammer Bridge EN']),
create_dw_region(player, 'Hammer Bridge South Area', None, ['Hammer Bridge Pegs (South)', 'Hammer Bridge WS', 'Hammer Bridge SC']), create_dw_region(player, 'Hammer Bridge South Area', None, ['Hammer Bridge Pegs (South)', 'Hammer Bridge WS', 'Hammer Bridge SC']),
create_dw_region(player, 'Hammer Bridge Water', None, ['Hammer Bridge Pier', 'Hammer Bridge EC'], 'Dark World', Terrain.Water), create_dw_region(player, 'Hammer Bridge Water', None, ['Hammer Bridge Pier', 'Hammer Bridge EC'], 'Dark World', Terrain.Water),
create_dw_region(player, 'Dark Central Cliffs', None, ['Dark Bonk Rocks Cliff Ledge Drop', 'Bomb Shop Cliff Ledge Drop', 'Hammer Bridge South Cliff Ledge Drop', 'Ice Lake Area Cliff Ledge Drop', 'Ice Palace Island FAWT Ledge Drop', create_dw_region(player, 'Dark Central Cliffs', None, ['Dark Bonk Rocks Cliff Ledge Drop', 'Bomb Shop Cliff Ledge Drop', 'Hammer Bridge South Cliff Ledge Drop', 'Ice Lake Northwest Cliff Ledge Drop', 'Ice Palace Island FAWT Ledge Drop',
'Hammer Bridge EC Cliff Water Drop', 'Dark Tree Line WC Cliff Water Drop', 'Dark C Whirlpool Outer Cliff Ledge Drop', 'Dark C Whirlpool Cliff Ledge Drop', 'Dark C Whirlpool Portal Cliff Ledge Drop', 'Hype Cliff Ledge Drop']), 'Hammer Bridge EC Cliff Water Drop', 'Dark Tree Line WC Cliff Water Drop', 'Dark C Whirlpool Outer Cliff Ledge Drop', 'Dark C Whirlpool Cliff Ledge Drop', 'Dark C Whirlpool Portal Cliff Ledge Drop', 'Hype Cliff Ledge Drop']),
create_dw_region(player, 'Dark Tree Line Area', None, ['Dark Lake Hylia Fairy', 'Dark Tree Line WN', 'Dark Tree Line NW', 'Dark Tree Line SE']), create_dw_region(player, 'Dark Tree Line Area', None, ['Dark Lake Hylia Fairy', 'Dark Tree Line WN', 'Dark Tree Line NW', 'Dark Tree Line SE']),
create_dw_region(player, 'Dark Tree Line Water', None, ['Dark Tree Line WC', 'Dark Tree Line SC'], 'Dark World', Terrain.Water), create_dw_region(player, 'Dark Tree Line Water', None, ['Dark Tree Line WC', 'Dark Tree Line SC'], 'Dark World', Terrain.Water),
create_dw_region(player, 'Palace of Darkness Nook Area', None, ['East Dark World Hint', 'East Dark World Teleporter', 'Palace of Darkness Nook NE']), create_dw_region(player, 'Darkness Nook Area', None, ['East Dark World Hint', 'East Dark World Teleporter', 'Palace of Darkness Nook NE']),
create_dw_region(player, 'Misery Mire Area', None, ['Mire Shed', 'Misery Mire', 'Mire Fairy', 'Mire Hint']), create_dw_region(player, 'Mire Area', None, ['Mire Shed', 'Misery Mire', 'Mire Fairy', 'Mire Hint']),
create_dw_region(player, 'Misery Mire Teleporter Ledge', None, ['Misery Mire Teleporter Ledge Drop', 'Misery Mire Teleporter']), create_dw_region(player, 'Mire Teleporter Ledge', None, ['Mire Teleporter Ledge Drop', 'Mire Teleporter']),
create_dw_region(player, 'Mire Northeast Cliffs', None, ['Mire Cliff Ledge Drop', 'Dark Checkerboard Cliff Ledge Drop', 'Archery Game Cliff Ledge Drop', 'Stumpy Approach Cliff Ledge Drop', 'Mire C Whirlpool Cliff Ledge Drop', 'Swamp Nook Cliff Ledge Drop', 'Swamp Cliff Ledge Drop', 'Mirror To Bombos Tablet Ledge']), create_dw_region(player, 'Mire Northern Cliffs', None, ['Mire Cliff Ledge Drop', 'Dark Checkerboard Cliff Ledge Drop', 'Archery Game Cliff Ledge Drop', 'Stumpy Approach Cliff Ledge Drop', 'Mire C Whirlpool Cliff Ledge Drop', 'Swamp Nook Cliff Ledge Drop', 'Swamp Cliff Ledge Drop', 'Mirror To Bombos Tablet Ledge']),
create_dw_region(player, 'Stumpy Approach Area', None, ['Stumpy Approach Bush (South)', 'Stumpy Approach NW', 'Stumpy Approach EC']), create_dw_region(player, 'Stumpy Approach Area', None, ['Stumpy Approach Bush (South)', 'Stumpy Approach NW', 'Stumpy Approach EC']),
create_dw_region(player, 'Stumpy Approach Bush Entry', None, ['Stumpy Approach Bush (North)', 'Stumpy Approach NC']), create_dw_region(player, 'Stumpy Approach Bush Entry', None, ['Stumpy Approach Bush (North)', 'Stumpy Approach NC']),
create_dw_region(player, 'Dark C Whirlpool Area', None, ['Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Pegs (Right)', 'Dark C Whirlpool Water Entry', 'Dark C Whirlpool EN', 'Dark C Whirlpool ES', 'Dark C Whirlpool SC']), create_dw_region(player, 'Dark C Whirlpool Area', None, ['Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Pegs (Outer)', 'Dark C Whirlpool Water Entry',
create_dw_region(player, 'Dark C Whirlpool Portal Area', None, ['Dark C Whirlpool Pegs (Left)', 'South Dark World Teleporter']), 'Dark C Whirlpool EN', 'Dark C Whirlpool ES', 'Dark C Whirlpool SC']),
create_dw_region(player, 'Dark C Whirlpool Portal Area', None, ['Dark C Whirlpool Pegs (Inner)', 'South Dark World Teleporter']),
create_dw_region(player, 'Dark C Whirlpool Water', None, ['Dark C Whirlpool Landing', 'Dark C Whirlpool EC'], 'Dark World', Terrain.Water), create_dw_region(player, 'Dark C Whirlpool Water', None, ['Dark C Whirlpool Landing', 'Dark C Whirlpool EC'], 'Dark World', Terrain.Water),
create_dw_region(player, 'Dark C Whirlpool Outer Area', None, ['Dark C Whirlpool Rock (Top)', 'Dark C Whirlpool WC', 'Dark C Whirlpool NW']), create_dw_region(player, 'Dark C Whirlpool Outer Area', None, ['Dark C Whirlpool Rock (Top)', 'Dark C Whirlpool WC', 'Dark C Whirlpool NW']),
create_dw_region(player, 'Hype Cave Area', None, ['Hype Cave Water Entry', 'Hype Cave', 'Hype Cave NC', 'Hype Cave WN', 'Hype Cave WS', 'Hype Cave SC']), create_dw_region(player, 'Hype Cave Area', None, ['Hype Cave', 'Hype Cave Water Entry', 'Hype Cave NC', 'Hype Cave WN', 'Hype Cave WS', 'Hype Cave SC']),
create_dw_region(player, 'Hype Cave Water', None, ['Hype Cave Landing', 'Hype Cave WC'], 'Dark World', Terrain.Water), create_dw_region(player, 'Hype Cave Water', None, ['Hype Cave Landing', 'Hype Cave WC'], 'Dark World', Terrain.Water),
create_dw_region(player, 'Ice Lake Area', None, ['Ice Lake Water Drop', 'Dark Lake Hylia Shop', 'Ice Lake NW']), create_dw_region(player, 'Ice Lake Northwest Bank', None, ['Dark Lake Hylia Shop', 'Ice Lake Water Drop', 'Ice Lake NW']),
create_dw_region(player, 'Ice Lake Northeast Bank', None, ['Ice Lake Northeast Water Drop', 'Ice Lake NE']), create_dw_region(player, 'Ice Lake Northeast Bank', None, ['Ice Lake Northeast Water Drop', 'Ice Lake Iceberg Bomb Jump', 'Ice Lake NE']),
create_dw_region(player, 'Ice Lake Ledge (West)', None, ['Ice Lake Southwest Water Drop', 'Ice Lake WS']), create_dw_region(player, 'Ice Lake Southwest Ledge', None, ['Ice Lake Southwest Water Drop', 'Ice Lake WS']),
create_dw_region(player, 'Ice Lake Ledge (East)', None, ['Ice Lake Southeast Water Drop', 'Ice Lake ES']), create_dw_region(player, 'Ice Lake Southeast Ledge', None, ['Ice Lake Southeast Water Drop', 'Ice Lake ES']),
create_dw_region(player, 'Ice Lake Water', None, ['Ice Lake Northeast Pier', 'Ice Lake Moat Bomb Jump', 'Ice Lake NC', 'Ice Lake EC'], 'Dark World', Terrain.Water), create_dw_region(player, 'Ice Lake Water', None, ['Ice Lake Northeast Pier', 'Ice Lake NC', 'Ice Lake EC'], 'Dark World', Terrain.Water),
create_dw_region(player, 'Ice Lake Moat', None, ['Ice Palace Teleporter', 'Ice Lake Moat Water Entry', 'Ice Lake Northeast Pier Hop']), create_dw_region(player, 'Ice Lake Iceberg', None, ['Ice Lake Iceberg Water Entry', 'Ice Lake Northeast Pier Hop', 'Ice Lake Teleporter']),
create_dw_region(player, 'Ice Palace Area', None, ['Ice Palace']), create_dw_region(player, 'Ice Palace Area', None, ['Ice Palace']),
create_dw_region(player, 'Shopping Mall Area', None, ['Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave', 'Shopping Mall SW', 'Shopping Mall SE']), create_dw_region(player, 'Shopping Mall Area', None, ['Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave', 'Shopping Mall Water Drop', 'Shopping Mall SE']),
create_dw_region(player, 'Shopping Mall Water', None, ['Shopping Mall Pier', 'Shopping Mall SW'], 'Dark World', Terrain.Water),
create_dw_region(player, 'Swamp Nook Area', None, ['Swamp Nook EC', 'Swamp Nook ES']), create_dw_region(player, 'Swamp Nook Area', None, ['Swamp Nook EC', 'Swamp Nook ES']),
create_dw_region(player, 'Swamp Area', None, ['Swamp Palace', 'Swamp WC', 'Swamp WS', 'Swamp NC', 'Swamp EC']), create_dw_region(player, 'Swamp Area', None, ['Swamp Palace', 'Swamp WC', 'Swamp WS', 'Swamp NC', 'Swamp EC']),
create_dw_region(player, 'Dark South Pass Area', None, ['Dark South Pass WC', 'Dark South Pass NC', 'Dark South Pass ES']), create_dw_region(player, 'Dark South Pass Area', None, ['Dark South Pass WC', 'Dark South Pass NC', 'Dark South Pass ES']),
@@ -1096,42 +1110,31 @@ def _create_region(player, name, type, hint='Hyrule', locations=None, exits=None
def mark_light_dark_world_regions(world, player): def mark_light_dark_world_regions(world, player):
# cross world caves may have some sections marked as both in_light_world, and in_dark_work. # cross world caves may have some sections marked as both in_light_world, and in_dark_work.
# That is ok. the bunny logic will check for this case and incorporate special rules. # That is ok. the bunny logic will check for this case and incorporate special rules.
def mark_light(): queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.LightWorld)
queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.LightWorld) seen = set(queue)
seen = set(queue) while queue:
while queue: current = queue.popleft()
current = queue.popleft() current.is_light_world = True
current.is_light_world = True for exit in current.exits:
for exit in current.exits: if exit.connected_region is None or exit.connected_region.type == RegionType.DarkWorld:
if exit.connected_region is None or exit.connected_region.type == RegionType.DarkWorld: # todo: remove none check # Don't venture into the dark world
# Don't venture into the dark world continue
continue if exit.connected_region not in seen:
if exit.connected_region not in seen: seen.add(exit.connected_region)
seen.add(exit.connected_region) queue.append(exit.connected_region)
queue.append(exit.connected_region)
def mark_dark(): queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.DarkWorld)
queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.DarkWorld) seen = set(queue)
seen = set(queue) while queue:
while queue: current = queue.popleft()
current = queue.popleft() current.is_dark_world = True
current.is_dark_world = True for exit in current.exits:
for exit in current.exits: if exit.connected_region is None or exit.connected_region.type == RegionType.LightWorld:
if exit.connected_region is not None: # Don't venture into the light world
if exit.connected_region.type == RegionType.LightWorld: continue
# Don't venture into the light world if exit.connected_region not in seen:
continue seen.add(exit.connected_region)
if exit.connected_region not in seen: queue.append(exit.connected_region)
seen.add(exit.connected_region)
queue.append(exit.connected_region)
# Note: I don't see why the order would matter, but the original Inverted code reversed the order
if world.mode[player] != 'inverted':
mark_light()
mark_dark()
else:
mark_dark()
mark_light()
def create_shops(world, player): def create_shops(world, player):
@@ -1269,8 +1272,8 @@ def pot_address(pot_index, super_tile):
bonk_prize_table = { bonk_prize_table = {
'Lost Woods Hideout Tree': (0x00, 0x10, False, '', 'Lost Woods East Area', 'in a tree'), 'Lost Woods Hideout Tree': (0x00, 0x10, False, '', 'Lost Woods East Area', 'in a tree'),
'Death Mountain Bonk Rocks': (0x01, 0x10, False, '', 'East Death Mountain (Top East)', 'encased in stone'), 'Death Mountain Bonk Rocks': (0x01, 0x10, False, '', 'East Death Mountain (Top East)', 'encased in stone'),
'Mountain Entry Pull Tree': (0x02, 0x10, False, '', 'Mountain Entry Area', 'in a tree'), 'Mountain Pass Pull Tree': (0x02, 0x10, False, '', 'Mountain Pass Area', 'in a tree'),
'Mountain Entry Southeast Tree': (0x03, 0x08, False, '', 'Mountain Entry Area', 'in a tree'), 'Mountain Pass Southeast Tree': (0x03, 0x08, False, '', 'Mountain Pass Area', 'in a tree'),
'Lost Woods Pass West Tree': (0x04, 0x10, False, '', 'Lost Woods Pass West Area', 'in a tree'), 'Lost Woods Pass West Tree': (0x04, 0x10, False, '', 'Lost Woods Pass West Area', 'in a tree'),
'Kakariko Portal Tree': (0x05, 0x08, False, '', 'Lost Woods Pass East Top Area', 'in a tree'), 'Kakariko Portal Tree': (0x05, 0x08, False, '', 'Lost Woods Pass East Top Area', 'in a tree'),
'Fortune Bonk Rocks': (0x06, 0x10, False, '', 'Kakariko Fortune Area', 'encased in stone'), 'Fortune Bonk Rocks': (0x06, 0x10, False, '', 'Kakariko Fortune Area', 'encased in stone'),
@@ -1279,8 +1282,8 @@ bonk_prize_table = {
'Sanctuary Tree': (0x09, 0x08, False, '', 'Sanctuary Area', 'in a tree'), 'Sanctuary Tree': (0x09, 0x08, False, '', 'Sanctuary Area', 'in a tree'),
'River Bend West Tree': (0x0a, 0x10, True, '', 'River Bend Area', 'in a tree'), 'River Bend West Tree': (0x0a, 0x10, True, '', 'River Bend Area', 'in a tree'),
'River Bend East Tree': (0x0b, 0x08, False, '', 'River Bend East Bank', 'in a tree'), 'River Bend East Tree': (0x0b, 0x08, False, '', 'River Bend East Bank', 'in a tree'),
'Blinds Hideout Tree': (0x0c, 0x10, False, '', 'Kakariko Area', 'in a tree'), 'Blinds Hideout Tree': (0x0c, 0x10, False, '', 'Kakariko Village', 'in a tree'),
'Kakariko Welcome Tree': (0x0d, 0x08, False, '', 'Kakariko Area', 'in a tree'), 'Kakariko Welcome Tree': (0x0d, 0x08, False, '', 'Kakariko Village', 'in a tree'),
'Forgotten Forest Southwest Tree': (0x0e, 0x10, False, '', 'Forgotten Forest Area', 'in a tree'), 'Forgotten Forest Southwest Tree': (0x0e, 0x10, False, '', 'Forgotten Forest Area', 'in a tree'),
'Forgotten Forest Central Tree': (0x0f, 0x08, False, '', 'Forgotten Forest Area', 'in a tree'), 'Forgotten Forest Central Tree': (0x0f, 0x08, False, '', 'Forgotten Forest Area', 'in a tree'),
#'Forgotten Forest Southeast Tree': (0x10, 0x04, False, '', 'Forgotten Forest Area', 'in a tree'), #'Forgotten Forest Southeast Tree': (0x10, 0x04, False, '', 'Forgotten Forest Area', 'in a tree'),
@@ -1383,6 +1386,8 @@ flooded_keys_reverse = {
'Swamp Palace - Trench 1 Pot Key': 'Trench 1 Switch', 'Swamp Palace - Trench 1 Pot Key': 'Trench 1 Switch',
'Swamp Palace - Trench 2 Pot Key': 'Trench 2 Switch' 'Swamp Palace - Trench 2 Pot Key': 'Trench 2 Switch'
} }
location_table = {'Mushroom': (0x180013, 0x186338, False, 'in the woods'), location_table = {'Mushroom': (0x180013, 0x186338, False, 'in the woods'),
'Bottle Merchant': (0x2eb18, 0x186339, False, 'with a merchant'), 'Bottle Merchant': (0x2eb18, 0x186339, False, 'with a merchant'),
'Flute Spot': (0x18014a, 0x18633d, False, 'underground'), 'Flute Spot': (0x18014a, 0x18633d, False, 'underground'),
+1 -1
View File
@@ -38,7 +38,7 @@ from source.dungeon.RoomList import Room0127
JAP10HASH = '03a63945398191337e896e5771f77173' JAP10HASH = '03a63945398191337e896e5771f77173'
RANDOMIZERBASEHASH = '37055215524a94f346e892b7a716c2ef' RANDOMIZERBASEHASH = '5dc49b073decbc3b66635157ddedf05c'
class JsonRom(object): class JsonRom(object):
+145 -164
View File
@@ -72,7 +72,7 @@ def set_rules(world, player):
if not world.is_tile_swapped(0x18, player): if not world.is_tile_swapped(0x18, player):
if not world.is_copied_world: if not world.is_copied_world:
# Commented out below, this would be needed for rando implementations where Inverted requires flute activation in bunny territory # Commented out below, this would be needed for rando implementations where Inverted requires flute activation in bunny territory
# kak_region = self.world.get_region('Kakariko Area', player) # kak_region = self.world.get_region('Kakariko Village', player)
# add_rule(world.get_location('Flute Activation', player), lambda state: state.has('Ocarina', player) and state.is_not_bunny(kak_region, player)) # add_rule(world.get_location('Flute Activation', player), lambda state: state.has('Ocarina', player) and state.is_not_bunny(kak_region, player))
add_rule(world.get_location('Flute Activation', player), lambda state: state.has('Ocarina', player)) add_rule(world.get_location('Flute Activation', player), lambda state: state.has('Ocarina', player))
@@ -134,6 +134,7 @@ def set_defeat_dungeon_boss_rule(location):
# Lambda required to defer evaluation of dungeon.boss since it will change later if boos shuffle is used # Lambda required to defer evaluation of dungeon.boss since it will change later if boos shuffle is used
set_rule(location, lambda state: location.parent_region.dungeon.boss.can_defeat(state)) set_rule(location, lambda state: location.parent_region.dungeon.boss.can_defeat(state))
def set_always_allow(spot, rule): def set_always_allow(spot, rule):
spot.always_allow = rule spot.always_allow = rule
@@ -209,19 +210,19 @@ def global_rules(world, player):
set_rule(world.get_entrance('Flute Spot 8', player), lambda state: state.can_flute(player)) set_rule(world.get_entrance('Flute Spot 8', player), lambda state: state.can_flute(player))
# overworld location rules # overworld location rules
set_rule(world.get_location('Master Sword Pedestal', player), lambda state: state.has('Red Pendant', player) and state.has('Blue Pendant', player) and state.has('Green Pendant', player))
set_rule(world.get_location('Ether Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has_beam_sword(player)) set_rule(world.get_location('Ether Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has_beam_sword(player))
set_rule(world.get_location('Old Man', player), lambda state: state.has('Return Old Man', player)) set_rule(world.get_location('Old Man', player), lambda state: state.has('Return Old Man', player))
set_rule(world.get_location('Old Man Drop Off', player), lambda state: state.has('Escort Old Man', player)) set_rule(world.get_location('Old Man Drop Off', player), lambda state: state.has('Escort Old Man', player))
set_rule(world.get_location('Bombos Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has_beam_sword(player)) set_rule(world.get_location('Turtle Medallion Pad', player), lambda state: state.has_sword(player) and state.has_turtle_rock_medallion(player)) # sword required to cast magic (!)
set_rule(world.get_location('Zora\'s Ledge', player), lambda state: state.has('Flippers', player))
set_rule(world.get_location('Flute Spot', player), lambda state: state.has('Shovel', player)) set_rule(world.get_location('Flute Spot', player), lambda state: state.has('Shovel', player))
set_rule(world.get_location('Bombos Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has_beam_sword(player))
set_rule(world.get_location('Middle Aged Man', player), lambda state: state.has('Pick Up Purple Chest', player)) # Can S&Q with chest set_rule(world.get_location('Middle Aged Man', player), lambda state: state.has('Pick Up Purple Chest', player)) # Can S&Q with chest
set_rule(world.get_location('Purple Chest', player), lambda state: state.has('Deliver Purple Chest', player)) # Can S&Q with chest set_rule(world.get_location('Purple Chest', player), lambda state: state.has('Deliver Purple Chest', player)) # Can S&Q with chest
set_rule(world.get_location('Sunken Treasure', player), lambda state: state.has('Open Floodgate', player)) set_rule(world.get_location('Sunken Treasure', player), lambda state: state.has('Open Floodgate', player))
set_rule(world.get_location('Turtle Medallion Pad', player), lambda state: state.has_sword(player) and state.has_turtle_rock_medallion(player)) # sword required to cast magic (!)
set_rule(world.get_location('Dark Blacksmith Ruins', player), lambda state: state.has('Return Smith', player)) set_rule(world.get_location('Dark Blacksmith Ruins', player), lambda state: state.has('Return Smith', player))
set_rule(world.get_location('Big Bomb', player), lambda state: state.has('Crystal 5', player) and state.has('Crystal 6', player)) set_rule(world.get_location('Big Bomb', player), lambda state: state.has('Crystal 5', player) and state.has('Crystal 6', player))
set_rule(world.get_location('Master Sword Pedestal', player), lambda state: state.has('Red Pendant', player) and state.has('Blue Pendant', player) and state.has('Green Pendant', player))
set_rule(world.get_location('Zora\'s Ledge', player), lambda state: state.has('Flippers', player))
# bonk items # bonk items
if world.shuffle_bonk_drops[player]: if world.shuffle_bonk_drops[player]:
@@ -266,51 +267,70 @@ def global_rules(world, player):
set_rule(world.get_entrance('DM Hammer Bridge (East)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('DM Hammer Bridge (East)', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('DM Broken Bridge (West)', player), lambda state: state.has('Hookshot', player)) set_rule(world.get_entrance('DM Broken Bridge (West)', player), lambda state: state.has('Hookshot', player))
set_rule(world.get_entrance('DM Broken Bridge (East)', player), lambda state: state.has('Hookshot', player)) set_rule(world.get_entrance('DM Broken Bridge (East)', player), lambda state: state.has('Hookshot', player))
set_rule(world.get_entrance('Fairy Ascension Rocks (North)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Fairy Ascension Rocks (Inner)', player), lambda state: state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('Fairy Ascension Rocks (South)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Fairy Ascension Rocks (Outer)', player), lambda state: state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('TR Pegs Ledge Entry', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('TR Pegs Ledge Entry', 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 Pass Rock (Outer)', 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('Mountain Pass Rock (Inner)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Zora Waterfall Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Zora Waterfall Water Entry', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Zora Waterfall Approach', player), lambda state: state.has('Flippers', 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 (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 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 (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('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('Kakariko Pond Whirlpool', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Kings Grave Inner Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Kings Grave Rocks (Outer)', 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)) set_rule(world.get_entrance('Kings Grave Rocks (Inner)', player), lambda state: state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('River Bend Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Potion Shop Rock (North)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Potion Shop Rock (North)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Potion Shop Rock (South)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Zora Approach Rocks (West)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player)) set_rule(world.get_entrance('Zora Approach Rocks (West)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player))
set_rule(world.get_entrance('Zora Approach Rocks (East)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player)) set_rule(world.get_entrance('Zora Approach Rocks (East)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player))
set_rule(world.get_entrance('Hyrule Castle Inner East Rock', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Hyrule Castle East Rock (Inner)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Hyrule Castle Outer East Rock', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Hyrule Castle East Rock (Outer)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Bat Cave Ledge Peg', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Wooden Bridge Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Bat Cave Ledge Peg (East)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Wooden Bridge Northeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Desert Palace Statue Move', player), lambda state: state.has('Book of Mudora', player)) set_rule(world.get_entrance('Blacksmith Ledge Peg (West)', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('Desert Ledge Outer Rocks', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Blacksmith Ledge Peg (East)', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('Desert Ledge Inner Rocks', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Desert Statue Move', player), lambda state: state.has('Book of Mudora', player))
set_rule(world.get_entrance('Desert Ledge Rocks (Outer)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Desert Ledge Rocks (Inner)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('C Whirlpool Rock (Bottom)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('C Whirlpool Rock (Bottom)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('C Whirlpool Rock (Top)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('C Whirlpool Rock (Top)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('C Whirlpool Pegs (Left)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('C Whirlpool Pegs (Outer)', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('C Whirlpool Pegs (Right)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('C Whirlpool Pegs (Inner)', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('Lake Hylia Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Northeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Central Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Island Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Water D Leave', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Ice Cave Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Desert Pass Rocks (North)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Desert Pass Rocks (North)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Desert Pass Rocks (South)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Desert Pass Rocks (South)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Octoballoon Waterfall Water Drop', player), lambda state: state.has('Flippers', 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 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('Skull Woods Rock (East)', player), lambda state: state.can_lift_rocks(player))
# this more like an ohko rule - dependent on bird being present too - so enemizer could turn this off? # this more like an ohko rule - dependent on bird being present too - so enemizer could turn this off?
set_rule(world.get_entrance('Bumper Cave Ledge Drop', player), lambda state: (state.has('Cape', player) or state.has('Cane of Byrna', player) or state.has_sword(player))) set_rule(world.get_entrance('Bumper Cave Ledge Drop', player), lambda state: (state.has('Cape', player) or state.has('Cane of Byrna', player) or state.has_sword(player)))
set_rule(world.get_entrance('Bumper Cave Entrance Rock', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Bumper Cave Rock (Outer)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Bumper Cave Rock (Inner)', player), lambda state: state.can_lift_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 (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('Skull Woods Pass Rock (South)', player), lambda state: state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('Qirn Jump Water Drop', player), lambda state: state.has('Flippers', 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 (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('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)) set_rule(world.get_entrance('Catfish Approach Rocks (West)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player))
set_rule(world.get_entrance('Catfish Approach Rocks (East)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player)) set_rule(world.get_entrance('Catfish Approach Rocks (East)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player))
set_rule(world.get_entrance('Village of Outcasts Pegs', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Bush Yard Pegs (Outer)', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('Grassy Lawn Pegs', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Bush Yard Pegs (Inner)', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('Broken Bridge Hammer Rock (South)', player), lambda state: state.can_lift_rocks(player) or state.has('Hammer', player)) set_rule(world.get_entrance('Broken Bridge Hammer Rock (South)', player), lambda state: state.can_lift_rocks(player) or state.has('Hammer', player))
set_rule(world.get_entrance('Broken Bridge Hammer Rock (North)', player), lambda state: state.can_lift_rocks(player) or state.has('Hammer', player)) set_rule(world.get_entrance('Broken Bridge Hammer Rock (North)', player), lambda state: state.can_lift_rocks(player) or state.has('Hammer', player))
set_rule(world.get_entrance('Broken Bridge Hookshot Gap', player), lambda state: state.has('Hookshot', player)) set_rule(world.get_entrance('Broken Bridge Hookshot Gap', player), lambda state: state.has('Hookshot', player))
set_rule(world.get_entrance('Broken Bridge Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Broken Bridge Northeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Broken Bridge West Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Peg Area Rocks (West)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Peg Area Rocks (West)', player), lambda state: state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('Peg Area Rocks (East)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Peg Area Rocks (East)', player), lambda state: state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('Dig Game To Ledge Drop', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Dig Game To Ledge Drop', player), lambda state: state.can_lift_heavy_rocks(player))
@@ -320,10 +340,18 @@ def global_rules(world, player):
set_rule(world.get_entrance('Archery Game Rock (South)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Archery Game Rock (South)', player), lambda state: state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('Hammer Bridge Pegs (North)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Hammer Bridge Pegs (North)', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('Hammer Bridge Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Dark C Whirlpool Rock (Bottom)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Dark C Whirlpool Rock (Bottom)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Dark C Whirlpool Rock (Top)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Dark C Whirlpool Rock (Top)', player), lambda state: state.can_lift_rocks(player))
set_rule(world.get_entrance('Dark C Whirlpool Pegs (Left)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Dark C Whirlpool Pegs (Outer)', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('Dark C Whirlpool Pegs (Right)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Dark C Whirlpool Pegs (Inner)', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('Ice Lake Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Ice Lake Northeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Ice Lake Southwest Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Ice Lake Iceberg Water Entry', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Ice Lake Iceberg Bomb Jump', player), lambda state: state.can_use_bombs(player))
set_rule(world.get_entrance('Shopping Mall Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), lambda state: state.has('Flippers', player))
# entrance rules # entrance rules
# Caution: If king's grave is relaxed at all to account for reaching it via a two way cave's exit in insanity mode, then the bomb shop logic will need to be updated (that would involve create a small ledge-like Region for it) # Caution: If king's grave is relaxed at all to account for reaching it via a two way cave's exit in insanity mode, then the bomb shop logic will need to be updated (that would involve create a small ledge-like Region for it)
@@ -960,8 +988,8 @@ def ow_inverted_rules(world, player):
set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player)) set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player))
else: else:
set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has('Cape', player) or state.has_beam_sword(player)) # barrier gets removed after killing agahnim, rule for that added later set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has('Cape', player) or state.has_beam_sword(player)) # barrier gets removed after killing agahnim, rule for that added later
set_rule(world.get_entrance('GT Entry Approach', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player)) set_rule(world.get_entrance('GT Approach', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player))
set_rule(world.get_entrance('GT Entry Leave', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player) or state.world.shuffle[player] in ('restricted', 'full', 'lite', 'lean', 'crossed', 'insanity')) set_rule(world.get_entrance('GT Leave', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player) or state.world.shuffle[player] in ('restricted', 'full', 'lite', 'lean', 'crossed', 'insanity'))
if world.is_tile_swapped(0x03, player): if world.is_tile_swapped(0x03, player):
set_rule(world.get_entrance('Spectacle Rock Approach', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches'] and state.has_Pearl(player)) set_rule(world.get_entrance('Spectacle Rock Approach', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches'] and state.has_Pearl(player))
@@ -970,15 +998,14 @@ def ow_inverted_rules(world, player):
if not world.is_tile_swapped(0x05, player): if not world.is_tile_swapped(0x05, player):
set_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
else: else:
set_rule(world.get_entrance('Dark Death Mountain Teleporter (East)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('East Dark Death Mountain Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
if not world.is_tile_swapped(0x07, player): if not world.is_tile_swapped(0x07, player):
set_rule(world.get_entrance('TR Pegs Teleporter', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('TR Pegs Teleporter', player), lambda state: state.has('Hammer', player))
set_rule(world.get_entrance('TR Pegs Ledge Leave', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('TR Pegs Ledge Leave', player), lambda state: state.can_lift_heavy_rocks(player))
else: else:
set_rule(world.get_entrance('Turtle Rock Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Turtle Rock Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('TR Pegs Ledge Drop', player), lambda state: False) set_rule(world.get_entrance('TR Pegs Ledge Leave', player), lambda state: state.has('Hammer', player) and state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('TR Pegs Ledge Leave', player), lambda state: state.has('Hammer', player) and state.can_lift_heavy_rocks(player) and state.has_Pearl(player))
set_rule(world.get_entrance('Turtle Rock Tail Ledge Drop', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches']) set_rule(world.get_entrance('Turtle Rock Tail Ledge Drop', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches'])
if not world.is_tile_swapped(0x10, player): if not world.is_tile_swapped(0x10, player):
@@ -1000,7 +1027,7 @@ def ow_inverted_rules(world, player):
set_rule(world.get_entrance('Pyramid Hole', player), lambda state: False) set_rule(world.get_entrance('Pyramid Hole', player), lambda state: False)
set_rule(world.get_entrance('Pyramid Entrance', player), lambda state: False) set_rule(world.get_entrance('Pyramid Entrance', player), lambda state: False)
set_rule(world.get_entrance('Post Aga Inverted Teleporter', player), lambda state: state.has_beaten_aga(player)) set_rule(world.get_entrance('Post Aga Teleporter', player), lambda state: state.has_beaten_aga(player))
if not world.is_tile_swapped(0x2f, player): if not world.is_tile_swapped(0x2f, player):
set_rule(world.get_entrance('East Hyrule Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot use hammer set_rule(world.get_entrance('East Hyrule Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot use hammer
@@ -1011,13 +1038,13 @@ def ow_inverted_rules(world, player):
set_rule(world.get_entrance('Mirror To Bombos Tablet Ledge', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Mirror To Bombos Tablet Ledge', player), lambda state: state.has_Mirror(player))
set_rule(world.get_entrance('Desert Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Desert Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
else: else:
set_rule(world.get_entrance('Misery Mire Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Mire Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('Checkerboard Ledge Approach', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches']) set_rule(world.get_entrance('Checkerboard Ledge Approach', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches'])
set_rule(world.get_entrance('Checkerboard Ledge Leave', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches']) set_rule(world.get_entrance('Checkerboard Ledge Leave', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches'])
if world.is_tile_swapped(0x32, player): if world.is_tile_swapped(0x32, player):
set_rule(world.get_entrance('Cave 45 Inverted Approach', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches']) set_rule(world.get_entrance('Cave 45 Approach', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches'])
set_rule(world.get_entrance('Cave 45 Inverted Leave', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches']) set_rule(world.get_entrance('Cave 45 Leave', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches'])
if not world.is_tile_swapped(0x33, player): if not world.is_tile_swapped(0x33, player):
set_rule(world.get_entrance('South Hyrule Teleporter', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('South Hyrule Teleporter', player), lambda state: state.can_lift_rocks(player))
@@ -1027,7 +1054,7 @@ def ow_inverted_rules(world, player):
if not world.is_tile_swapped(0x35, player): if not world.is_tile_swapped(0x35, player):
set_rule(world.get_entrance('Lake Hylia Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Lake Hylia Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
else: else:
set_rule(world.get_entrance('Ice Palace Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Ice Lake Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
set_rule(world.get_entrance('Lake Hylia Island Pier', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches']) set_rule(world.get_entrance('Lake Hylia Island Pier', player), lambda state: world.logic[player] in ['noglitches', 'minorglitches'])
if world.is_tile_swapped(0x3a, player): if world.is_tile_swapped(0x3a, player):
@@ -1038,10 +1065,10 @@ def ow_inverted_rules(world, player):
def ow_bunny_rules(world, player): def ow_bunny_rules(world, player):
# locations # locations
add_bunny_rule(world.get_location('Mushroom', player), player) add_bunny_rule(world.get_location('Mushroom', player), player)
add_bunny_rule(world.get_location('Turtle Medallion Pad', player), player)
add_bunny_rule(world.get_location('Zora\'s Ledge', player), player) add_bunny_rule(world.get_location('Zora\'s Ledge', player), player)
add_bunny_rule(world.get_location('Maze Race', player), player) add_bunny_rule(world.get_location('Maze Race', player), player)
add_bunny_rule(world.get_location('Flute Spot', player), player) add_bunny_rule(world.get_location('Flute Spot', player), player)
add_bunny_rule(world.get_location('Turtle Medallion Pad', player), player)
add_bunny_rule(world.get_location('Catfish', player), player) add_bunny_rule(world.get_location('Catfish', player), player)
# entrances # entrances
@@ -1076,19 +1103,31 @@ def ow_bunny_rules(world, player):
add_bunny_rule(world.get_entrance('DM Hammer Bridge (East)', player), player) add_bunny_rule(world.get_entrance('DM Hammer Bridge (East)', player), player)
add_bunny_rule(world.get_entrance('DM Broken Bridge (West)', player), player) add_bunny_rule(world.get_entrance('DM Broken Bridge (West)', player), player)
add_bunny_rule(world.get_entrance('DM Broken Bridge (East)', player), player) add_bunny_rule(world.get_entrance('DM Broken Bridge (East)', player), player)
add_bunny_rule(world.get_entrance('Fairy Ascension Rocks (North)', player), player) add_bunny_rule(world.get_entrance('Fairy Ascension Rocks (Inner)', player), player)
add_bunny_rule(world.get_entrance('Fairy Ascension Rocks (South)', player), player) add_bunny_rule(world.get_entrance('Fairy Ascension Rocks (Outer)', player), player)
add_bunny_rule(world.get_entrance('TR Pegs Ledge Entry', player), 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('TR Pegs Ledge Leave', player), player)
add_bunny_rule(world.get_entrance('Mountain Entry Entrance Rock (East)', player), player) add_bunny_rule(world.get_entrance('Mountain Pass Rock (Outer)', player), player)
add_bunny_rule(world.get_entrance('Mountain Pass Rock (Inner)', player), player)
add_bunny_rule(world.get_entrance('Zora Waterfall Water Drop', player), player)
add_bunny_rule(world.get_entrance('Zora Waterfall Water Entry', player), player)
add_bunny_rule(world.get_entrance('Zora Waterfall Approach', 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 (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 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 (North)', player), player)
add_bunny_rule(world.get_entrance('Lost Woods Pass Rock (South)', 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('Kakariko Pond Whirlpool', player), player)
add_bunny_rule(world.get_entrance('Kings Grave Inner Rocks', player), player) add_bunny_rule(world.get_entrance('Kings Grave Rocks (Outer)', player), player)
add_bunny_rule(world.get_entrance('Potion Shop Rock (South)', player), player) add_bunny_rule(world.get_entrance('Kings Grave Rocks (Inner)', player), player)
add_bunny_rule(world.get_entrance('Graveyard Ladder (Top)', player), player)
add_bunny_rule(world.get_entrance('Graveyard Ladder (Bottom)', player), player)
add_bunny_rule(world.get_entrance('River Bend Water Drop', player), player)
add_bunny_rule(world.get_entrance('River Bend East Water Drop', player), player)
add_bunny_rule(world.get_entrance('Potion Shop Water Drop', player), player)
add_bunny_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Potion Shop Rock (North)', player), player) add_bunny_rule(world.get_entrance('Potion Shop Rock (North)', player), player)
add_bunny_rule(world.get_entrance('Potion Shop Rock (South)', player), player)
add_bunny_rule(world.get_entrance('Zora Approach Water Drop', player), player)
add_bunny_rule(world.get_entrance('Zora Approach Rocks (West)', player), player) add_bunny_rule(world.get_entrance('Zora Approach Rocks (West)', player), player)
add_bunny_rule(world.get_entrance('Zora Approach Rocks (East)', player), player) add_bunny_rule(world.get_entrance('Zora Approach Rocks (East)', player), player)
add_bunny_rule(world.get_entrance('Kakariko Southwest Bush (North)', player), player) add_bunny_rule(world.get_entrance('Kakariko Southwest Bush (North)', player), player)
@@ -1099,31 +1138,46 @@ def ow_bunny_rules(world, player):
add_bunny_rule(world.get_entrance('Hyrule Castle Southwest Bush (South)', player), player) add_bunny_rule(world.get_entrance('Hyrule Castle Southwest Bush (South)', player), player)
add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (North)', player), player) add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (North)', player), player)
add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (South)', player), player) add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (South)', player), player)
add_bunny_rule(world.get_entrance('Hyrule Castle Inner East Rock', player), player) add_bunny_rule(world.get_entrance('Hyrule Castle East Rock (Inner)', player), player)
add_bunny_rule(world.get_entrance('Hyrule Castle Outer East Rock', player), player) add_bunny_rule(world.get_entrance('Hyrule Castle East Rock (Outer)', player), player)
add_bunny_rule(world.get_entrance('Wooden Bridge Bush (North)', player), player) add_bunny_rule(world.get_entrance('Wooden Bridge Bush (North)', player), player)
add_bunny_rule(world.get_entrance('Wooden Bridge Bush (South)', player), player) add_bunny_rule(world.get_entrance('Wooden Bridge Bush (South)', player), player)
add_bunny_rule(world.get_entrance('Bat Cave Ledge Peg', player), player) add_bunny_rule(world.get_entrance('Wooden Bridge Water Drop', player), player)
add_bunny_rule(world.get_entrance('Bat Cave Ledge Peg (East)', player), player) add_bunny_rule(world.get_entrance('Wooden Bridge Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Desert Ledge Outer Rocks', player), player) add_bunny_rule(world.get_entrance('Blacksmith Ledge Peg (West)', player), player)
add_bunny_rule(world.get_entrance('Desert Ledge Inner Rocks', player), player) add_bunny_rule(world.get_entrance('Blacksmith Ledge Peg (East)', player), player)
add_bunny_rule(world.get_entrance('Maze Race Game', player), player)
add_bunny_rule(world.get_entrance('Desert Ledge Rocks (Outer)', player), player)
add_bunny_rule(world.get_entrance('Desert Ledge Rocks (Inner)', player), player)
add_bunny_rule(world.get_entrance('Flute Boy Bush (North)', player), player) add_bunny_rule(world.get_entrance('Flute Boy Bush (North)', player), player)
add_bunny_rule(world.get_entrance('Flute Boy Bush (South)', player), player) add_bunny_rule(world.get_entrance('Flute Boy Bush (South)', player), player)
add_bunny_rule(world.get_entrance('C Whirlpool Water Entry', player), player)
add_bunny_rule(world.get_entrance('C Whirlpool Rock (Bottom)', player), player) add_bunny_rule(world.get_entrance('C Whirlpool Rock (Bottom)', player), player)
add_bunny_rule(world.get_entrance('C Whirlpool Rock (Top)', player), player) add_bunny_rule(world.get_entrance('C Whirlpool Rock (Top)', player), player)
add_bunny_rule(world.get_entrance('C Whirlpool Pegs (Left)', player), player) add_bunny_rule(world.get_entrance('C Whirlpool Pegs (Outer)', player), player)
add_bunny_rule(world.get_entrance('C Whirlpool Pegs (Right)', player), player) add_bunny_rule(world.get_entrance('C Whirlpool Pegs (Inner)', player), player)
add_bunny_rule(world.get_entrance('Statues Water Entry', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia Water Drop', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia South Water Drop', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia Central Water Drop', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia Island Water Drop', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia Water D Leave', player), player)
add_bunny_rule(world.get_entrance('Ice Cave Water Drop', player), player)
add_bunny_rule(world.get_entrance('Desert Pass Rocks (North)', player), player) add_bunny_rule(world.get_entrance('Desert Pass Rocks (North)', player), player)
add_bunny_rule(world.get_entrance('Desert Pass Rocks (South)', player), player) add_bunny_rule(world.get_entrance('Desert Pass Rocks (South)', player), player)
add_bunny_rule(world.get_entrance('Octoballoon Water Drop', player), player)
add_bunny_rule(world.get_entrance('Octoballoon Waterfall Water Drop', player), player)
add_bunny_rule(world.get_entrance('Skull Woods Bush Rock (West)', player), player) add_bunny_rule(world.get_entrance('Skull Woods Rock (West)', player), player)
add_bunny_rule(world.get_entrance('Skull Woods Bush Rock (East)', player), player) add_bunny_rule(world.get_entrance('Skull Woods Rock (East)', player), player)
add_bunny_rule(world.get_entrance('Skull Woods Forgotten Bush (West)', player), player) add_bunny_rule(world.get_entrance('Skull Woods Forgotten Bush (West)', player), player)
add_bunny_rule(world.get_entrance('Skull Woods Forgotten Bush (East)', player), player) add_bunny_rule(world.get_entrance('Skull Woods Forgotten Bush (East)', player), player)
add_bunny_rule(world.get_entrance('Skull Woods Second Section Hole', player), player) add_bunny_rule(world.get_entrance('Skull Woods Second Section Hole', player), player)
add_bunny_rule(world.get_entrance('East Dark Death Mountain Bushes', player), player) add_bunny_rule(world.get_entrance('East Dark Death Mountain Bushes', player), player)
add_bunny_rule(world.get_entrance('Bumper Cave Ledge Drop', player), player) add_bunny_rule(world.get_entrance('Bumper Cave Ledge Drop', player), player)
add_bunny_rule(world.get_entrance('Bumper Cave Entrance Rock', player), player) add_bunny_rule(world.get_entrance('Bumper Cave Rock (Outer)', player), player)
add_bunny_rule(world.get_entrance('Bumper Cave Rock (Inner)', 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 (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 Bush Row (East)', 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 (North)', player), player)
@@ -1132,15 +1186,23 @@ def ow_bunny_rules(world, player):
add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (South)', 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 (South)', player), player)
add_bunny_rule(world.get_entrance('Dark Graveyard Bush (North)', player), player) add_bunny_rule(world.get_entrance('Dark Graveyard Bush (North)', player), player)
add_bunny_rule(world.get_entrance('Qirn Jump Water Drop', player), player)
add_bunny_rule(world.get_entrance('Qirn Jump East Water Drop', player), player)
add_bunny_rule(world.get_entrance('Dark Witch Water Drop', player), player)
add_bunny_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Dark Witch Rock (North)', player), player) add_bunny_rule(world.get_entrance('Dark Witch Rock (North)', player), player)
add_bunny_rule(world.get_entrance('Dark Witch Rock (South)', player), player) add_bunny_rule(world.get_entrance('Dark Witch Rock (South)', player), player)
add_bunny_rule(world.get_entrance('Catfish Approach Water Drop', player), player)
add_bunny_rule(world.get_entrance('Catfish Approach Rocks (West)', player), player) add_bunny_rule(world.get_entrance('Catfish Approach Rocks (West)', player), player)
add_bunny_rule(world.get_entrance('Catfish Approach Rocks (East)', player), player) add_bunny_rule(world.get_entrance('Catfish Approach Rocks (East)', player), player)
add_bunny_rule(world.get_entrance('Village of Outcasts Pegs', player), player) add_bunny_rule(world.get_entrance('Bush Yard Pegs (Outer)', player), player)
add_bunny_rule(world.get_entrance('Grassy Lawn Pegs', player), player) add_bunny_rule(world.get_entrance('Bush Yard Pegs (Inner)', player), player)
add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (South)', player), player) add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (South)', player), player)
add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (North)', player), player) add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (North)', player), player)
add_bunny_rule(world.get_entrance('Broken Bridge Hookshot Gap', player), player) add_bunny_rule(world.get_entrance('Broken Bridge Hookshot Gap', player), player)
add_bunny_rule(world.get_entrance('Broken Bridge Water Drop', player), player)
add_bunny_rule(world.get_entrance('Broken Bridge Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Broken Bridge West Water Drop', player), player)
add_bunny_rule(world.get_entrance('Peg Area Rocks (West)', player), player) add_bunny_rule(world.get_entrance('Peg Area Rocks (West)', player), player)
add_bunny_rule(world.get_entrance('Peg Area Rocks (East)', player), player) add_bunny_rule(world.get_entrance('Peg Area Rocks (East)', player), player)
add_bunny_rule(world.get_entrance('Dig Game To Ledge Drop', player), player) add_bunny_rule(world.get_entrance('Dig Game To Ledge Drop', player), player)
@@ -1150,12 +1212,27 @@ def ow_bunny_rules(world, player):
add_bunny_rule(world.get_entrance('Archery Game Rock (South)', player), player) add_bunny_rule(world.get_entrance('Archery Game Rock (South)', player), player)
add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (North)', player), player) add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (North)', player), player)
add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), player) add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), player)
add_bunny_rule(world.get_entrance('Hammer Bridge Water Drop', player), player)
add_bunny_rule(world.get_entrance('Stumpy Approach Bush (North)', player), player) add_bunny_rule(world.get_entrance('Stumpy Approach Bush (North)', player), player)
add_bunny_rule(world.get_entrance('Stumpy Approach Bush (South)', player), player) add_bunny_rule(world.get_entrance('Stumpy Approach Bush (South)', player), player)
add_bunny_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), player)
add_bunny_rule(world.get_entrance('Dark C Whirlpool Rock (Bottom)', player), player) add_bunny_rule(world.get_entrance('Dark C Whirlpool Rock (Bottom)', player), player)
add_bunny_rule(world.get_entrance('Dark C Whirlpool Rock (Top)', player), player) add_bunny_rule(world.get_entrance('Dark C Whirlpool Rock (Top)', player), player)
add_bunny_rule(world.get_entrance('Dark C Whirlpool Pegs (Left)', player), player) add_bunny_rule(world.get_entrance('Dark C Whirlpool Pegs (Outer)', player), player)
add_bunny_rule(world.get_entrance('Dark C Whirlpool Pegs (Right)', player), player) add_bunny_rule(world.get_entrance('Dark C Whirlpool Pegs (Inner)', player), player)
add_bunny_rule(world.get_entrance('Hype Cave Water Entry', player), player)
add_bunny_rule(world.get_entrance('Ice Lake Water Drop', player), player)
add_bunny_rule(world.get_entrance('Ice Lake Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Ice Lake Southwest Water Drop', player), player)
add_bunny_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Ice Lake Iceberg Water Entry', player), player)
add_bunny_rule(world.get_entrance('Shopping Mall Water Drop', player), player)
add_bunny_rule(world.get_entrance('Bomber Corner Water Drop', player), player)
add_bunny_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), player)
# OWG rules
add_bunny_rule(world.get_entrance('Stone Bridge EC Cliff Water Drop', player), player)
add_bunny_rule(world.get_entrance('Hammer Bridge EC Cliff Water Drop', player), player)
if not world.is_atgt_swapped(player): if not world.is_atgt_swapped(player):
add_bunny_rule(world.get_entrance('Agahnims Tower', player), player) add_bunny_rule(world.get_entrance('Agahnims Tower', player), player)
@@ -1181,92 +1258,23 @@ def ow_terrain_rules(world, player):
def no_glitches_rules(world, player): def no_glitches_rules(world, player):
set_rule(world.get_entrance('Zora Waterfall Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Zora Waterfall Water Entry', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Zora Waterfall Water Approach', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Kakariko Pond Whirlpool', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('River Bend Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('River Bend East Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('River Bend East Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Potion Shop Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Potion Shop Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Zora Approach Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Zora Approach Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Wooden Bridge Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Wooden Bridge Northeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('C Whirlpool Water Entry', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('C Whirlpool Water Entry', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Statues Water Entry', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Statues Water Entry', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia South Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Lake Hylia South Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Northeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Central Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Island Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Lake Hylia Water D Leave', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Ice Cave SW', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Octoballoon Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Octoballoon Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Octoballoon Waterfall Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Qirn Jump Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Qirn Jump East Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Qirn Jump East Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Catfish Approach Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Catfish Approach Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Broken Bridge Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Broken Bridge Northeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Broken Bridge West Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Hammer Bridge Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Hype Cave Water Entry', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Hype Cave Water Entry', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Ice Lake Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Ice Lake Northeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Ice Lake Southwest Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Ice Lake Moat Water Entry', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Shopping Mall SW', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: state.has('Flippers', player))
set_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), lambda state: state.has('Flippers', player))
add_bunny_rule(world.get_entrance('Zora Waterfall Water Drop', player), player)
add_bunny_rule(world.get_entrance('Zora Waterfall Water Entry', player), player)
add_bunny_rule(world.get_entrance('Zora Waterfall Water Approach', player), player)
add_bunny_rule(world.get_entrance('Kakariko Pond Whirlpool', player), player)
add_bunny_rule(world.get_entrance('River Bend Water Drop', player), player)
add_bunny_rule(world.get_entrance('River Bend East Water Drop', player), player)
add_bunny_rule(world.get_entrance('Potion Shop Water Drop', player), player)
add_bunny_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Zora Approach Water Drop', player), player)
add_bunny_rule(world.get_entrance('Wooden Bridge Water Drop', player), player)
add_bunny_rule(world.get_entrance('Wooden Bridge Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('C Whirlpool Water Entry', player), player)
add_bunny_rule(world.get_entrance('Statues Water Entry', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia Water Drop', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia South Water Drop', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia Central Water Drop', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia Island Water Drop', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia Water D Leave', player), player)
add_bunny_rule(world.get_entrance('Ice Cave SW', player), player)
add_bunny_rule(world.get_entrance('Octoballoon Water Drop', player), player)
add_bunny_rule(world.get_entrance('Octoballoon Waterfall Water Drop', player), player)
add_bunny_rule(world.get_entrance('Qirn Jump Water Drop', player), player)
add_bunny_rule(world.get_entrance('Qirn Jump East Water Drop', player), player)
add_bunny_rule(world.get_entrance('Dark Witch Water Drop', player), player)
add_bunny_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Catfish Approach Water Drop', player), player)
add_bunny_rule(world.get_entrance('Broken Bridge Water Drop', player), player)
add_bunny_rule(world.get_entrance('Broken Bridge Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Broken Bridge West Water Drop', player), player)
add_bunny_rule(world.get_entrance('Hammer Bridge Water Drop', player), player)
add_bunny_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), player)
add_bunny_rule(world.get_entrance('Hype Cave Water Entry', player), player)
add_bunny_rule(world.get_entrance('Ice Lake Water Drop', player), player)
add_bunny_rule(world.get_entrance('Ice Lake Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Ice Lake Southwest Water Drop', player), player)
add_bunny_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Ice Lake Moat Water Entry', player), player)
add_bunny_rule(world.get_entrance('Shopping Mall SW', player), player)
add_bunny_rule(world.get_entrance('Bomber Corner Water Drop', player), player)
add_bunny_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), player)
# todo: move some dungeon rules to no glicthes logic - see these for examples # todo: move some dungeon rules to no glicthes logic - see these for examples
# add_rule(world.get_entrance('Ganons Tower (Hookshot Room)', player), lambda state: state.has('Hookshot', player) or state.has_Boots(player)) # add_rule(world.get_entrance('Ganons Tower (Hookshot Room)', player), lambda state: state.has('Hookshot', player) or state.has_Boots(player))
@@ -1275,13 +1283,13 @@ def no_glitches_rules(world, player):
# for location in DMs_room_chests: # for location in DMs_room_chests:
# add_rule(world.get_location(location, player), lambda state: state.has('Hookshot', player)) # add_rule(world.get_location(location, player), lambda state: state.has('Hookshot', player))
set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: False) # no glitches does not require block override set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: False) # no glitches does not require block override
set_rule(world.get_entrance('Ice Lake Northeast Pier Hop', player), lambda state: False)
forbid_bomb_jump_requirements(world, player) forbid_bomb_jump_requirements(world, player)
if not world.is_copied_world: if not world.is_copied_world:
add_conditional_lamps(world, player) add_conditional_lamps(world, player)
def fake_flipper_rules(world, player): def fake_flipper_rules(world, player):
set_rule(world.get_entrance('Zora Waterfall Water Approach', player), lambda state: True) # warning, assumes FF possible on other end of whirlpool or local ancilla splash delete
set_rule(world.get_entrance('River Bend Water Drop', player), lambda state: True) set_rule(world.get_entrance('River Bend Water Drop', player), lambda state: True)
set_rule(world.get_entrance('River Bend East Water Drop', player), lambda state: True) set_rule(world.get_entrance('River Bend East Water Drop', player), lambda state: True)
set_rule(world.get_entrance('Potion Shop Water Drop', player), lambda state: True) set_rule(world.get_entrance('Potion Shop Water Drop', player), lambda state: True)
@@ -1301,33 +1309,13 @@ def fake_flipper_rules(world, player):
set_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), lambda state: True) set_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), lambda state: True)
set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: True) set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: True)
add_bunny_rule(world.get_entrance('Zora Waterfall Water Approach', player), player)
add_bunny_rule(world.get_entrance('River Bend Water Drop', player), player)
add_bunny_rule(world.get_entrance('River Bend East Water Drop', player), player)
add_bunny_rule(world.get_entrance('Potion Shop Water Drop', player), player)
add_bunny_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Zora Approach Water Drop', player), player)
add_bunny_rule(world.get_entrance('C Whirlpool Water Entry', player), player)
add_bunny_rule(world.get_entrance('Statues Water Entry', player), player)
add_bunny_rule(world.get_entrance('Lake Hylia South Water Drop', player), player)
add_bunny_rule(world.get_entrance('Octoballoon Water Drop', player), player)
add_bunny_rule(world.get_entrance('Qirn Jump Water Drop', player), player)
add_bunny_rule(world.get_entrance('Qirn Jump East Water Drop', player), player)
add_bunny_rule(world.get_entrance('Dark Witch Water Drop', player), player)
add_bunny_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Catfish Approach Water Drop', player), player)
add_bunny_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), player)
add_bunny_rule(world.get_entrance('Hype Cave Water Entry', player), player)
add_bunny_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), player)
add_bunny_rule(world.get_entrance('Bomber Corner Water Drop', player), player)
def forbid_bomb_jump_requirements(world, player): def forbid_bomb_jump_requirements(world, player):
DMs_room_chests = ['Ganons Tower - DMs Room - Top Left', 'Ganons Tower - DMs Room - Top Right', 'Ganons Tower - DMs Room - Bottom Left', 'Ganons Tower - DMs Room - Bottom Right'] DMs_room_chests = ['Ganons Tower - DMs Room - Top Left', 'Ganons Tower - DMs Room - Top Right', 'Ganons Tower - DMs Room - Bottom Left', 'Ganons Tower - DMs Room - Bottom Right']
for location in DMs_room_chests: for location in DMs_room_chests:
add_rule(world.get_location(location, player), lambda state: state.has('Hookshot', player)) add_rule(world.get_location(location, player), lambda state: state.has('Hookshot', player))
set_rule(world.get_entrance('Paradox Cave Bomb Jump', player), lambda state: False) set_rule(world.get_entrance('Paradox Cave Bomb Jump', player), lambda state: False)
set_rule(world.get_entrance('Ice Lake Northeast Pier Hop', player), lambda state: False) set_rule(world.get_entrance('Ice Lake Iceberg Bomb Jump', player), lambda state: False)
def add_conditional_lamps(world, player): def add_conditional_lamps(world, player):
def add_conditional_lamp(spot, spottype='Location'): def add_conditional_lamp(spot, spottype='Location'):
@@ -1475,8 +1463,6 @@ def standard_rules(world, player):
entrance = world.get_portal(portal_name, player).door.entrance entrance = world.get_portal(portal_name, player).door.entrance
set_rule(entrance, lambda state: state.has('Zelda Delivered', player)) set_rule(entrance, lambda state: state.has('Zelda Delivered', player))
set_rule(world.get_entrance('Sanctuary Exit', player), lambda state: state.has('Zelda Delivered', player)) set_rule(world.get_entrance('Sanctuary Exit', player), lambda state: state.has('Zelda Delivered', player))
set_rule(world.get_entrance('Hyrule Castle Ledge Drop', player), lambda state: state.has('Zelda Delivered', player))
set_rule(world.get_entrance('Hyrule Castle Main Gate (North)', player), lambda state: state.has('Zelda Delivered', player))
# zelda should be saved before agahnim is in play # zelda should be saved before agahnim is in play
add_rule(world.get_location('Agahnim 1', player), lambda state: state.has('Zelda Delivered', player)) add_rule(world.get_location('Agahnim 1', player), lambda state: state.has('Zelda Delivered', player))
@@ -1519,15 +1505,9 @@ def standard_rules(world, player):
rule_list, debug_path = find_rules_for_zelda_delivery(world, player) rule_list, debug_path = find_rules_for_zelda_delivery(world, player)
set_rule(world.get_location('Zelda Drop Off', player), lambda state: state.has('Zelda Herself', player) and check_rule_list(state, rule_list)) set_rule(world.get_location('Zelda Drop Off', player), lambda state: state.has('Zelda Herself', player) and check_rule_list(state, rule_list))
add_rule(world.get_entrance('Links House SC', player), lambda state: state.has('Zelda Delivered', player)) for entrance in ['Links House SC', 'Links House ES', 'Central Bonk Rocks SW', 'Hyrule Castle WN', 'Hyrule Castle ES',
add_rule(world.get_entrance('Links House ES', player), lambda state: state.has('Zelda Delivered', player)) 'Bonk Fairy (Light)', 'Hyrule Castle Main Gate (South)', 'Hyrule Castle Main Gate (North)', 'Hyrule Castle Ledge Drop']:
add_rule(world.get_entrance('Central Bonk Rocks SW', player), lambda state: state.has('Zelda Delivered', player)) add_rule(world.get_entrance(entrance, player), lambda state: state.has('Zelda Delivered', player))
add_rule(world.get_entrance('Hyrule Castle WN', player), lambda state: state.has('Zelda Delivered', player))
add_rule(world.get_entrance('Hyrule Castle ES', player), lambda state: state.has('Zelda Delivered', player))
add_rule(world.get_entrance('Hyrule Castle Main Gate (South)', player), lambda state: state.has('Zelda Delivered', player))
add_rule(world.get_entrance('Hyrule Castle Main Gate (North)', player), lambda state: state.has('Zelda Delivered', player))
add_rule(world.get_entrance('Hyrule Castle Ledge Drop', player), lambda state: state.has('Zelda Delivered', player))
add_rule(world.get_entrance('Bonk Fairy (Light)', player), lambda state: state.has('Zelda Delivered', player))
if world.shuffle_bonk_drops[player]: if world.shuffle_bonk_drops[player]:
if not world.is_copied_world: if not world.is_copied_world:
@@ -1537,6 +1517,7 @@ def standard_rules(world, player):
# don't allow bombs to get past here before zelda is rescued # don't allow bombs to get past here before zelda is rescued
set_rule(world.get_entrance('GT Hookshot South Entry to Ranged Crystal', player), lambda state: (state.can_use_bombs(player) and state.has('Zelda Delivered', 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 South Entry to Ranged Crystal', player), lambda state: (state.can_use_bombs(player) and state.has('Zelda Delivered', player)) or state.has('Blue Boomerang', player) or state.has('Red Boomerang', player)) # or state.has('Cane of Somaria', player))
def find_rules_for_zelda_delivery(world, player): def find_rules_for_zelda_delivery(world, player):
# path rules for backtracking # path rules for backtracking
start_region = world.get_region('Hyrule Dungeon Cellblock', player) start_region = world.get_region('Hyrule Dungeon Cellblock', player)
Binary file not shown.
+3 -2
View File
@@ -2,6 +2,7 @@ import os
import urllib.request import urllib.request
import urllib.parse import urllib.parse
import yaml import yaml
from typing import Any
from yaml.representer import Representer from yaml.representer import Representer
from collections import defaultdict from collections import defaultdict
from pathlib import Path from pathlib import Path
@@ -46,8 +47,8 @@ class CustomSettings(object):
return meta['players'] return meta['players']
def adjust_args(self, args): def adjust_args(self, args):
def get_setting(value, default): def get_setting(value: Any, default):
if value: if value or value == 0:
if isinstance(value, dict): if isinstance(value, dict):
return random.choices(list(value.keys()), list(value.values()), k=1)[0] return random.choices(list(value.keys()), list(value.values()), k=1)[0]
else: else:
+3 -3
View File
@@ -138,10 +138,10 @@ def find_reachable_locations(state, player):
return check_set return check_set
inaccessible_regions_std = {'Desert Palace Mouth', 'Bumper Cave Ledge', 'Skull Woods Forest (West)', inaccessible_regions_std = {'Desert Mouth', 'Bumper Cave Ledge', 'Skull Woods Forest (West)',
'Dark Death Mountain Ledge', 'Dark Death Mountain Isolated Ledge', 'Dark Death Mountain Ledge', 'Dark Death Mountain Isolated Ledge',
'Death Mountain Floating Island'} 'Death Mountain Floating Island'}
inaccessible_regions_inv = {'Desert Palace Mouth', 'Maze Race Ledge', 'Desert Ledge', inaccessible_regions_inv = {'Desert Mouth', 'Maze Race Ledge', 'Desert Ledge',
'Desert Palace Entrance (North) Spot', 'Hyrule Castle Ledge', 'Mountain Entry Ledge'} 'Desert Ledge Keep', 'Hyrule Castle Ledge', 'Mountain Pass Ledge'}
+1 -11
View File
@@ -151,9 +151,6 @@ def create_item_pool_config(world):
config.item_pool[player] = determine_major_items(world, player) config.item_pool[player] = determine_major_items(world, player)
config.location_groups[0].locations = set(groups.locations) config.location_groups[0].locations = set(groups.locations)
config.reserved_locations[player].update(groups.locations) config.reserved_locations[player].update(groups.locations)
backup = (mode_grouping['Heart Pieces'] + mode_grouping['Dungeon Trash'] + mode_grouping['Shops']
+ mode_grouping['Overworld Trash'] + mode_grouping['GT Trash'] + mode_grouping['RetroShops'])
config.location_groups[1].locations = set(backup)
elif world.algorithm == 'dungeon_only': elif world.algorithm == 'dungeon_only':
config.location_groups = [ config.location_groups = [
LocationGroup('Dungeons'), LocationGroup('Dungeons'),
@@ -171,9 +168,6 @@ def create_item_pool_config(world):
for player in range(1, world.players + 1): for player in range(1, world.players + 1):
config.item_pool[player] = determine_major_items(world, player) config.item_pool[player] = determine_major_items(world, player)
config.location_groups[0].locations = set(dungeon_set) config.location_groups[0].locations = set(dungeon_set)
backup = (mode_grouping['Heart Pieces'] + mode_grouping['Overworld Major']
+ mode_grouping['Overworld Trash'] + mode_grouping['Shops'] + mode_grouping['RetroShops'])
config.location_groups[1].locations = set(backup)
def district_item_pool_config(world): def district_item_pool_config(world):
@@ -419,11 +413,7 @@ def filter_locations(item_to_place, locations, world, vanilla_skip=False, potion
if item_to_place.name in config.item_pool[item_to_place.player]: if item_to_place.name in config.item_pool[item_to_place.player]:
restricted = config.location_groups[0].locations restricted = config.location_groups[0].locations
filtered = [l for l in locations if l.name in restricted] filtered = [l for l in locations if l.name in restricted]
if len(filtered) == 0: return filtered
restricted = config.location_groups[1].locations
filtered = [l for l in locations if l.name in restricted]
# bias toward certain location in overflow? (thinking about this for major_bias)
return filtered if len(filtered) > 0 else locations
if world.algorithm == 'district': if world.algorithm == 'district':
config = world.item_pool_config config = world.item_pool_config
if ((isinstance(item_to_place,str) and item_to_place == 'Placeholder') if ((isinstance(item_to_place,str) and item_to_place == 'Placeholder')
+8 -8
View File
@@ -751,8 +751,8 @@ def must_exits_helper(avail):
inaccessible_regions = list(avail.world.inaccessible_regions[avail.player]) inaccessible_regions = list(avail.world.inaccessible_regions[avail.player])
# find OW regions that don't have a multi-entrance dungeon exit connected # find OW regions that don't have a multi-entrance dungeon exit connected
glitch_regions = ['Central Cliffs', 'Eastern Cliff', 'Desert Northeast Cliffs', 'Hyrule Castle Water', glitch_regions = ['Central Cliffs', 'Eastern Cliff', 'Desert Northern Cliffs', 'Hyrule Castle Water',
'Dark Central Cliffs', 'Darkness Cliff', 'Mire Northeast Cliffs', 'Pyramid Water'] 'Dark Central Cliffs', 'Darkness Cliff', 'Mire Northern Cliffs', 'Pyramid Water']
multi_dungeon_exits = { multi_dungeon_exits = {
'Hyrule Castle South Portal', 'Hyrule Castle West Portal', 'Hyrule Castle East Portal', 'Sanctuary Portal', 'Hyrule Castle South Portal', 'Hyrule Castle West Portal', 'Hyrule Castle East Portal', 'Sanctuary Portal',
'Desert South Portal', 'Desert West Portal', 'Desert South Portal', 'Desert West Portal',
@@ -2160,9 +2160,9 @@ default_connections = {'Lost Woods Gamble': 'Lost Woods Gamble',
'Paradox Cave (Bottom)': 'Paradox Cave Front', 'Paradox Cave (Bottom)': 'Paradox Cave Front',
'Paradox Cave Exit (Bottom)': 'East Death Mountain (Bottom)', 'Paradox Cave Exit (Bottom)': 'East Death Mountain (Bottom)',
'Death Mountain Return Cave (West)': 'Death Mountain Return Cave (left)', 'Death Mountain Return Cave (West)': 'Death Mountain Return Cave (left)',
'Death Mountain Return Cave Exit (West)': 'Mountain Entry Ledge', 'Death Mountain Return Cave Exit (West)': 'Mountain Pass Ledge',
'Old Man Cave (West)': 'Old Man Cave Ledge', 'Old Man Cave (West)': 'Old Man Cave Ledge',
'Old Man Cave Exit (West)': 'Mountain Entry Entrance', 'Old Man Cave Exit (West)': 'Mountain Pass Entry',
'Waterfall of Wishing': 'Waterfall of Wishing', 'Waterfall of Wishing': 'Waterfall of Wishing',
'Fortune Teller (Light)': 'Fortune Teller (Light)', 'Fortune Teller (Light)': 'Fortune Teller (Light)',
'Bonk Rock Cave': 'Bonk Rock Cave', 'Bonk Rock Cave': 'Bonk Rock Cave',
@@ -2177,12 +2177,12 @@ default_connections = {'Lost Woods Gamble': 'Lost Woods Gamble',
'Potion Shop': 'Potion Shop', 'Potion Shop': 'Potion Shop',
'Kakariko Well Drop': 'Kakariko Well (top)', 'Kakariko Well Drop': 'Kakariko Well (top)',
'Kakariko Well Cave': 'Kakariko Well (bottom)', 'Kakariko Well Cave': 'Kakariko Well (bottom)',
'Kakariko Well Exit': 'Kakariko Area', 'Kakariko Well Exit': 'Kakariko Village',
'Blinds Hideout': 'Blinds Hideout', 'Blinds Hideout': 'Blinds Hideout',
'Elder House (West)': 'Elder House', 'Elder House (West)': 'Elder House',
'Elder House Exit (West)': 'Kakariko Area', 'Elder House Exit (West)': 'Kakariko Village',
'Elder House (East)': 'Elder House', 'Elder House (East)': 'Elder House',
'Elder House Exit (East)': 'Kakariko Area', 'Elder House Exit (East)': 'Kakariko Village',
'Snitch Lady (West)': 'Snitch Lady (West)', 'Snitch Lady (West)': 'Snitch Lady (West)',
'Snitch Lady (East)': 'Snitch Lady (East)', 'Snitch Lady (East)': 'Snitch Lady (East)',
'Chicken House': 'Chicken House', 'Chicken House': 'Chicken House',
@@ -2241,7 +2241,7 @@ default_connections = {'Lost Woods Gamble': 'Lost Woods Gamble',
'Bumper Cave (Top)': 'Bumper Cave (top)', 'Bumper Cave (Top)': 'Bumper Cave (top)',
'Bumper Cave Exit (Top)': 'Bumper Cave Ledge', 'Bumper Cave Exit (Top)': 'Bumper Cave Ledge',
'Bumper Cave (Bottom)': 'Bumper Cave (bottom)', 'Bumper Cave (Bottom)': 'Bumper Cave (bottom)',
'Bumper Cave Exit (Bottom)': 'Bumper Cave Entrance', 'Bumper Cave Exit (Bottom)': 'Bumper Cave Entry',
'Fortune Teller (Dark)': 'Fortune Teller (Dark)', 'Fortune Teller (Dark)': 'Fortune Teller (Dark)',
'Dark Sanctuary Hint': 'Dark Sanctuary Hint', 'Dark Sanctuary Hint': 'Dark Sanctuary Hint',
'Dark Potion Shop': 'Dark Potion Shop', 'Dark Potion Shop': 'Dark Potion Shop',