The Great Renaming

This is the Great renaming. Renaming to match V27. I've renamed pretty
much all Item locations to match, with a small number kept deliberatly
deferent for clarity.

There is probably more renaming that should be done at the Enterance and
Region levels, but that can be done later.
This commit is contained in:
Kevin Cathcart 2017-10-28 23:42:35 -04:00
parent 2017b65a97
commit cdf04b8a45
10 changed files with 814 additions and 814 deletions

View File

@ -582,13 +582,13 @@ class Location(object):
class Item(object):
def __init__(self, name='', advancement=False, priority=False, type=None, code=None, altar_hint=None, altar_credit=None, sickkid_credit=None, zora_credit=None, witch_credit=None, fluteboy_credit=None):
def __init__(self, name='', advancement=False, priority=False, type=None, code=None, pedestal_hint=None, pedestal_credit=None, sickkid_credit=None, zora_credit=None, witch_credit=None, fluteboy_credit=None):
self.name = name
self.advancement = advancement
self.priority = priority
self.type = type
self.altar_hint_text = altar_hint
self.altar_credit_text = altar_credit
self.pedestal_hint_text = pedestal_hint
self.pedestal_credit_text = pedestal_credit
self.sickkid_credit_text = sickkid_credit
self.zora_credit_text = zora_credit
self.magicshop_credit_text = witch_credit

View File

@ -16,7 +16,7 @@ def create_dungeons(world):
DP = make_dungeon('Desert Palace', ['Desert Palace North', 'Desert Palace Main', 'Desert Palace East'], ItemFactory('Big Key (Desert Palace)'), [ItemFactory('Small Key (Desert Palace)')], ItemFactory(['Map (Desert Palace)', 'Compass (Desert Palace)']))
ToH = make_dungeon('Tower of Hera', ['Tower of Hera (Bottom)', 'Tower of Hera (Basement)', 'Tower of Hera (Top)'], ItemFactory('Big Key (Tower of Hera)'), [ItemFactory('Small Key (Tower of Hera)')], ItemFactory(['Map (Tower of Hera)', 'Compass (Tower of Hera)']))
AT = make_dungeon('Agahnims Tower', ['Agahnims Tower', 'Agahnim 1'], None, ItemFactory(['Small Key (Agahnims Tower)'] * 2), [])
PoD = make_dungeon('Palace of Darkness', ['Dark Palace (Entrance)', 'Dark Palace (Center)', 'Dark Palace (Big Key Chest)', 'Dark Palace (Bonk Section)', 'Dark Palace (North)', 'Dark Palace (Maze)', 'Dark Palace (Spike Statue Room)', 'Dark Palace (Final Section)'], ItemFactory('Big Key (Palace of Darkness)'), ItemFactory(['Small Key (Palace of Darkness)'] * 6), ItemFactory(['Map (Palace of Darkness)', 'Compass (Palace of Darkness)']))
PoD = make_dungeon('Palace of Darkness', ['Palace of Darkness (Entrance)', 'Palace of Darkness (Center)', 'Palace of Darkness (Big Key Chest)', 'Palace of Darkness (Bonk Section)', 'Palace of Darkness (North)', 'Palace of Darkness (Maze)', 'Palace of Darkness (Spike Statue Room)', 'Palace of Darkness (Final Section)'], ItemFactory('Big Key (Palace of Darkness)'), ItemFactory(['Small Key (Palace of Darkness)'] * 6), ItemFactory(['Map (Palace of Darkness)', 'Compass (Palace of Darkness)']))
TT = make_dungeon('Thieves Town', ['Thieves Town (Entrance)', 'Thieves Town (Deep)', 'Blind Fight'], ItemFactory('Big Key (Thieves Town)'), [ItemFactory('Small Key (Thieves Town)')], ItemFactory(['Map (Thieves Town)', 'Compass (Thieves Town)']))
SW = make_dungeon('Skull Woods', ['Skull Woods Final Section (Entrance)', 'Skull Woods First Section', 'Skull Woods Second Section', 'Skull Woods Final Section (Mothula)', 'Skull Woods First Section (Right)', 'Skull Woods First Section (Left)', 'Skull Woods First Section (Top)'], ItemFactory('Big Key (Skull Woods)'), ItemFactory(['Small Key (Skull Woods)'] * 2), ItemFactory(['Map (Skull Woods)', 'Compass (Skull Woods)']))
SP = make_dungeon('Swamp Palace', ['Swamp Palace (Entrance)', 'Swamp Palace (First Room)', 'Swamp Palace (Starting Area)', 'Swamp Palace (Center)', 'Swamp Palace (North)'], ItemFactory('Big Key (Swamp Palace)'), [ItemFactory('Small Key (Swamp Palace)')], ItemFactory(['Map (Swamp Palace)', 'Compass (Swamp Palace)']))
@ -29,12 +29,12 @@ def create_dungeons(world):
def fill_dungeons(world):
freebes = ['[dungeon-A2-1F] Ganons Tower - Map Room', '[dungeon-D1-1F] Dark Palace - Spike Statue Room', '[dungeon-D1-1F] Dark Palace - Big Key Room', '[dungeon-D7-B1] Turtle Rock - Big Key Room']
freebes = ['Ganons Tower - Map Chest', 'Palace of Darkness - Harmless Hellway', 'Palace of Darkness - Big Key Chest', 'Turtle Rock - Big Key Chest']
all_state_base = world.get_all_state()
world.push_item(world.get_location('[dungeon-D3-B1] Skull Woods - South of Big Chest'), ItemFactory('Small Key (Skull Woods)'), False)
world.get_location('[dungeon-D3-B1] Skull Woods - South of Big Chest').event = True
world.push_item(world.get_location('Skull Woods - Pinball Room'), ItemFactory('Small Key (Skull Woods)'), False)
world.get_location('Skull Woods - Pinball Room').event = True
dungeons = [(list(dungeon.regions), dungeon.big_key, list(dungeon.small_keys), list(dungeon.dungeon_items)) for dungeon in world.dungeons]
@ -106,7 +106,7 @@ def fill_dungeons(world):
def fill_dungeons_restrictive(world, shuffled_locations):
all_state_base = world.get_all_state()
skull_woods_big_chest = world.get_location('[dungeon-D3-B1] Skull Woods - South of Big Chest')
skull_woods_big_chest = world.get_location('Skull Woods - Pinball Room')
world.push_item(skull_woods_big_chest, ItemFactory('Small Key (Skull Woods)'), False)
skull_woods_big_chest.event = True
shuffled_locations.remove(skull_woods_big_chest)
@ -122,13 +122,13 @@ def fill_dungeons_restrictive(world, shuffled_locations):
world.state._clear_cache()
dungeon_music_addresses = {'Armos - Pendant': [0x1559A],
'Lanmolas - Pendant': [0x1559B, 0x1559C, 0x1559D, 0x1559E],
dungeon_music_addresses = {'Eastern Palace - Prize': [0x1559A],
'Desert Palace - Prize': [0x1559B, 0x1559C, 0x1559D, 0x1559E],
'Moldorm - Pendant': [0x155C5, 0x1107A, 0x10B8C],
'Helmasaur - Crystal': [0x155B8],
'Arrghus - Crystal': [0x155B7],
'Blind - Crystal': [0x155C6],
'Mothula - Crystal': [0x155BA, 0x155BB, 0x155BC, 0x155BD, 0x15608, 0x15609, 0x1560A, 0x1560B],
'Kholdstare - Crystal': [0x155BF],
'Vitreous - Crystal': [0x155B9],
'Trinexx - Crystal': [0x155C7, 0x155A7, 0x155AA, 0x155AB]}
'Palace of Darkness - Prize': [0x155B8],
'Swamp Palace - Prize': [0x155B7],
'Thieves Town - Prize': [0x155C6],
'Skull Woods - Prize': [0x155BA, 0x155BB, 0x155BC, 0x155BD, 0x15608, 0x15609, 0x1560A, 0x1560B],
'Ice Palace - Prize': [0x155BF],
'Misery Mire - Prize': [0x155B9],
'Turtle Rock - Prize': [0x155C7, 0x155A7, 0x155AA, 0x155AB]}

View File

