643 lines
		
	
	
		
			62 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			643 lines
		
	
	
		
			62 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import collections | ||
|  | from BaseClasses import Region, Location, Entrance, RegionType, Shop, ShopType | ||
|  | 
 | ||
|  | 
 | ||
|  | def create_inverted_regions(world, player): | ||
|  | 
 | ||
|  |     world.regions += [ | ||
|  |         create_lw_region(player, 'Light World', ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure', 'Purple Chest', 'Bombos Tablet'], | ||
|  |                          ["Blinds Hideout", "Hyrule Castle Secret Entrance Drop", 'Kings Grave Outer Rocks', 'Dam', | ||
|  |                           'Inverted Big Bomb Shop', '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', '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', 'Two Brothers House (East)', 'Desert Palace Stairs', 'Eastern Palace', 'Master Sword Meadow', | ||
|  |                           'Sanctuary', 'Sanctuary Grave', 'Death Mountain Entrance Rock', 'Light World River Drop', | ||
|  |                           'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop', 'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)', | ||
|  |                           'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)', | ||
|  |                           'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Light Hype Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game', | ||
|  |                           'East Dark World Mirror Spot', 'West Dark World Mirror Spot', 'South Dark World Mirror Spot', 'Cave 45', 'Checkerboard Cave', 'Mire Mirror Spot', 'Hammer Peg Area Mirror Spot',  | ||
|  |                           'Shopping Mall Mirror Spot', 'Skull Woods Mirror Spot', 'Inverted Pyramid Entrance','Hyrule Castle Entrance (South)', 'Secret Passage Outer Bushes', 'LW Hyrule Castle Ledge SQ', 'Bush Covered Lawn Outer Bushes', | ||
|  |                           'Potion Shop Outer Bushes', 'Graveyard Cave Outer Bushes', 'Bomb Hut Outer Bushes']), | ||
|  |         create_lw_region(player, 'Bush Covered Lawn', None, ['Bush Covered House', 'Bush Covered Lawn Inner Bushes', 'Bush Covered Lawn Mirror Spot']), | ||
|  |         create_lw_region(player, 'Bomb Hut Area', None, ['Light World Bomb Hut', 'Bomb Hut Inner Bushes', 'Bomb Hut Mirror Spot']), | ||
|  |         create_lw_region(player, 'Hyrule Castle Secret Entrance Area', None, ['Hyrule Castle Secret Entrance Stairs', 'Secret Passage Inner Bushes']), | ||
|  |         create_lw_region(player, 'Death Mountain Entrance', None, ['Old Man Cave (West)', 'Death Mountain Entrance Drop', 'Bumper Cave Entrance Mirror Spot']), | ||
|  |         create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Island Mirror Spot']), | ||
|  |         create_cave_region(player, 'Blinds Hideout', 'a bounty of five items', ["Blind\'s Hideout - Top", | ||
|  |                                                                         "Blind\'s Hideout - Left", | ||
|  |                                                                         "Blind\'s Hideout - Right", | ||
|  |                                                                         "Blind\'s Hideout - Far Left", | ||
|  |                                                                         "Blind\'s Hideout - Far Right"]), | ||
|  |         create_lw_region(player, 'Northeast Light World', None, ['Zoras River', 'Waterfall of Wishing', 'Potion Shop Outer Rock', 'Northeast Dark World Mirror Spot']), | ||
|  |         create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop', 'Potion Shop Inner Bushes', 'Potion Shop Inner Rock', 'Potion Shop Mirror Spot', 'Potion Shop River Drop']), | ||
|  |         create_lw_region(player, 'Graveyard Cave Area', None, ['Graveyard Cave', 'Graveyard Cave Inner Bushes', 'Graveyard Cave Mirror Spot']), | ||
|  |         create_lw_region(player, 'River', None, ['Light World Pier', 'Potion Shop Pier']), | ||
|  |         create_cave_region(player, 'Hyrule Castle Secret Entrance', 'a drop\'s exit', ['Link\'s Uncle', 'Secret Passage'], ['Hyrule Castle Secret Entrance Exit']), | ||
|  |         create_lw_region(player, 'Zoras River', ['King Zora', 'Zora\'s Ledge']), | ||
|  |         create_cave_region(player, 'Waterfall of Wishing', 'a cave with two chests', ['Waterfall Fairy - Left', 'Waterfall Fairy - Right']), | ||
|  |         create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']), | ||
|  |         create_cave_region(player, 'Kings Grave', 'a cave with a chest', ['King\'s Tomb']), | ||
|  |         create_cave_region(player, 'North Fairy Cave', 'a drop\'s exit', None, ['North Fairy Cave Exit']), | ||
|  |         create_cave_region(player, 'Dam', 'the dam', ['Floodgate', 'Floodgate Chest']), | ||
|  |         create_cave_region(player, 'Inverted Links House', 'your house', ['Link\'s House'], ['Inverted Links House Exit']), | ||
|  |         create_cave_region(player, 'Chris Houlihan Room', 'I AM ERROR', None, ['Chris Houlihan Room Exit']), | ||
|  |         create_cave_region(player, 'Tavern', 'the tavern', ['Kakariko Tavern']), | ||
|  |         create_cave_region(player, 'Elder House', 'a connector', None, ['Elder House Exit (East)', 'Elder House Exit (West)']), | ||
|  |         create_cave_region(player, 'Snitch Lady (East)', 'a boring house'), | ||
|  |         create_cave_region(player, 'Snitch Lady (West)', 'a boring house'), | ||
|  |         create_cave_region(player, 'Bush Covered House', 'the grass man'), | ||
|  |         create_cave_region(player, 'Tavern (Front)', 'the tavern'), | ||
|  |         create_cave_region(player, 'Light World Bomb Hut', 'a restock room'), | ||
|  |         create_cave_region(player, 'Kakariko Shop', 'a common shop'), | ||
|  |         create_cave_region(player, 'Fortune Teller (Light)', 'a fortune teller'), | ||
|  |         create_cave_region(player, 'Lake Hylia Fortune Teller', 'a fortune teller'), | ||
|  |         create_cave_region(player, 'Lumberjack House', 'a boring house'), | ||
|  |         create_cave_region(player, 'Bonk Fairy (Light)', 'a fairy fountain'), | ||
|  |         create_cave_region(player, 'Bonk Fairy (Dark)', 'a fairy fountain'), | ||
|  |         create_cave_region(player, 'Lake Hylia Healer Fairy', 'a fairy fountain'), | ||
|  |         create_cave_region(player, 'Swamp Healer Fairy', 'a fairy fountain'), | ||
|  |         create_cave_region(player, 'Desert Healer Fairy', 'a fairy fountain'), | ||
|  |         create_cave_region(player, 'Dark Lake Hylia Healer Fairy', 'a fairy fountain'), | ||
|  |         create_cave_region(player, 'Dark Lake Hylia Ledge Healer Fairy', 'a fairy fountain'), | ||
|  |         create_cave_region(player, 'Dark Desert Healer Fairy', 'a fairy fountain'), | ||
|  |         create_cave_region(player, 'Dark Death Mountain Healer Fairy', 'a fairy fountain'), | ||
|  |         create_cave_region(player, 'Chicken House', 'a house with a chest', ['Chicken House']), | ||
|  |         create_cave_region(player, 'Aginahs Cave', 'a cave with a chest', ['Aginah\'s Cave']), | ||
|  |         create_cave_region(player, 'Sahasrahlas Hut', 'Sahasrahla', ['Sahasrahla\'s Hut - Left', 'Sahasrahla\'s Hut - Middle', 'Sahasrahla\'s Hut - Right', 'Sahasrahla']), | ||
|  |         create_cave_region(player, 'Kakariko Well (top)', 'a drop\'s exit', ['Kakariko Well - Top', 'Kakariko Well - Left', 'Kakariko Well - Middle', | ||
|  |                                                                      'Kakariko Well - Right', 'Kakariko Well - Bottom'], ['Kakariko Well (top to bottom)']), | ||
|  |         create_cave_region(player, 'Kakariko Well (bottom)', 'a drop\'s exit', None, ['Kakariko Well Exit']), | ||
|  |         create_cave_region(player, 'Blacksmiths Hut', 'the smith', ['Blacksmith', 'Missing Smith']), | ||
|  |         create_lw_region(player, 'Bat Cave Drop Ledge', None, ['Bat Cave Drop']), | ||
|  |         create_cave_region(player, 'Bat Cave (right)', 'a drop\'s exit', ['Magic Bat'], ['Bat Cave Door']), | ||
|  |         create_cave_region(player, 'Bat Cave (left)', 'a drop\'s exit', None, ['Bat Cave Exit']), | ||
|  |         create_cave_region(player, 'Sick Kids House', 'the sick kid', ['Sick Kid']), | ||
|  |         create_lw_region(player, 'Hobo Bridge', ['Hobo']), | ||
|  |         create_cave_region(player, 'Lost Woods Hideout (top)', 'a drop\'s exit', ['Lost Woods Hideout'], ['Lost Woods Hideout (top to bottom)']), | ||
|  |         create_cave_region(player, 'Lost Woods Hideout (bottom)', 'a drop\'s exit', None, ['Lost Woods Hideout Exit']), | ||
|  |         create_cave_region(player, 'Lumberjack Tree (top)', 'a drop\'s exit', ['Lumberjack Tree'], ['Lumberjack Tree (top to bottom)']), | ||
|  |         create_cave_region(player, 'Lumberjack Tree (bottom)', 'a drop\'s exit', None, ['Lumberjack Tree Exit']), | ||
|  |         create_cave_region(player, 'Cave 45', 'a cave with an item', ['Cave 45']), | ||
|  |         create_cave_region(player, 'Graveyard Cave', 'a cave with an item', ['Graveyard Cave']), | ||
|  |         create_cave_region(player, 'Checkerboard Cave', 'a cave with an item', ['Checkerboard Cave']), | ||
|  |         create_cave_region(player, 'Long Fairy Cave', 'a fairy fountain'), | ||
|  |         create_cave_region(player, 'Mini Moldorm Cave', 'a bounty of five items', ['Mini Moldorm Cave - Far Left', 'Mini Moldorm Cave - Left', 'Mini Moldorm Cave - Right', | ||
|  |                                                                            'Mini Moldorm Cave - Far Right', 'Mini Moldorm Cave - Generous Guy']), | ||
|  |         create_cave_region(player, 'Ice Rod Cave', 'a cave with a chest', ['Ice Rod Cave']), | ||
|  |         create_cave_region(player, 'Good Bee Cave', 'a cold bee'), | ||
|  |         create_cave_region(player, '20 Rupee Cave', 'a cave with some cash'), | ||
|  |         create_cave_region(player, 'Cave Shop (Lake Hylia)', 'a common shop'), | ||
|  |         create_cave_region(player, 'Cave Shop (Dark Death Mountain)', 'a common shop'), | ||
|  |         create_cave_region(player, 'Bonk Rock Cave', 'a cave with a chest', ['Bonk Rock Cave']), | ||
|  |         create_cave_region(player, 'Library', 'the library', ['Library']), | ||
|  |         create_cave_region(player, 'Kakariko Gamble Game', 'a game of chance'), | ||
|  |         create_cave_region(player, 'Potion Shop', 'the potion shop', ['Potion Shop']), | ||
|  |         create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island']), | ||
|  |         create_cave_region(player, 'Capacity Upgrade', 'the queen of fairies'), | ||
|  |         create_cave_region(player, 'Two Brothers House', 'a connector', None, ['Two Brothers House Exit (East)', 'Two Brothers House Exit (West)']), | ||
|  |         create_lw_region(player, 'Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)', 'Maze Race Mirror Spot']), | ||
|  |         create_cave_region(player, '50 Rupee Cave', 'a cave with some cash'), | ||
|  |         create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)', 'Desert Ledge Drop']), | ||
|  |         create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)', 'Desert Palace Stairs Mirror Spot']), | ||
|  |         create_lw_region(player, 'Desert Palace Lone Stairs', None, ['Desert Palace Stairs Drop', 'Desert Palace Entrance (East)']), | ||
|  |         create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Return Rocks', 'Desert Palace North Mirror Spot']), | ||
|  |         create_dungeon_region(player, 'Desert Palace Main (Outer)', 'Desert Palace', ['Desert Palace - Big Chest', 'Desert Palace - Torch', 'Desert Palace - Map Chest'], | ||
|  |                               ['Desert Palace Pots (Outer)', 'Desert Palace Exit (West)', 'Desert Palace Exit (East)', 'Desert Palace East Wing']), | ||
|  |         create_dungeon_region(player, 'Desert Palace Main (Inner)', 'Desert Palace', None, ['Desert Palace Exit (South)', 'Desert Palace Pots (Inner)']), | ||
|  |         create_dungeon_region(player, 'Desert Palace East', 'Desert Palace', ['Desert Palace - Compass Chest', 'Desert Palace - Big Key Chest']), | ||
|  |         create_dungeon_region(player, 'Desert Palace North', 'Desert Palace', ['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']), | ||
|  |         create_dungeon_region(player, 'Eastern Palace', '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 - Boss', 'Eastern Palace - Prize'], ['Eastern Palace Exit']), | ||
|  |         create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal']), | ||
|  |         create_cave_region(player, 'Lost Woods Gamble', 'a game of chance'), | ||
|  |         create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (East)', 'Hyrule Castle Entrance (West)', 'Inverted Ganons Tower', 'Hyrule Castle Ledge Courtyard Drop', 'Inverted Pyramid Hole']), | ||
|  |         create_dungeon_region(player, 'Hyrule Castle', '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_dungeon_region(player, 'Sewer Drop', 'a drop\'s exit', None, ['Sewer Drop']),  # This exists only to be referenced for access checks | ||
|  |         create_dungeon_region(player, 'Sewers (Dark)', 'a drop\'s exit', ['Sewers - Dark Cross'], ['Sewers Door']), | ||
|  |         create_dungeon_region(player, 'Sewers', 'a drop\'s exit', ['Sewers - Secret Room - Left', 'Sewers - Secret Room - Middle', | ||
|  |                                          'Sewers - Secret Room - Right'], ['Sanctuary Push Door', 'Sewers Back Door']), | ||
|  |         create_dungeon_region(player, 'Sanctuary', 'a drop\'s exit', ['Sanctuary'], ['Sanctuary Exit']), | ||
|  |         create_dungeon_region(player, 'Inverted Agahnims Tower', 'Castle Tower', ['Castle Tower - Room 03', 'Castle Tower - Dark Maze'], ['Agahnim 1', 'Inverted Agahnims Tower Exit']), | ||
|  |         create_dungeon_region(player, 'Agahnim 1', 'Castle Tower', ['Agahnim 1'], None), | ||
|  |         create_cave_region(player, 'Old Man Cave', 'a connector', ['Old Man'], ['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']), | ||
|  |         create_cave_region(player, 'Old Man House', 'a connector', None, ['Old Man House Exit (Bottom)', 'Old Man House Front to Back']), | ||
|  |         create_cave_region(player, 'Old Man House Back', 'a connector', None, ['Old Man House Exit (Top)', 'Old Man House Back to Front']), | ||
|  |         create_lw_region(player, '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 Mirror Spot', 'WDM Hyrule Castle Ledge SQ']), | ||
|  |         create_cave_region(player, 'Death Mountain Return Cave', 'a connector', None, ['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']), | ||
|  |         create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)', 'Bumper Cave Ledge Mirror Spot']), | ||
|  |         create_cave_region(player, 'Spectacle Rock Cave (Top)', 'a connector', ['Spectacle Rock Cave'], ['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']), | ||
|  |         create_cave_region(player, 'Spectacle Rock Cave (Bottom)', 'a connector', None, ['Spectacle Rock Cave Exit']), | ||
|  |         create_cave_region(player, 'Spectacle Rock Cave (Peak)', 'a connector', None, ['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']), | ||
|  |         create_lw_region(player, 'East Death Mountain (Bottom)', None, ['Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'East Death Mountain Mirror Spot (Bottom)', 'Hookshot Fairy',  | ||
|  |                                                                 'Fairy Ascension Rocks', 'Spiral Cave (Bottom)', 'EDM Hyrule Castle Ledge SQ']), | ||
|  |         create_cave_region(player, 'Hookshot Fairy', 'fairies deep in a cave'), | ||
|  |         create_cave_region(player, 'Paradox Cave Front', 'a connector', None, ['Paradox Cave Push Block Reverse', 'Paradox Cave Exit (Bottom)', 'Light World Death Mountain Shop']), | ||
|  |         create_cave_region(player, 'Paradox Cave Chest Area', 'a connector', ['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_cave_region(player, 'Paradox Cave', 'a connector', None, ['Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Top)', 'Paradox Cave Drop']), | ||
|  |         create_cave_region(player, 'Light World Death Mountain Shop', 'a common shop'), | ||
|  |         create_lw_region(player, 'East Death Mountain (Top)', ['Floating Island'], ['Paradox Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access', 'East Death Mountain Drop', 'East Death Mountain Mirror Spot (Top)', 'Fairy Ascension Ledge Access', 'Mimic Cave Ledge Access', | ||
|  |                                                                             'Floating Island Mirror Spot']), | ||
|  |         create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (West)']), | ||
|  |         create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave', 'Mimic Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (East)']), | ||
|  |         create_cave_region(player, 'Spiral Cave (Top)', 'a connector', ['Spiral Cave'], ['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']), | ||
|  |         create_cave_region(player, 'Spiral Cave (Bottom)', 'a connector', None, ['Spiral Cave Exit']), | ||
|  |         create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Drop', 'Fairy Ascension Cave (Bottom)']), | ||
|  |         create_cave_region(player, 'Fairy Ascension Cave (Bottom)', 'a connector', None, ['Fairy Ascension Cave Climb', 'Fairy Ascension Cave Exit (Bottom)']), | ||
|  |         create_cave_region(player, 'Fairy Ascension Cave (Drop)', 'a connector', None, ['Fairy Ascension Cave Pots']), | ||
|  |         create_cave_region(player, 'Fairy Ascension Cave (Top)', 'a connector', None, ['Fairy Ascension Cave Exit (Top)', 'Fairy Ascension Cave Drop']), | ||
|  |         create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)', 'Laser Bridge Mirror Spot']), | ||
|  |         create_lw_region(player, 'Death Mountain (Top)', ['Ether Tablet', 'Spectacle Rock'], ['East Death Mountain (Top)', 'Tower of Hera', 'Death Mountain Drop', 'Death Mountain (Top) Mirror Spot']), | ||
|  |         create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)']), | ||
|  |         create_dungeon_region(player, 'Tower of Hera (Bottom)', 'Tower of Hera', ['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_dungeon_region(player, 'Tower of Hera (Basement)', 'Tower of Hera', ['Tower of Hera - Big Key Chest']), | ||
|  |         create_dungeon_region(player, 'Tower of Hera (Top)', 'Tower of Hera', ['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Boss', 'Tower of Hera - Prize']), | ||
|  | 
 | ||
|  |         create_dw_region(player, 'East Dark World', ['Pyramid'], ['Pyramid Fairy', 'South Dark World Bridge', 'Palace of Darkness', 'Dark Lake Hylia Drop (East)',  | ||
|  |                                                           'Dark Lake Hylia Fairy', 'Palace of Darkness Hint', 'East Dark World Hint', 'Northeast Dark World Broken Bridge Pass', 'East Dark World Teleporter', 'EDW Flute']), | ||
|  |         create_dw_region(player, 'Northeast Dark World', ['Catfish'], ['West Dark World Gap', 'Dark World Potion Shop', 'East Dark World Broken Bridge Pass', 'NEDW Flute', 'Dark Lake Hylia Teleporter']), | ||
|  |         create_cave_region(player, 'Palace of Darkness Hint', 'a storyteller'), | ||
|  |         create_cave_region(player, 'East Dark World Hint', 'a storyteller'), | ||
|  |         create_dw_region(player, 'South Dark World', ['Stumpy', 'Digging Game'], ['Dark Lake Hylia Drop (South)', 'Hype Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock', 'East Dark World Bridge', 'Inverted Links House', 'Archery Game', 'Bonk Fairy (Dark)',  | ||
|  |                                               'Dark Lake Hylia Shop', 'South Dark World Teleporter', 'Post Aga Teleporter', 'SDW Flute']), | ||
|  |         create_cave_region(player, 'Inverted Big Bomb Shop', 'the bomb shop'), | ||
|  |         create_cave_region(player, 'Archery Game', 'a game of skill'), | ||
|  |         create_dw_region(player, 'Dark Lake Hylia', None, ['East Dark World Pier', 'Dark Lake Hylia Ledge Pier', 'Ice Palace', 'Dark Lake Hylia Central Island Teleporter']), | ||
|  |         create_dw_region(player, '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', 'DLHL Flute']), | ||
|  |         create_cave_region(player, 'Dark Lake Hylia Ledge Hint', 'a storyteller'), | ||
|  |         create_cave_region(player, 'Dark Lake Hylia Ledge Spike Cave', 'a spiky hint'), | ||
|  |         create_cave_region(player, 'Hype Cave', 'a bounty of five items', ['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left', | ||
|  |                                                                    'Hype Cave - Bottom', 'Hype Cave - Generous Guy']), | ||
|  |         create_dw_region(player, 'West Dark World', ['Frog'], ['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House', 'Chest Game', 'Thieves Town', 'Bumper Cave Entrance Rock', | ||
|  |                                                        'Skull Woods Forest', 'Village of Outcasts Pegs', 'Village of Outcasts Eastern Rocks', 'Red Shield Shop', 'Inverted Dark Sanctuary', 'Fortune Teller (Dark)', 'Dark World Lumberjack Shop', | ||
|  |                                                        'West Dark World Teleporter', 'WDW Flute']), | ||
|  |         create_dw_region(player, 'Dark Grassy Lawn', None, ['Grassy Lawn Pegs', 'Dark World Shop', 'Dark Grassy Lawn Flute']), | ||
|  |         create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Dark World Hammer Peg Cave', 'Peg Area Rocks', 'Hammer Peg Area Flute']), | ||
|  |         create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Drop']), | ||
|  |         create_cave_region(player, 'Fortune Teller (Dark)', 'a fortune teller'), | ||
|  |         create_cave_region(player, 'Village of Outcasts Shop', 'a common shop'), | ||
|  |         create_cave_region(player, 'Dark Lake Hylia Shop', 'a common shop'), | ||
|  |         create_cave_region(player, 'Dark World Lumberjack Shop', 'a common shop'), | ||
|  |         create_cave_region(player, 'Dark World Potion Shop', 'a common shop'), | ||
|  |         create_cave_region(player, 'Dark World Hammer Peg Cave', 'a cave with an item', ['Peg Cave']), | ||
|  |         create_cave_region(player, 'Pyramid Fairy', 'a cave with two chests', ['Pyramid Fairy - Left', 'Pyramid Fairy - Right']), | ||
|  |         create_cave_region(player, 'Brewery', 'a house with a chest', ['Brewery']), | ||
|  |         create_cave_region(player, 'C-Shaped House', 'a house with a chest', ['C-Shaped House']), | ||
|  |         create_cave_region(player, 'Chest Game', 'a game of 16 chests', ['Chest Game']), | ||
|  |         create_cave_region(player, 'Red Shield Shop', 'the rare shop'), | ||
|  |         create_cave_region(player, 'Inverted Dark Sanctuary', 'a storyteller'), | ||
|  |         create_cave_region(player, 'Bumper Cave', 'a connector', None, ['Bumper Cave Exit (Bottom)', 'Bumper Cave Exit (Top)']), | ||
|  |         create_dw_region(player, 'Skull Woods Forest', None, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)', | ||
|  |                                                       'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)']), | ||
|  |         create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section']), | ||
|  |         create_dw_region(player, 'Dark Desert',  None, ['Misery Mire', 'Mire Shed', 'Dark Desert Hint', 'Dark Desert Fairy', 'DD Flute']), | ||
|  |         create_dw_region(player, 'Dark Desert Ledge',  None, ['Dark Desert Drop', 'Dark Desert Teleporter']), | ||
|  |         create_cave_region(player, 'Mire Shed', 'a cave with two chests', ['Mire Shed - Left', 'Mire Shed - Right']), | ||
|  |         create_cave_region(player, 'Dark Desert Hint', 'a storyteller'), | ||
|  |         create_dw_region(player, 'Dark Death Mountain', None, ['Dark Death Mountain Drop (East)', 'Inverted Agahnims Tower', 'Superbunny Cave (Top)', 'Hookshot Cave', 'Turtle Rock',  | ||
|  |                                                       'Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Teleporter (West)', 'Turtle Rock Tail Drop', 'DDM Flute']), | ||
|  |         create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)']), | ||
|  |         create_dw_region(player, 'Turtle Rock (Top)', None, ['Dark Death Mountain Teleporter (East)', 'Turtle Rock Drop']), | ||
|  |         create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Turtle Rock Isolated Ledge Entrance']), | ||
|  |         create_dw_region(player, 'Dark Death Mountain (East Bottom)', None, ['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)', 'Dark Death Mountain Teleporter (East Bottom)', 'EDDM Flute']), | ||
|  |         create_cave_region(player, 'Superbunny Cave', 'a connector', ['Superbunny Cave - Top', 'Superbunny Cave - Bottom'], | ||
|  |                            ['Superbunny Cave Exit (Top)', 'Superbunny Cave Exit (Bottom)']), | ||
|  |         create_cave_region(player, 'Spike Cave', 'Spike Cave', ['Spike Cave']), | ||
|  |         create_cave_region(player, 'Hookshot Cave', 'a connector', ['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_dw_region(player, 'Death Mountain Floating Island (Dark World)', None, ['Floating Island Drop', 'Hookshot Cave Back Entrance']), | ||
|  |         create_cave_region(player, 'Mimic Cave', 'Mimic Cave', ['Mimic Cave']), | ||
|  | 
 | ||
|  |         create_dungeon_region(player, 'Swamp Palace (Entrance)', 'Swamp Palace', None, ['Swamp Palace Moat', 'Swamp Palace Exit']), | ||
|  |         create_dungeon_region(player, 'Swamp Palace (First Room)', 'Swamp Palace', ['Swamp Palace - Entrance'], ['Swamp Palace Small Key Door']), | ||
|  |         create_dungeon_region(player, 'Swamp Palace (Starting Area)', 'Swamp Palace', ['Swamp Palace - Map Chest'], ['Swamp Palace (Center)']), | ||
|  |         create_dungeon_region(player, 'Swamp Palace (Center)', 'Swamp Palace', ['Swamp Palace - Big Chest', 'Swamp Palace - Compass Chest', | ||
|  |                                                                         'Swamp Palace - Big Key Chest', 'Swamp Palace - West Chest'], ['Swamp Palace (North)']), | ||
|  |         create_dungeon_region(player, 'Swamp Palace (North)', 'Swamp Palace', ['Swamp Palace - Flooded Room - Left', 'Swamp Palace - Flooded Room - Right', | ||
|  |                                                                        'Swamp Palace - Waterfall Room', 'Swamp Palace - Boss', 'Swamp Palace - Prize']), | ||
|  |         create_dungeon_region(player, 'Thieves Town (Entrance)', 'Thieves\' Town', ['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_dungeon_region(player, 'Thieves Town (Deep)', 'Thieves\' Town', ['Thieves\' Town - Attic', | ||
|  |                                                                         'Thieves\' Town - Big Chest', | ||
|  |                                                                         'Thieves\' Town - Blind\'s Cell'], ['Blind Fight']), | ||
|  |         create_dungeon_region(player, 'Blind Fight', 'Thieves\' Town', ['Thieves\' Town - Boss', 'Thieves\' Town - Prize']), | ||
|  |         create_dungeon_region(player, 'Skull Woods First Section', 'Skull Woods', ['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_dungeon_region(player, 'Skull Woods First Section (Right)', 'Skull Woods', ['Skull Woods - Pinball Room'], ['Skull Woods First Section (Right) North Door']), | ||
|  |         create_dungeon_region(player, 'Skull Woods First Section (Left)', 'Skull Woods', ['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_dungeon_region(player, 'Skull Woods First Section (Top)', 'Skull Woods', ['Skull Woods - Big Chest'], ['Skull Woods First Section (Top) One-Way Path']), | ||
|  |         create_dungeon_region(player, 'Skull Woods Second Section (Drop)', 'Skull Woods', None, ['Skull Woods Second Section (Drop)']), | ||
|  |         create_dungeon_region(player, 'Skull Woods Second Section', 'Skull Woods', ['Skull Woods - Big Key Chest'], ['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']), | ||
|  |         create_dungeon_region(player, 'Skull Woods Final Section (Entrance)', 'Skull Woods', ['Skull Woods - Bridge Room'], ['Skull Woods Torch Room', 'Skull Woods Final Section Exit']), | ||
|  |         create_dungeon_region(player, 'Skull Woods Final Section (Mothula)', 'Skull Woods', ['Skull Woods - Boss', 'Skull Woods - Prize']), | ||
|  |         create_dungeon_region(player, 'Ice Palace (Entrance)', 'Ice Palace', None, ['Ice Palace Entrance Room', 'Ice Palace Exit']), | ||
|  |         create_dungeon_region(player, 'Ice Palace (Main)', 'Ice Palace', ['Ice Palace - Compass Chest', 'Ice Palace - Freezor Chest', | ||
|  |                                                                   'Ice Palace - Big Chest', 'Ice Palace - Iced T Room'], ['Ice Palace (East)', 'Ice Palace (Kholdstare)']), | ||
|  |         create_dungeon_region(player, 'Ice Palace (East)', 'Ice Palace', ['Ice Palace - Spike Room'], ['Ice Palace (East Top)']), | ||
|  |         create_dungeon_region(player, 'Ice Palace (East Top)', 'Ice Palace', ['Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']), | ||
|  |         create_dungeon_region(player, 'Ice Palace (Kholdstare)', 'Ice Palace', ['Ice Palace - Boss', 'Ice Palace - Prize']), | ||
|  |         create_dungeon_region(player, 'Misery Mire (Entrance)', 'Misery Mire', None, ['Misery Mire Entrance Gap', 'Misery Mire Exit']), | ||
|  |         create_dungeon_region(player, 'Misery Mire (Main)', 'Misery Mire', ['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_dungeon_region(player, 'Misery Mire (West)', 'Misery Mire', ['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']), | ||
|  |         create_dungeon_region(player, 'Misery Mire (Final Area)', 'Misery Mire', None, ['Misery Mire (Vitreous)']), | ||
|  |         create_dungeon_region(player, 'Misery Mire (Vitreous)', 'Misery Mire', ['Misery Mire - Boss', 'Misery Mire - Prize']), | ||
|  |         create_dungeon_region(player, 'Turtle Rock (Entrance)', 'Turtle Rock', None, ['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']), | ||
|  |         create_dungeon_region(player, 'Turtle Rock (First Section)', 'Turtle Rock', ['Turtle Rock - Compass Chest', 'Turtle Rock - Roller Room - Left', | ||
|  |                                                                              'Turtle Rock - Roller Room - Right'], ['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']), | ||
|  |         create_dungeon_region(player, 'Turtle Rock (Chain Chomp Room)', 'Turtle Rock', ['Turtle Rock - Chain Chomps'], ['Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Chain Chomp Room) (South)']), | ||
|  |         create_dungeon_region(player, 'Turtle Rock (Second Section)', 'Turtle Rock', ['Turtle Rock - Big Key Chest'], ['Turtle Rock Ledge Exit (West)', 'Turtle Rock Chain Chomp Staircase', 'Turtle Rock Big Key Door']), | ||
|  |         create_dungeon_region(player, 'Turtle Rock (Big Chest)', 'Turtle Rock', ['Turtle Rock - Big Chest'], ['Turtle Rock (Big Chest) (North)', 'Turtle Rock Ledge Exit (East)']), | ||
|  |         create_dungeon_region(player, 'Turtle Rock (Crystaroller Room)', 'Turtle Rock', ['Turtle Rock - Crystaroller Room'], ['Turtle Rock Dark Room Staircase', 'Turtle Rock Big Key Door Reverse']), | ||
|  |         create_dungeon_region(player, 'Turtle Rock (Dark Room)', 'Turtle Rock', None, ['Turtle Rock (Dark Room) (North)', 'Turtle Rock (Dark Room) (South)']), | ||
|  |         create_dungeon_region(player, 'Turtle Rock (Eye Bridge)', 'Turtle Rock', ['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right', | ||
|  |                                                                           'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'], | ||
|  |                               ['Turtle Rock Dark Room (South)', 'Turtle Rock (Trinexx)', 'Turtle Rock Isolated Ledge Exit']), | ||
|  |         create_dungeon_region(player, 'Turtle Rock (Trinexx)', 'Turtle Rock', ['Turtle Rock - Boss', 'Turtle Rock - Prize']), | ||
|  |         create_dungeon_region(player, 'Palace of Darkness (Entrance)', 'Palace of Darkness', ['Palace of Darkness - Shooter Room'], ['Palace of Darkness Bridge Room', 'Palace of Darkness Bonk Wall', 'Palace of Darkness Exit']), | ||
|  |         create_dungeon_region(player, 'Palace of Darkness (Center)', 'Palace of Darkness', ['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_dungeon_region(player, 'Palace of Darkness (Big Key Chest)', 'Palace of Darkness', ['Palace of Darkness - Big Key Chest']), | ||
|  |         create_dungeon_region(player, 'Palace of Darkness (Bonk Section)', 'Palace of Darkness', ['Palace of Darkness - The Arena - Ledge', 'Palace of Darkness - Map Chest'], ['Palace of Darkness Hammer Peg Drop']), | ||
|  |         create_dungeon_region(player, 'Palace of Darkness (North)', 'Palace of Darkness', ['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_dungeon_region(player, 'Palace of Darkness (Maze)', 'Palace of Darkness', ['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom', 'Palace of Darkness - Big Chest']), | ||
|  |         create_dungeon_region(player, 'Palace of Darkness (Harmless Hellway)', 'Palace of Darkness', ['Palace of Darkness - Harmless Hellway']), | ||
|  |         create_dungeon_region(player, 'Palace of Darkness (Final Section)', 'Palace of Darkness', ['Palace of Darkness - Boss', 'Palace of Darkness - Prize']), | ||
|  |         create_dungeon_region(player, 'Inverted Ganons Tower (Entrance)', 'Ganon\'s Tower', ['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', 'Inverted Ganons Tower Exit']), | ||
|  |         create_dungeon_region(player, 'Ganons Tower (Tile Room)', 'Ganon\'s Tower', ['Ganons Tower - Tile Room'], ['Ganons Tower (Tile Room) Key Door']), | ||
|  |         create_dungeon_region(player, 'Ganons Tower (Compass Room)', 'Ganon\'s Tower', ['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_dungeon_region(player, 'Ganons Tower (Hookshot Room)', 'Ganon\'s Tower', ['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_dungeon_region(player, 'Ganons Tower (Map Room)', 'Ganon\'s Tower', ['Ganons Tower - Map Chest']), | ||
|  |         create_dungeon_region(player, 'Ganons Tower (Firesnake Room)', 'Ganon\'s Tower', ['Ganons Tower - Firesnake Room'], ['Ganons Tower (Firesnake Room)']), | ||
|  |         create_dungeon_region(player, 'Ganons Tower (Teleport Room)', 'Ganon\'s Tower', ['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_dungeon_region(player, 'Ganons Tower (Bottom)', 'Ganon\'s Tower', ['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_dungeon_region(player, 'Ganons Tower (Top)', 'Ganon\'s Tower', None, ['Ganons Tower Torch Rooms']), | ||
|  |         create_dungeon_region(player, 'Ganons Tower (Before Moldorm)', 'Ganon\'s Tower', ['Ganons Tower - Mini Helmasaur Room - Left', 'Ganons Tower - Mini Helmasaur Room - Right', | ||
|  |                                                                                   'Ganons Tower - Pre-Moldorm Chest'], ['Ganons Tower Moldorm Door']), | ||
|  |         create_dungeon_region(player, 'Ganons Tower (Moldorm)', 'Ganon\'s Tower', None, ['Ganons Tower Moldorm Gap']), | ||
|  |         create_dungeon_region(player, 'Agahnim 2', 'Ganon\'s Tower', ['Ganons Tower - Validation Chest', 'Agahnim 2'], None), | ||
|  |         create_cave_region(player, 'Pyramid', 'a drop\'s exit', ['Ganon'], ['Ganon Drop']), | ||
|  |         create_cave_region(player, 'Bottom of Pyramid', 'a drop\'s exit', None, ['Pyramid Exit']), | ||
|  |         create_dw_region(player, 'Pyramid Ledge', None, ['Pyramid Drop']),  # houlihan room exits here in inverted  | ||
|  |          | ||
|  |         # to simplify flute connections | ||
|  |         create_cave_region(player, 'The Sky', 'A Dark Sky', None, ['DDM Landing','NEDW Landing', 'WDW Landing', 'SDW Landing', 'EDW Landing', 'DD Landing', 'DLHL Landing'])  | ||
|  |     ] | ||
|  | 
 | ||
|  |     for region_name, (room_id, shopkeeper, replaceable) in shop_table.items(): | ||
|  |         region = world.get_region(region_name, player) | ||
|  |         shop = Shop(region, room_id, ShopType.Shop, shopkeeper, replaceable) | ||
|  |         region.shop = shop | ||
|  |         world.shops.append(shop) | ||
|  |         for index, (item, price) in enumerate(default_shop_contents[region_name]): | ||
|  |             shop.add_inventory(index, item, price) | ||
|  | 
 | ||
|  |     region = world.get_region('Capacity Upgrade', player) | ||
|  |     shop = Shop(region, 0x0115, ShopType.UpgradeShop, 0x04, True) | ||
|  |     region.shop = shop | ||
|  |     world.shops.append(shop) | ||
|  |     shop.add_inventory(0, 'Bomb Upgrade (+5)', 100, 7) | ||
|  |     shop.add_inventory(1, 'Arrow Upgrade (+5)', 100, 7) | ||
|  |     world.intialize_regions() | ||
|  | 
 | ||
|  | def create_lw_region(player, name, locations=None, exits=None): | ||
|  |     return _create_region(player, name, RegionType.LightWorld, 'Light World', locations, exits) | ||
|  | 
 | ||
|  | def create_dw_region(player, name, locations=None, exits=None): | ||
|  |     return _create_region(player, name, RegionType.DarkWorld, 'Dark World', locations, exits) | ||
|  | 
 | ||
|  | def create_cave_region(player, name, hint='Hyrule', locations=None, exits=None): | ||
|  |     return _create_region(player, name, RegionType.Cave, hint, locations, exits) | ||
|  | 
 | ||
|  | def create_dungeon_region(player, name, hint='Hyrule', locations=None, exits=None): | ||
|  |     return _create_region(player, name, RegionType.Dungeon, hint, locations, exits) | ||
|  | 
 | ||
|  | def _create_region(player, name, type, hint='Hyrule', locations=None, exits=None): | ||
|  |     ret = Region(name, type, hint, player) | ||
|  |     if locations is None: | ||
|  |         locations = [] | ||
|  |     if exits is None: | ||
|  |         exits = [] | ||
|  | 
 | ||
|  |     for exit in exits: | ||
|  |         ret.exits.append(Entrance(player, exit, ret)) | ||
|  |     for location in locations: | ||
|  |         address, crystal, hint_text = location_table[location] | ||
|  |         ret.locations.append(Location(player, location, address, crystal, hint_text, ret)) | ||
|  |     return ret | ||
|  | 
 | ||
|  | def mark_dark_world_regions(world): | ||
|  |     # cross world caves may have some sections marked as both in_light_world, and in_dark_work. | ||
|  |     # That is ok. the bunny logic will check for this case and incorporate special rules. | ||
|  | 
 | ||
|  |     queue = collections.deque(region for region in world.regions if region.type == RegionType.DarkWorld) | ||
|  |     seen = set(queue) | ||
|  |     while queue: | ||
|  |         current = queue.popleft() | ||
|  |         current.is_dark_world = True | ||
|  |         for exit in current.exits: | ||
|  |             if exit.connected_region.type == RegionType.LightWorld: | ||
|  |                 # Don't venture into the dark world | ||
|  |                 continue | ||
|  |             if exit.connected_region not in seen: | ||
|  |                 seen.add(exit.connected_region) | ||
|  |                 queue.append(exit.connected_region) | ||
|  | 
 | ||
|  |     queue = collections.deque(region for region in world.regions if region.type == RegionType.LightWorld) | ||
|  |     seen = set(queue) | ||
|  |     while queue: | ||
|  |         current = queue.popleft() | ||
|  |         current.is_light_world = True | ||
|  |         for exit in current.exits: | ||
|  |             if exit.connected_region.type == RegionType.DarkWorld: | ||
|  |                 # Don't venture into the light world | ||
|  |                 continue | ||
|  |             if exit.connected_region not in seen: | ||
|  |                 seen.add(exit.connected_region) | ||
|  |                 queue.append(exit.connected_region) | ||
|  | 
 | ||
|  | # (room_id, shopkeeper, replaceable) | ||
|  | shop_table = { | ||
|  |     'Cave Shop (Dark Death Mountain)': (0x0112, 0xC1, True), | ||
|  |     'Red Shield Shop': (0x0110, 0xC1, True), | ||
|  |     'Dark Lake Hylia Shop': (0x010F, 0xC1, True), | ||
|  |     'Dark World Lumberjack Shop': (0x010F, 0xC1, True), | ||
|  |     'Village of Outcasts Shop': (0x010F, 0xC1, True), | ||
|  |     'Dark World Potion Shop': (0x010F, 0xC1, True), | ||
|  |     'Light World Death Mountain Shop': (0x00FF, 0xA0, True), | ||
|  |     'Kakariko Shop': (0x011F, 0xA0, True), | ||
|  |     'Cave Shop (Lake Hylia)': (0x0112, 0xA0, True), | ||
|  |     'Potion Shop': (0x0109, 0xFF, False), | ||
|  |     # Bomb Shop not currently modeled as a shop, due to special nature of items | ||
|  | } | ||
|  | # region, [item] | ||
|  | # slot, item, price, max=0, replacement=None, replacement_price=0 | ||
|  | # item = (item, price) | ||
|  | 
 | ||
|  | _basic_shop_defaults = [('Red Potion', 150), ('Small Heart', 10), ('Bombs (10)', 50)] | ||
|  | _dark_world_shop_defaults = [('Red Potion', 150), ('Blue Shield', 50), ('Bombs (10)', 50)] | ||
|  | default_shop_contents = { | ||
|  |     'Cave Shop (Dark Death Mountain)': _basic_shop_defaults, | ||
|  |     'Red Shield Shop': [('Red Shield', 500), ('Bee', 10), ('Arrows (10)', 30)], | ||
|  |     'Dark Lake Hylia Shop': _dark_world_shop_defaults, | ||
|  |     'Dark World Lumberjack Shop': _dark_world_shop_defaults, | ||
|  |     'Village of Outcasts Shop': _dark_world_shop_defaults, | ||
|  |     'Dark World Potion Shop': _dark_world_shop_defaults, | ||
|  |     'Light World Death Mountain Shop': _basic_shop_defaults, | ||
|  |     'Kakariko Shop': _basic_shop_defaults, | ||
|  |     'Cave Shop (Lake Hylia)': _basic_shop_defaults, | ||
|  |     'Potion Shop': [('Red Potion', 120), ('Green Potion', 60), ('Blue Potion', 160)], | ||
|  | } | ||
|  | 
 | ||
|  | location_table = {'Mushroom': (0x180013, False, 'in the woods'), | ||
|  |                   'Bottle Merchant': (0x2EB18, False, 'with a merchant'), | ||
|  |                   'Flute Spot': (0x18014A, False, 'underground'), | ||
|  |                   'Sunken Treasure': (0x180145, False, 'underwater'), | ||
|  |                   'Purple Chest': (0x33D68, False, 'from a box'), | ||
|  |                   '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'), | ||
|  |                   'Zora\'s Ledge': (0x180149, False, 'near Zora'), | ||
|  |                   'Waterfall Fairy - Left': (0xE9B0, False, 'near a fairy'), | ||
|  |                   'Waterfall Fairy - Right': (0xE9D1, False, 'near a fairy'), | ||
|  |                   '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'), | ||
|  |                   '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 sick'), | ||
|  |                   'Hobo': (0x33E7D, False, 'with the hobo'), | ||
|  |                   'Lost Woods Hideout': (0x180000, False, 'near a thief'), | ||
|  |                   'Lumberjack Tree': (0x180001, False, 'in a hole'), | ||
|  |                   'Cave 45': (0x180003, False, 'alone in a cave'), | ||
|  |                   'Graveyard Cave': (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, 'in a frozen cave'), | ||
|  |                   'Bonk Rock Cave': (0xEB3F, False, 'alone in a cave'), | ||
|  |                   'Library': (0x180012, False, 'near books'), | ||
|  |                   '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 - Boss': (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 - Boss': (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 Castle Tower'), | ||
|  |                   'Castle Tower - Dark Maze': (0xEAB2, False, 'in Castle Tower'), | ||
|  |                   '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 a cave with seven chests'), | ||
|  |                   'Paradox Cave Lower - Left': (0xEB2D, False, 'in a cave with seven chests'), | ||
|  |                   'Paradox Cave Lower - Right': (0xEB30, False, 'in a cave with seven chests'), | ||
|  |                   'Paradox Cave Lower - Far Right': (0xEB33, False, 'in a cave with seven chests'), | ||
|  |                   'Paradox Cave Lower - Middle': (0xEB36, False, 'in a cave with seven chests'), | ||
|  |                   'Paradox Cave Upper - Left': (0xEB39, False, 'in a cave with seven chests'), | ||
|  |                   'Paradox Cave Upper - Right': (0xEB3C, False, 'in a cave with seven chests'), | ||
|  |                   'Spiral Cave': (0xE9BF, False, 'in spiral cave'), | ||
|  |                   'Ether Tablet': (0x180016, False, 'at a monolith'), | ||
|  |                   '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'), | ||
|  |                   'Tower of Hera - Boss': (0x180152, False, 'with Moldorm'), | ||
|  |                   'Pyramid': (0x180147, False, 'on the pyramid'), | ||
|  |                   'Catfish': (0xEE185, False, 'with a catfish'), | ||
|  |                   'Stumpy': (0x330C7, False, 'with tree boy'), | ||
|  |                   'Digging Game': (0x180148, False, 'underground'), | ||
|  |                   'Bombos Tablet': (0x180017, False, 'at a monolith'), | ||
|  |                   'Hype Cave - Top': (0xEB1E, False, 'near a bat-like man'), | ||
|  |                   'Hype Cave - Middle Right': (0xEB21, False, 'near a bat-like man'), | ||
|  |                   'Hype Cave - Middle Left': (0xEB24, False, 'near a bat-like man'), | ||
|  |                   'Hype Cave - Bottom': (0xEB27, False, 'near a bat-like man'), | ||
|  |                   'Hype Cave - Generous Guy': (0x180011, False, 'with a bat-like man'), | ||
|  |                   '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 sparks'), | ||
|  |                   'Mire Shed - Right': (0xEA76, False, 'near sparks'), | ||
|  |                   '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, 'in a cave of mimicry'), | ||
|  |                   '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 - Boss': (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 - Boss': (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 - Boss': (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 - Boss': (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 - Boss': (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 Room': (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 - Boss': (0x180159, False, 'with Trinexx'), | ||
|  |                   'Palace of Darkness - Shooter Room': (0xEA5B, False, 'in Palace of Darkness'), | ||
|  |                   'Palace of Darkness - The Arena - Bridge': (0xEA3D, 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': (0xEA3A, 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 - Boss': (0x180153, False, 'with Helmasaur King'), | ||
|  |                   'Ganons Tower - Bob\'s Torch': (0x180161, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Hope Room - Left': (0xEAD9, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Hope Room - Right': (0xEADC, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Tile Room': (0xEAE2, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Compass Room - Top Left': (0xEAE5, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Compass Room - Top Right': (0xEAE8, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Compass Room - Bottom Left': (0xEAEB, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Compass Room - Bottom Right': (0xEAEE, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - DMs Room - Top Left': (0xEAB8, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - DMs Room - Top Right': (0xEABB, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - DMs Room - Bottom Left': (0xEABE, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - DMs Room - Bottom Right': (0xEAC1, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Map Chest': (0xEAD3, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Firesnake Room': (0xEAD0, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Randomizer Room - Top Left': (0xEAC4, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Randomizer Room - Top Right': (0xEAC7, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Randomizer Room - Bottom Left': (0xEACA, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Randomizer Room - Bottom Right': (0xEACD, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Bob\'s Chest': (0xEADF, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Big Chest': (0xEAD6, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Big Key Room - Left': (0xEAF4, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Big Key Room - Right': (0xEAF7, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Big Key Chest': (0xEAF1, False, 'in Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Mini Helmasaur Room - Left': (0xEAFD, False, 'atop Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Mini Helmasaur Room - Right': (0xEB00, False, 'atop Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Pre-Moldorm Chest': (0xEB03, False, 'atop Ganon\'s Tower'), | ||
|  |                   'Ganons Tower - Validation Chest': (0xEB06, False, 'atop Ganon\'s Tower'), | ||
|  |                   'Ganon': (None, False, 'from me'), | ||
|  |                   'Agahnim 1': (None, False, 'from Ganon\'s wizardry form'), | ||
|  |                   'Agahnim 2': (None, False, 'from Ganon\'s wizardry form'), | ||
|  |                   'Floodgate': (None, False, None), | ||
|  |                   'Frog': (None, False, None), | ||
|  |                   'Missing Smith': (None, False, None), | ||
|  |                   'Dark Blacksmith Ruins': (None, False, None), | ||
|  |                   'Eastern Palace - Prize': ([0x1209D, 0x53EF8, 0x53EF9, 0x180052, 0x18007C, 0xC6FE], True, 'Eastern Palace'), | ||
|  |                   'Desert Palace - Prize': ([0x1209E, 0x53F1C, 0x53F1D, 0x180053, 0x180078, 0xC6FF], True, 'Desert Palace'), | ||
|  |                   'Tower of Hera - Prize': ([0x120A5, 0x53F0A, 0x53F0B, 0x18005A, 0x18007A, 0xC706], True, 'Tower of Hera'), | ||
|  |                   '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')} |