@ -87,7 +87,7 @@ def link_entrances(world):
# at this point only Light World death mountain entrances remain
# place old man, has limited options
remaining_entrances = ['Old Man Cave (West)', 'Old Man House (Bottom)', 'Death Mountain Return Cave (West)', '7 Chest Cave (Bottom)', '7 Chest Cave (Middle)', '7 Chest Cave (Top)',
remaining_entrances = ['Old Man Cave (West)', 'Old Man House (Bottom)', 'Death Mountain Return Cave (West)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'Paradox Cave (Top)',
'Fairy Ascension Cave (Bottom)', 'Fairy Ascension Cave (Top)', 'Spiral Cave', 'Spiral Cave (Bottom)']
random.shuffle(old_man_entrances)
old_man_exit = old_man_entrances.pop()
@ -263,7 +263,7 @@ def link_entrances(world):
dw_entrances = list(DW_Entrances + DW_Dungeon_Entrances)
dw_entrances_must_exits = list(DW_Entrances_Must_Exit + DW_Dungeon_Entrances_Must_Exit)
lw_doors = list(LW_Entrances + LW_Dungeon_Entrances + LW_Dungeon_Entrances_Must_Exit) + ['Kakariko Well Cave', 'Bat Cave Cave', 'North Fairy Cave', 'Sanctuary', 'Thieves Forest Hideout Stump',
lw_doors = list(LW_Entrances + LW_Dungeon_Entrances + LW_Dungeon_Entrances_Must_Exit) + ['Kakariko Well Cave', 'Bat Cave Cave', 'North Fairy Cave', 'Sanctuary', 'Lost Woods Hideout Stump',
'Lumberjack Tree Cave', 'Hyrule Castle Secret Entrance Stairs'] + list(Old_Man_Entrances)
dw_doors = list(DW_Entrances + DW_Dungeon_Entrances + DW_Entrances_Must_Exit + DW_Dungeon_Entrances_Must_Exit) + ['Skull Woods First Section Door', 'Skull Woods Second Section Door (East)', 'Skull Woods Second Section Door (West)']
@ -274,7 +274,7 @@ def link_entrances(world):
dw_entrances.append('Skull Woods Second Section Door (East)')
dw_entrances.append('Skull Woods First Section Door')
lw_entrances.extend(['Kakariko Well Cave', 'Bat Cave Cave', 'North Fairy Cave', 'Sanctuary', 'Thieves Forest Hideout Stump', 'Lumberjack Tree Cave', 'Hyrule Castle Entrance (South)'])
lw_entrances.extend(['Kakariko Well Cave', 'Bat Cave Cave', 'North Fairy Cave', 'Sanctuary', 'Lost Woods Hideout Stump', 'Lumberjack Tree Cave', 'Hyrule Castle Entrance (South)'])
lw_entrances_must_exits = list(LW_Dungeon_Entrances_Must_Exit)
old_man_entrances = list(Old_Man_Entrances)
@ -285,13 +285,13 @@ def link_entrances(world):
# shuffle up holes
lw_hole_entrances = ['Kakariko Well Drop', 'Bat Cave Drop', 'North Fairy Cave Drop', 'Thieves Forest Hideout Drop', 'Lumberjack Tree Tree', 'Sanctuary Grave']
lw_hole_entrances = ['Kakariko Well Drop', 'Bat Cave Drop', 'North Fairy Cave Drop', 'Lost Woods Hideout Drop', 'Lumberjack Tree Tree', 'Sanctuary Grave']
dw_hole_entrances = ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)', 'Skull Woods Second Section Hole']
hole_targets = [('Kakariko Well Exit', 'Kakariko Well (top)'),
('Bat Cave Exit', 'Bat Cave (right)'),
('North Fairy Cave Exit', 'North Fairy Cave'),
('Thieves Forest Hideout Exit', 'Thieves Forest Hideout (top)'),
('Lost Woods Hideout Exit', 'Lost Woods Hideout (top)'),
('Lumberjack Tree Exit', 'Lumberjack Tree (top)'),
(('Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)'), 'Skull Woods Second Section')]
@ -501,10 +501,10 @@ def link_entrances(world):
elif world.shuffle == 'insanity':
# beware ye who enter here
entrances = LW_Entrances + LW_Dungeon_Entrances + DW_Entrances + DW_Dungeon_Entrances + ['Skull Woods Second Section Door (East)', 'Skull Woods First Section Door', 'Kakariko Well Cave', 'Bat Cave Cave', 'North Fairy Cave', 'Sanctuary', 'Thieves Forest Hideout Stump', 'Lumberjack Tree Cave', 'Hyrule Castle Entrance (South)']
entrances = LW_Entrances + LW_Dungeon_Entrances + DW_Entrances + DW_Dungeon_Entrances + ['Skull Woods Second Section Door (East)', 'Skull Woods First Section Door', 'Kakariko Well Cave', 'Bat Cave Cave', 'North Fairy Cave', 'Sanctuary', 'Lost Woods Hideout Stump', 'Lumberjack Tree Cave', 'Hyrule Castle Entrance (South)']
entrances_must_exits = DW_Entrances_Must_Exit + DW_Dungeon_Entrances_Must_Exit + LW_Dungeon_Entrances_Must_Exit + ['Skull Woods Second Section Door (West)']
doors = LW_Entrances + LW_Dungeon_Entrances + LW_Dungeon_Entrances_Must_Exit + ['Kakariko Well Cave', 'Bat Cave Cave', 'North Fairy Cave', 'Sanctuary', 'Thieves Forest Hideout Stump', 'Lumberjack Tree Cave', 'Hyrule Castle Secret Entrance Stairs'] + Old_Man_Entrances +\
doors = LW_Entrances + LW_Dungeon_Entrances + LW_Dungeon_Entrances_Must_Exit + ['Kakariko Well Cave', 'Bat Cave Cave', 'North Fairy Cave', 'Sanctuary', 'Lost Woods Hideout Stump', 'Lumberjack Tree Cave', 'Hyrule Castle Secret Entrance Stairs'] + Old_Man_Entrances +\
DW_Entrances + DW_Dungeon_Entrances + DW_Entrances_Must_Exit + DW_Dungeon_Entrances_Must_Exit + ['Skull Woods First Section Door', 'Skull Woods Second Section Door (East)', 'Skull Woods Second Section Door (West)']
random.shuffle(doors)
@ -512,14 +512,14 @@ def link_entrances(world):
old_man_entrances = list(Old_Man_Entrances)
caves = Cave_Exits + Dungeon_Exits + Cave_Three_Exits + ['Old Man House Exit (Bottom)', 'Old Man House Exit (Top)', 'Skull Woods First Section Exit', 'Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)',
'Kakariko Well Exit', 'Bat Cave Exit', 'North Fairy Cave Exit', 'Thieves Forest Hideout Exit', 'Lumberjack Tree Exit', 'Sanctuary Exit']
'Kakariko Well Exit', 'Bat Cave Exit', 'North Fairy Cave Exit', 'Lost Woods Hideout Exit', 'Lumberjack Tree Exit', 'Sanctuary Exit']
# shuffle up holes
hole_entrances = ['Kakariko Well Drop', 'Bat Cave Drop', 'North Fairy Cave Drop', 'Thieves Forest Hideout Drop', 'Lumberjack Tree Tree', 'Sanctuary Grave',
hole_entrances = ['Kakariko Well Drop', 'Bat Cave Drop', 'North Fairy Cave Drop', 'Lost Woods Hideout Drop', 'Lumberjack Tree Tree', 'Sanctuary Grave',
'Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)', 'Skull Woods Second Section Hole']
hole_targets = ['Kakariko Well (top)', 'Bat Cave (right)', 'North Fairy Cave', 'Thieves Forest Hideout (top)', 'Lumberjack Tree (top)', 'Sewer Drop', 'Skull Woods Second Section',
hole_targets = ['Kakariko Well (top)', 'Bat Cave (right)', 'North Fairy Cave', 'Lost Woods Hideout (top)', 'Lumberjack Tree (top)', 'Sewer Drop', 'Skull Woods Second Section',
'Skull Woods First Section (Left)', 'Skull Woods First Section (Right)', 'Skull Woods First Section (Top)']
if world.mode == 'standard':
@ -712,14 +712,14 @@ def scramble_holes(world):
hole_entrances = [('Kakariko Well Cave', 'Kakariko Well Drop'),
('Bat Cave Cave', 'Bat Cave Drop'),
('North Fairy Cave', 'North Fairy Cave Drop'),
('Thieves Forest Hideout Stump', 'Thieves Forest Hideout Drop'),
('Lost Woods Hideout Stump', 'Lost Woods Hideout Drop'),
('Lumberjack Tree Cave', 'Lumberjack Tree Tree'),
('Sanctuary', 'Sanctuary Grave')]
hole_targets = [('Kakariko Well Exit', 'Kakariko Well (top)'),
('Bat Cave Exit', 'Bat Cave (right)'),
('North Fairy Cave Exit', 'North Fairy Cave'),
('Thieves Forest Hideout Exit', 'Thieves Forest Hideout (top)'),
('Lost Woods Hideout Exit', 'Lost Woods Hideout (top)'),
('Lumberjack Tree Exit', 'Lumberjack Tree (top)')]
if not world.shuffle_ganon:
@ -843,7 +843,7 @@ def simple_shuffle_dungeons(world):
skull_woods_shuffle(world)
dungeon_entrances = ['Eastern Palace', 'Tower of Hera', 'Thieves Town', 'Skull Woods Final Section', 'Palace of Darkness', 'Ice Palace', 'Misery Mire', 'Swamp Palace']
dungeon_exits = ['Eastern Palace Exit', 'Tower of Hera Exit', 'Thieves Town Exit', 'Skull Woods Final Section Exit', 'Dark Palace Exit', 'Ice Palace Exit', 'Misery Mire Exit', 'Swamp Palace Exit']
dungeon_exits = ['Eastern Palace Exit', 'Tower of Hera Exit', 'Thieves Town Exit', 'Skull Woods Final Section Exit', 'Palace of Darkness Exit', 'Ice Palace Exit', 'Misery Mire Exit', 'Swamp Palace Exit']
if not world.shuffle_ganon:
connect_two_way(world, 'Ganons Tower', 'Ganons Tower Exit')
@ -951,7 +951,7 @@ Dungeon_Exits = [('Desert Palace Exit (South)', 'Desert Palace Exit (West)', 'De
'Skull Woods Final Section Exit',
'Ice Palace Exit',
'Misery Mire Exit',
'Dark Palace Exit',
'Palace of Darkness Exit',
'Swamp Palace Exit',
'Agahnims Tower Exit',
('Turtle Rock Exit (Front)', 'Turtle Rock Ledge Exit (East)', 'Turtle Rock Ledge Exit (West)', 'Turtle Rock Isolated Ledge Exit')]
@ -982,7 +982,7 @@ Cave_Exits = [('Elder House Exit (East)', 'Elder House Exit (West)'),
('Hookshot Cave Exit (South)', 'Hookshot Cave Exit (North)')]
Cave_Three_Exits = [('Spectacle Rock Cave Exit (Peak)', 'Spectacle Rock Cave Exit (Top)', 'Spectacle Rock Cave Exit'),
('7 Chest Cave Exit (Top)', '7 Chest Cave Exit (Middle)', '7 Chest Cave Exit (Bottom)')]
('Paradox Cave Exit (Top)', 'Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Bottom)')]
LW_Entrances = ['Elder House (East)',
'Elder House (West)',
@ -991,9 +991,9 @@ LW_Entrances = ['Elder House (East)',
'Old Man Cave (West)',
'Old Man House (Bottom)',
'Death Mountain Return Cave (West)',
'7 Chest Cave (Bottom)',
'7 Chest Cave (Middle)',
'7 Chest Cave (Top)',
'Paradox Cave (Bottom)',
'Paradox Cave (Middle)',
'Paradox Cave (Top)',
'Fairy Ascension Cave (Bottom)',
'Fairy Ascension Cave (Top)',
'Spiral Cave',
@ -1004,7 +1004,7 @@ DW_Entrances = ['Bumper Cave (Bottom)',
'Dark Death Mountain Ascend (Bottom)',
'Hookshot Cave']
Blacksmith_Single_Cave_Doors = ['Thiefs Hut',
Blacksmith_Single_Cave_Doors = ['Blinds Hideout',
'Lake Hylia Fairy',
'Swamp Fairy',
'Desert Fairy',
@ -1027,9 +1027,9 @@ Blacksmith_Single_Cave_Doors = ['Thiefs Hut',
'Good Bee Cave',
'20 Rupee Cave',
'50 Rupee Cave',
'Ice Cave',
'Ice Rod Cave',
'Library',
'Witch Hut',
'Potion Shop',
'Dam',
'Lumberjack House',
'Lake Hylia Fortune Teller',
@ -1040,7 +1040,7 @@ Bomb_Shop_Single_Cave_Doors = ['Waterfall of Wishing',
'Bonk Rock Cave',
'Graveyard Cave',
'Checkerboard Cave',
'Cave South of Haunted Grove',
'Cave 45',
'Kings Grave',
'Bonk Fairy (Light)',
'Hookshot Fairy',
@ -1052,7 +1052,7 @@ Bomb_Shop_Single_Cave_Doors = ['Waterfall of Wishing',
'Dark Lake Hylia Ledge Hint',
'Dark Swamp Cave',
'Bonk Fairy (Dark)',
'Doorless Hut',
'Brewery',
'C-Shaped House',
'Chest Game',
'Dark World Hammer Peg Cave',
@ -1063,7 +1063,7 @@ Bomb_Shop_Single_Cave_Doors = ['Waterfall of Wishing',
'Dark World Lumberjack Shop',
'Dark World Potion Shop',
'Archery Game',
'Dark Desert Cave',
'Mire Shed',
'Dark Desert Hint',
'Dark Desert Fairy',
'Spike Cave',
@ -1075,7 +1075,7 @@ Bomb_Shop_Single_Cave_Doors = ['Waterfall of Wishing',
Single_Cave_Doors = ['Pyramid Fairy']
Single_Cave_Targets = ['Thiefs Hut',
Single_Cave_Targets = ['Blinds Hideout',
'Bonk Fairy',
'Healer Fairy',
'Healer Fairy',
@ -1094,7 +1094,7 @@ Single_Cave_Targets = ['Thiefs Hut',
'Tavern (Front)',
'Light World Bomb Hut',
'Kakariko Shop',
'Cave South of Haunted Grove',
'Cave 45',
'Graveyard Cave',
'Checkerboard Cave',
'Mini Moldorm Cave',
@ -1102,10 +1102,10 @@ Single_Cave_Targets = ['Thiefs Hut',
'Good Bee Cave',
'20 Rupee Cave',
'50 Rupee Cave',
'Ice Cave',
'Ice Rod Cave',
'Bonk Rock Cave',
'Library',
'Witch Hut',
'Potion Shop',
'Hookshot Fairy',
'Waterfall of Wishing',
'Capacity Upgrade',
@ -1118,7 +1118,7 @@ Single_Cave_Targets = ['Thiefs Hut',
'Dark Lake Hylia Ledge Hint',
'Dark Swamp Cave',
'Bonk Fairy',
'Doorless Hut',
'Brewery',
'C-Shaped House',
'Chest Game',
'Dark World Hammer Peg Cave',
@ -1129,7 +1129,7 @@ Single_Cave_Targets = ['Thiefs Hut',
'Dark World Shop',
'Dark World Shop',
'Archery Game',
'Dark Desert Cave',
'Mire Shed',
'Dark Desert Hint',
'Healer Fairy',
'Spike Cave',
@ -1155,7 +1155,7 @@ mandatory_connections = [('Links House', 'Links House'), # unshuffled. For now
('Desert Palace East Wing', 'Desert Palace East'),
('Bat Cave Drop Ledge', 'Bat Cave Drop Ledge'),
('Bat Cave Door', 'Bat Cave (left)'),
('Thieves Forest Hideout (top to bottom)', 'Thieves Forest Hideout (bottom)'),
('Lost Woods Hideout (top to bottom)', 'Lost Woods Hideout (bottom)'),
('Lumberjack Tree (top to bottom)', 'Lumberjack Tree (bottom)'),
('Desert Palace Stairs', 'Desert Palace Stairs'),
('Desert Palace Stairs Drop', 'Light World'),
@ -1214,10 +1214,10 @@ mandatory_connections = [('Links House', 'Links House'), # unshuffled. For now
('South Hyrule Teleporter', 'South Dark World'),
('Kakariko Teleporter', 'West Dark World'),
('Death Mountain Teleporter', 'Dark Death Mountain (West Bottom)'),
('7 Chest Cave Push Block Reverse', '7 Chest Cave Chest Area'),
('7 Chest Cave Push Block', '7 Chest Cave Front'),
('7 Chest Cave Bomb Jump', '7 Chest Cave'),
('7 Chest Cave Drop', '7 Chest Cave Chest Area'),
('Paradox Cave Push Block Reverse', 'Paradox Cave Chest Area'),
('Paradox Cave Push Block', 'Paradox Cave Front'),
('Paradox Cave Bomb Jump', 'Paradox Cave'),
('Paradox Cave Drop', 'Paradox Cave Chest Area'),
('Fairy Ascension Rocks', 'Fairy Ascension Plateau'),
('Fairy Ascension Mirror Spot', 'Fairy Ascension Plateau'),
('Fairy Ascension Drop', 'East Death Mountain (Bottom)'),
@ -1270,14 +1270,14 @@ mandatory_connections = [('Links House', 'Links House'), # unshuffled. For now
('Turtle Rock (Dark Room) (South)', 'Turtle Rock (Eye Bridge)'),
('Turtle Rock Dark Room (South)', 'Turtle Rock (Dark Room)'),
('Turtle Rock (Trinexx)', 'Turtle Rock (Trinexx)'),
('Dark Palace Bridge Room', 'Dark Palace (Center)'),
('Dark Palace Bonk Wall', 'Dark Palace (Bonk Section)'),
('Dark Palace Big Key Chest Staircase', 'Dark Palace (Big Key Chest)'),
('Dark Palace (North)', 'Dark Palace (North)'),
('Dark Palace Big Key Door', 'Dark Palace (Final Section)'),
('Dark Palace Hammer Peg Drop', 'Dark Palace (Center)'),
('Dark Palace Spike Statue Room Door', 'Dark Palace (Spike Statue Room)'),
('Dark Palace Maze Door', 'Dark Palace (Maze)'),
('Palace of Darkness Bridge Room', 'Palace of Darkness (Center)'),
('Palace of Darkness Bonk Wall', 'Palace of Darkness (Bonk Section)'),
('Palace of Darkness Big Key Chest Staircase', 'Palace of Darkness (Big Key Chest)'),
('Palace of Darkness (North)', 'Palace of Darkness (North)'),
('Palace of Darkness Big Key Door', 'Palace of Darkness (Final Section)'),
('Palace of Darkness Hammer Peg Drop', 'Palace of Darkness (Center)'),
('Palace of Darkness Spike Statue Room Door', 'Palace of Darkness (Spike Statue Room)'),
('Palace of Darkness Maze Door', 'Palace of Darkness (Maze)'),
('Ganons Tower (Tile Room)', 'Ganons Tower (Tile Room)'),
('Ganons Tower (Tile Room) Key Door', 'Ganons Tower (Compass Room)'),
('Ganons Tower (Bottom) (East)', 'Ganons Tower (Bottom)'),
@ -1296,7 +1296,7 @@ mandatory_connections = [('Links House', 'Links House'), # unshuffled. For now
# non-shuffled entrance links
default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'),
("Thiefs Hut", "Thiefs Hut"),
("Blinds Hideout", "Blinds Hideout"),
('Dam', 'Dam'),
('Lumberjack House', 'Lumberjack House'),
("Hyrule Castle Secret Entrance Drop", "Hyrule Castle Secret Entrance"),
@ -1337,13 +1337,13 @@ default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'),
('Tavern (Front)', 'Tavern (Front)'),
('Light World Bomb Hut', 'Light World Bomb Hut'),
('Kakariko Shop', 'Kakariko Shop'),
('Thieves Forest Hideout Drop', 'Thieves Forest Hideout (top)'),
('Thieves Forest Hideout Stump', 'Thieves Forest Hideout (bottom)'),
('Thieves Forest Hideout Exit', 'Light World'),
('Lost Woods Hideout Drop', 'Lost Woods Hideout (top)'),
('Lost Woods Hideout Stump', 'Lost Woods Hideout (bottom)'),
('Lost Woods Hideout Exit', 'Light World'),
('Lumberjack Tree Tree', 'Lumberjack Tree (top)'),
('Lumberjack Tree Cave', 'Lumberjack Tree (bottom)'),
('Lumberjack Tree Exit', 'Light World'),
('Cave South of Haunted Grove', 'Cave South of Haunted Grove'),
('Cave 45', 'Cave 45'),
('Graveyard Cave', 'Graveyard Cave'),
('Checkerboard Cave', 'Checkerboard Cave'),
('Mini Moldorm Cave', 'Mini Moldorm Cave'),
@ -1351,11 +1351,11 @@ default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'),
('Good Bee Cave', 'Good Bee Cave'),
('20 Rupee Cave', '20 Rupee Cave'),
('50 Rupee Cave', '50 Rupee Cave'),
('Ice Cave', 'Ice Cave'),
('Ice Rod Cave', 'Ice Rod Cave'),
('Bonk Rock Cave', 'Bonk Rock Cave'),
('Library', 'Library'),
('Kakariko Gamble Game', 'Kakariko Gamble Game'),
('Witch Hut', 'Witch Hut'),
('Potion Shop', 'Potion Shop'),
('Two Brothers House (East)', 'Two Brothers House'),
('Two Brothers House (West)', 'Two Brothers House'),
('Two Brothers House Exit (East)', 'Light World'),
@ -1383,12 +1383,12 @@ default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'),
('Spectacle Rock Cave Exit', 'Death Mountain'),
('Spectacle Rock Cave Exit (Top)', 'Death Mountain'),
('Spectacle Rock Cave Exit (Peak)', 'Death Mountain'),
('7 Chest Cave (Bottom)', '7 Chest Cave Front'),
('7 Chest Cave (Middle)', '7 Chest Cave'),
('7 Chest Cave (Top)', '7 Chest Cave'),
('7 Chest Cave Exit (Bottom)', 'East Death Mountain (Bottom)'),
('7 Chest Cave Exit (Middle)', 'East Death Mountain (Bottom)'),
('7 Chest Cave Exit (Top)', 'East Death Mountain (Top)'),
('Paradox Cave (Bottom)', 'Paradox Cave Front'),
('Paradox Cave (Middle)', 'Paradox Cave'),
('Paradox Cave (Top)', 'Paradox Cave'),
('Paradox Cave Exit (Bottom)', 'East Death Mountain (Bottom)'),
('Paradox Cave Exit (Middle)', 'East Death Mountain (Bottom)'),
('Paradox Cave Exit (Top)', 'East Death Mountain (Top)'),
('Hookshot Fairy', 'Hookshot Fairy'),
('Fairy Ascension Cave (Bottom)', 'Fairy Ascension Cave'),
('Fairy Ascension Cave (Top)', 'Fairy Ascension Cave'),
@ -1410,7 +1410,7 @@ default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'),
('Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Hint'),
('Dark Swamp Cave', 'Dark Swamp Cave'),
('Bonk Fairy (Dark)', 'Bonk Fairy'),
('Doorless Hut', 'Doorless Hut'),
('Brewery', 'Brewery'),
('C-Shaped House', 'C-Shaped House'),
('Chest Game', 'Chest Game'),
('Dark World Hammer Peg Cave', 'Dark World Hammer Peg Cave'),
@ -1425,7 +1425,7 @@ default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'),
('Archery Game', 'Archery Game'),
('Bumper Cave Exit (Top)', 'Bumper Cave Ledge'),
('Bumper Cave Exit (Bottom)', 'West Dark World'),
('Dark Desert Cave', 'Dark Desert Cave'),
('Mire Shed', 'Mire Shed'),
('Dark Desert Hint', 'Dark Desert Hint'),
('Dark Desert Fairy', 'Healer Fairy'),
('Spike Cave', 'Spike Cave'),
@ -1488,8 +1488,8 @@ default_dungeon_connections = [('Desert Palace Entrance (South)', 'Desert Palace
('Ice Palace Exit', 'Dark Lake Hylia Central Island'),
('Misery Mire', 'Misery Mire (Entrance)'),
('Misery Mire Exit', 'Dark Desert'),
('Palace of Darkness', 'Dark Palace (Entrance)'),
('Dark Palace Exit', 'East Dark World'),
('Palace of Darkness', 'Palace of Darkness (Entrance)'),
('Palace of Darkness Exit', 'East Dark World'),
('Swamp Palace', 'Swamp Palace (Entrance)'), # requires additional patch for flooding moat if moved
('Swamp Palace Exit', 'South Dark World'),
@ -1537,7 +1537,7 @@ door_addresses = {'Desert Palace Entrance (South)': ((0xDBB7B, 0x15B02),),
'Elder House (East)': ((0xDBB80, 0x15B0C),),
'Elder House (West)': ((0xDBB7F, 0x15B0A),),
'North Fairy Cave': ((0xDBBAA, 0x15B60),),
'Thieves Forest Hideout Stump': ((0xDBB9E, 0x15B5A),),
'Lost Woods Hideout Stump': ((0xDBB9E, 0x15B5A),),
'Lumberjack Tree Cave': ((0xDBB84, 0x15B14),),
'Two Brothers House (East)': ((0xDBB82, 0x15B10),),
'Two Brothers House (West)': ((0xDBB81, 0x15B0E),),
@ -1551,9 +1551,9 @@ door_addresses = {'Desert Palace Entrance (South)': ((0xDBB7B, 0x15B02),),
'Spectacle Rock Cave Peak': ((0xDBB95, 0x15B36),),
'Spectacle Rock Cave': ((0xDBB94, 0x15B34),),
'Spectacle Rock Cave (Bottom)': ((0xDBB93, 0x15B32),),
'7 Chest Cave (Bottom)': ((0xDBB90, 0x15B2C),),
'7 Chest Cave (Middle)': ((0xDBB91, 0x15B2E),),
'7 Chest Cave (Top)': ((0xDBB92, 0x15B30),),
'Paradox Cave (Bottom)': ((0xDBB90, 0x15B2C),),
'Paradox Cave (Middle)': ((0xDBB91, 0x15B2E),),
'Paradox Cave (Top)': ((0xDBB92, 0x15B30),),
'Fairy Ascension Cave (Bottom)': ((0xDBB8C, 0x15B24),),
'Fairy Ascension Cave (Top)': ((0xDBB8D, 0x15B26),),
'Spiral Cave': ((0xDBB8F, 0x15B2A),),
@ -1573,7 +1573,7 @@ door_addresses = {'Desert Palace Entrance (South)': ((0xDBB7B, 0x15B02),),
'Pyramid Hole': ((0xDB854, 0xDB855, 0xDB856),),
'Waterfall of Wishing': (0xDBBCE, 'Waterfall of Wishing'),
'Dam': (0xDBBC0, 'Dam'),
'Thiefs Hut': (0xDBBD3, 'Thiefs Hut'),
'Blinds Hideout': (0xDBBD3, 'Blinds Hideout'),
'Hyrule Castle Secret Entrance Drop': (0xDB858,),
'Bonk Fairy (Light)': (0xDBBE9, 'Bonk Fairy'),
'Lake Hylia Fairy': (0xDBBD0, 'Healer Fairy'),
@ -1599,9 +1599,9 @@ door_addresses = {'Desert Palace Entrance (South)': ((0xDBB7B, 0x15B02),),
'Tavern (Front)': (0xDBBB4, 'Tavern (Front)'),
'Light World Bomb Hut': (0xDBBBC, 'Light World Bomb Hut'),
'Kakariko Shop': (0xDBBB8, 'Kakariko Shop'),
'Thieves Forest Hideout Drop': (0xDB853,),
'Lost Woods Hideout Drop': (0xDB853,),
'Lumberjack Tree Tree': (0xDB85B,),
'Cave South of Haunted Grove': (0xDBBC3, 'Cave South of Haunted Grove'),
'Cave 45': (0xDBBC3, 'Cave 45'),
'Graveyard Cave': (0xDBBC4, 'Graveyard Cave'),
'Checkerboard Cave': (0xDBBF0, 'Checkerboard Cave'),
'Mini Moldorm Cave': (0xDBBEF, 'Mini Moldorm Cave'),
@ -1609,10 +1609,10 @@ door_addresses = {'Desert Palace Entrance (South)': ((0xDBB7B, 0x15B02),),
'Good Bee Cave': (0xDBBDD, 'Good Bee Cave'),
'20 Rupee Cave': (0xDBBED, '20 Rupee Cave'),
'50 Rupee Cave': (0xDBBEB, '50 Rupee Cave'),
'Ice Cave': (0xDBBF2, 'Ice Cave'),
'Ice Rod Cave': (0xDBBF2, 'Ice Rod Cave'),
'Bonk Rock Cave': (0xDBBEC, 'Bonk Rock Cave'),
'Library': (0xDBBBB, 'Library'),
'Witch Hut': (0xDBBBE, 'Witch Hut'),
'Potion Shop': (0xDBBBE, 'Potion Shop'),
'Sanctuary Grave': (0xDB85E,),
'Hookshot Fairy': (0xDBBC2, 'Hookshot Fairy'),
'Pyramid Fairy': (0xDBBD5, 'Pyramid Fairy'),
@ -1624,7 +1624,7 @@ door_addresses = {'Desert Palace Entrance (South)': ((0xDBB7B, 0x15B02),),
'Dark Lake Hylia Ledge Hint': (0xDBBDC, 'Dark Lake Hylia Ledge Hint'),
'Dark Swamp Cave': (0xDBBAF, 'Dark Swamp Cave'),
'Bonk Fairy (Dark)': (0xDBBEA, 'Bonk Fairy'),
'Doorless Hut': (0xDBBBA, 'Doorless Hut'),
'Brewery': (0xDBBBA, 'Brewery'),
'C-Shaped House': (0xDBBC6, 'C-Shaped House'),
'Chest Game': (0xDBBB9, 'Chest Game'),
'Dark World Hammer Peg Cave': (0xDBBF1, 'Dark World Hammer Peg Cave'),
@ -1635,7 +1635,7 @@ door_addresses = {'Desert Palace Entrance (South)': ((0xDBB7B, 0x15B02),),
'Dark World Lumberjack Shop': (0xDBBC9, 'Dark World Shop'),
'Dark World Potion Shop': (0xDBBE1, 'Dark World Shop'),
'Archery Game': (0xDBBCB, 'Archery Game'),
'Dark Desert Cave': (0xDBBD1, 'Dark Desert Cave'),
'Mire Shed': (0xDBBD1, 'Mire Shed'),
'Dark Desert Hint': (0xDBBD4, 'Dark Desert Hint'),
'Dark Desert Fairy': (0xDBBC8, 'Healer Fairy'),
'Spike Cave': (0xDBBB3, 'Spike Cave'),
@ -1665,7 +1665,7 @@ exit_ids = {'Desert Palace Exit (South)': (0x09, 0x84),
'Skull Woods Final Section Exit': (0x2B, 0x59),
'Ice Palace Exit': (0x2D, 0x0E),
'Misery Mire Exit': (0x27, 0x98),
'Dark Palace Exit': (0x26, 0x4A),
'Palace of Darkness Exit': (0x26, 0x4A),
'Swamp Palace Exit': (0x25, 0x28),
'Turtle Rock Exit (Front)': (0x35, 0xD6),
'Turtle Rock Ledge Exit (West)': (0x15, 0x23),
@ -1677,7 +1677,7 @@ exit_ids = {'Desert Palace Exit (South)': (0x09, 0x84),
'Elder House Exit (East)': (0x0E, 0xF3),
'Elder House Exit (West)': (0x0D, 0xF2),
'North Fairy Cave Exit': (0x38, 0x08),
'Thieves Forest Hideout Exit': (0x2C, 0xE1),
'Lost Woods Hideout Exit': (0x2C, 0xE1),
'Lumberjack Tree Exit': (0x12, 0xE2),
'Two Brothers House Exit (East)': (0x10, 0xF5),
'Two Brothers House Exit (West)': (0x0F, 0xF4),
@ -1691,9 +1691,9 @@ exit_ids = {'Desert Palace Exit (South)': (0x09, 0x84),
'Spectacle Rock Cave Exit': (0x21, 0xF9),
'Spectacle Rock Cave Exit (Top)': (0x22, 0xFA),
'Spectacle Rock Cave Exit (Peak)': (0x23, 0xEA),
'7 Chest Cave Exit (Bottom)': (0x1E, 0xFF),
'7 Chest Cave Exit (Middle)': (0x1F, 0xEF),
'7 Chest Cave Exit (Top)': (0x20, 0xDF),
'Paradox Cave Exit (Bottom)': (0x1E, 0xFF),
'Paradox Cave Exit (Middle)': (0x1F, 0xEF),
'Paradox Cave Exit (Top)': (0x20, 0xDF),
'Fairy Ascension Cave Exit (Bottom)': (0x1A, 0xFD),
'Fairy Ascension Cave Exit (Top)': (0x1B, 0xED),
'Spiral Cave Exit': (0x1C, 0xFE),
@ -1708,7 +1708,7 @@ exit_ids = {'Desert Palace Exit (South)': (0x09, 0x84),
'Pyramid Exit': (0x36, 0x10),
'Waterfall of Wishing': 0x5C,
'Dam': 0x4E,
'Thiefs Hut': 0x61,
'Blinds Hideout': 0x61,
'Lumberjack House': 0x6B,
'Bonk Fairy': 0x71,
'Healer Fairy': 0x5E,
@ -1729,7 +1729,7 @@ exit_ids = {'Desert Palace Exit (South)': (0x09, 0x84),
'Tavern (Front)': 0x42,
'Light World Bomb Hut': 0x4A,
'Kakariko Shop': 0x46,
'Cave South of Haunted Grove': 0x51,
'Cave 45': 0x51,
'Graveyard Cave': 0x52,
'Checkerboard Cave': 0x72,
'Mini Moldorm Cave': 0x6C,
@ -1737,11 +1737,11 @@ exit_ids = {'Desert Palace Exit (South)': (0x09, 0x84),
'Good Bee Cave': 0x56,
'20 Rupee Cave': 0x6F,
'50 Rupee Cave': 0x6D,
'Ice Cave': 0x84,
'Ice Rod Cave': 0x84,
'Bonk Rock Cave': 0x6E,
'Library': 0x49,
'Kakariko Gamble Game': 0x67,
'Witch Hut': 0x4C,
'Potion Shop': 0x4C,
'Hookshot Fairy': 0x50,
'Pyramid Fairy': 0x63,
'East Dark World Hint': 0x69,
@ -1751,7 +1751,7 @@ exit_ids = {'Desert Palace Exit (South)': (0x09, 0x84),
'Dark Lake Hylia Ledge Spike Cave': 0x70,
'Dark Lake Hylia Ledge Hint': 0x6A,
'Dark Swamp Cave': 0x3D,
'Doorless Hut': 0x48,
'Brewery': 0x48,
'C-Shaped House': 0x54,
'Chest Game': 0x47,
'Dark World Hammer Peg Cave': 0x83,
@ -1759,7 +1759,7 @@ exit_ids = {'Desert Palace Exit (South)': (0x09, 0x84),
'Dark Sanctuary Hint': 0x5A,
'Fortune Teller (Dark)': 0x66,
'Archery Game': 0x59,
'Dark Desert Cave': 0x5F,
'Mire Shed': 0x5F,
'Dark Desert Hint': 0x62,
'Spike Cave': 0x41,
'Mimic Cave': 0x4F,
@ -1767,7 +1767,7 @@ exit_ids = {'Desert Palace Exit (South)': (0x09, 0x84),
'Hyrule Castle Secret Entrance': 0x7D,
'Bat Cave (right)': 0x7E,
'North Fairy Cave': 0x7C,
'Thieves Forest Hideout (top)': 0x7A,
'Lost Woods Hideout (top)': 0x7A,
'Lumberjack Tree (top)': 0x7F,
'Sewer Drop': 0x81,
'Skull Woods Second Section': 0x79,

View File

@ -11,11 +11,11 @@ def ItemFactory(items):
singleton = True
for item in items:
if item in item_table:
advancement, priority, type, code, altar_hint, altar_credit, sickkid_credit, zora_credit, witch_credit, fluteboy_credit = item_table[item]
advancement, priority, type, code, pedestal_hint, pedestal_credit, sickkid_credit, zora_credit, witch_credit, fluteboy_credit = item_table[item]
if item == 'Bottle':
# randomly fill bottle
code = [0x16, 0x2B, 0x2C, 0x2D, 0x3C, 0x3D, 0x48][random.randint(0, 6)]
ret.append(Item(item, advancement, priority, type, code, altar_hint, altar_credit, sickkid_credit, zora_credit, witch_credit, fluteboy_credit))
ret.append(Item(item, advancement, priority, type, code, pedestal_hint, pedestal_credit, sickkid_credit, zora_credit, witch_credit, fluteboy_credit))
else:
logging.getLogger('').warning('Unknown Item: %s' % item)
return None
@ -26,7 +26,7 @@ def ItemFactory(items):
return ret
# Format: Name: (Advancement, Priority, Type, ItemCode, Altar Hint Text, Altar Credit Text, Sick Kid Credit Text, Zora Credit Text, Witch Credit Text, Flute Boy Credit Text)
# Format: Name: (Advancement, Priority, Type, ItemCode, Pedestal Hint Text, Pedestal Credit Text, Sick Kid Credit Text, Zora Credit Text, Witch Credit Text, Flute Boy Credit Text)
item_table = {'Bow': (True, False, None, 0x0B, 'You have\nchosen the\narcher class.', 'and the D', 'Ex-Adventurer', None, None, None),
'Book of Mudora': (True, False, None, 0x1D, 'This is a\nparadox?!', 'and the Paradox', 'Lazy Reader', None, None, None),
'Hammer': (True, False, None, 0x09, 'stop\nhammer time!', 'and the blunt weapon', None, None, None, None),

20
Main.py
View File

@ -160,23 +160,23 @@ def generate_itempool(world):
if world.mode == 'swordless':
world.itempool.extend(ItemFactory(['Rupees (20)'] * 4))
elif world.mode == 'standard':
world.push_item('Uncle', ItemFactory('Progressive Sword'), False)
world.get_location('Uncle').event = True
world.push_item('Link\'s Uncle', ItemFactory('Progressive Sword'), False)
world.get_location('Link\'s Uncle').event = True
world.itempool.extend(ItemFactory(['Progressive Sword'] * 3))
else:
world.itempool.extend(ItemFactory(['Progressive Sword'] * 4))
# provide mirror and pearl so you can avoid fake DW/LW and do dark world exploration as intended by algorithm, for now
if world.shuffle == 'insanity':
world.push_item('[cave-040] Links House', ItemFactory('Magic Mirror'), False)
world.get_location('[cave-040] Links House').event = True
world.push_item('[dungeon-C-1F] Sanctuary', ItemFactory('Moon Pearl'), False)
world.get_location('[dungeon-C-1F] Sanctuary').event = True
world.push_item('Links House', ItemFactory('Magic Mirror'), False)
world.get_location('Links House').event = True
world.push_item('Sanctuary', ItemFactory('Moon Pearl'), False)
world.get_location('Sanctuary').event = True
else:
world.itempool.extend(ItemFactory(['Magic Mirror', 'Moon Pearl']))
if world.goal == 'pedestal':
world.push_item('Altar', ItemFactory('Triforce'), False)
world.push_item('Master Sword Pedestal', ItemFactory('Triforce'), False)
elif world.goal == 'triforcehunt':
world.treasure_hunt_count = 20
world.treasure_hunt_icon = 'Triforce Piece'
@ -191,9 +191,9 @@ def generate_itempool(world):
# distribute crystals
crystals = ItemFactory(['Red Pendant', 'Blue Pendant', 'Green Pendant', 'Crystal 1', 'Crystal 2', 'Crystal 3', 'Crystal 4', 'Crystal 7', 'Crystal 5', 'Crystal 6'])
crystal_locations = [world.get_location('Trinexx - Crystal'), world.get_location('Armos - Pendant'), world.get_location('Lanmolas - Pendant'), world.get_location('Moldorm - Pendant'), world.get_location('Helmasaur - Crystal'),
world.get_location('Blind - Crystal'), world.get_location('Mothula - Crystal'), world.get_location('Arrghus - Crystal'), world.get_location('Kholdstare - Crystal'),
world.get_location('Vitreous - Crystal')]
crystal_locations = [world.get_location('Turtle Rock - Prize'), world.get_location('Eastern Palace - Prize'), world.get_location('Desert Palace - Prize'), world.get_location('Moldorm - Pendant'), world.get_location('Palace of Darkness - Prize'),
world.get_location('Thieves Town - Prize'), world.get_location('Skull Woods - Prize'), world.get_location('Swamp Palace - Prize'), world.get_location('Ice Palace - Prize'),
world.get_location('Misery Mire - Prize')]
random.shuffle(crystal_locations)

View File

@ -17,228 +17,228 @@
# Now we fill in all locations
Mushroom: Mushroom
Bottle Vendor: Bottle
Haunted Grove: Ocarina
Piece of Heart (Dam): Nothing
Bottle Merchant: Bottle
Flute Spot: Ocarina
Sunken Treasure: Nothing
Purple Chest: Nothing
[cave-022-B1] Thiefs hut [top chest]: Nothing
[cave-022-B1] Thiefs hut [top left chest]: Nothing
[cave-022-B1] Thiefs hut [top right chest]: Nothing
[cave-022-B1] Thiefs hut [bottom left chest]: Nothing
[cave-022-B1] Thiefs hut [bottom right chest]: Nothing
Uncle: Fighter Sword
[cave-034] Hyrule Castle Secret Entrance: Nothing
Blind's Hideout - Top: Nothing
Blind's Hideout - Left: Nothing
Blind's Hideout - Right: Nothing
Blind's Hideout - Far Left: Nothing
Blind's Hideout - Far Right: Nothing
Link's Uncle: Fighter Sword
Secret Passage: Nothing
King Zora: Flippers
Piece of Heart (Zoras River): Nothing
[cave-018] Graveyard - top right grave: Cape
[cave-047] Dam: Nothing
[cave-040] Links House: Lamp
[cave-031] Tavern: Nothing
[cave-026] Chicken House: Nothing
[cave-044] Aginahs Cave: Nothing
[cave-035] Sahasrahlas Hut [left chest]: Nothing
[cave-035] Sahasrahlas Hut [center chest]: Nothing
[cave-035] Sahasrahlas Hut [right chest]: Nothing
Zora's Ledge: Nothing
King's Tomb: Cape
Floodgate Chest: Nothing
Link's House: Lamp
Kakariko Tavern: Nothing
Chicken House: Nothing
Aginah's Cave: Nothing
Sahasrahla's Hut - Left: Nothing
Sahasrahla's Hut - Middle: Nothing
Sahasrahla's Hut - Right: Nothing
Sahasrahla: Pegasus Boots
[cave-021] Kakariko Well [top chest]: Nothing
[cave-021] Kakariko Well [left chest row of 3]: Nothing
[cave-021] Kakariko Well [center chest row of 3]: Nothing
[cave-021] Kakariko Well [right chest row of 3]: Nothing
[cave-021] Kakariko Well [bottom chest]: Nothing
Blacksmiths: Tempered Sword
Kakariko Well - Top: Nothing
Kakariko Well - Left: Nothing
Kakariko Well - Middle: Nothing
Kakariko Well - Right: Nothing
Kakariko Well - Bottom: Nothing
Blacksmith: Tempered Sword
Magic Bat: Magic Upgrade (1/2)
Sick Kid: Bug Catching Net
Hobo: Bottle
Piece of Heart (Thieves Forest Hideout): Nothing
Piece of Heart (Lumberjack Tree): Nothing
Piece of Heart (Cave South of Haunted Grove): Nothing
Piece of Heart (Graveyard Cave): Nothing
Piece of Heart (Checkerboard Cave): Nothing
[cave-050] Mini Moldorm Cave [bottom left chest]: Nothing
[cave-050] Mini Moldorm Cave [top left chest]: Nothing
[cave-050] Mini Moldorm Cave [top right chest]: Nothing
[cave-050] Mini Moldorm Cave [bottom right chest]: Nothing
[cave-050] Mini Moldorm Cave [generous guy]: Nothing
[cave-051] Ice Cave: Ice Rod
[cave-016] Bonk Rock Cave: Nothing
Lost Woods Hideout: Nothing
Lumberjack Tree: Nothing
Cave 45: Nothing
Graveyard Ledge: Nothing
Checkerboard Cave: Nothing
Mini Moldorm Cave - Far Left: Nothing
Mini Moldorm Cave - Left: Nothing
Mini Moldorm Cave - Right: Nothing
Mini Moldorm Cave - Far Right: Nothing
Mini Moldorm Cave - Generous Guy: Nothing
Ice Rod Cave: Ice Rod
Bonk Rock Cave: Nothing
Library: Book of Mudora
Witch: Magic Powder
Piece of Heart (Lake Hylia): Nothing
Piece of Heart (Maze Race): Nothing
Piece of Heart (Desert - west side): Nothing
[dungeon-L2-B1] Desert Palace - Big Chest: Power Glove
[dungeon-L2-B1] Desert Palace - Torch: Small Key (Desert Palace)
[dungeon-L2-B1] Desert Palace - Map Room: Nothing
[dungeon-L2-B1] Desert Palace - Compass Room: Nothing
[dungeon-L2-B1] Desert Palace - Big Key Room: Big Key (Desert Palace)
Lanmolas - Heart Container: Nothing
Lanmolas - Pendant: Blue Pendant
[dungeon-L1-1F] Eastern Palace - Compass Room: Nothing
[dungeon-L1-1F] Eastern Palace - Big Chest: Bow
[dungeon-L1-1F] Eastern Palace - Big Ball Room: Nothing
[dungeon-L1-1F] Eastern Palace - Big Key Room: Big Key (Eastern Palace)
[dungeon-L1-1F] Eastern Palace - Map Room: Nothing
Armos - Heart Container: Nothing
Armos - Pendant: Green Pendant
Altar: Master Sword
[dungeon-C-B1] Hyrule Castle - Boomerang Room: Nothing
[dungeon-C-B1] Hyrule Castle - Map Room: Nothing
[dungeon-C-B1] Hyrule Castle - Next To Zelda: Nothing
[dungeon-C-B1] Escape - First B1 Room: Small Key (Escape)
[dungeon-C-B1] Escape - Final Basement Room [left chest]: Nothing
[dungeon-C-B1] Escape - Final Basement Room [middle chest]: Nothing
[dungeon-C-B1] Escape - Final Basement Room [right chest]: Nothing
[dungeon-C-1F] Sanctuary: Sanctuary Heart Container
[dungeon-A1-2F] Hyrule Castle Tower - 2 Knife Guys Room: Small Key (Agahnims Tower)
[dungeon-A1-3F] Hyrule Castle Tower - Maze Room: Small Key (Agahnims Tower)
Old Mountain Man: Magic Mirror
Piece of Heart (Spectacle Rock Cave): Nothing
[cave-009-1F] Death Mountain - right cave [top left chest]: Nothing
[cave-009-1F] Death Mountain - right cave [top left middle chest]: Nothing
[cave-009-1F] Death Mountain - right cave [top right middle chest]: Nothing
[cave-009-1F] Death Mountain - right cave [top right chest]: Nothing
[cave-009-1F] Death Mountain - right cave [bottom chest]: Nothing
[cave-009-B1] Death Mountain - right cave [left chest]: Nothing
[cave-009-B1] Death Mountain - right cave [right chest]: Nothing
[cave-012-1F] Death Mountain - left cave]: Nothing
Potion Shop: Magic Powder
Lake Hylia Island: Nothing
Maze Race: Nothing
Desert Ledge: Nothing
Desert Palace - Big Chest: Power Glove
Desert Palace - Torch: Small Key (Desert Palace)
Desert Palace - Map Chest: Nothing
Desert Palace - Compass Chest: Nothing
Desert Palace - Big Key Chest: Big Key (Desert Palace)
Desert Palace - Lanmolas: Nothing
Desert Palace - Prize: Blue Pendant
Eastern Palace - Compass Chest: Nothing
Eastern Palace - Big Chest: Bow
Eastern Palace - Cannonball Chest: Nothing
Eastern Palace - Big Key Chest: Big Key (Eastern Palace)
Eastern Palace - Map Chest: Nothing
Eastern Palace - Armos Knights: Nothing
Eastern Palace - Prize: Green Pendant
Master Sword Pedestal: Master Sword
Hyrule Castle - Boomerang Chest: Nothing
Hyrule Castle - Map Chest: Nothing
Hyrule Castle - Zelda's Chest: Nothing
Sewers - Dark Cross: Small Key (Escape)
Sewers - Secret Room - Left: Nothing
Sewers - Secret Room - Middle: Nothing
Sewers - Secret Room - Right: Nothing
Sanctuary: Sanctuary Heart Container
Castle Tower - Room 03: Small Key (Agahnims Tower)
Castle Tower - Dark Maze: Small Key (Agahnims Tower)
Old Man: Magic Mirror
Spectacle Rock Cave: Nothing
Paradox Cave Lower - Far Left: Nothing
Paradox Cave Lower - Left: Nothing
Paradox Cave Lower - Right: Nothing
Paradox Cave Lower - Far Right: Nothing
Paradox Cave Lower - Middle: Nothing
Paradox Cave Upper - Left: Nothing
Paradox Cave Upper - Right: Nothing
Spiral Cave: Nothing
Ether Tablet: Ether
Piece of Heart (Spectacle Rock): Nothing
[dungeon-L3-1F] Tower of Hera - Freestanding Key: Small Key (Tower of Hera)
[dungeon-L3-1F] Tower of Hera - Entrance: Nothing
[dungeon-L3-1F] Tower of Hera - Basement: Big Key (Tower of Hera)
[dungeon-L3-1F] Tower of Hera - 4F [small chest]: Nothing
[dungeon-L3-1F] Tower of Hera - Big Chest: Moon Pearl
Spectacle Rock: Nothing
Tower of Hera - Basement Cage: Small Key (Tower of Hera)
Tower of Hera - Map Chest: Nothing
Tower of Hera - Big Key Chest: Big Key (Tower of Hera)
Tower of Hera - Compass Chest: Nothing
Tower of Hera - Big Chest: Moon Pearl
Moldorm - Heart Container: Nothing
Moldorm - Pendant: Red Pendant
Piece of Heart (Pyramid): Nothing
Pyramid: Nothing
Catfish: Quake
Flute Boy: Shovel
Piece of Heart (Digging Game): Nothing
Stumpy: Shovel
Digging Game: Nothing
Bombos Tablet: Bombos
[cave-073] Cave Northeast of Swamp Palace [top chest]: Nothing
[cave-073] Cave Northeast of Swamp Palace [top middle chest]: Nothing
[cave-073] Cave Northeast of Swamp Palace [bottom middle chest]: Nothing
[cave-073] Cave Northeast of Swamp Palace [bottom chest]: Nothing
[cave-073] Cave Northeast of Swamp Palace [generous guy]: Nothing
Piece of Heart (Dark World Blacksmith Pegs): Nothing
Pyramid Fairy [left chest]: Golden Sword
Pyramid Fairy [right chest]: Silver Arrows
[cave-063] Doorless Hut: Nothing
[cave-062] C-Shaped House: Nothing
Piece of Heart (Treasure Chest Game): Nothing
Piece of Heart (Bumper Cave): Nothing
[cave-071] Misery Mire West Area [left chest]: Nothing
[cave-071] Misery Mire West Area [right chest]: Nothing
[cave-057-1F] Dark World Death Mountain Climb [top chest]: Nothing
[cave-057-1F] Dark World Death Mountain Climb [bottom chest]: Nothing
[cave-055] Spike Cave: Cane of Byrna
[cave-056] Hookshot Cave [top right chest]: Nothing
[cave-056] Hookshot Cave [top left chest]: Nothing
[cave-056] Hookshot Cave [bottom right chest]: Nothing
[cave-056] Hookshot Cave [bottom left chest]: Nothing
Piece of Heart (Death Mountain - Floating Island): Nothing
[cave-013] Mimic Cave: Nothing
[dungeon-D2-1F] Swamp Palace - First Room: Small Key (Swamp Palace)
[dungeon-D2-1F] Swamp Palace - Map Room: Nothing
[dungeon-D2-B1] Swamp Palace - Big Chest: Hookshot
[dungeon-D2-B1] Swamp Palace - South of Hookshot Room: Nothing
[dungeon-D2-B1] Swamp Palace - Big Key Chest: Big Key (Swamp Palace)
[dungeon-D2-B1] Swamp Palace - Compass Chest: Nothing
[dungeon-D2-B2] Swamp Palace - Flooded Room [left chest]: Nothing
[dungeon-D2-B2] Swamp Palace - Flooded Room [right chest]: Nothing
[dungeon-D2-B2] Swamp Palace - Waterfall Room: Nothing
Arrghus - Heart Container: Nothing
Arrghus - Crystal: Crystal 2
[dungeon-D4-B1] Thieves Town - Bottom Left of Huge Room [bottom right chest]: Big Key (Thieves Town)
[dungeon-D4-B1] Thieves Town - Bottom Left of Huge Room [top left chest]: Nothing
[dungeon-D4-B1] Thieves Town - Bottom Right of Huge Room: Nothing
[dungeon-D4-B1] Thieves Town - Top Left of Huge Room: Nothing
[dungeon-D4-1F] Thieves Town - Room above Boss: Nothing
[dungeon-D4-B2] Thieves Town - Big Chest: Titans Mitts
[dungeon-D4-B2] Thieves Town - Chest next to Blind: Small Key (Thieves Town)
Blind - Heart Container: Nothing
Blind - Crystal: Crystal 4
[dungeon-D3-B1] Skull Woods - Compass Room: Nothing
[dungeon-D3-B1] Skull Woods - East of Big Chest: Nothing
[dungeon-D3-B1] Skull Woods - Big Chest: Fire Rod
[dungeon-D3-B1] Skull Woods - Push Statue Room: Small Key (Skull Woods)
[dungeon-D3-B1] Skull Woods - South of Big Chest: Small Key (Skull Woods)
[dungeon-D3-B1] Skull Woods - Big Key Room: Big Key (Skull Woods)
[dungeon-D3-B1] Skull Woods - Final Section Entrance: Small Key (Skull Woods)
Mothula - Heart Container: Nothing
Mothula - Crystal: Crystal 3
[dungeon-D5-B1] Ice Palace - Compass Room: Nothing
[dungeon-D5-B4] Ice Palace - Above Big Chest: Nothing
[dungeon-D5-B5] Ice Palace - Big Chest: Blue Mail
[dungeon-D5-B5] Ice Palace - Jellyfish Room: Small Key (Ice Palace)
[dungeon-D5-B3] Ice Palace - Spike Room: Small Key (Ice Palace)
[dungeon-D5-B1] Ice Palace - Big Key Room: Big Key (Ice Palace)
[dungeon-D5-B2] Ice Palace - Map Room: Nothing
Kholdstare - Heart Container: Nothing
Kholdstare - Crystal: Crystal 5
[dungeon-D6-B1] Misery Mire - Big Chest: Cane of Somaria
[dungeon-D6-B1] Misery Mire - Map Room: Nothing
[dungeon-D6-B1] Misery Mire - Hub Room: Small Key (Misery Mire)
[dungeon-D6-B1] Misery Mire - End of Bridge: Small Key (Misery Mire)
[dungeon-D6-B1] Misery Mire - Spike Room: Small Key (Misery Mire)
[dungeon-D6-B1] Misery Mire - Compass Room: Nothing
[dungeon-D6-B1] Misery Mire - Big Key Room: Big Key (Misery Mire)
Vitreous - Heart Container: Nothing
Vitreous - Crystal: Crystal 6
[dungeon-D7-1F] Turtle Rock - Compass Room: Nothing
[dungeon-D7-1F] Turtle Rock - Map Room [left chest]: Nothing
[dungeon-D7-1F] Turtle Rock - Map Room [right chest]: Small Key (Turtle Rock)
[dungeon-D7-1F] Turtle Rock - Chain Chomp Room: Small Key (Turtle Rock)
[dungeon-D7-B1] Turtle Rock - Big Key Room: Big Key (Turtle Rock)
[dungeon-D7-B1] Turtle Rock - Big Chest: Mirror Shield
[dungeon-D7-B1] Turtle Rock - Roller Switch Room: Small Key (Turtle Rock)
[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom left chest]: Small Key (Turtle Rock)
[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom right chest]: Nothing
[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top left chest]: Nothing
[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top right chest]: Nothing
Trinexx - Heart Container: Nothing
Trinexx - Crystal: Crystal 7
[dungeon-D1-B1] Dark Palace - Shooter Room: Small Key (Palace of Darkness)
[dungeon-D1-1F] Dark Palace - Jump Room [left chest]: Small Key (Palace of Darkness)
[dungeon-D1-B1] Dark Palace - Turtle Stalfos Room: Small Key (Palace of Darkness)
[dungeon-D1-1F] Dark Palace - Big Key Room: Big Key (Palace of Darkness)
[dungeon-D1-1F] Dark Palace - Jump Room [right chest]: Small Key (Palace of Darkness)
[dungeon-D1-1F] Dark Palace - Statue Push Room: Nothing
[dungeon-D1-1F] Dark Palace - Compass Room: Nothing
Hype Cave - Top: Nothing
Hype Cave - Middle Right: Nothing
Hype Cave - Middle Left: Nothing
Hype Cave - Bottom: Nothing
Hype Cave - Generous Guy: Nothing
Peg Cave: Nothing
Pyramid Fairy - Left: Golden Sword
Pyramid Fairy - Right: Silver Arrows
Brewery: Nothing
C-Shaped House: Nothing
Chest Game: Nothing
Bumper Cave Ledge: Nothing
Mire Shed - Left: Nothing
Mire Shed - Right: Nothing
Superbunny Cave - Top: Nothing
Superbunny Cave - Bottom: Nothing
Spike Cave: Cane of Byrna
Hookshot Cave - Top Right: Nothing
Hookshot Cave - Top Left: Nothing
Hookshot Cave - Bottom Right: Nothing
Hookshot Cave - Bottom Left: Nothing
Floating Island: Nothing
Mimic Cave: Nothing
Swamp Palace - Entrance: Small Key (Swamp Palace)
Swamp Palace - Map Chest: Nothing
Swamp Palace - Big Chest: Hookshot
Swamp Palace - Compass Chest: Nothing
Swamp Palace - Big Key Chest: Big Key (Swamp Palace)
Swamp Palace - West Chest: Nothing
Swamp Palace - Flooded Room - Left: Nothing
Swamp Palace - Flooded Room - Right: Nothing
Swamp Palace - Waterfall Room: Nothing
Swamp Palace - Arrghus: Nothing
Swamp Palace - Prize: Crystal 2
Thieves' Town - Big Key Chest: Big Key (Thieves Town)
Thieves' Town - Map Chest: Nothing
Thieves' Town - Compass Chest: Nothing
Thieves' Town - Ambush Chest: Nothing
Thieves' Town - Attic: Nothing
Thieves' Town - Big Chest: Titans Mitts
Thieves' Town - Blind's Cell: Small Key (Thieves Town)
Thieves Town - Blind: Nothing
Thieves Town - Prize: Crystal 4
Skull Woods - Compass Chest: Nothing
Skull Woods - Map Chest: Nothing
Skull Woods - Big Chest: Fire Rod
Skull Woods - Pot Prison: Small Key (Skull Woods)
Skull Woods - Pinball Room: Small Key (Skull Woods)
Skull Woods - Big Key Chest: Big Key (Skull Woods)
Skull Woods - Bridge Room: Small Key (Skull Woods)
Skull Woods - Mothula: Nothing
Skull Woods - Prize: Crystal 3
Ice Palace - Compass Chest: Nothing
Ice Palace - Freezor Chest: Nothing
Ice Palace - Big Chest: Blue Mail
Ice Palace - Iced T Room: Small Key (Ice Palace)
Ice Palace - Spike Room: Small Key (Ice Palace)
Ice Palace - Big Key Chest: Big Key (Ice Palace)
Ice Palace - Map Chest: Nothing
Ice Palace - Kholdstare: Nothing
Ice Palace - Prize: Crystal 5
Misery Mire - Big Chest: Cane of Somaria
Misery Mire - Map Chest: Nothing
Misery Mire - Main Lobby: Small Key (Misery Mire)
Misery Mire - Bridge Chest: Small Key (Misery Mire)
Misery Mire - Spike Chest: Small Key (Misery Mire)
Misery Mire - Compass Chest: Nothing
Misery Mire - Big Key Chest: Big Key (Misery Mire)
Misery Mire - Vitreous: Nothing
Misery Mire - Prize: Crystal 6
Turtle Rock - Compass Chest: Nothing
Turtle Rock - Roller Room - Left: Nothing
Turtle Rock - Roller Room - Right: Small Key (Turtle Rock)
Turtle Rock - Chain Chomps: Small Key (Turtle Rock)
Turtle Rock - Big Key Chest: Big Key (Turtle Rock)
Turtle Rock - Big Chest: Mirror Shield
Turtle Rock - Crystaroller Roo: Small Key (Turtle Rock)
Turtle Rock - Eye Bridge - Bottom Left: Small Key (Turtle Rock)
Turtle Rock - Eye Bridge - Bottom Right: Nothing
Turtle Rock - Eye Bridge - Top Left: Nothing
Turtle Rock - Eye Bridge - Top Right: Nothing
Turtle Rock - Trinexx: Nothing
Turtle Rock - Prize: Crystal 7
Palace of Darkness - Shooter Room: Small Key (Palace of Darkness)
Palace of Darkness - The Arena - Bridge: Small Key (Palace of Darkness)
Palace of Darkness - Stalfos Basement: Small Key (Palace of Darkness)
Palace of Darkness - Big Key Chest: Big Key (Palace of Darkness)
Palace of Darkness - The Arena - Ledge: Small Key (Palace of Darkness)
Palace of Darkness - Map Chest: Nothing
Palace of Darkness - Compass Chest: Nothing
# logic cannot account for hammer and small key in maze
[dungeon-D1-B1] Dark Palace - Dark Room [left chest]: Small Key (Palace of Darkness)
[dungeon-D1-B1] Dark Palace - Dark Room [right chest]: Small Key (Palace of Darkness)
[dungeon-D1-1F] Dark Palace - Maze Room [top chest]: Nothing
[dungeon-D1-1F] Dark Palace - Maze Room [bottom chest]: Nothing
[dungeon-D1-1F] Dark Palace - Big Chest: Hammer
[dungeon-D1-1F] Dark Palace - Spike Statue Room: Nothing
Helmasaur - Heart Container: Nothing
Helmasaur - Crystal: Crystal 1
[dungeon-A2-1F] Ganons Tower - Torch: Small Key (Ganons Tower)
[dungeon-A2-1F] Ganons Tower - Right Staircase [left chest]: Nothing
[dungeon-A2-1F] Ganons Tower - Right Staircase [right chest]: Nothing
[dungeon-A2-1F] Ganons Tower - Tile Room: Small Key (Ganons Tower)
[dungeon-A2-1F] Ganons Tower - Compass Room [top left chest]: Nothing
[dungeon-A2-1F] Ganons Tower - Compass Room [top right chest]: Nothing
[dungeon-A2-1F] Ganons Tower - Compass Room [bottom left chest]: Nothing
[dungeon-A2-1F] Ganons Tower - Compass Room [bottom right chest]: Nothing
[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [top left chest]: Nothing
[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [top right chest]: Nothing
[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [bottom left chest]: Nothing
[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [bottom right chest]: Nothing
[dungeon-A2-1F] Ganons Tower - Map Room: Nothing
[dungeon-A2-1F] Ganons Tower - Firesnake Room: Small Key (Ganons Tower)
[dungeon-A2-1F] Ganons Tower - Teleport Room [top left chest]: Nothing
[dungeon-A2-1F] Ganons Tower - Teleport Room [top right chest]: Nothing
[dungeon-A2-1F] Ganons Tower - Teleport Room [bottom left chest]: Nothing
[dungeon-A2-1F] Ganons Tower - Teleport Room [bottom right chest]: Nothing
[dungeon-A2-1F] Ganons Tower - above Armos: Nothing
[dungeon-A2-1F] Ganons Tower - Big Chest: Red Mail
[dungeon-A2-B1] Ganons Tower - Armos Room [left chest]: Nothing
[dungeon-A2-B1] Ganons Tower - Armos Room [right chest]: Nothing
[dungeon-A2-B1] Ganons Tower - Armos Room [bottom chest]: Big Key (Ganons Tower)
[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [left chest]: Nothing
[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [right chest]: Nothing
[dungeon-A2-6F] Ganons Tower - Room before Moldorm: Small Key (Ganons Tower)
[dungeon-A2-6F] Ganons Tower - Moldorm Room: Nothing
Palace of Darkness - Dark Basement - Left: Small Key (Palace of Darkness)
Palace of Darkness - Dark Basement - Right: Small Key (Palace of Darkness)
Palace of Darkness - Dark Maze - Top: Nothing
Palace of Darkness - Dark Maze - Bottom: Nothing
Palace of Darkness - Big Chest: Hammer
Palace of Darkness - Harmless Hellway: Nothing
Palace of Darkness - Helmasaur: Nothing
Palace of Darkness - Prize: Crystal 1
Ganons Tower - Bob's Torch: Small Key (Ganons Tower)
Ganons Tower - Hope Room - Left: Nothing
Ganons Tower - Hope Room - Right: Nothing
Ganons Tower - Tile Room: Small Key (Ganons Tower)
Ganons Tower - Compass Room - Top Left: Nothing
Ganons Tower - Compass Room - Top Right: Nothing
Ganons Tower - Compass Room - Bottom Left: Nothing
Ganons Tower - Compass Room - Bottom Right: Nothing
Ganons Tower - DMs Room - Top Left: Nothing
Ganons Tower - DMs Room - Top Right: Nothing
Ganons Tower - DMs Room - Bottom Left: Nothing
Ganons Tower - DMs Room - Bottom Right: Nothing
Ganons Tower - Map Chest: Nothing
Ganons Tower - Firesnake Room: Small Key (Ganons Tower)
Ganons Tower - Randomizer Room - Top Left: Nothing
Ganons Tower - Randomizer Room - Top Right: Nothing
Ganons Tower - Randomizer Room - Bottom Left: Nothing
Ganons Tower - Randomizer Room - Bottom Right: Nothing
Ganons Tower - Bob's Chest: Nothing
Ganons Tower - Big Chest: Red Mail
Ganons Tower - Big Key Room - Left: Nothing
Ganons Tower - Big Key Room - Right: Nothing
Ganons Tower - Big Key Chest: Big Key (Ganons Tower)
Ganons Tower - Mini Helmasaur Room - Left: Nothing
Ganons Tower - Mini Helmasaur Room - Right: Nothing
Ganons Tower - Pre-Moldorm Chest: Small Key (Ganons Tower)
Ganons Tower - Validation Chest: Nothing
Ganon: Triforce

View File

@ -4,30 +4,30 @@ from BaseClasses import Region, Location, Entrance
def create_regions(world):
world.regions = [
create_region('Light World', ['Mushroom', 'Bottle Vendor', 'Haunted Grove', 'Piece of Heart (Dam)', 'Purple Chest'],
["Thiefs Hut", "Hyrule Castle Secret Entrance Drop", "Hyrule Castle Secret Entrance Stairs", 'Zoras River', 'Kings Grave', 'Dam',
create_region('Light World', ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure', 'Purple Chest'],
["Blinds Hideout", "Hyrule Castle Secret Entrance Drop", "Hyrule Castle Secret Entrance Stairs", 'Zoras River', 'Kings Grave', 'Dam',
'Links House', 'Tavern North', 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut', 'Kakariko Well Drop', 'Kakariko Well Cave',
'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge', 'Thieves Forest Hideout Drop', 'Thieves Forest Hideout Stump',
'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Cave', 'Lake Hylia Central Island Pier',
'Bonk Rock Cave', 'Library', 'Witch Hut', 'Two Brothers House (East)', 'Desert Palace Stairs', 'Eastern Palace', 'Master Sword Meadow', 'Hyrule Castle Entrance (South)',
'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump',
'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Rod Cave', 'Lake Hylia Central Island Pier',
'Bonk Rock Cave', 'Library', 'Potion Shop', 'Two Brothers House (East)', 'Desert Palace Stairs', 'Eastern Palace', 'Master Sword Meadow', 'Hyrule Castle Entrance (South)',
'Sanctuary', 'Sanctuary Grave', 'Old Man Cave (West)', 'Flute Spot 1', 'Dark Desert Teleporter', 'East Hyrule Teleporter', 'South Hyrule Teleporter', 'Kakariko Teleporter',
'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop', 'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)',
'Bush Covered House', 'Light World Bomb Hut', 'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)', 'Waterfall of Wishing',
'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Swamp Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game', 'Top of Pyramid']),
create_region('Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Island Teleporter']),
create_region('Thiefs Hut', ["[cave-022-B1] Thiefs hut [top chest]",
"[cave-022-B1] Thiefs hut [top left chest]",
"[cave-022-B1] Thiefs hut [top right chest]",
"[cave-022-B1] Thiefs hut [bottom left chest]",
"[cave-022-B1] Thiefs hut [bottom right chest]"]),
create_region('Hyrule Castle Secret Entrance', ['Uncle', '[cave-034] Hyrule Castle Secret Entrance'], ['Hyrule Castle Secret Entrance Exit']),
create_region('Zoras River', ['King Zora', 'Piece of Heart (Zoras River)']),
create_region('Blinds Hideout', ["Blind\'s Hideout - Top",
"Blind\'s Hideout - Left",
"Blind\'s Hideout - Right",
"Blind\'s Hideout - Far Left",
"Blind\'s Hideout - Far Right"]),
create_region('Hyrule Castle Secret Entrance', ['Link\'s Uncle', 'Secret Passage'], ['Hyrule Castle Secret Entrance Exit']),
create_region('Zoras River', ['King Zora', 'Zora\'s Ledge']),
create_region('Waterfall of Wishing', ['Waterfall Fairy - Left', 'Waterfall Fairy - Right']),
create_region('Kings Grave', ['[cave-018] Graveyard - top right grave']),
create_region('Kings Grave', ['King\'s Tomb']),
create_region('North Fairy Cave', None, ['North Fairy Cave Exit']),
create_region('Dam', ['[cave-047] Dam']),
create_region('Links House', ['[cave-040] Links House'], ['Links House Exit']),
create_region('Tavern', ['[cave-031] Tavern']),
create_region('Dam', ['Floodgate Chest']),
create_region('Links House', ['Link\'s House'], ['Links House Exit']),
create_region('Tavern', ['Kakariko Tavern']),
create_region('Elder House', None, ['Elder House Exit (East)', 'Elder House Exit (West)']),
create_region('Snitch Lady (East)'),
create_region('Snitch Lady (West)'),
@ -39,104 +39,104 @@ def create_regions(world):
create_region('Lumberjack House'),
create_region('Bonk Fairy'), # near links house both worlds
create_region('Healer Fairy'), # 8 entrances?
create_region('Chicken House', ['[cave-026] Chicken House']),
create_region('Aginahs Cave', ['[cave-044] Aginahs Cave']),
create_region('Sahasrahlas Hut', ['[cave-035] Sahasrahlas Hut [left chest]', '[cave-035] Sahasrahlas Hut [center chest]', '[cave-035] Sahasrahlas Hut [right chest]', 'Sahasrahla']),
create_region('Kakariko Well (top)', ['[cave-021] Kakariko Well [top chest]', '[cave-021] Kakariko Well [left chest row of 3]', '[cave-021] Kakariko Well [center chest row of 3]',
'[cave-021] Kakariko Well [right chest row of 3]', '[cave-021] Kakariko Well [bottom chest]'], ['Kakariko Well (top to bottom)']),
create_region('Chicken House', ['Chicken House']),
create_region('Aginahs Cave', ['Aginah\'s Cave']),
create_region('Sahasrahlas Hut', ['Sahasrahla\'s Hut - Left', 'Sahasrahla\'s Hut - Middle', 'Sahasrahla\'s Hut - Right', 'Sahasrahla']),
create_region('Kakariko Well (top)', ['Kakariko Well - Top', 'Kakariko Well - Left', 'Kakariko Well - Middle',
'Kakariko Well - Right', 'Kakariko Well - Bottom'], ['Kakariko Well (top to bottom)']),
create_region('Kakariko Well (bottom)', None, ['Kakariko Well Exit']),
create_region('Blacksmiths Hut', ['Blacksmiths']),
create_region('Blacksmiths Hut', ['Blacksmith']),
create_region('Bat Cave Drop Ledge', None, ['Bat Cave Drop']),
create_region('Bat Cave (right)', ['Magic Bat'], ['Bat Cave Door']),
create_region('Bat Cave (left)', None, ['Bat Cave Exit']),
create_region('Sick Kids House', ['Sick Kid']),
create_region('Hobo Bridge', ['Hobo']),
create_region('Thieves Forest Hideout (top)', ['Piece of Heart (Thieves Forest Hideout)'], ['Thieves Forest Hideout (top to bottom)']),
create_region('Thieves Forest Hideout (bottom)', None, ['Thieves Forest Hideout Exit']),
create_region('Lumberjack Tree (top)', ['Piece of Heart (Lumberjack Tree)'], ['Lumberjack Tree (top to bottom)']),
create_region('Lost Woods Hideout (top)', ['Lost Woods Hideout'], ['Lost Woods Hideout (top to bottom)']),
create_region('Lost Woods Hideout (bottom)', None, ['Lost Woods Hideout Exit']),
create_region('Lumberjack Tree (top)', ['Lumberjack Tree'], ['Lumberjack Tree (top to bottom)']),
create_region('Lumberjack Tree (bottom)', None, ['Lumberjack Tree Exit']),
create_region('Cave South of Haunted Grove', ['Piece of Heart (Cave South of Haunted Grove)']),
create_region('Graveyard Cave', ['Piece of Heart (Graveyard Cave)']),
create_region('Checkerboard Cave', ['Piece of Heart (Checkerboard Cave)']),
create_region('Cave 45', ['Cave 45']),
create_region('Graveyard Cave', ['Graveyard Ledge']),
create_region('Checkerboard Cave', ['Checkerboard Cave']),
create_region('Long Fairy Cave'),
create_region('Mini Moldorm Cave', ['[cave-050] Mini Moldorm Cave [bottom left chest]', '[cave-050] Mini Moldorm Cave [top left chest]', '[cave-050] Mini Moldorm Cave [top right chest]',
'[cave-050] Mini Moldorm Cave [bottom right chest]', '[cave-050] Mini Moldorm Cave [generous guy]']),
create_region('Ice Cave', ['[cave-051] Ice Cave']),
create_region('Mini Moldorm Cave', ['Mini Moldorm Cave - Far Left', 'Mini Moldorm Cave - Left', 'Mini Moldorm Cave - Right',
'Mini Moldorm Cave - Far Right', 'Mini Moldorm Cave - Generous Guy']),
create_region('Ice Rod Cave', ['Ice Rod Cave']),
create_region('Good Bee Cave'),
create_region('20 Rupee Cave'),
create_region('Cave Shop'), # two connectors in vanilla
create_region('Bonk Rock Cave', ['[cave-016] Bonk Rock Cave']),
create_region('Bonk Rock Cave', ['Bonk Rock Cave']),
create_region('Library', ['Library']),
create_region('Kakariko Gamble Game'),
create_region('Witch Hut', ['Witch']),
create_region('Lake Hylia Island', ['Piece of Heart (Lake Hylia)']),
create_region('Potion Shop', ['Potion Shop']),
create_region('Lake Hylia Island', ['Lake Hylia Island']),
create_region('Capacity Upgrade'),
create_region('Two Brothers House', None, ['Two Brothers House Exit (East)', 'Two Brothers House Exit (West)']),
create_region('Maze Race Ledge', ['Piece of Heart (Maze Race)'], ['Two Brothers House (West)']),
create_region('Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)']),
create_region('50 Rupee Cave'),
create_region('Desert Ledge', ['Piece of Heart (Desert - west side)'], ['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)']),
create_region('Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)']),
create_region('Desert Ledge (West)', None, ['Checkerboard Cave']),
create_region('Desert Palace Stairs', None, ['Desert Palace Entrance (South)']),
create_region('Desert Palace Lone Stairs', None, ['Desert Palace Stairs Drop', 'Desert Palace Entrance (East)']),
create_region('Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Return Rocks']),
create_region('Desert Palace Main', ['[dungeon-L2-B1] Desert Palace - Big Chest', '[dungeon-L2-B1] Desert Palace - Torch', '[dungeon-L2-B1] Desert Palace - Map Room'],
create_region('Desert Palace Main', ['Desert Palace - Big Chest', 'Desert Palace - Torch', 'Desert Palace - Map Chest'],
['Desert Palace Exit (South)', 'Desert Palace Exit (West)', 'Desert Palace Exit (East)', 'Desert Palace East Wing']),
create_region('Desert Palace East', ['[dungeon-L2-B1] Desert Palace - Compass Room', '[dungeon-L2-B1] Desert Palace - Big Key Room']),
create_region('Desert Palace North', ['Lanmolas - Heart Container', 'Lanmolas - Pendant'], ['Desert Palace Exit (North)']),
create_region('Eastern Palace', ['[dungeon-L1-1F] Eastern Palace - Compass Room', '[dungeon-L1-1F] Eastern Palace - Big Chest', '[dungeon-L1-1F] Eastern Palace - Big Ball Room',
'[dungeon-L1-1F] Eastern Palace - Big Key Room', '[dungeon-L1-1F] Eastern Palace - Map Room', 'Armos - Heart Container', 'Armos - Pendant'], ['Eastern Palace Exit']),
create_region('Master Sword Meadow', ['Altar']),
create_region('Desert Palace East', ['Desert Palace - Compass Chest', 'Desert Palace - Big Key Chest']),
create_region('Desert Palace North', ['Desert Palace - Lanmolas', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']),
create_region('Eastern Palace', ['Eastern Palace - Compass Chest', 'Eastern Palace - Big Chest', 'Eastern Palace - Cannonball Chest',
'Eastern Palace - Big Key Chest', 'Eastern Palace - Map Chest', 'Eastern Palace - Armos Knights', 'Eastern Palace - Prize'], ['Eastern Palace Exit']),
create_region('Master Sword Meadow', ['Master Sword Pedestal']),
create_region('Lost Woods Gamble'),
create_region('Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (East)', 'Hyrule Castle Entrance (West)', 'Agahnims Tower']),
create_region('Hyrule Castle', ['[dungeon-C-B1] Hyrule Castle - Boomerang Room', '[dungeon-C-B1] Hyrule Castle - Map Room', '[dungeon-C-B1] Hyrule Castle - Next To Zelda'],
create_region('Hyrule Castle', ['Hyrule Castle - Boomerang Chest', 'Hyrule Castle - Map Chest', 'Hyrule Castle - Zelda\'s Chest'],
['Hyrule Castle Exit (East)', 'Hyrule Castle Exit (West)', 'Hyrule Castle Exit (South)', 'Throne Room']),
create_region('Sewer Drop', None, ['Sewer Drop']), # This exists only to be referenced for access checks
create_region('Sewers (Dark)', ['[dungeon-C-B1] Escape - First B1 Room'], ['Sewers Door']),
create_region('Sewers', ['[dungeon-C-B1] Escape - Final Basement Room [left chest]', '[dungeon-C-B1] Escape - Final Basement Room [middle chest]',
'[dungeon-C-B1] Escape - Final Basement Room [right chest]'], ['Sanctuary Push Door', 'Sewers Back Door']),
create_region('Sanctuary', ['[dungeon-C-1F] Sanctuary'], ['Sanctuary Exit']),
create_region('Agahnims Tower', ['[dungeon-A1-2F] Hyrule Castle Tower - 2 Knife Guys Room', '[dungeon-A1-3F] Hyrule Castle Tower - Maze Room'], ['Agahnim 1', 'Agahnims Tower Exit']),
create_region('Sewers (Dark)', ['Sewers - Dark Cross'], ['Sewers Door']),
create_region('Sewers', ['Sewers - Secret Room - Left', 'Sewers - Secret Room - Middle',
'Sewers - Secret Room - Right'], ['Sanctuary Push Door', 'Sewers Back Door']),
create_region('Sanctuary', ['Sanctuary'], ['Sanctuary Exit']),
create_region('Agahnims Tower', ['Castle Tower - Room 03', 'Castle Tower - Dark Maze'], ['Agahnim 1', 'Agahnims Tower Exit']),
create_region('Agahnim 1', ['Agahnim 1'], None),
create_region('Old Man Cave', ['Old Mountain Man'], ['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']),
create_region('Old Man Cave', ['Old Man'], ['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']),
create_region('Old Man House', None, ['Old Man House Exit (Bottom)', 'Old Man House Front to Back']),
create_region('Old Man House Back', None, ['Old Man House Exit (Top)', 'Old Man House Back to Front']),
create_region('Death Mountain', None, ['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)', 'Broken Bridge (West)', 'Death Mountain Teleporter']),
create_region('Death Mountain Return Cave', None, ['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']),
create_region('Death Mountain Return Ledge', None, ['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)']),
create_region('Spectacle Rock Cave (Top)', ['Piece of Heart (Spectacle Rock Cave)'], ['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']),
create_region('Spectacle Rock Cave (Top)', ['Spectacle Rock Cave'], ['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']),
create_region('Spectacle Rock Cave (Bottom)', None, ['Spectacle Rock Cave Exit']),
create_region('Spectacle Rock Cave (Peak)', None, ['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']),
create_region('East Death Mountain (Bottom)', None, ['Broken Bridge (East)', '7 Chest Cave (Bottom)', '7 Chest Cave (Middle)', 'East Death Mountain Teleporter', 'Hookshot Fairy', 'Fairy Ascension Rocks', 'Spiral Cave (Bottom)']),
create_region('East Death Mountain (Bottom)', None, ['Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'East Death Mountain Teleporter', 'Hookshot Fairy', 'Fairy Ascension Rocks', 'Spiral Cave (Bottom)']),
create_region('Hookshot Fairy'),
create_region('7 Chest Cave Front', None, ['7 Chest Cave Push Block Reverse', '7 Chest Cave Exit (Bottom)']),
create_region('7 Chest Cave Chest Area', ['[cave-009-1F] Death Mountain - right cave [top left chest]',
'[cave-009-1F] Death Mountain - right cave [top left middle chest]',
'[cave-009-1F] Death Mountain - right cave [top right middle chest]',
'[cave-009-1F] Death Mountain - right cave [top right chest]',
'[cave-009-1F] Death Mountain - right cave [bottom chest]',
'[cave-009-B1] Death Mountain - right cave [left chest]',
'[cave-009-B1] Death Mountain - right cave [right chest]'],
['7 Chest Cave Push Block', '7 Chest Cave Bomb Jump']),
create_region('7 Chest Cave', None, ['7 Chest Cave Exit (Middle)', '7 Chest Cave Exit (Top)', '7 Chest Cave Drop']),
create_region('East Death Mountain (Top)', None, ['7 Chest Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access', 'East Death Mountain Drop', 'Turtle Rock Teleporter', 'Fairy Ascension Ledge']),
create_region('Paradox Cave Front', None, ['Paradox Cave Push Block Reverse', 'Paradox Cave Exit (Bottom)']),
create_region('Paradox Cave Chest Area', ['Paradox Cave Lower - Far Left',
'Paradox Cave Lower - Left',
'Paradox Cave Lower - Right',
'Paradox Cave Lower - Far Right',
'Paradox Cave Lower - Middle',
'Paradox Cave Upper - Left',
'Paradox Cave Upper - Right'],
['Paradox Cave Push Block', 'Paradox Cave Bomb Jump']),
create_region('Paradox Cave', None, ['Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Top)', 'Paradox Cave Drop']),
create_region('East Death Mountain (Top)', None, ['Paradox Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access', 'East Death Mountain Drop', 'Turtle Rock Teleporter', 'Fairy Ascension Ledge']),
create_region('Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop']),
create_region('Spiral Cave (Top)', ['[cave-012-1F] Death Mountain - left cave]'], ['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']),
create_region('Spiral Cave (Top)', ['Spiral Cave'], ['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']),
create_region('Spiral Cave (Bottom)', None, ['Spiral Cave Exit']),
create_region('Fairy Ascension Plateau', None, ['Fairy Ascension Drop', 'Fairy Ascension Cave (Bottom)']),
create_region('Fairy Ascension Cave', None, ['Fairy Ascension Cave Exit (Top)', 'Fairy Ascension Cave Exit (Bottom)']),
create_region('Fairy Ascension Ledge', None, ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)']),
create_region('Death Mountain (Top)', ['Ether Tablet'], ['East Death Mountain (Top)', 'Tower of Hera', 'Death Mountain Drop']),
create_region('Spectacle Rock', ['Piece of Heart (Spectacle Rock)'], ['Spectacle Rock Drop']),
create_region('Tower of Hera (Bottom)', ['[dungeon-L3-1F] Tower of Hera - Freestanding Key', '[dungeon-L3-1F] Tower of Hera - Entrance'], ['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']),
create_region('Tower of Hera (Basement)', ['[dungeon-L3-1F] Tower of Hera - Basement']),
create_region('Tower of Hera (Top)', ['[dungeon-L3-1F] Tower of Hera - 4F [small chest]', '[dungeon-L3-1F] Tower of Hera - Big Chest', 'Moldorm - Heart Container', 'Moldorm - Pendant']),
create_region('Spectacle Rock', ['Spectacle Rock'], ['Spectacle Rock Drop']),
create_region('Tower of Hera (Bottom)', ['Tower of Hera - Basement Cage', 'Tower of Hera - Map Chest'], ['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']),
create_region('Tower of Hera (Basement)', ['Tower of Hera - Big Key Chest']),
create_region('Tower of Hera (Top)', ['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Moldorm - Heart Container', 'Moldorm - Pendant']),
create_region('East Dark World', ['Piece of Heart (Pyramid)', 'Catfish'], ['Pyramid Fairy', 'South Dark World Bridge', 'West Dark World Gap', 'Palace of Darkness', 'Dark Lake Hylia Drop (East)', 'Dark Lake Hylia Teleporter',
create_region('East Dark World', ['Pyramid', 'Catfish'], ['Pyramid Fairy', 'South Dark World Bridge', 'West Dark World Gap', 'Palace of Darkness', 'Dark Lake Hylia Drop (East)', 'Dark Lake Hylia Teleporter',
'Hyrule Castle Ledge Mirror Spot', 'Dark Lake Hylia Fairy', 'Palace of Darkness Hint', 'East Dark World Hint', 'Dark World Potion Shop', 'Pyramid Hole']),
create_region('Palace of Darkness Hint'),
create_region('East Dark World Hint'),
create_region('South Dark World', ['Flute Boy', 'Piece of Heart (Digging Game)', 'Bombos Tablet'], ['Dark Lake Hylia Drop (South)', 'Dark Swamp Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock',
'Maze Race Mirror Spot', 'Cave South of Haunted Grove', 'East Dark World Bridge', 'Big Bomb Shop', 'Archery Game', 'Bonk Fairy (Dark)', 'Dark Lake Hylia Shop']),
create_region('South Dark World', ['Stumpy', 'Digging Game', 'Bombos Tablet'], ['Dark Lake Hylia Drop (South)', 'Dark Swamp Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock',
'Maze Race Mirror Spot', 'Cave 45', 'East Dark World Bridge', 'Big Bomb Shop', 'Archery Game', 'Bonk Fairy (Dark)', 'Dark Lake Hylia Shop']),
create_region('Big Bomb Shop'),
create_region('Archery Game'),
create_region('Dark Lake Hylia', None, ['Lake Hylia Island Mirror Spot', 'East Dark World Pier', 'Dark Lake Hylia Ledge']),
@ -144,27 +144,27 @@ def create_regions(world):
create_region('Dark Lake Hylia Ledge', None, ['Dark Lake Hylia Ledge Drop', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave']),
create_region('Dark Lake Hylia Ledge Hint'),
create_region('Dark Lake Hylia Ledge Spike Cave'),
create_region('Dark Swamp Cave', ['[cave-073] Cave Northeast of Swamp Palace [top chest]', '[cave-073] Cave Northeast of Swamp Palace [top middle chest]', '[cave-073] Cave Northeast of Swamp Palace [bottom middle chest]',
'[cave-073] Cave Northeast of Swamp Palace [bottom chest]', '[cave-073] Cave Northeast of Swamp Palace [generous guy]']),
create_region('West Dark World', None, ['Village of Outcasts Drop', 'East Dark World River Pier', 'Doorless Hut', 'C-Shaped House', 'Chest Game', 'Thieves Town', 'Graveyard Cave', 'Bumper Cave (Bottom)', 'Skull Woods Forest',
create_region('Dark Swamp Cave', ['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
create_region('West Dark World', None, ['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House', 'Chest Game', 'Thieves Town', 'Graveyard Cave', 'Bumper Cave (Bottom)', 'Skull Woods Forest',
'Bat Cave Drop Ledge Mirror Spot', 'Dark World Hammer Peg Cave', 'Red Shield Shop', 'Dark Sanctuary Hint', 'Fortune Teller (Dark)', 'Dark World Shop', 'Dark World Lumberjack Shop']),
create_region('Fortune Teller (Dark)'),
create_region('Dark World Shop'),
create_region('Dark World Hammer Peg Cave', ['Piece of Heart (Dark World Blacksmith Pegs)']),
create_region('Pyramid Fairy', ['Pyramid Fairy [left chest]', 'Pyramid Fairy [right chest]']),
create_region('Doorless Hut', ['[cave-063] Doorless Hut']),
create_region('C-Shaped House', ['[cave-062] C-Shaped House']),
create_region('Chest Game', ['Piece of Heart (Treasure Chest Game)']),
create_region('Dark World Hammer Peg Cave', ['Peg Cave']),
create_region('Pyramid Fairy', ['Pyramid Fairy - Left', 'Pyramid Fairy - Right']),
create_region('Brewery', ['Brewery']),
create_region('C-Shaped House', ['C-Shaped House']),
create_region('Chest Game', ['Chest Game']),
create_region('Red Shield Shop'),
create_region('Dark Sanctuary Hint'),
create_region('Bumper Cave', None, ['Bumper Cave Exit (Bottom)', 'Bumper Cave Exit (Top)']),
create_region('Bumper Cave Ledge', ['Piece of Heart (Bumper Cave)'], ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)', 'Bumper Cave Ledge Mirror Spot']),
create_region('Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)', 'Bumper Cave Ledge Mirror Spot']),
create_region('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)']),
create_region('Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section']),
create_region('Dark Desert', None, ['Misery Mire', 'Dark Desert Cave', 'Desert Ledge (West) Mirror Spot', 'Desert Ledge Mirror Spot', 'Desert Palace Stairs Mirror Spot', 'Desert Palace Entrance (North) Mirror Spot',
create_region('Dark Desert', None, ['Misery Mire', 'Mire Shed', 'Desert Ledge (West) Mirror Spot', 'Desert Ledge Mirror Spot', 'Desert Palace Stairs Mirror Spot', 'Desert Palace Entrance (North) Mirror Spot',
'Dark Desert Hint', 'Dark Desert Fairy']),
create_region('Dark Desert Cave', ['[cave-071] Misery Mire West Area [left chest]', '[cave-071] Misery Mire West Area [right chest]']),
create_region('Mire Shed', ['Mire Shed - Left', 'Mire Shed - Right']),
create_region('Dark Desert Hint'),
create_region('Dark Death Mountain (West Bottom)', None, ['Spike Cave', 'Spectacle Rock Mirror Spot', 'Dark Death Mountain Fairy']),
create_region('Dark Death Mountain (Top)', None, ['Dark Death Mountain Drop (East)', 'Dark Death Mountain Drop (West)', 'Ganons Tower', 'Dark Death Mountain Ascend (Top)', 'Hookshot Cave',
@ -172,92 +172,92 @@ def create_regions(world):
create_region('Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)', 'Mimic Cave Mirror Spot', 'Spiral Cave Mirror Spot']),
create_region('Dark Death Mountain Isolated Ledge', None, ['Isolated Ledge Mirror Spot', 'Turtle Rock Isolated Ledge Entrance']),
create_region('Dark Death Mountain (East Bottom)', None, ['Dark Death Mountain Ascend (Bottom)', 'Cave Shop (Dark Death Mountain)', 'Fairy Ascension Mirror Spot']),
create_region('Dark Death Mountain Ascend', ['[cave-057-1F] Dark World Death Mountain Climb [top chest]', '[cave-057-1F] Dark World Death Mountain Climb [bottom chest]'],
create_region('Dark Death Mountain Ascend', ['Superbunny Cave - Top', 'Superbunny Cave - Bottom'],
['Dark Death Mountain Ascend Exit (Top)', 'Dark Death Mountain Ascend Exit (Bottom)']),
create_region('Spike Cave', ['[cave-055] Spike Cave']),
create_region('Hookshot Cave', ['[cave-056] Hookshot Cave [top right chest]', '[cave-056] Hookshot Cave [top left chest]', '[cave-056] Hookshot Cave [bottom right chest]', '[cave-056] Hookshot Cave [bottom left chest]'],
create_region('Spike Cave', ['Spike Cave']),
create_region('Hookshot Cave', ['Hookshot Cave - Top Right', 'Hookshot Cave - Top Left', 'Hookshot Cave - Bottom Right', 'Hookshot Cave - Bottom Left'],
['Hookshot Cave Exit (South)', 'Hookshot Cave Exit (North)']),
create_region('Death Mountain Floating Island', ['Piece of Heart (Death Mountain - Floating Island)'], ['Floating Island Drop', 'Hookshot Cave Back Entrance']),
create_region('Death Mountain Floating Island', ['Floating Island'], ['Floating Island Drop', 'Hookshot Cave Back Entrance']),
create_region('Turtle Rock (Top)', None, ['Turtle Rock Drop']),
create_region('Mimic Cave', ['[cave-013] Mimic Cave']),
create_region('Mimic Cave', ['Mimic Cave']),
create_region('Swamp Palace (Entrance)', None, ['Swamp Palace Moat', 'Swamp Palace Exit']),
create_region('Swamp Palace (First Room)', ['[dungeon-D2-1F] Swamp Palace - First Room'], ['Swamp Palace Small Key Door']),
create_region('Swamp Palace (Starting Area)', ['[dungeon-D2-1F] Swamp Palace - Map Room'], ['Swamp Palace (Center)']),
create_region('Swamp Palace (Center)', ['[dungeon-D2-B1] Swamp Palace - Big Chest', '[dungeon-D2-B1] Swamp Palace - South of Hookshot Room',
'[dungeon-D2-B1] Swamp Palace - Big Key Chest', '[dungeon-D2-B1] Swamp Palace - Compass Chest'], ['Swamp Palace (North)']),
create_region('Swamp Palace (North)', ['[dungeon-D2-B2] Swamp Palace - Flooded Room [left chest]', '[dungeon-D2-B2] Swamp Palace - Flooded Room [right chest]',
'[dungeon-D2-B2] Swamp Palace - Waterfall Room', 'Arrghus - Heart Container', 'Arrghus - Crystal']),
create_region('Thieves Town (Entrance)', ['[dungeon-D4-B1] Thieves Town - Bottom Left of Huge Room [bottom right chest]',
'[dungeon-D4-B1] Thieves Town - Bottom Left of Huge Room [top left chest]',
'[dungeon-D4-B1] Thieves Town - Bottom Right of Huge Room',
'[dungeon-D4-B1] Thieves Town - Top Left of Huge Room'], ['Thieves Town Big Key Door', 'Thieves Town Exit']),
create_region('Thieves Town (Deep)', ['[dungeon-D4-1F] Thieves Town - Room above Boss',
'[dungeon-D4-B2] Thieves Town - Big Chest',
'[dungeon-D4-B2] Thieves Town - Chest next to Blind'], ['Blind Fight']),
create_region('Blind Fight', ['Blind - Heart Container', 'Blind - Crystal']),
create_region('Skull Woods First Section', ['[dungeon-D3-B1] Skull Woods - East of Big Chest'], ['Skull Woods First Section Exit', 'Skull Woods First Section Bomb Jump', 'Skull Woods First Section South Door', 'Skull Woods First Section West Door']),
create_region('Skull Woods First Section (Right)', ['[dungeon-D3-B1] Skull Woods - South of Big Chest'], ['Skull Woods First Section (Right) North Door']),
create_region('Skull Woods First Section (Left)', ['[dungeon-D3-B1] Skull Woods - Compass Room', '[dungeon-D3-B1] Skull Woods - Push Statue Room'], ['Skull Woods First Section (Left) Door to Exit', 'Skull Woods First Section (Left) Door to Right']),
create_region('Skull Woods First Section (Top)', ['[dungeon-D3-B1] Skull Woods - Big Chest'], ['Skull Woods First Section (Top) One-Way Path']),
create_region('Skull Woods Second Section', ['[dungeon-D3-B1] Skull Woods - Big Key Room'], ['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']),
create_region('Skull Woods Final Section (Entrance)', ['[dungeon-D3-B1] Skull Woods - Final Section Entrance'], ['Skull Woods Torch Room', 'Skull Woods Final Section Exit']),
create_region('Skull Woods Final Section (Mothula)', ['Mothula - Heart Container', 'Mothula - Crystal']),
create_region('Swamp Palace (First Room)', ['Swamp Palace - Entrance'], ['Swamp Palace Small Key Door']),
create_region('Swamp Palace (Starting Area)', ['Swamp Palace - Map Chest'], ['Swamp Palace (Center)']),
create_region('Swamp Palace (Center)', ['Swamp Palace - Big Chest', 'Swamp Palace - Compass Chest',
'Swamp Palace - Big Key Chest', 'Swamp Palace - West Chest'], ['Swamp Palace (North)']),
create_region('Swamp Palace (North)', ['Swamp Palace - Flooded Room - Left', 'Swamp Palace - Flooded Room - Right',
'Swamp Palace - Waterfall Room', 'Swamp Palace - Arrghus', 'Swamp Palace - Prize']),
create_region('Thieves Town (Entrance)', ['Thieves\' Town - Big Key Chest',
'Thieves\' Town - Map Chest',
'Thieves\' Town - Compass Chest',
'Thieves\' Town - Ambush Chest'], ['Thieves Town Big Key Door', 'Thieves Town Exit']),
create_region('Thieves Town (Deep)', ['Thieves\' Town - Attic',
'Thieves\' Town - Big Chest',
'Thieves\' Town - Blind\'s Cell'], ['Blind Fight']),
create_region('Blind Fight', ['Thieves Town - Blind', 'Thieves Town - Prize']),
create_region('Skull Woods First Section', ['Skull Woods - Map Chest'], ['Skull Woods First Section Exit', 'Skull Woods First Section Bomb Jump', 'Skull Woods First Section South Door', 'Skull Woods First Section West Door']),
create_region('Skull Woods First Section (Right)', ['Skull Woods - Pinball Room'], ['Skull Woods First Section (Right) North Door']),
create_region('Skull Woods First Section (Left)', ['Skull Woods - Compass Chest', 'Skull Woods - Pot Prison'], ['Skull Woods First Section (Left) Door to Exit', 'Skull Woods First Section (Left) Door to Right']),
create_region('Skull Woods First Section (Top)', ['Skull Woods - Big Chest'], ['Skull Woods First Section (Top) One-Way Path']),
create_region('Skull Woods Second Section', ['Skull Woods - Big Key Chest'], ['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']),
create_region('Skull Woods Final Section (Entrance)', ['Skull Woods - Bridge Room'], ['Skull Woods Torch Room', 'Skull Woods Final Section Exit']),
create_region('Skull Woods Final Section (Mothula)', ['Skull Woods - Mothula', 'Skull Woods - Prize']),
create_region('Ice Palace (Entrance)', None, ['Ice Palace Entrance Room', 'Ice Palace Exit']),
create_region('Ice Palace (Main)', ['[dungeon-D5-B1] Ice Palace - Compass Room', '[dungeon-D5-B4] Ice Palace - Above Big Chest',
'[dungeon-D5-B5] Ice Palace - Big Chest', '[dungeon-D5-B5] Ice Palace - Jellyfish Room'], ['Ice Palace (East)', 'Ice Palace (Kholdstare)']),
create_region('Ice Palace (East)', ['[dungeon-D5-B3] Ice Palace - Spike Room'], ['Ice Palace (East Top)']),
create_region('Ice Palace (East Top)', ['[dungeon-D5-B1] Ice Palace - Big Key Room', '[dungeon-D5-B2] Ice Palace - Map Room']),
create_region('Ice Palace (Kholdstare)', ['Kholdstare - Heart Container', 'Kholdstare - Crystal']),
create_region('Ice Palace (Main)', ['Ice Palace - Compass Chest', 'Ice Palace - Freezor Chest',
'Ice Palace - Big Chest', 'Ice Palace - Iced T Room'], ['Ice Palace (East)', 'Ice Palace (Kholdstare)']),
create_region('Ice Palace (East)', ['Ice Palace - Spike Room'], ['Ice Palace (East Top)']),
create_region('Ice Palace (East Top)', ['Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']),
create_region('Ice Palace (Kholdstare)', ['Ice Palace - Kholdstare', 'Ice Palace - Prize']),
create_region('Misery Mire (Entrance)', None, ['Misery Mire Entrance Gap', 'Misery Mire Exit']),
create_region('Misery Mire (Main)', ['[dungeon-D6-B1] Misery Mire - Big Chest', '[dungeon-D6-B1] Misery Mire - Map Room', '[dungeon-D6-B1] Misery Mire - Hub Room',
'[dungeon-D6-B1] Misery Mire - End of Bridge', '[dungeon-D6-B1] Misery Mire - Spike Room'], ['Misery Mire (West)', 'Misery Mire Big Key Door']),
create_region('Misery Mire (West)', ['[dungeon-D6-B1] Misery Mire - Compass Room', '[dungeon-D6-B1] Misery Mire - Big Key Room']),
create_region('Misery Mire (Main)', ['Misery Mire - Big Chest', 'Misery Mire - Map Chest', 'Misery Mire - Main Lobby',
'Misery Mire - Bridge Chest', 'Misery Mire - Spike Chest'], ['Misery Mire (West)', 'Misery Mire Big Key Door']),
create_region('Misery Mire (West)', ['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']),
create_region('Misery Mire (Final Area)', None, ['Misery Mire (Vitreous)']),
create_region('Misery Mire (Vitreous)', ['Vitreous - Heart Container', 'Vitreous - Crystal']),
create_region('Misery Mire (Vitreous)', ['Misery Mire - Vitreous', 'Misery Mire - Prize']),
create_region('Turtle Rock (Entrance)', None, ['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']),
create_region('Turtle Rock (First Section)', ['[dungeon-D7-1F] Turtle Rock - Compass Room', '[dungeon-D7-1F] Turtle Rock - Map Room [left chest]',
'[dungeon-D7-1F] Turtle Rock - Map Room [right chest]'], ['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']),
create_region('Turtle Rock (Chain Chomp Room)', ['[dungeon-D7-1F] Turtle Rock - Chain Chomp Room'], ['Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Chain Chomp Room) (South)']),
create_region('Turtle Rock (Second Section)', ['[dungeon-D7-B1] Turtle Rock - Big Key Room'], ['Turtle Rock Ledge Exit (West)', 'Turtle Rock Chain Chomp Staircase', 'Turtle Rock Big Key Door']),
create_region('Turtle Rock (Big Chest)', ['[dungeon-D7-B1] Turtle Rock - Big Chest'], ['Turtle Rock (Big Chest) (North)', 'Turtle Rock Ledge Exit (East)']),
create_region('Turtle Rock (Roller Switch Room)', ['[dungeon-D7-B1] Turtle Rock - Roller Switch Room'], ['Turtle Rock Dark Room Staircase', 'Turtle Rock Big Key Door Reverse']),
create_region('Turtle Rock (First Section)', ['Turtle Rock - Compass Chest', 'Turtle Rock - Roller Room - Left',
'Turtle Rock - Roller Room - Right'], ['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']),
create_region('Turtle Rock (Chain Chomp Room)', ['Turtle Rock - Chain Chomps'], ['Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Chain Chomp Room) (South)']),
create_region('Turtle Rock (Second Section)', ['Turtle Rock - Big Key Chest'], ['Turtle Rock Ledge Exit (West)', 'Turtle Rock Chain Chomp Staircase', 'Turtle Rock Big Key Door']),
create_region('Turtle Rock (Big Chest)', ['Turtle Rock - Big Chest'], ['Turtle Rock (Big Chest) (North)', 'Turtle Rock Ledge Exit (East)']),
create_region('Turtle Rock (Roller Switch Room)', ['Turtle Rock - Crystaroller Roo'], ['Turtle Rock Dark Room Staircase', 'Turtle Rock Big Key Door Reverse']),
create_region('Turtle Rock (Dark Room)', None, ['Turtle Rock (Dark Room) (North)', 'Turtle Rock (Dark Room) (South)']),
create_region('Turtle Rock (Eye Bridge)', ['[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom left chest]', '[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom right chest]',
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top left chest]', '[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top right chest]'],
create_region('Turtle Rock (Eye Bridge)', ['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right',
'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'],
['Turtle Rock Dark Room (South)', 'Turtle Rock (Trinexx)', 'Turtle Rock Isolated Ledge Exit']),
create_region('Turtle Rock (Trinexx)', ['Trinexx - Heart Container', 'Trinexx - Crystal']),
create_region('Dark Palace (Entrance)', ['[dungeon-D1-B1] Dark Palace - Shooter Room'], ['Dark Palace Bridge Room', 'Dark Palace Bonk Wall', 'Dark Palace Exit']),
create_region('Dark Palace (Center)', ['[dungeon-D1-1F] Dark Palace - Jump Room [left chest]', '[dungeon-D1-B1] Dark Palace - Turtle Stalfos Room'],
['Dark Palace Big Key Chest Staircase', 'Dark Palace (North)', 'Dark Palace Big Key Door']),
create_region('Dark Palace (Big Key Chest)', ['[dungeon-D1-1F] Dark Palace - Big Key Room']),
create_region('Dark Palace (Bonk Section)', ['[dungeon-D1-1F] Dark Palace - Jump Room [right chest]', '[dungeon-D1-1F] Dark Palace - Statue Push Room'], ['Dark Palace Hammer Peg Drop']),
create_region('Dark Palace (North)', ['[dungeon-D1-1F] Dark Palace - Compass Room', '[dungeon-D1-B1] Dark Palace - Dark Room [left chest]', '[dungeon-D1-B1] Dark Palace - Dark Room [right chest]'],
['Dark Palace Spike Statue Room Door', 'Dark Palace Maze Door']),
create_region('Dark Palace (Maze)', ['[dungeon-D1-1F] Dark Palace - Maze Room [top chest]', '[dungeon-D1-1F] Dark Palace - Maze Room [bottom chest]', '[dungeon-D1-1F] Dark Palace - Big Chest']),
create_region('Dark Palace (Spike Statue Room)', ['[dungeon-D1-1F] Dark Palace - Spike Statue Room']),
create_region('Dark Palace (Final Section)', ['Helmasaur - Heart Container', 'Helmasaur - Crystal']),
create_region('Ganons Tower (Entrance)', ['[dungeon-A2-1F] Ganons Tower - Torch', '[dungeon-A2-1F] Ganons Tower - Right Staircase [left chest]', '[dungeon-A2-1F] Ganons Tower - Right Staircase [right chest]'],
create_region('Turtle Rock (Trinexx)', ['Turtle Rock - Trinexx', 'Turtle Rock - Prize']),
create_region('Palace of Darkness (Entrance)', ['Palace of Darkness - Shooter Room'], ['Palace of Darkness Bridge Room', 'Palace of Darkness Bonk Wall', 'Palace of Darkness Exit']),
create_region('Palace of Darkness (Center)', ['Palace of Darkness - The Arena - Bridge', 'Palace of Darkness - Stalfos Basement'],
['Palace of Darkness Big Key Chest Staircase', 'Palace of Darkness (North)', 'Palace of Darkness Big Key Door']),
create_region('Palace of Darkness (Big Key Chest)', ['Palace of Darkness - Big Key Chest']),
create_region('Palace of Darkness (Bonk Section)', ['Palace of Darkness - The Arena - Ledge', 'Palace of Darkness - Map Chest'], ['Palace of Darkness Hammer Peg Drop']),
create_region('Palace of Darkness (North)', ['Palace of Darkness - Compass Chest', 'Palace of Darkness - Dark Basement - Left', 'Palace of Darkness - Dark Basement - Right'],
['Palace of Darkness Spike Statue Room Door', 'Palace of Darkness Maze Door']),
create_region('Palace of Darkness (Maze)', ['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom', 'Palace of Darkness - Big Chest']),
create_region('Palace of Darkness (Spike Statue Room)', ['Palace of Darkness - Harmless Hellway']),
create_region('Palace of Darkness (Final Section)', ['Palace of Darkness - Helmasaur', 'Palace of Darkness - Prize']),
create_region('Ganons Tower (Entrance)', ['Ganons Tower - Bob\'s Torch', 'Ganons Tower - Hope Room - Left', 'Ganons Tower - Hope Room - Right'],
['Ganons Tower (Tile Room)', 'Ganons Tower (Hookshot Room)', 'Ganons Tower Big Key Door', 'Ganons Tower Exit']),
create_region('Ganons Tower (Tile Room)', ['[dungeon-A2-1F] Ganons Tower - Tile Room'], ['Ganons Tower (Tile Room) Key Door']),
create_region('Ganons Tower (Compass Room)', ['[dungeon-A2-1F] Ganons Tower - Compass Room [top left chest]', '[dungeon-A2-1F] Ganons Tower - Compass Room [top right chest]',
'[dungeon-A2-1F] Ganons Tower - Compass Room [bottom left chest]', '[dungeon-A2-1F] Ganons Tower - Compass Room [bottom right chest]'],
create_region('Ganons Tower (Tile Room)', ['Ganons Tower - Tile Room'], ['Ganons Tower (Tile Room) Key Door']),
create_region('Ganons Tower (Compass Room)', ['Ganons Tower - Compass Room - Top Left', 'Ganons Tower - Compass Room - Top Right',
'Ganons Tower - Compass Room - Bottom Left', 'Ganons Tower - Compass Room - Bottom Right'],
['Ganons Tower (Bottom) (East)']),
create_region('Ganons Tower (Hookshot Room)', ['[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [top left chest]', '[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [top right chest]',
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [bottom left chest]', '[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [bottom right chest]'],
create_region('Ganons Tower (Hookshot Room)', ['Ganons Tower - DMs Room - Top Left', 'Ganons Tower - DMs Room - Top Right',
'Ganons Tower - DMs Room - Bottom Left', 'Ganons Tower - DMs Room - Bottom Right'],
['Ganons Tower (Map Room)', 'Ganons Tower (Double Switch Room)']),
create_region('Ganons Tower (Map Room)', ['[dungeon-A2-1F] Ganons Tower - Map Room']),
create_region('Ganons Tower (Firesnake Room)', ['[dungeon-A2-1F] Ganons Tower - Firesnake Room'], ['Ganons Tower (Firesnake Room)']),
create_region('Ganons Tower (Teleport Room)', ['[dungeon-A2-1F] Ganons Tower - Teleport Room [top left chest]', '[dungeon-A2-1F] Ganons Tower - Teleport Room [top right chest]',
'[dungeon-A2-1F] Ganons Tower - Teleport Room [bottom left chest]', '[dungeon-A2-1F] Ganons Tower - Teleport Room [bottom right chest]'],
create_region('Ganons Tower (Map Room)', ['Ganons Tower - Map Chest']),
create_region('Ganons Tower (Firesnake Room)', ['Ganons Tower - Firesnake Room'], ['Ganons Tower (Firesnake Room)']),
create_region('Ganons Tower (Teleport Room)', ['Ganons Tower - Randomizer Room - Top Left', 'Ganons Tower - Randomizer Room - Top Right',
'Ganons Tower - Randomizer Room - Bottom Left', 'Ganons Tower - Randomizer Room - Bottom Right'],
['Ganons Tower (Bottom) (West)']),
create_region('Ganons Tower (Bottom)', ['[dungeon-A2-1F] Ganons Tower - above Armos', '[dungeon-A2-1F] Ganons Tower - Big Chest', '[dungeon-A2-B1] Ganons Tower - Armos Room [left chest]',
'[dungeon-A2-B1] Ganons Tower - Armos Room [right chest]', '[dungeon-A2-B1] Ganons Tower - Armos Room [bottom chest]']),
create_region('Ganons Tower (Bottom)', ['Ganons Tower - Bob\'s Chest', 'Ganons Tower - Big Chest', 'Ganons Tower - Big Key Room - Left',
'Ganons Tower - Big Key Room - Right', 'Ganons Tower - Big Key Chest']),
create_region('Ganons Tower (Top)', None, ['Ganons Tower Torch Rooms']),
create_region('Ganons Tower (Before Moldorm)', ['[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [left chest]', '[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [right chest]',
'[dungeon-A2-6F] Ganons Tower - Room before Moldorm'], ['Ganons Tower Moldorm Door']),
create_region('Ganons Tower (Before Moldorm)', ['Ganons Tower - Mini Helmasaur Room - Left', 'Ganons Tower - Mini Helmasaur Room - Right',
'Ganons Tower - Pre-Moldorm Chest'], ['Ganons Tower Moldorm Door']),
create_region('Ganons Tower (Moldorm)', None, ['Ganons Tower Moldorm Gap']),
create_region('Agahnim 2', ['[dungeon-A2-6F] Ganons Tower - Moldorm Room', 'Agahnim 2'], None),
create_region('Agahnim 2', ['Ganons Tower - Validation Chest', 'Agahnim 2'], None),
create_region('Pyramid', ['Ganon'], ['Ganon Drop']),
create_region('Bottom of Pyramid', None, ['Pyramid Exit']),
create_region('Pyramid Ledge', None, ['Pyramid Entrance', 'Pyramid Drop'])
@ -282,231 +282,231 @@ def create_region(name, locations=None, exits=None):
location_table = {'Mushroom': (0x180013, False, 'in the woods'),
'Bottle Vendor': (0x2EB18, False, 'with a merchant'),
'Haunted Grove': (0x18014A, False, 'underground'),
'Piece of Heart (Dam)': (0x180145, False, 'underwater'),
'Bottle Merchant': (0x2EB18, False, 'with a merchant'),
'Flute Spot': (0x18014A, False, 'underground'),
'Sunken Treasure': (0x180145, False, 'underwater'),
'Purple Chest': (0x33D68, False, 'from a box'),
'[cave-022-B1] Thiefs hut [top chest]': (0xEB0F, False, 'in a basement'),
'[cave-022-B1] Thiefs hut [top left chest]': (0xEB12, False, 'in a basement'),
'[cave-022-B1] Thiefs hut [top right chest]': (0xEB15, False, 'in a basement'),
'[cave-022-B1] Thiefs hut [bottom left chest]': (0xEB18, False, 'in a basement'),
'[cave-022-B1] Thiefs hut [bottom right chest]': (0xEB1B, False, 'in a basement'),
'Uncle': (0x2DF45, False, 'with your uncle'),
'[cave-034] Hyrule Castle Secret Entrance': (0xE971, False, 'near your uncle'),
'Blind\'s Hideout - Top': (0xEB0F, False, 'in a basement'),
'Blind\'s Hideout - Left': (0xEB12, False, 'in a basement'),
'Blind\'s Hideout - Right': (0xEB15, False, 'in a basement'),
'Blind\'s Hideout - Far Left': (0xEB18, False, 'in a basement'),
'Blind\'s Hideout - Far Right': (0xEB1B, False, 'in a basement'),
'Link\'s Uncle': (0x2DF45, False, 'with your uncle'),
'Secret Passage': (0xE971, False, 'near your uncle'),
'King Zora': (0xEE1C3, False, 'at a high price'),
'Piece of Heart (Zoras River)': (0x180149, False, 'near Zora'),
'Zora\'s Ledge': (0x180149, False, 'near Zora'),
'Waterfall Fairy - Left': (0xE9B0, False, 'near a fairy'),
'Waterfall Fairy - Right': (0xE9D1, False, 'near a fairy'),
'[cave-018] Graveyard - top right grave': (0xE97A, False, 'alone in a cave'),
'[cave-047] Dam': (0xE98C, False, 'in the dam'),
'[cave-040] Links House': (0xE9BC, False, 'in your home'),
'[cave-031] Tavern': (0xE9CE, False, 'in the bar'),
'[cave-026] Chicken House': (0xE9E9, False, 'near poultry'),
'[cave-044] Aginahs Cave': (0xE9F2, False, 'with Aginah'),
'[cave-035] Sahasrahlas Hut [left chest]': (0xEA82, False, 'near the elder'),
'[cave-035] Sahasrahlas Hut [center chest]': (0xEA85, False, 'near the elder'),
'[cave-035] Sahasrahlas Hut [right chest]': (0xEA88, False, 'near the elder'),
'King\'s Tomb': (0xE97A, False, 'alone in a cave'),
'Floodgate Chest': (0xE98C, False, 'in the dam'),
'Link\'s House': (0xE9BC, False, 'in your home'),
'Kakariko Tavern': (0xE9CE, False, 'in the bar'),
'Chicken House': (0xE9E9, False, 'near poultry'),
'Aginah\'s Cave': (0xE9F2, False, 'with Aginah'),
'Sahasrahla\'s Hut - Left': (0xEA82, False, 'near the elder'),
'Sahasrahla\'s Hut - Middle': (0xEA85, False, 'near the elder'),
'Sahasrahla\'s Hut - Right': (0xEA88, False, 'near the elder'),
'Sahasrahla': (0x2F1FC, False, 'with the elder'),
'[cave-021] Kakariko Well [top chest]': (0xEA8E, False, 'in a well'),
'[cave-021] Kakariko Well [left chest row of 3]': (0xEA91, False, 'in a well'),
'[cave-021] Kakariko Well [center chest row of 3]': (0xEA94, False, 'in a well'),
'[cave-021] Kakariko Well [right chest row of 3]': (0xEA97, False, 'in a well'),
'[cave-021] Kakariko Well [bottom chest]': (0xEA9A, False, 'in a well'),
'Blacksmiths': (0x18002A, False, 'with the smith'),
'Kakariko Well - Top': (0xEA8E, False, 'in a well'),
'Kakariko Well - Left': (0xEA91, False, 'in a well'),
'Kakariko Well - Middle': (0xEA94, False, 'in a well'),
'Kakariko Well - Right': (0xEA97, False, 'in a well'),
'Kakariko Well - Bottom': (0xEA9A, False, 'in a well'),
'Blacksmith': (0x18002A, False, 'with the smith'),
'Magic Bat': (0x180015, False, 'with the bat'),
'Sick Kid': (0x339CF, False, 'with the ill'),
'Hobo': (0x33E7D, False, 'with the hobo'),
'Piece of Heart (Thieves Forest Hideout)': (0x180000, False, 'near a thief'),
'Piece of Heart (Lumberjack Tree)': (0x180001, False, 'in a hole'),
'Piece of Heart (Cave South of Haunted Grove)': (0x180003, False, 'alone in a cave'),
'Piece of Heart (Graveyard Cave)': (0x180004, False, 'alone in a cave'),
'Piece of Heart (Checkerboard Cave)': (0x180005, False, 'alone in a cave'),
'[cave-050] Mini Moldorm Cave [bottom left chest]': (0xEB42, False, 'near Moldorms'),
'[cave-050] Mini Moldorm Cave [top left chest]': (0xEB45, False, 'near Moldorms'),
'[cave-050] Mini Moldorm Cave [top right chest]': (0xEB48, False, 'near Moldorms'),
'[cave-050] Mini Moldorm Cave [bottom right chest]': (0xEB4B, False, 'near Moldorms'),
'[cave-050] Mini Moldorm Cave [generous guy]': (0x180010, False, 'near Moldorms'),
'[cave-051] Ice Cave': (0xEB4E, False, 'on ice'),
'[cave-016] Bonk Rock Cave': (0xEB3F, False, 'alone in a cave'),
'Lost Woods Hideout': (0x180000, False, 'near a thief'),
'Lumberjack Tree': (0x180001, False, 'in a hole'),
'Cave 45': (0x180003, False, 'alone in a cave'),
'Graveyard Ledge': (0x180004, False, 'alone in a cave'),
'Checkerboard Cave': (0x180005, False, 'alone in a cave'),
'Mini Moldorm Cave - Far Left': (0xEB42, False, 'near Moldorms'),
'Mini Moldorm Cave - Left': (0xEB45, False, 'near Moldorms'),
'Mini Moldorm Cave - Right': (0xEB48, False, 'near Moldorms'),
'Mini Moldorm Cave - Far Right': (0xEB4B, False, 'near Moldorms'),
'Mini Moldorm Cave - Generous Guy': (0x180010, False, 'near Moldorms'),
'Ice Rod Cave': (0xEB4E, False, 'on ice'),
'Bonk Rock Cave': (0xEB3F, False, 'alone in a cave'),
'Library': (0x180012, False, 'near books'),
'Witch': (0x180014, False, 'near potions'),
'Piece of Heart (Lake Hylia)': (0x180144, False, 'on an island'),
'Piece of Heart (Maze Race)': (0x180142, False, 'at the race'),
'Piece of Heart (Desert - west side)': (0x180143, False, 'in the desert'),
'[dungeon-L2-B1] Desert Palace - Big Chest': (0xE98F, False, 'in Desert Palace'),
'[dungeon-L2-B1] Desert Palace - Torch': (0x180160, False, 'in Desert Palace'),
'[dungeon-L2-B1] Desert Palace - Map Room': (0xE9B6, False, 'in Desert Palace'),
'[dungeon-L2-B1] Desert Palace - Compass Room': (0xE9CB, False, 'in Desert Palace'),
'[dungeon-L2-B1] Desert Palace - Big Key Room': (0xE9C2, False, 'in Desert Palace'),
'Lanmolas - Heart Container': (0x180151, False, 'with Lanmolas'),
'[dungeon-L1-1F] Eastern Palace - Compass Room': (0xE977, False, 'in Eastern Palace'),
'[dungeon-L1-1F] Eastern Palace - Big Chest': (0xE97D, False, 'in Eastern Palace'),
'[dungeon-L1-1F] Eastern Palace - Big Ball Room': (0xE9B3, False, 'in Eastern Palace'),
'[dungeon-L1-1F] Eastern Palace - Big Key Room': (0xE9B9, False, 'in Eastern Palace'),
'[dungeon-L1-1F] Eastern Palace - Map Room': (0xE9F5, False, 'in Eastern Palace'),
'Armos - Heart Container': (0x180150, False, 'with the Armos'),
'Altar': (0x289B0, False, 'at the pedestal'),
'[dungeon-C-B1] Hyrule Castle - Boomerang Room': (0xE974, False, 'in Hyrule Castle'),
'[dungeon-C-B1] Hyrule Castle - Map Room': (0xEB0C, False, 'in Hyrule Castle'),
'[dungeon-C-B1] Hyrule Castle - Next To Zelda': (0xEB09, False, 'in Hyrule Castle'),
'[dungeon-C-B1] Escape - First B1 Room': (0xE96E, False, 'in the sewers'),
'[dungeon-C-B1] Escape - Final Basement Room [left chest]': (0xEB5D, False, 'in the sewers'),
'[dungeon-C-B1] Escape - Final Basement Room [middle chest]': (0xEB60, False, 'in the sewers'),
'[dungeon-C-B1] Escape - Final Basement Room [right chest]': (0xEB63, False, 'in the sewers'),
'[dungeon-C-1F] Sanctuary': (0xEA79, False, 'in Sanctuary'),
'[dungeon-A1-2F] Hyrule Castle Tower - 2 Knife Guys Room': (0xEAB5, False, 'in Hyrule Castle'),
'[dungeon-A1-3F] Hyrule Castle Tower - Maze Room': (0xEAB2, False, 'in Hyrule Castle'),
'Old Mountain Man': (0xF69FA, False, 'with the old man'),
'Piece of Heart (Spectacle Rock Cave)': (0x180002, False, 'alone in a cave'),
'[cave-009-1F] Death Mountain - right cave [top left chest]': (0xEB2A, False, 'in seven cave'),
'[cave-009-1F] Death Mountain - right cave [top left middle chest]': (0xEB2D, False, 'in seven cave'),
'[cave-009-1F] Death Mountain - right cave [top right middle chest]': (0xEB30, False, 'in seven cave'),
'[cave-009-1F] Death Mountain - right cave [top right chest]': (0xEB33, False, 'in seven cave'),
'[cave-009-1F] Death Mountain - right cave [bottom chest]': (0xEB36, False, 'in seven cave'),
'[cave-009-B1] Death Mountain - right cave [left chest]': (0xEB39, False, 'in seven cave'),
'[cave-009-B1] Death Mountain - right cave [right chest]': (0xEB3C, False, 'in seven cave'),
'[cave-012-1F] Death Mountain - left cave]': (0xE9BF, False, 'in spiral cave'),
'Potion Shop': (0x180014, False, 'near potions'),
'Lake Hylia Island': (0x180144, False, 'on an island'),
'Maze Race': (0x180142, False, 'at the race'),
'Desert Ledge': (0x180143, False, 'in the desert'),
'Desert Palace - Big Chest': (0xE98F, False, 'in Desert Palace'),
'Desert Palace - Torch': (0x180160, False, 'in Desert Palace'),
'Desert Palace - Map Chest': (0xE9B6, False, 'in Desert Palace'),
'Desert Palace - Compass Chest': (0xE9CB, False, 'in Desert Palace'),
'Desert Palace - Big Key Chest': (0xE9C2, False, 'in Desert Palace'),
'Desert Palace - Lanmolas': (0x180151, False, 'with Lanmolas'),
'Eastern Palace - Compass Chest': (0xE977, False, 'in Eastern Palace'),
'Eastern Palace - Big Chest': (0xE97D, False, 'in Eastern Palace'),
'Eastern Palace - Cannonball Chest': (0xE9B3, False, 'in Eastern Palace'),
'Eastern Palace - Big Key Chest': (0xE9B9, False, 'in Eastern Palace'),
'Eastern Palace - Map Chest': (0xE9F5, False, 'in Eastern Palace'),
'Eastern Palace - Armos Knights': (0x180150, False, 'with the Armos'),
'Master Sword Pedestal': (0x289B0, False, 'at the pedestal'),
'Hyrule Castle - Boomerang Chest': (0xE974, False, 'in Hyrule Castle'),
'Hyrule Castle - Map Chest': (0xEB0C, False, 'in Hyrule Castle'),
'Hyrule Castle - Zelda\'s Chest': (0xEB09, False, 'in Hyrule Castle'),
'Sewers - Dark Cross': (0xE96E, False, 'in the sewers'),
'Sewers - Secret Room - Left': (0xEB5D, False, 'in the sewers'),
'Sewers - Secret Room - Middle': (0xEB60, False, 'in the sewers'),
'Sewers - Secret Room - Right': (0xEB63, False, 'in the sewers'),
'Sanctuary': (0xEA79, False, 'in Sanctuary'),
'Castle Tower - Room 03': (0xEAB5, False, 'in Hyrule Castle'),
'Castle Tower - Dark Maze': (0xEAB2, False, 'in Hyrule Castle'),
'Old Man': (0xF69FA, False, 'with the old man'),
'Spectacle Rock Cave': (0x180002, False, 'alone in a cave'),
'Paradox Cave Lower - Far Left': (0xEB2A, False, 'in paradox cave'),
'Paradox Cave Lower - Left': (0xEB2D, False, 'in paradox cave'),
'Paradox Cave Lower - Right': (0xEB30, False, 'in paradox cave'),
'Paradox Cave Lower - Far Right': (0xEB33, False, 'in paradox cave'),
'Paradox Cave Lower - Middle': (0xEB36, False, 'in paradox cave'),
'Paradox Cave Upper - Left': (0xEB39, False, 'in paradox cave'),
'Paradox Cave Upper - Right': (0xEB3C, False, 'in paradox cave'),
'Spiral Cave': (0xE9BF, False, 'in spiral cave'),
'Ether Tablet': (0x180016, False, 'at a monument'),
'Piece of Heart (Spectacle Rock)': (0x180140, False, 'atop a rock'),
'[dungeon-L3-1F] Tower of Hera - Freestanding Key': (0x180162, False, 'in Tower of Hera'),
'[dungeon-L3-1F] Tower of Hera - Entrance': (0xE9AD, False, 'in Tower of Hera'),
'[dungeon-L3-1F] Tower of Hera - Basement': (0xE9E6, False, 'in Tower of Hera'),
'[dungeon-L3-1F] Tower of Hera - 4F [small chest]': (0xE9FB, False, 'in Tower of Hera'),
'[dungeon-L3-1F] Tower of Hera - Big Chest': (0xE9F8, False, 'in Tower of Hera'),
'Spectacle Rock': (0x180140, False, 'atop a rock'),
'Tower of Hera - Basement Cage': (0x180162, False, 'in Tower of Hera'),
'Tower of Hera - Map Chest': (0xE9AD, False, 'in Tower of Hera'),
'Tower of Hera - Big Key Chest': (0xE9E6, False, 'in Tower of Hera'),
'Tower of Hera - Compass Chest': (0xE9FB, False, 'in Tower of Hera'),
'Tower of Hera - Big Chest': (0xE9F8, False, 'in Tower of Hera'),
'Moldorm - Heart Container': (0x180152, False, 'with Moldorm'),
'Piece of Heart (Pyramid)': (0x180147, False, 'on the pyramid'),
'Pyramid': (0x180147, False, 'on the pyramid'),
'Catfish': (0xEE185, False, 'with a fish'),
'Flute Boy': (0x330C7, False, 'with tree boy'),
'Piece of Heart (Digging Game)': (0x180148, False, 'underground'),
'Stumpy': (0x330C7, False, 'with tree boy'),
'Digging Game': (0x180148, False, 'underground'),
'Bombos Tablet': (0x180017, False, 'at a monument'),
'[cave-073] Cave Northeast of Swamp Palace [top chest]': (0xEB1E, False, 'near batman'),
'[cave-073] Cave Northeast of Swamp Palace [top middle chest]': (0xEB21, False, 'near batman'),
'[cave-073] Cave Northeast of Swamp Palace [bottom middle chest]': (0xEB24, False, 'near batman'),
'[cave-073] Cave Northeast of Swamp Palace [bottom chest]': (0xEB27, False, 'near batman'),
'[cave-073] Cave Northeast of Swamp Palace [generous guy]': (0x180011, False, 'with batman'),
'Piece of Heart (Dark World Blacksmith Pegs)': (0x180006, False, 'alone in a cave'),
'Pyramid Fairy [left chest]': (0xE980, False, 'near a fairy'),
'Pyramid Fairy [right chest]': (0xE983, False, 'near a fairy'),
'[cave-063] Doorless Hut': (0xE9EC, False, 'alone in a home'),
'[cave-062] C-Shaped House': (0xE9EF, False, 'alone in a home'),
'Piece of Heart (Treasure Chest Game)': (0xEDA8, False, 'as a prize'),
'Piece of Heart (Bumper Cave)': (0x180146, False, 'on a ledge'),
'[cave-071] Misery Mire West Area [left chest]': (0xEA73, False, 'near a spark'),
'[cave-071] Misery Mire West Area [right chest]': (0xEA76, False, 'near a spark'),
'[cave-057-1F] Dark World Death Mountain Climb [top chest]': (0xEA7C, False, 'in a connection'),
'[cave-057-1F] Dark World Death Mountain Climb [bottom chest]': (0xEA7F, False, 'in a connection'),
'[cave-055] Spike Cave': (0xEA8B, False, 'beyond spikes'),
'[cave-056] Hookshot Cave [top right chest]': (0xEB51, False, 'across pits'),
'[cave-056] Hookshot Cave [top left chest]': (0xEB54, False, 'across pits'),
'[cave-056] Hookshot Cave [bottom right chest]': (0xEB5A, False, 'across pits'),
'[cave-056] Hookshot Cave [bottom left chest]': (0xEB57, False, 'across pits'),
'Piece of Heart (Death Mountain - Floating Island)': (0x180141, False, 'on an island'),
'[cave-013] Mimic Cave': (0xE9C5, False, 'beyond Goriyas'),
'[dungeon-D2-1F] Swamp Palace - First Room': (0xEA9D, False, 'in Swamp Palace'),
'[dungeon-D2-1F] Swamp Palace - Map Room': (0xE986, False, 'in Swamp Palace'),
'[dungeon-D2-B1] Swamp Palace - Big Chest': (0xE989, False, 'in Swamp Palace'),
'[dungeon-D2-B1] Swamp Palace - South of Hookshot Room': (0xEAA0, False, 'in Swamp Palace'),
'[dungeon-D2-B1] Swamp Palace - Big Key Chest': (0xEAA6, False, 'in Swamp Palace'),
'[dungeon-D2-B1] Swamp Palace - Compass Chest': (0xEAA3, False, 'in Swamp Palace'),
'[dungeon-D2-B2] Swamp Palace - Flooded Room [left chest]': (0xEAA9, False, 'in Swamp Palace'),
'[dungeon-D2-B2] Swamp Palace - Flooded Room [right chest]': (0xEAAC, False, 'in Swamp Palace'),
'[dungeon-D2-B2] Swamp Palace - Waterfall Room': (0xEAAF, False, 'in Swamp Palace'),
'Arrghus - Heart Container': (0x180154, False, 'with Arrghus'),
'[dungeon-D4-B1] Thieves Town - Bottom Left of Huge Room [bottom right chest]': (0xEA04, False, 'in Thieves\' Town'),
'[dungeon-D4-B1] Thieves Town - Bottom Left of Huge Room [top left chest]': (0xEA01, False, 'in Thieves\' Town'),
'[dungeon-D4-B1] Thieves Town - Bottom Right of Huge Room': (0xEA07, False, 'in Thieves\' Town'),
'[dungeon-D4-B1] Thieves Town - Top Left of Huge Room': (0xEA0A, False, 'in Thieves\' Town'),
'[dungeon-D4-1F] Thieves Town - Room above Boss': (0xEA0D, False, 'in Thieves\' Town'),
'[dungeon-D4-B2] Thieves Town - Big Chest': (0xEA10, False, 'in Thieves\' Town'),
'[dungeon-D4-B2] Thieves Town - Chest next to Blind': (0xEA13, False, 'in Thieves\' Town'),
'Blind - Heart Container': (0x180156, False, 'with Blind'),
'[dungeon-D3-B1] Skull Woods - Compass Room': (0xE992, False, 'in Skull Woods'),
'[dungeon-D3-B1] Skull Woods - East of Big Chest': (0xE99B, False, 'in Skull Woods'),
'[dungeon-D3-B1] Skull Woods - Big Chest': (0xE998, False, 'in Skull Woods'),
'[dungeon-D3-B1] Skull Woods - Push Statue Room': (0xE9A1, False, 'in Skull Woods'),
'[dungeon-D3-B1] Skull Woods - South of Big Chest': (0xE9C8, False, 'in Skull Woods'),
'[dungeon-D3-B1] Skull Woods - Big Key Room': (0xE99E, False, 'in Skull Woods'),
'[dungeon-D3-B1] Skull Woods - Final Section Entrance': (0xE9FE, False, 'near Mothula'),
'Mothula - Heart Container': (0x180155, False, 'with Mothula'),
'[dungeon-D5-B1] Ice Palace - Compass Room': (0xE9D4, False, 'in Ice Palace'),
'[dungeon-D5-B4] Ice Palace - Above Big Chest': (0xE995, False, 'in Ice Palace'),
'[dungeon-D5-B5] Ice Palace - Big Chest': (0xE9AA, False, 'in Ice Palace'),
'[dungeon-D5-B5] Ice Palace - Jellyfish Room': (0xE9E3, False, 'in Ice Palace'),
'[dungeon-D5-B3] Ice Palace - Spike Room': (0xE9E0, False, 'in Ice Palace'),
'[dungeon-D5-B1] Ice Palace - Big Key Room': (0xE9A4, False, 'in Ice Palace'),
'[dungeon-D5-B2] Ice Palace - Map Room': (0xE9DD, False, 'in Ice Palace'),
'Kholdstare - Heart Container': (0x180157, False, 'with Kholdstare'),
'[dungeon-D6-B1] Misery Mire - Big Chest': (0xEA67, False, 'in Misery Mire'),
'[dungeon-D6-B1] Misery Mire - Map Room': (0xEA6A, False, 'in Misery Mire'),
'[dungeon-D6-B1] Misery Mire - Hub Room': (0xEA5E, False, 'in Misery Mire'),
'[dungeon-D6-B1] Misery Mire - End of Bridge': (0xEA61, False, 'in Misery Mire'),
'[dungeon-D6-B1] Misery Mire - Spike Room': (0xE9DA, False, 'in Misery Mire'),
'[dungeon-D6-B1] Misery Mire - Compass Room': (0xEA64, False, 'in Misery Mire'),
'[dungeon-D6-B1] Misery Mire - Big Key Room': (0xEA6D, False, 'in Misery Mire'),
'Vitreous - Heart Container': (0x180158, False, 'with Vitreous'),
'[dungeon-D7-1F] Turtle Rock - Compass Room': (0xEA22, False, 'in Turtle Rock'),
'[dungeon-D7-1F] Turtle Rock - Map Room [left chest]': (0xEA1C, False, 'in Turtle Rock'),
'[dungeon-D7-1F] Turtle Rock - Map Room [right chest]': (0xEA1F, False, 'in Turtle Rock'),
'[dungeon-D7-1F] Turtle Rock - Chain Chomp Room': (0xEA16, False, 'in Turtle Rock'),
'[dungeon-D7-B1] Turtle Rock - Big Key Room': (0xEA25, False, 'in Turtle Rock'),
'[dungeon-D7-B1] Turtle Rock - Big Chest': (0xEA19, False, 'in Turtle Rock'),
'[dungeon-D7-B1] Turtle Rock - Roller Switch Room': (0xEA34, False, 'in Turtle Rock'),
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom left chest]': (0xEA31, False, 'in Turtle Rock'),
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom right chest]': (0xEA2E, False, 'in Turtle Rock'),
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top left chest]': (0xEA2B, False, 'in Turtle Rock'),
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top right chest]': (0xEA28, False, 'in Turtle Rock'),
'Trinexx - Heart Container': (0x180159, False, 'with Trinexx'),
'[dungeon-D1-B1] Dark Palace - Shooter Room': (0xEA5B, False, 'in Palace of Darkness'),
'[dungeon-D1-1F] Dark Palace - Jump Room [left chest]': (0xEA3A, False, 'in Palace of Darkness'),
'[dungeon-D1-B1] Dark Palace - Turtle Stalfos Room': (0xEA49, False, 'in Palace of Darkness'),
'[dungeon-D1-1F] Dark Palace - Big Key Room': (0xEA37, False, 'in Palace of Darkness'),
'[dungeon-D1-1F] Dark Palace - Jump Room [right chest]': (0xEA3D, False, 'in Palace of Darkness'),
'[dungeon-D1-1F] Dark Palace - Statue Push Room': (0xEA52, False, 'in Palace of Darkness'),
'[dungeon-D1-1F] Dark Palace - Compass Room': (0xEA43, False, 'in Palace of Darkness'),
'[dungeon-D1-B1] Dark Palace - Dark Room [left chest]': (0xEA4C, False, 'in Palace of Darkness'),
'[dungeon-D1-B1] Dark Palace - Dark Room [right chest]': (0xEA4F, False, 'in Palace of Darkness'),
'[dungeon-D1-1F] Dark Palace - Maze Room [top chest]': (0xEA55, False, 'in Palace of Darkness'),
'[dungeon-D1-1F] Dark Palace - Maze Room [bottom chest]': (0xEA58, False, 'in Palace of Darkness'),
'[dungeon-D1-1F] Dark Palace - Big Chest': (0xEA40, False, 'in Palace of Darkness'),
'[dungeon-D1-1F] Dark Palace - Spike Statue Room': (0xEA46, False, 'in Palace of Darkness'),
'Helmasaur - Heart Container': (0x180153, False, 'with Helmasaur King'),
'[dungeon-A2-1F] Ganons Tower - Torch': (0x180161, False, 'on my torch'),
'[dungeon-A2-1F] Ganons Tower - Right Staircase [left chest]': (0xEAD9, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Right Staircase [right chest]': (0xEADC, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Tile Room': (0xEAE2, False, 'with my tiles'),
'[dungeon-A2-1F] Ganons Tower - Compass Room [top left chest]': (0xEAE5, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Compass Room [top right chest]': (0xEAE8, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Compass Room [bottom left chest]': (0xEAEB, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Compass Room [bottom right chest]': (0xEAEE, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [top left chest]': (0xEAB8, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [top right chest]': (0xEABB, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [bottom left chest]': (0xEABE, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [bottom right chest]': (0xEAC1, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Map Room': (0xEAD3, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Firesnake Room': (0xEAD0, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Teleport Room [top left chest]': (0xEAC4, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Teleport Room [top right chest]': (0xEAC7, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Teleport Room [bottom left chest]': (0xEACA, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Teleport Room [bottom right chest]': (0xEACD, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - above Armos': (0xEADF, False, 'in My Tower'),
'[dungeon-A2-1F] Ganons Tower - Big Chest': (0xEAD6, False, 'in my big chest'),
'[dungeon-A2-B1] Ganons Tower - Armos Room [left chest]': (0xEAF4, False, 'beyond my Armos'),
'[dungeon-A2-B1] Ganons Tower - Armos Room [right chest]': (0xEAF7, False, 'beyond my Armos'),
'[dungeon-A2-B1] Ganons Tower - Armos Room [bottom chest]': (0xEAF1, False, 'beyond my Armos'),
'[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [left chest]': (0xEAFD, False, 'atop My Tower'),
'[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [right chest]': (0xEB00, False, 'atop My Tower'),
'[dungeon-A2-6F] Ganons Tower - Room before Moldorm': (0xEB03, False, 'atop My Tower'),
'[dungeon-A2-6F] Ganons Tower - Moldorm Room': (0xEB06, False, 'atop My Tower'),
'Hype Cave - Top': (0xEB1E, False, 'near batman'),
'Hype Cave - Middle Right': (0xEB21, False, 'near batman'),
'Hype Cave - Middle Left': (0xEB24, False, 'near batman'),
'Hype Cave - Bottom': (0xEB27, False, 'near batman'),
'Hype Cave - Generous Guy': (0x180011, False, 'with batman'),
'Peg Cave': (0x180006, False, 'alone in a cave'),
'Pyramid Fairy - Left': (0xE980, False, 'near a fairy'),
'Pyramid Fairy - Right': (0xE983, False, 'near a fairy'),
'Brewery': (0xE9EC, False, 'alone in a home'),
'C-Shaped House': (0xE9EF, False, 'alone in a home'),
'Chest Game': (0xEDA8, False, 'as a prize'),
'Bumper Cave Ledge': (0x180146, False, 'on a ledge'),
'Mire Shed - Left': (0xEA73, False, 'near a spark'),
'Mire Shed - Right': (0xEA76, False, 'near a spark'),
'Superbunny Cave - Top': (0xEA7C, False, 'in a connection'),
'Superbunny Cave - Bottom': (0xEA7F, False, 'in a connection'),
'Spike Cave': (0xEA8B, False, 'beyond spikes'),
'Hookshot Cave - Top Right': (0xEB51, False, 'across pits'),
'Hookshot Cave - Top Left': (0xEB54, False, 'across pits'),
'Hookshot Cave - Bottom Right': (0xEB5A, False, 'across pits'),
'Hookshot Cave - Bottom Left': (0xEB57, False, 'across pits'),
'Floating Island': (0x180141, False, 'on an island'),
'Mimic Cave': (0xE9C5, False, 'beyond Goriyas'),
'Swamp Palace - Entrance': (0xEA9D, False, 'in Swamp Palace'),
'Swamp Palace - Map Chest': (0xE986, False, 'in Swamp Palace'),
'Swamp Palace - Big Chest': (0xE989, False, 'in Swamp Palace'),
'Swamp Palace - Compass Chest': (0xEAA0, False, 'in Swamp Palace'),
'Swamp Palace - Big Key Chest': (0xEAA6, False, 'in Swamp Palace'),
'Swamp Palace - West Chest': (0xEAA3, False, 'in Swamp Palace'),
'Swamp Palace - Flooded Room - Left': (0xEAA9, False, 'in Swamp Palace'),
'Swamp Palace - Flooded Room - Right': (0xEAAC, False, 'in Swamp Palace'),
'Swamp Palace - Waterfall Room': (0xEAAF, False, 'in Swamp Palace'),
'Swamp Palace - Arrghus': (0x180154, False, 'with Arrghus'),
'Thieves\' Town - Big Key Chest': (0xEA04, False, 'in Thieves\' Town'),
'Thieves\' Town - Map Chest': (0xEA01, False, 'in Thieves\' Town'),
'Thieves\' Town - Compass Chest': (0xEA07, False, 'in Thieves\' Town'),
'Thieves\' Town - Ambush Chest': (0xEA0A, False, 'in Thieves\' Town'),
'Thieves\' Town - Attic': (0xEA0D, False, 'in Thieves\' Town'),
'Thieves\' Town - Big Chest': (0xEA10, False, 'in Thieves\' Town'),
'Thieves\' Town - Blind\'s Cell': (0xEA13, False, 'in Thieves\' Town'),
'Thieves Town - Blind': (0x180156, False, 'with Blind'),
'Skull Woods - Compass Chest': (0xE992, False, 'in Skull Woods'),
'Skull Woods - Map Chest': (0xE99B, False, 'in Skull Woods'),
'Skull Woods - Big Chest': (0xE998, False, 'in Skull Woods'),
'Skull Woods - Pot Prison': (0xE9A1, False, 'in Skull Woods'),
'Skull Woods - Pinball Room': (0xE9C8, False, 'in Skull Woods'),
'Skull Woods - Big Key Chest': (0xE99E, False, 'in Skull Woods'),
'Skull Woods - Bridge Room': (0xE9FE, False, 'near Mothula'),
'Skull Woods - Mothula': (0x180155, False, 'with Mothula'),
'Ice Palace - Compass Chest': (0xE9D4, False, 'in Ice Palace'),
'Ice Palace - Freezor Chest': (0xE995, False, 'in Ice Palace'),
'Ice Palace - Big Chest': (0xE9AA, False, 'in Ice Palace'),
'Ice Palace - Iced T Room': (0xE9E3, False, 'in Ice Palace'),
'Ice Palace - Spike Room': (0xE9E0, False, 'in Ice Palace'),
'Ice Palace - Big Key Chest': (0xE9A4, False, 'in Ice Palace'),
'Ice Palace - Map Chest': (0xE9DD, False, 'in Ice Palace'),
'Ice Palace - Kholdstare': (0x180157, False, 'with Kholdstare'),
'Misery Mire - Big Chest': (0xEA67, False, 'in Misery Mire'),
'Misery Mire - Map Chest': (0xEA6A, False, 'in Misery Mire'),
'Misery Mire - Main Lobby': (0xEA5E, False, 'in Misery Mire'),
'Misery Mire - Bridge Chest': (0xEA61, False, 'in Misery Mire'),
'Misery Mire - Spike Chest': (0xE9DA, False, 'in Misery Mire'),
'Misery Mire - Compass Chest': (0xEA64, False, 'in Misery Mire'),
'Misery Mire - Big Key Chest': (0xEA6D, False, 'in Misery Mire'),
'Misery Mire - Vitreous': (0x180158, False, 'with Vitreous'),
'Turtle Rock - Compass Chest': (0xEA22, False, 'in Turtle Rock'),
'Turtle Rock - Roller Room - Left': (0xEA1C, False, 'in Turtle Rock'),
'Turtle Rock - Roller Room - Right': (0xEA1F, False, 'in Turtle Rock'),
'Turtle Rock - Chain Chomps': (0xEA16, False, 'in Turtle Rock'),
'Turtle Rock - Big Key Chest': (0xEA25, False, 'in Turtle Rock'),
'Turtle Rock - Big Chest': (0xEA19, False, 'in Turtle Rock'),
'Turtle Rock - Crystaroller Roo': (0xEA34, False, 'in Turtle Rock'),
'Turtle Rock - Eye Bridge - Bottom Left': (0xEA31, False, 'in Turtle Rock'),
'Turtle Rock - Eye Bridge - Bottom Right': (0xEA2E, False, 'in Turtle Rock'),
'Turtle Rock - Eye Bridge - Top Left': (0xEA2B, False, 'in Turtle Rock'),
'Turtle Rock - Eye Bridge - Top Right': (0xEA28, False, 'in Turtle Rock'),
'Turtle Rock - Trinexx': (0x180159, False, 'with Trinexx'),
'Palace of Darkness - Shooter Room': (0xEA5B, False, 'in Palace of Darkness'),
'Palace of Darkness - The Arena - Bridge': (0xEA3A, False, 'in Palace of Darkness'),
'Palace of Darkness - Stalfos Basement': (0xEA49, False, 'in Palace of Darkness'),
'Palace of Darkness - Big Key Chest': (0xEA37, False, 'in Palace of Darkness'),
'Palace of Darkness - The Arena - Ledge': (0xEA3D, False, 'in Palace of Darkness'),
'Palace of Darkness - Map Chest': (0xEA52, False, 'in Palace of Darkness'),
'Palace of Darkness - Compass Chest': (0xEA43, False, 'in Palace of Darkness'),
'Palace of Darkness - Dark Basement - Left': (0xEA4C, False, 'in Palace of Darkness'),
'Palace of Darkness - Dark Basement - Right': (0xEA4F, False, 'in Palace of Darkness'),
'Palace of Darkness - Dark Maze - Top': (0xEA55, False, 'in Palace of Darkness'),
'Palace of Darkness - Dark Maze - Bottom': (0xEA58, False, 'in Palace of Darkness'),
'Palace of Darkness - Big Chest': (0xEA40, False, 'in Palace of Darkness'),
'Palace of Darkness - Harmless Hellway': (0xEA46, False, 'in Palace of Darkness'),
'Palace of Darkness - Helmasaur': (0x180153, False, 'with Helmasaur King'),
'Ganons Tower - Bob\'s Torch': (0x180161, False, 'on my torch'),
'Ganons Tower - Hope Room - Left': (0xEAD9, False, 'in My Tower'),
'Ganons Tower - Hope Room - Right': (0xEADC, False, 'in My Tower'),
'Ganons Tower - Tile Room': (0xEAE2, False, 'with my tiles'),
'Ganons Tower - Compass Room - Top Left': (0xEAE5, False, 'in My Tower'),
'Ganons Tower - Compass Room - Top Right': (0xEAE8, False, 'in My Tower'),
'Ganons Tower - Compass Room - Bottom Left': (0xEAEB, False, 'in My Tower'),
'Ganons Tower - Compass Room - Bottom Right': (0xEAEE, False, 'in My Tower'),
'Ganons Tower - DMs Room - Top Left': (0xEAB8, False, 'in My Tower'),
'Ganons Tower - DMs Room - Top Right': (0xEABB, False, 'in My Tower'),
'Ganons Tower - DMs Room - Bottom Left': (0xEABE, False, 'in My Tower'),
'Ganons Tower - DMs Room - Bottom Right': (0xEAC1, False, 'in My Tower'),
'Ganons Tower - Map Chest': (0xEAD3, False, 'in My Tower'),
'Ganons Tower - Firesnake Room': (0xEAD0, False, 'in My Tower'),
'Ganons Tower - Randomizer Room - Top Left': (0xEAC4, False, 'in My Tower'),
'Ganons Tower - Randomizer Room - Top Right': (0xEAC7, False, 'in My Tower'),
'Ganons Tower - Randomizer Room - Bottom Left': (0xEACA, False, 'in My Tower'),
'Ganons Tower - Randomizer Room - Bottom Right': (0xEACD, False, 'in My Tower'),
'Ganons Tower - Bob\'s Chest': (0xEADF, False, 'in My Tower'),
'Ganons Tower - Big Chest': (0xEAD6, False, 'in my big chest'),
'Ganons Tower - Big Key Room - Left': (0xEAF4, False, 'beyond my Armos'),
'Ganons Tower - Big Key Room - Right': (0xEAF7, False, 'beyond my Armos'),
'Ganons Tower - Big Key Chest': (0xEAF1, False, 'beyond my Armos'),
'Ganons Tower - Mini Helmasaur Room - Left': (0xEAFD, False, 'atop My Tower'),
'Ganons Tower - Mini Helmasaur Room - Right': (0xEB00, False, 'atop My Tower'),
'Ganons Tower - Pre-Moldorm Chest': (0xEB03, False, 'atop My Tower'),
'Ganons Tower - Validation Chest': (0xEB06, False, 'atop My Tower'),
'Ganon': (None, False, 'from me'),
'Agahnim 1': (None, False, 'from my wizardry from'),
'Agahnim 2': (None, False, 'from my wizardry from'),
'Armos - Pendant': ([0x1209D, 0x53EF8, 0x53EF9, 0x180052, 0x18007C, 0xC6FE], True, 'Eastern Palace'),
'Lanmolas - Pendant': ([0x1209E, 0x53F1C, 0x53F1D, 0x180053, 0x180078, 0xC6FF], True, 'Desert Palace'),
'Agahnim 1': (None, False, 'from my wizardry form'),
'Agahnim 2': (None, False, 'from my wizardry form'),
'Eastern Palace - Prize': ([0x1209D, 0x53EF8, 0x53EF9, 0x180052, 0x18007C, 0xC6FE], True, 'Eastern Palace'),
'Desert Palace - Prize': ([0x1209E, 0x53F1C, 0x53F1D, 0x180053, 0x180078, 0xC6FF], True, 'Desert Palace'),
'Moldorm - Pendant': ([0x120A5, 0x53F0A, 0x53F0B, 0x18005A, 0x18007A, 0xC706], True, 'Tower of Hera'),
'Helmasaur - Crystal': ([0x120A1, 0x53F00, 0x53F01, 0x180056, 0x18007D, 0xC702], True, 'Palace of Darkness'),
'Arrghus - Crystal': ([0x120A0, 0x53F6C, 0x53F6D, 0x180055, 0x180071, 0xC701], True, 'Swamp Palace'),
'Blind - Crystal': ([0x120A6, 0x53F36, 0x53F37, 0x18005B, 0x180077, 0xC707], True, 'Thieves\' Town'),
'Mothula - Crystal': ([0x120A3, 0x53F12, 0x53F13, 0x180058, 0x18007B, 0xC704], True, 'Skull Woods'),
'Kholdstare - Crystal': ([0x120A4, 0x53F5A, 0x53F5B, 0x180059, 0x180073, 0xC705], True, 'Ice Palace'),
'Vitreous - Crystal': ([0x120A2, 0x53F48, 0x53F49, 0x180057, 0x180075, 0xC703], True, 'Misery Mire'),
'Trinexx - Crystal': ([0x120A7, 0x53F24, 0x53F25, 0x18005C, 0x180079, 0xC708], True, 'Turtle Rock')}
'Palace of Darkness - Prize': ([0x120A1, 0x53F00, 0x53F01, 0x180056, 0x18007D, 0xC702], True, 'Palace of Darkness'),
'Swamp Palace - Prize': ([0x120A0, 0x53F6C, 0x53F6D, 0x180055, 0x180071, 0xC701], True, 'Swamp Palace'),
'Thieves Town - Prize': ([0x120A6, 0x53F36, 0x53F37, 0x18005B, 0x180077, 0xC707], True, 'Thieves\' Town'),
'Skull Woods - Prize': ([0x120A3, 0x53F12, 0x53F13, 0x180058, 0x18007B, 0xC704], True, 'Skull Woods'),
'Ice Palace - Prize': ([0x120A4, 0x53F5A, 0x53F5B, 0x180059, 0x180073, 0xC705], True, 'Ice Palace'),
'Misery Mire - Prize': ([0x120A2, 0x53F48, 0x53F49, 0x180057, 0x180075, 0xC703], True, 'Misery Mire'),
'Turtle Rock - Prize': ([0x120A7, 0x53F24, 0x53F25, 0x18005C, 0x180079, 0xC708], True, 'Turtle Rock')}

20
Rom.py
View File

@ -346,7 +346,7 @@ def patch_rom(world, rom, hashtable, beep='normal', sprite=None):
rom.write_byte(0x18003D, 0x01)
# set correct flag for hera basement item
if world.get_location('[dungeon-L3-1F] Tower of Hera - Freestanding Key').item is not None and world.get_location('[dungeon-L3-1F] Tower of Hera - Freestanding Key').item.name == 'Small Key (Tower of Hera)':
if world.get_location('Tower of Hera - Basement Cage').item is not None and world.get_location('Tower of Hera - Basement Cage').item.name == 'Small Key (Tower of Hera)':
rom.write_byte(0x4E3BB, 0xE4)
else:
rom.write_byte(0x4E3BB, 0xEB)
@ -475,17 +475,17 @@ def write_strings(rom, world):
write_string_to_rom(rom, 'Ganon2Invincible', 'Got wax in\nyour ears?\nI can not die!')
write_string_to_rom(rom, 'TavernMan', TavernMan_texts[random.randint(0, len(TavernMan_texts) - 1)])
altaritem = world.get_location('Altar').item
altar_text = 'Some Hot Air' if altaritem is None else altaritem.altar_hint_text if altaritem.altar_hint_text is not None else 'Unknown Item'
write_string_to_rom(rom, 'Altar', altar_text)
altar_credit_text = 'and the Hot Air' if altaritem is None else altaritem.altar_credit_text if altaritem.altar_credit_text is not None else 'and the Unknown Item'
write_credits_string_to_rom(rom, 'Altar', altar_credit_text)
pedestalitem = world.get_location('Master Sword Pedestal').item
pedestal_text = 'Some Hot Air' if pedestalitem is None else pedestalitem.pedestal_hint_text if pedestalitem.pedestal_hint_text is not None else 'Unknown Item'
write_string_to_rom(rom, 'Pedestal', pedestal_text)
pedestal_credit_text = 'and the Hot Air' if pedestalitem is None else pedestalitem.pedestal_credit_text if pedestalitem.pedestal_credit_text is not None else 'and the Unknown Item'
write_credits_string_to_rom(rom, 'Pedestal', pedestal_credit_text)
etheritem = world.get_location('Ether Tablet').item
ether_text = 'Some Hot Air' if etheritem is None else etheritem.altar_hint_text if etheritem.altar_hint_text is not None else 'Unknown Item'
ether_text = 'Some Hot Air' if etheritem is None else etheritem.pedestal_hint_text if etheritem.pedestal_hint_text is not None else 'Unknown Item'
write_string_to_rom(rom, 'EtherTablet', ether_text)
bombositem = world.get_location('Bombos Tablet').item
bombos_text = 'Some Hot Air' if bombositem is None else bombositem.altar_hint_text if bombositem.altar_hint_text is not None else 'Unknown Item'
bombos_text = 'Some Hot Air' if bombositem is None else bombositem.pedestal_hint_text if bombositem.pedestal_hint_text is not None else 'Unknown Item'
write_string_to_rom(rom, 'BombosTablet', bombos_text)
write_credits_string_to_rom(rom, 'KingsReturn', KingsReturn_texts[random.randint(0, len(KingsReturn_texts) - 1)])
@ -508,10 +508,10 @@ def write_strings(rom, world):
zoraitem_text = Zora_texts[random.randint(0, len(Zora_texts) - 1)] if zoraitem is None or zoraitem.zora_credit_text is None else zoraitem.zora_credit_text
write_credits_string_to_rom(rom, 'Zora', zoraitem_text)
magicshopitem = world.get_location('Witch').item
magicshopitem = world.get_location('Potion Shop').item
magicshopitem_text = MagicShop_texts[random.randint(0, len(MagicShop_texts) - 1)] if magicshopitem is None or magicshopitem.magicshop_credit_text is None else magicshopitem.magicshop_credit_text
write_credits_string_to_rom(rom, 'MagicShop', magicshopitem_text)
fluteboyitem = world.get_location('Flute Boy').item
fluteboyitem = world.get_location('Stumpy').item
fluteboyitem_text = FluteBoy_texts[random.randint(0, len(FluteBoy_texts) - 1)] if fluteboyitem is None or fluteboyitem.fluteboy_credit_text is None else fluteboyitem.fluteboy_credit_text
write_credits_string_to_rom(rom, 'FluteBoy', fluteboyitem_text)

230
Rules.py
View File

@ -24,7 +24,7 @@ def set_rules(world):
if world.goal == 'dungeons':
# require all dungeons to beat ganon
add_rule(world.get_location('Ganon'), lambda state: state.can_reach('Altar', 'Location') and state.has('Beat Agahnim 1') and state.has('Beat Agahnim 2'))
add_rule(world.get_location('Ganon'), lambda state: state.can_reach('Master Sword Pedestal', 'Location') and state.has('Beat Agahnim 1') and state.has('Beat Agahnim 2'))
elif world.goal == 'ganon':
# require aga2 to beat ganon
add_rule(world.get_location('Ganon'), lambda state: state.has('Beat Agahnim 2'))
@ -74,12 +74,12 @@ def global_rules(world):
# we can s&q to the old man house after we rescue him. This may be somewhere completely different if caves are shuffled!
old_rule = world.get_region('Old Man House').can_reach
world.get_region('Old Man House').can_reach = lambda state: state.can_reach('Old Mountain Man', 'Location') or old_rule(state)
world.get_region('Old Man House').can_reach = lambda state: state.can_reach('Old Man', 'Location') or old_rule(state)
# overworld requirements
set_rule(world.get_entrance('Kings Grave'), lambda state: state.has_Boots() and (state.can_lift_heavy_rocks() or (state.has_Mirror() and state.can_reach('West Dark World'))))
set_rule(world.get_entrance('Bonk Fairy (Light)'), lambda state: state.has_Boots())
set_rule(world.get_location('Piece of Heart (Dam)'), lambda state: state.can_reach('Dam'))
set_rule(world.get_location('Sunken Treasure'), lambda state: state.can_reach('Dam'))
set_rule(world.get_entrance('Bat Cave Drop Ledge'), lambda state: state.has('Hammer'))
set_rule(world.get_entrance('Lumberjack Tree Tree'), lambda state: state.has_Boots() and state.has('Beat Agahnim 1'))
set_rule(world.get_entrance('Bonk Rock Cave'), lambda state: state.has_Boots())
@ -94,31 +94,31 @@ def global_rules(world):
set_rule(world.get_entrance('East Hyrule Teleporter'), lambda state: state.has('Hammer') and state.can_lift_rocks() and state.has_Pearl())
set_rule(world.get_entrance('South Hyrule Teleporter'), lambda state: state.has('Hammer') and state.can_lift_rocks() and state.has_Pearl())
set_rule(world.get_entrance('Kakariko Teleporter'), lambda state: ((state.has('Hammer') and state.can_lift_rocks()) or state.can_lift_heavy_rocks()) and state.has_Pearl())
set_rule(world.get_location('Haunted Grove'), lambda state: state.has('Shovel'))
set_rule(world.get_location('Purple Chest'), lambda state: state.can_reach('Blacksmiths', 'Location')) # Can S&Q with chest
set_rule(world.get_location('Flute Spot'), lambda state: state.has('Shovel'))
set_rule(world.get_location('Purple Chest'), lambda state: state.can_reach('Blacksmith', 'Location')) # Can S&Q with chest
set_rule(world.get_location('Piece of Heart (Zoras River)'), lambda state: state.has('Flippers'))
set_rule(world.get_location('Zora\'s Ledge'), lambda state: state.has('Flippers'))
set_rule(world.get_entrance('Waterfall of Wishing'), lambda state: state.has('Flippers')) # can be fake flippered into, but is in weird state inside that might prevent you from doing things. Can be improved in future Todo
set_rule(world.get_location('Blacksmiths'), lambda state: state.can_lift_heavy_rocks() and state.can_reach('West Dark World')) # Can S&Q with smith
set_rule(world.get_location('Blacksmith'), lambda state: state.can_lift_heavy_rocks() and state.can_reach('West Dark World')) # Can S&Q with smith
set_rule(world.get_location('Magic Bat'), lambda state: state.has('Magic Powder'))
set_rule(world.get_location('Sick Kid'), lambda state: state.has('Bottle'))
set_rule(world.get_location('Library'), lambda state: state.has_Boots())
set_rule(world.get_location('Witch'), lambda state: state.has('Mushroom'))
set_rule(world.get_location('Potion Shop'), lambda state: state.has('Mushroom'))
set_rule(world.get_entrance('Desert Palace Entrance (North) Rocks'), lambda state: state.can_lift_rocks())
set_rule(world.get_entrance('Desert Ledge Return Rocks'), lambda state: state.can_lift_rocks()) # should we decide to place something that is not a dungeon end up there at some point
set_rule(world.get_entrance('Checkerboard Cave'), lambda state: state.can_lift_rocks())
set_rule(world.get_location('Altar'), lambda state: state.has('Red Pendant') and state.has('Blue Pendant') and state.has('Green Pendant'))
set_rule(world.get_location('Master Sword Pedestal'), lambda state: state.has('Red Pendant') and state.has('Blue Pendant') and state.has('Green Pendant'))
set_rule(world.get_location('Sahasrahla'), lambda state: state.has('Green Pendant'))
set_rule(world.get_entrance('Agahnims Tower'), lambda state: state.has('Cape') or state.has_beam_sword() or state.has('Beat Agahnim 1')) # barrier gets removed after killing agahnim, relevant for entrance shuffle
set_rule(world.get_entrance('Agahnim 1'), lambda state: state.has_sword() and state.has('Small Key (Agahnims Tower)', 2))
set_rule(world.get_location('[dungeon-A1-3F] Hyrule Castle Tower - Maze Room'), lambda state: state.has('Small Key (Agahnims Tower)'))
set_rule(world.get_location('Castle Tower - Dark Maze'), lambda state: state.has('Small Key (Agahnims Tower)'))
set_rule(world.get_entrance('Top of Pyramid'), lambda state: state.has('Beat Agahnim 1'))
set_rule(world.get_entrance('Old Man Cave Exit (West)'), lambda state: False) # drop cannot be climbed up
set_rule(world.get_entrance('Broken Bridge (West)'), lambda state: state.has('Hookshot'))
set_rule(world.get_entrance('Broken Bridge (East)'), lambda state: state.has('Hookshot'))
set_rule(world.get_entrance('East Death Mountain Teleporter'), lambda state: state.can_lift_heavy_rocks())
set_rule(world.get_entrance('Fairy Ascension Rocks'), lambda state: state.can_lift_heavy_rocks())
set_rule(world.get_entrance('7 Chest Cave Push Block Reverse'), lambda state: state.has('Mirror')) # can erase block
set_rule(world.get_entrance('Paradox Cave Push Block Reverse'), lambda state: state.has('Mirror')) # can erase block
set_rule(world.get_entrance('Death Mountain (Top)'), lambda state: state.has('Hammer'))
set_rule(world.get_entrance('Turtle Rock Teleporter'), lambda state: state.can_lift_heavy_rocks() and state.has('Hammer'))
set_rule(world.get_location('Ether Tablet'), lambda state: state.has('Book of Mudora') and state.has_beam_sword())
@ -142,7 +142,7 @@ def global_rules(world):
set_rule(world.get_entrance('Dark Lake Hylia Teleporter'), lambda state: state.has_Pearl() and (state.has('Hammer') or state.can_lift_rocks())) # Fake Flippers
set_rule(world.get_entrance('Village of Outcasts Heavy Rock'), lambda state: state.can_lift_heavy_rocks())
set_rule(world.get_entrance('Maze Race Mirror Spot'), lambda state: state.has_Mirror())
set_rule(world.get_entrance('Cave South of Haunted Grove'), lambda state: state.has_Mirror())
set_rule(world.get_entrance('Cave 45'), lambda state: state.has_Mirror())
set_rule(world.get_entrance('East Dark World Bridge'), lambda state: state.has('Hammer'))
set_rule(world.get_entrance('Lake Hylia Island Mirror Spot'), lambda state: state.has_Mirror() and state.has('Flippers'))
set_rule(world.get_entrance('Lake Hylia Central Island Mirror Spot'), lambda state: state.has_Mirror())
@ -161,7 +161,7 @@ def global_rules(world):
set_rule(world.get_entrance('Desert Ledge Mirror Spot'), lambda state: state.has_Mirror())
set_rule(world.get_entrance('Desert Palace Stairs Mirror Spot'), lambda state: state.has_Mirror())
set_rule(world.get_entrance('Desert Palace Entrance (North) Mirror Spot'), lambda state: state.has_Mirror())
set_rule(world.get_entrance('Dark Desert Cave'), lambda state: state.has_Pearl()) # ToDo Bunny Revival can give access to this cave in super bunny state. Not sure how to deal with shuffled entrances, as much easier to block of cave entrances than individual shuffled chests
set_rule(world.get_entrance('Mire Shed'), lambda state: state.has_Pearl()) # ToDo Bunny Revival can give access to this cave in super bunny state. Not sure how to deal with shuffled entrances, as much easier to block of cave entrances than individual shuffled chests
set_rule(world.get_entrance('Dark Desert Hint'), lambda state: state.has_Pearl()) # ToDo Bunny Revival can give access to this cave in super bunny state. Not sure how to deal with shuffled entrances, as much easier to block of cave entrances than individual shuffled chests
set_rule(world.get_entrance('Dark Desert Fairy'), lambda state: state.has_Pearl()) # ToDo Bunny Revival can give access to this cave in super bunny state. Not sure how to deal with shuffled entrances, as much easier to block of cave entrances than individual shuffled chests
set_rule(world.get_entrance('Spike Cave'), lambda state: state.has_Pearl())
@ -178,151 +178,151 @@ def global_rules(world):
set_rule(world.get_entrance('Dark Death Mountain Ascend (Bottom)'), lambda state: state.has_Pearl())
set_rule(world.get_entrance('Cave Shop (Dark Death Mountain)'), lambda state: state.has_Pearl()) # just for save bunny algo for now
set_rule(world.get_entrance('Dark Death Mountain Ascend Exit (Bottom)'), lambda state: False) # Cannot get to bottom exit from top. Just exists for shuffling
set_rule(world.get_location('[cave-055] Spike Cave'), lambda state: state.has('Hammer') and state.can_lift_rocks() and (state.has('Cane of Byrna') or state.has('Cape')) and (state.has('Bottle') or state.has('Half Magic') or state.has('Quarter Magic')))
set_rule(world.get_location('[cave-056] Hookshot Cave [top right chest]'), lambda state: state.has('Hookshot'))
set_rule(world.get_location('[cave-056] Hookshot Cave [top left chest]'), lambda state: state.has('Hookshot'))
set_rule(world.get_location('[cave-056] Hookshot Cave [bottom right chest]'), lambda state: state.has('Hookshot') or state.has('Pegasus Boots'))
set_rule(world.get_location('[cave-056] Hookshot Cave [bottom left chest]'), lambda state: state.has('Hookshot'))
set_rule(world.get_location('Piece of Heart (Death Mountain - Floating Island)'), lambda state: state.has_Mirror())
set_rule(world.get_location('Spike Cave'), lambda state: state.has('Hammer') and state.can_lift_rocks() and (state.has('Cane of Byrna') or state.has('Cape')) and (state.has('Bottle') or state.has('Half Magic') or state.has('Quarter Magic')))
set_rule(world.get_location('Hookshot Cave - Top Right'), lambda state: state.has('Hookshot'))
set_rule(world.get_location('Hookshot Cave - Top Left'), lambda state: state.has('Hookshot'))
set_rule(world.get_location('Hookshot Cave - Bottom Right'), lambda state: state.has('Hookshot') or state.has('Pegasus Boots'))
set_rule(world.get_location('Hookshot Cave - Bottom Left'), lambda state: state.has('Hookshot'))
set_rule(world.get_location('Floating Island'), lambda state: state.has_Mirror())
set_rule(world.get_entrance('Turtle Rock'), lambda state: state.has_Pearl() and state.has_sword() and state.has_turtle_rock_medallion() and state.can_reach('Turtle Rock (Top)', 'Region')) # sword required to cast magic (!)
set_rule(world.get_location('[cave-013] Mimic Cave'), lambda state: state.has('Hammer'))
set_rule(world.get_location('Mimic Cave'), lambda state: state.has('Hammer'))
set_rule(world.get_entrance('Sewers Door'), lambda state: state.has('Small Key (Escape)'))
set_rule(world.get_entrance('Sewers Back Door'), lambda state: state.has('Small Key (Escape)'))
set_rule(world.get_location('[dungeon-L1-1F] Eastern Palace - Big Chest'), lambda state: state.has('Big Key (Eastern Palace)'))
set_rule(world.get_location('Armos - Heart Container'), lambda state: state.has('Bow') and state.has('Big Key (Eastern Palace)'))
set_rule(world.get_location('Armos - Pendant'), lambda state: state.has('Bow') and state.has('Big Key (Eastern Palace)'))
for location in ['Armos - Heart Container', '[dungeon-L1-1F] Eastern Palace - Big Chest']:
set_rule(world.get_location('Eastern Palace - Big Chest'), lambda state: state.has('Big Key (Eastern Palace)'))
set_rule(world.get_location('Eastern Palace - Armos Knights'), lambda state: state.has('Bow') and state.has('Big Key (Eastern Palace)'))
set_rule(world.get_location('Eastern Palace - Prize'), lambda state: state.has('Bow') and state.has('Big Key (Eastern Palace)'))
for location in ['Eastern Palace - Armos Knights', 'Eastern Palace - Big Chest']:
forbid_item(world.get_location(location), 'Big Key (Eastern Palace)')
set_rule(world.get_location('[dungeon-L2-B1] Desert Palace - Big Chest'), lambda state: state.has('Big Key (Desert Palace)'))
set_rule(world.get_location('[dungeon-L2-B1] Desert Palace - Torch'), lambda state: state.has_Boots())
set_rule(world.get_location('Desert Palace - Big Chest'), lambda state: state.has('Big Key (Desert Palace)'))
set_rule(world.get_location('Desert Palace - Torch'), lambda state: state.has_Boots())
set_rule(world.get_entrance('Desert Palace East Wing'), lambda state: state.has('Small Key (Desert Palace)'))
set_rule(world.get_location('Lanmolas - Pendant'), lambda state: state.has('Small Key (Desert Palace)') and state.has('Big Key (Desert Palace)') and state.has_fire_source() and
set_rule(world.get_location('Desert Palace - Prize'), lambda state: state.has('Small Key (Desert Palace)') and state.has('Big Key (Desert Palace)') and state.has_fire_source() and
(state.has_blunt_weapon() or state.has('Fire Rod') or state.has('Ice Rod') or state.has('Bow')))
set_rule(world.get_location('Lanmolas - Heart Container'), lambda state: state.has('Small Key (Desert Palace)') and state.has('Big Key (Desert Palace)') and state.has_fire_source() and
set_rule(world.get_location('Desert Palace - Lanmolas'), lambda state: state.has('Small Key (Desert Palace)') and state.has('Big Key (Desert Palace)') and state.has_fire_source() and
(state.has_blunt_weapon() or state.has('Fire Rod') or state.has('Ice Rod') or state.has('Bow')))
for location in ['Lanmolas - Heart Container', '[dungeon-L2-B1] Desert Palace - Big Chest']:
for location in ['Desert Palace - Lanmolas', 'Desert Palace - Big Chest']:
forbid_item(world.get_location(location), 'Big Key (Desert Palace)')
for location in ['Lanmolas - Heart Container', '[dungeon-L2-B1] Desert Palace - Big Key Room', '[dungeon-L2-B1] Desert Palace - Compass Room']:
for location in ['Desert Palace - Lanmolas', 'Desert Palace - Big Key Chest', 'Desert Palace - Compass Chest']:
forbid_item(world.get_location(location), 'Small Key (Desert Palace)')
set_rule(world.get_entrance('Tower of Hera Small Key Door'), lambda state: state.has('Small Key (Tower of Hera)'))
set_rule(world.get_entrance('Tower of Hera Big Key Door'), lambda state: state.has('Big Key (Tower of Hera)'))
set_rule(world.get_location('[dungeon-L3-1F] Tower of Hera - Big Chest'), lambda state: state.has('Big Key (Tower of Hera)'))
set_rule(world.get_location('[dungeon-L3-1F] Tower of Hera - Basement'), lambda state: state.has_fire_source())
set_rule(world.get_location('Tower of Hera - Big Chest'), lambda state: state.has('Big Key (Tower of Hera)'))
set_rule(world.get_location('Tower of Hera - Big Key Chest'), lambda state: state.has_fire_source())
set_rule(world.get_location('Moldorm - Heart Container'), lambda state: state.has_blunt_weapon())
set_rule(world.get_location('Moldorm - Pendant'), lambda state: state.has_blunt_weapon())
for location in ['Moldorm - Heart Container', '[dungeon-L3-1F] Tower of Hera - Big Chest', '[dungeon-L3-1F] Tower of Hera - 4F [small chest]']:
for location in ['Moldorm - Heart Container', 'Tower of Hera - Big Chest', 'Tower of Hera - Compass Chest']:
forbid_item(world.get_location(location), 'Big Key (Tower of Hera)')
for location in ['[dungeon-L3-1F] Tower of Hera - Basement']:
for location in ['Tower of Hera - Big Key Chest']:
forbid_item(world.get_location(location), 'Small Key (Tower of Hera)')
set_rule(world.get_entrance('Swamp Palace Moat'), lambda state: state.has('Flippers') and state.can_reach('Dam'))
set_rule(world.get_entrance('Swamp Palace Small Key Door'), lambda state: state.has('Small Key (Swamp Palace)'))
set_rule(world.get_entrance('Swamp Palace (Center)'), lambda state: state.has('Hammer'))
set_rule(world.get_location('[dungeon-D2-B1] Swamp Palace - Big Chest'), lambda state: state.has('Big Key (Swamp Palace)'))
set_rule(world.get_location('Swamp Palace - Big Chest'), lambda state: state.has('Big Key (Swamp Palace)'))
set_rule(world.get_entrance('Swamp Palace (North)'), lambda state: state.has('Hookshot'))
set_rule(world.get_location('Arrghus - Heart Container'), lambda state: state.has_blunt_weapon())
set_rule(world.get_location('Arrghus - Crystal'), lambda state: state.has_blunt_weapon())
for location in ['[dungeon-D2-B1] Swamp Palace - Big Chest', '[dungeon-D2-1F] Swamp Palace - First Room']:
set_rule(world.get_location('Swamp Palace - Arrghus'), lambda state: state.has_blunt_weapon())
set_rule(world.get_location('Swamp Palace - Prize'), lambda state: state.has_blunt_weapon())
for location in ['Swamp Palace - Big Chest', 'Swamp Palace - Entrance']:
forbid_item(world.get_location(location), 'Big Key (Swamp Palace)')
set_rule(world.get_entrance('Thieves Town Big Key Door'), lambda state: state.has('Big Key (Thieves Town)'))
set_rule(world.get_entrance('Blind Fight'), lambda state: state.has('Small Key (Thieves Town)') and (state.has_blunt_weapon() or state.has('Cane of Somaria') or state.has('Cane of Byrna')))
set_rule(world.get_location('[dungeon-D4-B2] Thieves Town - Big Chest'), lambda state: state.has('Small Key (Thieves Town)') and state.has('Hammer'))
set_rule(world.get_location('[dungeon-D4-1F] Thieves Town - Room above Boss'), lambda state: state.has('Small Key (Thieves Town)'))
for location in ['[dungeon-D4-1F] Thieves Town - Room above Boss', '[dungeon-D4-B2] Thieves Town - Big Chest', '[dungeon-D4-B2] Thieves Town - Chest next to Blind', 'Blind - Heart Container']:
set_rule(world.get_location('Thieves\' Town - Big Chest'), lambda state: state.has('Small Key (Thieves Town)') and state.has('Hammer'))
set_rule(world.get_location('Thieves\' Town - Attic'), lambda state: state.has('Small Key (Thieves Town)'))
for location in ['Thieves\' Town - Attic', 'Thieves\' Town - Big Chest', 'Thieves\' Town - Blind\'s Cell', 'Thieves Town - Blind']:
forbid_item(world.get_location(location), 'Big Key (Thieves Town)')
for location in ['[dungeon-D4-1F] Thieves Town - Room above Boss', '[dungeon-D4-B2] Thieves Town - Big Chest', 'Blind - Heart Container']:
for location in ['Thieves\' Town - Attic', 'Thieves\' Town - Big Chest', 'Thieves Town - Blind']:
forbid_item(world.get_location(location), 'Small Key (Thieves Town)')
set_rule(world.get_entrance('Skull Woods First Section South Door'), lambda state: state.has('Small Key (Skull Woods)'))
set_rule(world.get_entrance('Skull Woods First Section (Right) North Door'), lambda state: state.has('Small Key (Skull Woods)'))
set_rule(world.get_entrance('Skull Woods First Section West Door'), lambda state: state.has('Small Key (Skull Woods)', 2)) #ideally would only be one key, but we may have spent thst key already on escaping the right section
set_rule(world.get_entrance('Skull Woods First Section (Left) Door to Exit'), lambda state: state.has('Small Key (Skull Woods)', 2))
set_rule(world.get_location('[dungeon-D3-B1] Skull Woods - Big Chest'), lambda state: state.has('Big Key (Skull Woods)'))
set_rule(world.get_location('Skull Woods - Big Chest'), lambda state: state.has('Big Key (Skull Woods)'))
set_rule(world.get_entrance('Skull Woods Torch Room'), lambda state: state.has('Small Key (Skull Woods)', 3) and state.has('Fire Rod') and state.has_sword()) # sword required for curtain
for location in ['[dungeon-D3-B1] Skull Woods - Big Chest']:
for location in ['Skull Woods - Big Chest']:
forbid_item(world.get_location(location), 'Big Key (Skull Woods)')
for location in ['Mothula - Heart Container']:
for location in ['Skull Woods - Mothula']:
forbid_item(world.get_location(location), 'Small Key (Skull Woods)')
set_rule(world.get_entrance('Ice Palace Entrance Room'), lambda state: state.has('Fire Rod') or (state.has('Bombos') and state.has_sword()))
set_rule(world.get_location('[dungeon-D5-B5] Ice Palace - Big Chest'), lambda state: state.has('Big Key (Ice Palace)'))
set_rule(world.get_location('Ice Palace - Big Chest'), lambda state: state.has('Big Key (Ice Palace)'))
set_rule(world.get_entrance('Ice Palace (Kholdstare)'), lambda state: state.can_lift_rocks() and state.has('Hammer') and state.has('Big Key (Ice Palace)') and (state.has('Small Key (Ice Palace)', 2) or (state.has('Cane of Somaria') and state.has('Small Key (Ice Palace)', 1))))
set_rule(world.get_entrance('Ice Palace (East)'), lambda state: (state.has('Hookshot') or (item_in_locations(state,'Big Key (Ice Palace)',['[dungeon-D5-B3] Ice Palace - Spike Room','[dungeon-D5-B1] Ice Palace - Big Key Room','[dungeon-D5-B2] Ice Palace - Map Room']) and state.has('Small Key (Ice Palace)')) or state.has('Small Key (Ice Palace)',2)) and (state.has('Hookshot') or state.has('Cape') or state.has('Cane of Byrna')))
set_rule(world.get_entrance('Ice Palace (East)'), lambda state: (state.has('Hookshot') or (item_in_locations(state,'Big Key (Ice Palace)',['Ice Palace - Spike Room','Ice Palace - Big Key Chest','Ice Palace - Map Chest']) and state.has('Small Key (Ice Palace)')) or state.has('Small Key (Ice Palace)',2)) and (state.has('Hookshot') or state.has('Cape') or state.has('Cane of Byrna')))
set_rule(world.get_entrance('Ice Palace (East Top)'), lambda state: state.can_lift_rocks() and state.has('Hammer'))
for location in ['[dungeon-D5-B5] Ice Palace - Big Chest', 'Kholdstare - Heart Container']:
for location in ['Ice Palace - Big Chest', 'Ice Palace - Kholdstare']:
forbid_item(world.get_location(location), 'Big Key (Ice Palace)')
set_rule(world.get_entrance('Misery Mire Entrance Gap'), lambda state: (state.has_Boots() or state.has('Hookshot')) and (state.has_sword() or state.has('Fire Rod') or state.has('Ice Rod') or state.has('Hammer') or state.has('Cane of Somaria') or state.has('Bow'))) # need to defeat wizzrobes, bombs don't work ...
set_rule(world.get_location('[dungeon-D6-B1] Misery Mire - Big Chest'), lambda state: state.has('Big Key (Misery Mire)'))
set_rule(world.get_location('[dungeon-D6-B1] Misery Mire - Spike Room'), lambda state: state.has('Cane of Byrna') or state.has('Cape'))
set_rule(world.get_location('Misery Mire - Big Chest'), lambda state: state.has('Big Key (Misery Mire)'))
set_rule(world.get_location('Misery Mire - Spike Chest'), lambda state: state.has('Cane of Byrna') or state.has('Cape'))
set_rule(world.get_entrance('Misery Mire Big Key Door'), lambda state: state.has('Big Key (Misery Mire)'))
# you can squander the free small key from the pot by opening the south door to the north west switch room, locking you out of accessing a color switch ...
# big key gives backdoor access to that from the teleporter in the north west
set_rule(world.get_location('[dungeon-D6-B1] Misery Mire - Map Room'), lambda state: state.has('Small Key (Misery Mire)', 1) or state.has('Big Key (Misery Mire)'))
set_rule(world.get_location('Misery Mire - Map Chest'), lambda state: state.has('Small Key (Misery Mire)', 1) or state.has('Big Key (Misery Mire)'))
# in addition, you can open the door to the map room before getting access to a color switch, so this is locked behing 2 small keys or the big key...
set_rule(world.get_location('[dungeon-D6-B1] Misery Mire - Hub Room'), lambda state: state.has('Small Key (Misery Mire)', 2) or state.has('Big Key (Misery Mire)'))
set_rule(world.get_location('Misery Mire - Main Lobby'), lambda state: state.has('Small Key (Misery Mire)', 2) or state.has('Big Key (Misery Mire)'))
# we can place a small key in the West wing iff it also contains/blocks the Big Key, as we cannot reach and softlock with the basement key door yet
set_rule(world.get_entrance('Misery Mire (West)'), lambda state: state.has('Small Key (Misery Mire)', 2) if ((state.world.get_location('[dungeon-D6-B1] Misery Mire - Compass Room').item is not None and state.world.get_location('[dungeon-D6-B1] Misery Mire - Compass Room').item.name in ['Big Key (Misery Mire)']) or
(state.world.get_location('[dungeon-D6-B1] Misery Mire - Big Key Room').item is not None and state.world.get_location('[dungeon-D6-B1] Misery Mire - Big Key Room').item.name in ['Big Key (Misery Mire)'])) else state.has('Small Key (Misery Mire)', 3))
set_rule(world.get_location('[dungeon-D6-B1] Misery Mire - Compass Room'), lambda state: state.has_fire_source())
set_rule(world.get_location('[dungeon-D6-B1] Misery Mire - Big Key Room'), lambda state: state.has_fire_source())
set_rule(world.get_entrance('Misery Mire (West)'), lambda state: state.has('Small Key (Misery Mire)', 2) if ((state.world.get_location('Misery Mire - Compass Chest').item is not None and state.world.get_location('Misery Mire - Compass Chest').item.name in ['Big Key (Misery Mire)']) or
(state.world.get_location('Misery Mire - Big Key Chest').item is not None and state.world.get_location('Misery Mire - Big Key Chest').item.name in ['Big Key (Misery Mire)'])) else state.has('Small Key (Misery Mire)', 3))
set_rule(world.get_location('Misery Mire - Compass Chest'), lambda state: state.has_fire_source())
set_rule(world.get_location('Misery Mire - Big Key Chest'), lambda state: state.has_fire_source())
set_rule(world.get_entrance('Misery Mire (Vitreous)'), lambda state: state.has('Cane of Somaria') and (state.has('Bow') or state.has_blunt_weapon()))
for location in ['[dungeon-D6-B1] Misery Mire - Big Chest', 'Vitreous - Heart Container']:
for location in ['Misery Mire - Big Chest', 'Misery Mire - Vitreous']:
forbid_item(world.get_location(location), 'Big Key (Misery Mire)')
set_rule(world.get_entrance('Turtle Rock Entrance Gap'), lambda state: state.has('Cane of Somaria'))
set_rule(world.get_entrance('Turtle Rock Entrance Gap Reverse'), lambda state: state.has('Cane of Somaria'))
set_rule(world.get_location('[dungeon-D7-1F] Turtle Rock - Compass Room'), lambda state: state.has('Cane of Somaria')) # We could get here from the middle section without Cane as we don't cross the entrance gap!
set_rule(world.get_location('[dungeon-D7-1F] Turtle Rock - Map Room [left chest]'), lambda state: state.has('Cane of Somaria') and state.has('Fire Rod'))
set_rule(world.get_location('[dungeon-D7-1F] Turtle Rock - Map Room [right chest]'), lambda state: state.has('Cane of Somaria') and state.has('Fire Rod'))
set_rule(world.get_location('[dungeon-D7-B1] Turtle Rock - Big Chest'), lambda state: state.has('Big Key (Turtle Rock)') and (state.has('Cane of Somaria') or state.has('Hookshot')))
set_rule(world.get_location('Turtle Rock - Compass Chest'), lambda state: state.has('Cane of Somaria')) # We could get here from the middle section without Cane as we don't cross the entrance gap!
set_rule(world.get_location('Turtle Rock - Roller Room - Left'), lambda state: state.has('Cane of Somaria') and state.has('Fire Rod'))
set_rule(world.get_location('Turtle Rock - Roller Room - Right'), lambda state: state.has('Cane of Somaria') and state.has('Fire Rod'))
set_rule(world.get_location('Turtle Rock - Big Chest'), lambda state: state.has('Big Key (Turtle Rock)') and (state.has('Cane of Somaria') or state.has('Hookshot')))
set_rule(world.get_entrance('Turtle Rock (Big Chest) (North)'), lambda state: state.has('Cane of Somaria') or state.has('Hookshot'))
set_rule(world.get_entrance('Turtle Rock Big Key Door'), lambda state: state.has('Big Key (Turtle Rock)'))
set_rule(world.get_entrance('Turtle Rock Dark Room Staircase'), lambda state: state.has('Small Key (Turtle Rock)', 3))
set_rule(world.get_entrance('Turtle Rock (Dark Room) (North)'), lambda state: state.has('Cane of Somaria'))
set_rule(world.get_entrance('Turtle Rock (Dark Room) (South)'), lambda state: state.has('Cane of Somaria'))
set_rule(world.get_location('[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom left chest]'), lambda state: state.has('Cane of Byrna') or state.has('Cape') or state.has('Mirror Shield'))
set_rule(world.get_location('[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom right chest]'), lambda state: state.has('Cane of Byrna') or state.has('Cape') or state.has('Mirror Shield'))
set_rule(world.get_location('[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top left chest]'), lambda state: state.has('Cane of Byrna') or state.has('Cape') or state.has('Mirror Shield'))
set_rule(world.get_location('[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top right chest]'), lambda state: state.has('Cane of Byrna') or state.has('Cape') or state.has('Mirror Shield'))
set_rule(world.get_location('Turtle Rock - Eye Bridge - Bottom Left'), lambda state: state.has('Cane of Byrna') or state.has('Cape') or state.has('Mirror Shield'))
set_rule(world.get_location('Turtle Rock - Eye Bridge - Bottom Right'), lambda state: state.has('Cane of Byrna') or state.has('Cape') or state.has('Mirror Shield'))
set_rule(world.get_location('Turtle Rock - Eye Bridge - Top Left'), lambda state: state.has('Cane of Byrna') or state.has('Cape') or state.has('Mirror Shield'))
set_rule(world.get_location('Turtle Rock - Eye Bridge - Top Right'), lambda state: state.has('Cane of Byrna') or state.has('Cape') or state.has('Mirror Shield'))
set_rule(world.get_entrance('Turtle Rock (Trinexx)'), lambda state: state.has('Small Key (Turtle Rock)', 4) and state.has('Big Key (Turtle Rock)') and state.has('Cane of Somaria') and state.has('Fire Rod') and state.has('Ice Rod') and
(state.has('Hammer') or state.has_beam_sword() or state.has('Bottle') or state.has('Half Magic') or state.has('Quarter Magic')))
set_trock_key_rules(world)
set_rule(world.get_entrance('Dark Palace Bonk Wall'), lambda state: state.has('Bow'))
set_rule(world.get_entrance('Dark Palace Hammer Peg Drop'), lambda state: state.has('Hammer'))
set_rule(world.get_entrance('Dark Palace Bridge Room'), lambda state: state.has('Small Key (Palace of Darkness)', 1)) # If we can reach any other small key door, we already have back door access to this area
set_rule(world.get_entrance('Dark Palace Big Key Door'), lambda state: state.has('Small Key (Palace of Darkness)', 6) and state.has('Big Key (Palace of Darkness)') and state.has('Bow') and state.has('Hammer'))
set_rule(world.get_entrance('Dark Palace Big Key Chest Staircase'), lambda state: state.has('Small Key (Palace of Darkness)', 5))
set_rule(world.get_entrance('Dark Palace Spike Statue Room Door'), lambda state: state.has('Small Key (Palace of Darkness)', 5))
set_rule(world.get_entrance('Dark Palace (North)'), lambda state: state.has('Small Key (Palace of Darkness)', 4))
set_rule(world.get_entrance('Dark Palace Maze Door'), lambda state: state.has('Small Key (Palace of Darkness)', 5))
set_rule(world.get_location('[dungeon-D1-1F] Dark Palace - Big Chest'), lambda state: state.has('Big Key (Palace of Darkness)'))
for location in ['[dungeon-D1-1F] Dark Palace - Big Chest', 'Helmasaur - Heart Container']:
set_rule(world.get_entrance('Palace of Darkness Bonk Wall'), lambda state: state.has('Bow'))
set_rule(world.get_entrance('Palace of Darkness Hammer Peg Drop'), lambda state: state.has('Hammer'))
set_rule(world.get_entrance('Palace of Darkness Bridge Room'), lambda state: state.has('Small Key (Palace of Darkness)', 1)) # If we can reach any other small key door, we already have back door access to this area
set_rule(world.get_entrance('Palace of Darkness Big Key Door'), lambda state: state.has('Small Key (Palace of Darkness)', 6) and state.has('Big Key (Palace of Darkness)') and state.has('Bow') and state.has('Hammer'))
set_rule(world.get_entrance('Palace of Darkness Big Key Chest Staircase'), lambda state: state.has('Small Key (Palace of Darkness)', 5))
set_rule(world.get_entrance('Palace of Darkness Spike Statue Room Door'), lambda state: state.has('Small Key (Palace of Darkness)', 5))
set_rule(world.get_entrance('Palace of Darkness (North)'), lambda state: state.has('Small Key (Palace of Darkness)', 4))
set_rule(world.get_entrance('Palace of Darkness Maze Door'), lambda state: state.has('Small Key (Palace of Darkness)', 5))
set_rule(world.get_location('Palace of Darkness - Big Chest'), lambda state: state.has('Big Key (Palace of Darkness)'))
for location in ['Palace of Darkness - Big Chest', 'Palace of Darkness - Helmasaur']:
forbid_item(world.get_location(location), 'Big Key (Palace of Darkness)')
for location in ['[dungeon-D1-1F] Dark Palace - Big Chest', '[dungeon-D1-1F] Dark Palace - Maze Room [top chest]', '[dungeon-D1-1F] Dark Palace - Maze Room [bottom chest]']:
for location in ['Palace of Darkness - Big Chest', 'Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom']:
forbid_item(world.get_location(location), 'Small Key (Palace of Darkness)')
# these key rules are conservative, you might be able to get away with more lenient rules
set_rule(world.get_location('[dungeon-A2-1F] Ganons Tower - Torch'), lambda state: state.has_Boots())
set_rule(world.get_location('Ganons Tower - Bob\'s Torch'), lambda state: state.has_Boots())
set_rule(world.get_entrance('Ganons Tower (Tile Room)'), lambda state: state.has('Cane of Somaria'))
set_rule(world.get_entrance('Ganons Tower (Hookshot Room)'), lambda state: state.has('Hammer'))
set_rule(world.get_entrance('Ganons Tower (Map Room)'), lambda state: state.has('Small Key (Ganons Tower)', 3) or (state.world.get_location('[dungeon-A2-1F] Ganons Tower - Map Room').item is not None and state.world.get_location('[dungeon-A2-1F] Ganons Tower - Map Room').item.name == 'Small Key (Ganons Tower)'))
set_rule(world.get_entrance('Ganons Tower (Map Room)'), lambda state: state.has('Small Key (Ganons Tower)', 3) or (state.world.get_location('Ganons Tower - Map Chest').item is not None and state.world.get_location('Ganons Tower - Map Chest').item.name == 'Small Key (Ganons Tower)'))
set_rule(world.get_entrance('Ganons Tower (Double Switch Room)'), lambda state: state.has('Small Key (Ganons Tower)', 2))
set_rule(world.get_entrance('Ganons Tower (Firesnake Room)'), lambda state: state.has('Small Key (Ganons Tower)', 3))
set_rule(world.get_entrance('Ganons Tower (Tile Room) Key Door'), lambda state: state.has('Small Key (Ganons Tower)', 3) and state.has('Fire Rod')) # possibly too pessimistic
set_rule(world.get_location('[dungeon-A2-1F] Ganons Tower - Big Chest'), lambda state: state.has('Big Key (Ganons Tower)'))
set_rule(world.get_location('[dungeon-A2-B1] Ganons Tower - Armos Room [left chest]'), lambda state: state.has('Bow') or state.has_blunt_weapon())
set_rule(world.get_location('[dungeon-A2-B1] Ganons Tower - Armos Room [bottom chest]'), lambda state: state.has('Bow') or state.has_blunt_weapon())
set_rule(world.get_location('[dungeon-A2-B1] Ganons Tower - Armos Room [right chest]'), lambda state: state.has('Bow') or state.has_blunt_weapon())
set_rule(world.get_location('Ganons Tower - Big Chest'), lambda state: state.has('Big Key (Ganons Tower)'))
set_rule(world.get_location('Ganons Tower - Big Key Room - Left'), lambda state: state.has('Bow') or state.has_blunt_weapon())
set_rule(world.get_location('Ganons Tower - Big Key Chest'), lambda state: state.has('Bow') or state.has_blunt_weapon())
set_rule(world.get_location('Ganons Tower - Big Key Room - Right'), lambda state: state.has('Bow') or state.has_blunt_weapon())
set_rule(world.get_entrance('Ganons Tower Big Key Door'), lambda state: state.has('Big Key (Ganons Tower)') and state.has('Bow'))
set_rule(world.get_entrance('Ganons Tower Torch Rooms'), lambda state: state.has_fire_source())
set_rule(world.get_entrance('Ganons Tower Moldorm Door'), lambda state: state.has('Small Key (Ganons Tower)', 4))
@ -330,8 +330,8 @@ def global_rules(world):
set_rule(world.get_location('Agahnim 2'), lambda state: state.has_sword() or state.has('Hammer') or state.has('Bug Catching Net'))
set_rule(world.get_entrance('Pyramid Hole'), lambda state: state.has('Beat Agahnim 2') and state.has_Pearl())
set_rule(world.get_entrance('Pyramid Entrance'), lambda state: state.has_Pearl())
for location in ['[dungeon-A2-1F] Ganons Tower - Big Chest', '[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [left chest]', '[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [right chest]',
'[dungeon-A2-6F] Ganons Tower - Room before Moldorm', '[dungeon-A2-6F] Ganons Tower - Moldorm Room']:
for location in ['Ganons Tower - Big Chest', 'Ganons Tower - Mini Helmasaur Room - Left', 'Ganons Tower - Mini Helmasaur Room - Right',
'Ganons Tower - Pre-Moldorm Chest', 'Ganons Tower - Validation Chest']:
forbid_item(world.get_location(location), 'Big Key (Ganons Tower)')
set_rule(world.get_location('Ganon'), lambda state: state.has_beam_sword() and state.has_fire_source() and state.has('Crystal 1') and state.has('Crystal 2')
@ -349,8 +349,8 @@ def no_glitches_rules(world):
set_rule(world.get_entrance('Dark Lake Hylia Teleporter'), lambda state: state.has_Pearl() and state.has('Flippers') and (state.has('Hammer') or state.can_lift_rocks()))
set_rule(world.get_entrance('Dark Lake Hylia Ledge Drop'), lambda state: state.has('Flippers'))
add_rule(world.get_entrance('Ganons Tower (Hookshot Room)'), lambda state: state.has('Hookshot'))
set_rule(world.get_entrance('7 Chest Cave Push Block Reverse'), lambda state: False) # no glitches does not require block override
set_rule(world.get_entrance('7 Chest Cave Bomb Jump'), lambda state: False)
set_rule(world.get_entrance('Paradox Cave Push Block Reverse'), lambda state: False) # no glitches does not require block override
set_rule(world.get_entrance('Paradox Cave Bomb Jump'), lambda state: False)
set_rule(world.get_entrance('Skull Woods First Section Bomb Jump'), lambda state: False)
# Light cones in standard depend on which world we actually are in, not which one the location would normally be
@ -375,32 +375,32 @@ def no_glitches_rules(world):
add_conditional_lamp('Misery Mire (Vitreous)', 'Misery Mire (Entrance)', 'Entrance')
add_conditional_lamp('Turtle Rock (Dark Room) (North)', 'Turtle Rock (Entrance)', 'Entrance')
add_conditional_lamp('Turtle Rock (Dark Room) (South)', 'Turtle Rock (Entrance)', 'Entrance')
add_conditional_lamp('Dark Palace Big Key Door', 'Dark Palace (Entrance)', 'Entrance')
add_conditional_lamp('Dark Palace Maze Door', 'Dark Palace (Entrance)', 'Entrance')
add_conditional_lamp('[dungeon-D1-B1] Dark Palace - Dark Room [left chest]', 'Dark Palace (Entrance)', 'Location')
add_conditional_lamp('[dungeon-D1-B1] Dark Palace - Dark Room [right chest]', 'Dark Palace (Entrance)', 'Location')
add_conditional_lamp('Palace of Darkness Big Key Door', 'Palace of Darkness (Entrance)', 'Entrance')
add_conditional_lamp('Palace of Darkness Maze Door', 'Palace of Darkness (Entrance)', 'Entrance')
add_conditional_lamp('Palace of Darkness - Dark Basement - Left', 'Palace of Darkness (Entrance)', 'Location')
add_conditional_lamp('Palace of Darkness - Dark Basement - Right', 'Palace of Darkness (Entrance)', 'Location')
add_conditional_lamp('Agahnim 1', 'Agahnims Tower', 'Entrance')
add_conditional_lamp('[dungeon-A1-3F] Hyrule Castle Tower - Maze Room', 'Agahnims Tower', 'Location')
add_conditional_lamp('Old Mountain Man', 'Old Man Cave', 'Location')
add_conditional_lamp('Castle Tower - Dark Maze', 'Agahnims Tower', 'Location')
add_conditional_lamp('Old Man', 'Old Man Cave', 'Location')
add_conditional_lamp('Old Man Cave Exit (East)', 'Old Man Cave', 'Entrance')
add_conditional_lamp('Death Mountain Return Cave Exit (East)', 'Death Mountain Return Cave', 'Entrance')
add_conditional_lamp('Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave', 'Entrance')
add_conditional_lamp('Old Man House Front to Back', 'Old Man House', 'Entrance')
add_conditional_lamp('Old Man House Back to Front', 'Old Man House', 'Entrance')
add_conditional_lamp('[dungeon-L1-1F] Eastern Palace - Big Key Room', 'Eastern Palace', 'Location')
add_conditional_lamp('Armos - Heart Container', 'Eastern Palace', 'Location')
add_conditional_lamp('Armos - Pendant', 'Eastern Palace', 'Location')
add_conditional_lamp('Eastern Palace - Big Key Chest', 'Eastern Palace', 'Location')
add_conditional_lamp('Eastern Palace - Armos Knights', 'Eastern Palace', 'Location')
add_conditional_lamp('Eastern Palace - Prize', 'Eastern Palace', 'Location')
if not world.sewer_light_cone:
add_rule(world.get_location('[dungeon-C-B1] Escape - First B1 Room'), lambda state: state.has('Lamp'))
add_rule(world.get_location('Sewers - Dark Cross'), lambda state: state.has('Lamp'))
add_rule(world.get_entrance('Sewers Back Door'), lambda state: state.has('Lamp'))
add_rule(world.get_entrance('Throne Room'), lambda state: state.has('Lamp'))
def open_rules(world):
# softlock protection as you can reach the sewers small key door with a guard drop key
forbid_item(world.get_location('[dungeon-C-B1] Hyrule Castle - Boomerang Room'), 'Small Key (Escape)')
forbid_item(world.get_location('[dungeon-C-B1] Hyrule Castle - Next To Zelda'), 'Small Key (Escape)')
forbid_item(world.get_location('Hyrule Castle - Boomerang Chest'), 'Small Key (Escape)')
forbid_item(world.get_location('Hyrule Castle - Zelda\'s Chest'), 'Small Key (Escape)')
def swordless_rules(world):
@ -419,10 +419,10 @@ def swordless_rules(world):
def standard_rules(world):
# easiest way to enforce key placement not relevant for open
forbid_item(world.get_location('[dungeon-C-B1] Escape - Final Basement Room [left chest]'), 'Small Key (Escape)')
forbid_item(world.get_location('[dungeon-C-B1] Escape - Final Basement Room [middle chest]'), 'Small Key (Escape)')
forbid_item(world.get_location('[dungeon-C-B1] Escape - Final Basement Room [right chest]'), 'Small Key (Escape)')
forbid_item(world.get_location('[dungeon-C-1F] Sanctuary'), 'Small Key (Escape)')
forbid_item(world.get_location('Sewers - Secret Room - Left'), 'Small Key (Escape)')
forbid_item(world.get_location('Sewers - Secret Room - Middle'), 'Small Key (Escape)')
forbid_item(world.get_location('Sewers - Secret Room - Right'), 'Small Key (Escape)')
forbid_item(world.get_location('Sanctuary'), 'Small Key (Escape)')
def set_trock_key_rules(world):
@ -450,28 +450,28 @@ def set_trock_key_rules(world):
# if we have back entrance access, we could waste all keys before touching this
# if we don't, we have access to all chests by the time we can waste a key on trinexx door
# in that case, if it contains the big key, we can also not waste a key on the roller switch door
set_rule(world.get_location('[dungeon-D7-B1] Turtle Rock - Big Key Room'), lambda state: state.has('Small Key (Turtle Rock)', 4) or (state.world.get_location('[dungeon-D7-B1] Turtle Rock - Big Key Room').item is not None and (state.world.get_location('[dungeon-D7-B1] Turtle Rock - Big Key Room').item.name in ['Small Key (Turtle Rock)']))) if can_reach_back else \
set_rule(world.get_location('[dungeon-D7-B1] Turtle Rock - Big Key Room'), lambda state: state.has('Small Key (Turtle Rock)', 2) if (state.world.get_location('[dungeon-D7-B1] Turtle Rock - Big Key Room').item is not None and (state.world.get_location('[dungeon-D7-B1] Turtle Rock - Big Key Room').item.name in ['Big Key (Turtle Rock)'])) else state.has('Small Key (Turtle Rock)', 3))
set_rule(world.get_location('Turtle Rock - Big Key Chest'), lambda state: state.has('Small Key (Turtle Rock)', 4) or (state.world.get_location('Turtle Rock - Big Key Chest').item is not None and (state.world.get_location('Turtle Rock - Big Key Chest').item.name in ['Small Key (Turtle Rock)']))) if can_reach_back else \
set_rule(world.get_location('Turtle Rock - Big Key Chest'), lambda state: state.has('Small Key (Turtle Rock)', 2) if (state.world.get_location('Turtle Rock - Big Key Chest').item is not None and (state.world.get_location('Turtle Rock - Big Key Chest').item.name in ['Big Key (Turtle Rock)'])) else state.has('Small Key (Turtle Rock)', 3))
# set big key restrictions
non_big_key_locations = ['[dungeon-D7-B1] Turtle Rock - Big Chest', 'Trinexx - Heart Container']
non_big_key_locations = ['Turtle Rock - Big Chest', 'Turtle Rock - Trinexx']
if not can_reach_back:
non_big_key_locations += ['[dungeon-D7-B1] Turtle Rock - Roller Switch Room', '[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom left chest]',
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom right chest]', '[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top left chest]',
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top right chest]']
non_big_key_locations += ['Turtle Rock - Crystaroller Roo', 'Turtle Rock - Eye Bridge - Bottom Left',
'Turtle Rock - Eye Bridge - Bottom Right', 'Turtle Rock - Eye Bridge - Top Left',
'Turtle Rock - Eye Bridge - Top Right']
for location in non_big_key_locations:
forbid_item(world.get_location(location), 'Big Key (Turtle Rock)')
# small key restriction
for location in ['Trinexx - Heart Container']:
for location in ['Turtle Rock - Trinexx']:
forbid_item(world.get_location(location), 'Small Key (Turtle Rock)')
def set_big_bomb_rules(world):
# this is a mess
bombshop_entrance = world.get_region('Big Bomb Shop').entrances[0]
Normal_LW_entrances = ['Thiefs Hut',
Normal_LW_entrances = ['Blinds Hideout',
'Bonk Fairy (Light)',
'Lake Hylia Fairy',
'Swamp Fairy',
@ -495,10 +495,10 @@ def set_big_bomb_rules(world):
'Good Bee Cave',
'20 Rupee Cave',
'50 Rupee Cave',
'Ice Cave',
'Ice Rod Cave',
'Bonk Rock Cave',
'Library',
'Witch Hut',
'Potion Shop',
'Waterfall of Wishing',
'Dam',
'Lumberjack House',
@ -507,11 +507,11 @@ def set_big_bomb_rules(world):
LW_walkable_entrances = ['Dark Lake Hylia Ledge Fairy',
'Dark Lake Hylia Ledge Spike Cave',
'Dark Lake Hylia Ledge Hint',
'Dark Desert Cave',
'Mire Shed',
'Dark Desert Hint',
'Dark Desert Fairy',
'Checkerboard Cave']
Northern_DW_entrances = ['Doorless Hut',
Northern_DW_entrances = ['Brewery',
'C-Shaped House',
'Chest Game',
'Dark World Hammer Peg Cave',
@ -526,7 +526,7 @@ def set_big_bomb_rules(world):
'Archery Game',
'Big Bomb Shop',
'Dark Lake Hylia Shop',
'Cave South of Haunted Grove']
'Cave 45']
Isolated_DW_entrances = ['Spike Cave',
'Cave Shop (Dark Death Mountain)',
'Dark Death Mountain Fairy',

View File

@ -1,4 +1,4 @@
text_addresses = {'Altar': (0x180300, 256),
text_addresses = {'Pedestal': (0x180300, 256),
'Triforce': (0x180400, 256),
'Uncle': (0x180500, 256),
'Ganon1': (0x180600, 256),
@ -30,7 +30,7 @@ credits_addresses = {'KingsReturn': (0x76928, 22),
'SickKid': (0x76BDF, 20),
'DeathMountain': (0x76C19, 16),
'LostWoods': (0x76C51, 16),
'Altar': (0x76C81, 20)}
'Pedestal': (0x76C81, 20)}
Uncle_texts = ['Good Luck!\nYou will need it.', 'Forward this message to 10 other people or this seed will be awful.', 'I hope you like your seeds bootless and fluteless.',
'10\n9\n8\n7\n6\n5\n4\n3\n2\n1\nGo!', 'I have crippling depression.', 'I\'m off to visit cousin Fritzl.']