From 26e8e23fcec134cb960c81d5319f4475d4a27c40 Mon Sep 17 00:00:00 2001 From: aerinon Date: Tue, 19 Apr 2022 13:56:39 -0600 Subject: [PATCH] Initial work on new pottery modes --- BaseClasses.py | 19 +- CLI.py | 3 +- ItemList.py | 2 +- Main.py | 3 +- Mystery.py | 1 + PotShuffle.py | 1208 ++++++++++++----- Regions.py | 17 +- Rom.py | 20 +- Rules.py | 4 +- Utils.py | 15 +- data/base2current.bps | Bin 85671 -> 89955 bytes resources/app/cli/args.json | 8 + resources/app/cli/lang/en.json | 6 + resources/app/gui/lang/en.json | 5 + .../app/gui/randomize/dungeon/widgets.json | 5 + source/classes/constants.py | 1 + source/dungeon/RoomList.py | 58 + source/dungeon/RoomObject.py | 34 + source/item/FillUtil.py | 2 +- 19 files changed, 1049 insertions(+), 362 deletions(-) create mode 100644 source/dungeon/RoomList.py create mode 100644 source/dungeon/RoomObject.py diff --git a/BaseClasses.py b/BaseClasses.py index e997054c..c70bcd59 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -16,6 +16,7 @@ from EntranceShuffle import door_addresses, indirect_connections from Utils import int16_as_bytes from Tables import normal_offset_table, spiral_offset_table, multiply_lookup, divisor_lookup from RoomData import Room +from source.dungeon.RoomObject import RoomObject class World(object): @@ -139,6 +140,8 @@ class World(object): set_player_attr('pot_contents', None) set_player_attr('pseudoboots', False) set_player_attr('collection_rate', False) + set_player_attr('colorizepots', False) + set_player_attr('pot_pool', {}) set_player_attr('shopsanity', False) set_player_attr('mixed_travel', 'prevent') @@ -2709,7 +2712,7 @@ class PotFlags(FastEnum): class Pot(object): - def __init__(self, x, y, item, room, flags = PotFlags.Normal): + def __init__(self, x, y, item, room, flags=PotFlags.Normal, obj=None): self.x = x self.y = y self.item = item @@ -2717,9 +2720,12 @@ class Pot(object): self.flags = flags self.indicator = None # 0x80 for standing item, 0xC0 multiworld item self.standing_item_code = None # standing item code if nay + self.obj_ref = obj + self.location = None # location back ref def copy(self): - return Pot(self.x, self.y, self.item, self.room, self.flags) + obj_ref = RoomObject(self.obj_ref.address, self.obj_ref.data) if self.obj_ref else None + return Pot(self.x, self.y, self.item, self.room, self.flags, obj_ref) def pot_data(self): high_byte = self.y @@ -2730,6 +2736,12 @@ class Pot(object): item = self.item if not self.indicator else self.standing_item_code return [self.x, high_byte, item] + def __eq__(self, other): + return self.x == other.x and self.y == other.y and self.room == other.room + + def __hash__(self): + return hash((self.x, self.y, self.room)) + # byte 0: DDDE EEEE (DR, ER) dr_mode = {"basic": 1, "crossed": 2, "vanilla": 0} @@ -2753,7 +2765,8 @@ mixed_travel_mode = {"prevent": 0, "allow": 1, "force": 2} # new byte 4: ?DDD PPPP (unused, drop, pottery) # dropshuffle reserves 2 bits, pottery needs 2 but reserves 2 for future modes) -pottery_mode = {"none": 0, "shuffle": 1, "keys": 2, "lottery": 3, 'dungeon': 4, 'cave': 5} +pottery_mode = {'none': 0, 'keys': 2, 'lottery': 3, 'dungeon': 4, 'cave': 5, 'cavekeys': 6, 'reduced': 7, + 'clustered': 8, 'nonempty': 9} # byte 5: CCCC CTTX (crystals gt, ctr2, experimental) counter_mode = {"default": 0, "off": 1, "on": 2, "pickup": 3} diff --git a/CLI.py b/CLI.py index a6a88d23..0019aba5 100644 --- a/CLI.py +++ b/CLI.py @@ -108,7 +108,7 @@ def parse_cli(argv, no_defaults=False): 'ow_palettes', 'uw_palettes', 'sprite', 'disablemusic', 'quickswap', 'fastmenu', 'heartcolor', 'heartbeep', 'remote_items', 'shopsanity', 'dropshuffle', 'pottery', 'keydropshuffle', 'mixed_travel', 'standardize_palettes', 'code', 'reduce_flashing', 'shuffle_sfx', - 'msu_resume', 'collection_rate']: + 'msu_resume', 'collection_rate', 'colorizepots']: value = getattr(defaults, name) if getattr(playerargs, name) is None else getattr(playerargs, name) if player == 1: setattr(ret, name, {1: value}) @@ -165,6 +165,7 @@ def parse_settings(): 'keydropshuffle': False, 'dropshuffle': False, 'pottery': 'none', + 'colorizepots': False, 'shufflepots': False, "mapshuffle": False, "compassshuffle": False, diff --git a/ItemList.py b/ItemList.py index b10eb9ae..e30d5e5c 100644 --- a/ItemList.py +++ b/ItemList.py @@ -764,7 +764,7 @@ def add_pot_contents(world, player): for super_tile, pot_list in vanilla_pots.items(): for pot in pot_list: if pot.item not in [PotItem.Hole, PotItem.Key, PotItem.Switch]: - if valid_pot_location(pot, world, player): + if valid_pot_location(pot, world.pot_pool[player], world, player): world.itempool.append(ItemFactory(pot_items[pot.item], player)) diff --git a/Main.py b/Main.py index 347b3521..07a3d7da 100644 --- a/Main.py +++ b/Main.py @@ -110,6 +110,7 @@ def main(args, seed=None, fish=None): world.overworld_map = args.overworld_map.copy() world.restrict_boss_items = args.restrict_boss_items.copy() world.collection_rate = args.collection_rate.copy() + world.colorizepots = args.colorizepots.copy() world.rom_seeds = {player: random.randint(0, 999999999) for player in range(1, world.players + 1)} @@ -160,7 +161,7 @@ def main(args, seed=None, fish=None): logger.info(world.fish.translate("cli", "cli", "shuffling.pots")) for player in range(1, world.players + 1): if world.potshuffle[player]: - if world.pottery[player] not in ['lottery', 'dungeon']: + if world.pottery[player] in ['none', 'cave', 'keys', 'cavekeys']: shuffle_pots(world, player) else: shuffle_pot_switches(world, player) diff --git a/Mystery.py b/Mystery.py index a4d454ba..31f212cd 100644 --- a/Mystery.py +++ b/Mystery.py @@ -180,6 +180,7 @@ def roll_settings(weights): ret.shopsanity = get_choice('shopsanity') == 'on' ret.dropshuffle = get_choice('dropshuffle') == 'on' ret.pottery = get_choice('pottery') if 'pottery' in weights else 'none' + ret.colorizepots = get_choice('colorizepots') == 'on' ret.shufflepots = get_choice('pot_shuffle') == 'on' ret.mixed_travel = get_choice('mixed_travel') if 'mixed_travel' in weights else 'prevent' ret.standardize_palettes = get_choice('standardize_palettes') if 'standardize_palettes' in weights else 'standardize' diff --git a/PotShuffle.py b/PotShuffle.py index 8b2cc33c..9b28704d 100644 --- a/PotShuffle.py +++ b/PotShuffle.py @@ -1,7 +1,11 @@ +import RaceRandom as random + from collections import defaultdict -from BaseClasses import PotItem, Pot, PotFlags, CrystalBarrier, LocationType -from Utils import int16_as_bytes, pc_to_snes +from BaseClasses import PotItem, Pot, PotFlags, CrystalBarrier, LocationType, RegionType +from Utils import int16_as_bytes, pc_to_snes, snes_to_pc + +from source.dungeon.RoomObject import RoomObject, Shuffled_Pot movable_switch_rooms = defaultdict(lambda: [], {'PoD Stalfos Basement': ['PoD Basement Ledge'], @@ -18,346 +22,838 @@ invalid_key_rooms = { } vanilla_pots = { - 2: [Pot(80, 6, PotItem.Nothing, 'Sewers Yet More Rats', PotFlags.LowerRegion), - Pot(80, 8, PotItem.Nothing, 'Sewers Yet More Rats', PotFlags.LowerRegion), - Pot(44, 8, PotItem.Nothing, 'Sewers Yet More Rats', PotFlags.LowerRegion), - Pot(44, 10, PotItem.Nothing, 'Sewers Yet More Rats', PotFlags.LowerRegion)], - 4: [Pot(162, 25, PotItem.Nothing, 'TR Dash Room'), Pot(152, 25, PotItem.Nothing, 'TR Dash Room'), Pot(152, 22, PotItem.Nothing, 'TR Dash Room'), Pot(162, 22, PotItem.Nothing, 'TR Dash Room'), Pot(204, 19, PotItem.Bomb, 'TR Tongue Pull'), - Pot(240, 19, PotItem.Bomb, 'TR Tongue Pull')], - 9: [Pot(12, 4, PotItem.OneRupee, 'PoD Shooter Room'), Pot(48, 4, PotItem.Heart, 'PoD Shooter Room'), Pot(12, 12, PotItem.Switch, 'PoD Shooter Room')], - 0xa: [Pot(96, 8, PotItem.Heart, 'PoD Stalfos Basement'), Pot(104, 8, PotItem.Heart, 'PoD Stalfos Basement'), - Pot(204, 11, PotItem.Switch, 'PoD Stalfos Basement'), Pot(100, 9, PotItem.Nothing, 'PoD Stalfos Basement'), - Pot(100, 7, PotItem.Nothing, 'PoD Stalfos Basement'), - Pot(156, 17, PotItem.Bomb, 'PoD Basement Ledge', PotFlags.SwitchLogicChange), - Pot(160, 17, PotItem.FiveArrows, 'PoD Basement Ledge', PotFlags.SwitchLogicChange)], - 0xb: [Pot(202, 3, PotItem.Bomb, 'PoD Dark Pegs Left'), Pot(202, 12, PotItem.Bomb, 'PoD Dark Pegs Left')], - 0x11: [Pot(152, 19, PotItem.Nothing, 'Sewers Secret Room'), Pot(152, 15, PotItem.Nothing, 'Sewers Secret Room'), Pot(144, 15, PotItem.Heart, 'Sewers Secret Room'), Pot(160, 15, PotItem.Heart, 'Sewers Secret Room'), - Pot(144, 19, PotItem.Heart, 'Sewers Secret Room'), Pot(160, 19, PotItem.Heart, 'Sewers Secret Room')], - 0x15: [Pot(96, 4, PotItem.Bomb, 'TR Pipe Pit'), Pot(100, 4, PotItem.SmallMagic, 'TR Pipe Pit'), Pot(104, 4, PotItem.Heart, 'TR Pipe Pit'), Pot(108, 4, PotItem.SmallMagic, 'TR Pipe Pit'), Pot(112, 4, PotItem.FiveArrows, 'TR Pipe Pit'), - Pot(12, 6, PotItem.OneRupee, 'TR Pipe Pit'), Pot(16, 6, PotItem.FiveArrows, 'TR Pipe Pit'), Pot(20, 6, PotItem.FiveRupees, 'TR Pipe Pit'), Pot(70, 11, PotItem.BigMagic, 'TR Pipe Ledge')], - 0x16: [Pot(188, 3, PotItem.Heart, 'Swamp I'), Pot(192, 3, PotItem.Heart, 'Swamp I'), Pot(188, 4, PotItem.SmallMagic, 'Swamp I'), Pot(192, 4, PotItem.SmallMagic, 'Swamp I'), Pot(188, 5, PotItem.FiveArrows, 'Swamp I'), - Pot(192, 5, PotItem.FiveArrows, 'Swamp I'), Pot(188, 6, PotItem.Bomb, 'Swamp I'), Pot(192, 6, PotItem.Bomb, 'Swamp I'), Pot(240, 19, PotItem.Key, 'Swamp Waterway')], - 0x17: [Pot(100, 13, PotItem.Heart, 'Hera 5F Pot Block'), Pot(100, 14, PotItem.Heart, 'Hera 5F Pot Block'), Pot(100, 15, PotItem.Heart, 'Hera 5F Pot Block'), Pot(100, 16, PotItem.Heart, 'Hera 5F Pot Block'), Pot(100, 17, PotItem.Heart, 'Hera 5F Pot Block'), Pot(100, 18, PotItem.Heart, 'Hera 5F Pot Block'), - Pot(104, 13, PotItem.Heart, 'Hera 5F Pot Block'), Pot(104, 14, PotItem.Heart, 'Hera 5F Pot Block'), Pot(104, 15, PotItem.Heart, 'Hera 5F Pot Block'), Pot(104, 16, PotItem.Heart, 'Hera 5F Pot Block'), Pot(104, 17, PotItem.Heart, 'Hera 5F Pot Block'), Pot(104, 18, PotItem.Heart, 'Hera 5F Pot Block')], - 26: [Pot(28, 5, PotItem.Bomb, 'PoD Falling Bridge Ledge'), Pot(32, 5, PotItem.Bomb, 'PoD Falling Bridge Ledge'), Pot(28, 27, PotItem.Bomb, 'PoD Falling Bridge'), Pot(32, 27, PotItem.Bomb, 'PoD Falling Bridge'), - Pot(232, 19, PotItem.Nothing, 'PoD Harmless Hellway'), Pot(212, 19, PotItem.Nothing, 'PoD Harmless Hellway')], - 27: [Pot(20, 23, PotItem.FiveArrows, 'PoD Mimics 2'), Pot(40, 23, PotItem.FiveArrows, 'PoD Mimics 2')], - 30: [Pot(84, 9, PotItem.Bomb, 'Ice Bomb Drop')], - 31: [Pot(28, 25, PotItem.Switch, 'Ice Pengator Switch'), Pot(28, 23, PotItem.Nothing, 'Ice Pengator Switch'), Pot(86, 26, PotItem.Nothing, 'Ice Big Key'), Pot(86, 27, PotItem.Nothing, 'Ice Big Key')], - 33: [Pot(160, 20, PotItem.Nothing, 'Sewers Key Rat'), Pot(168, 24, PotItem.SmallMagic, 'Sewers Key Rat'), Pot(48, 28, PotItem.Heart, 'Sewers Key Rat'), Pot(82, 28, PotItem.SmallMagic, 'Sewers Key Rat'), - Pot(100, 28, PotItem.Nothing, 'Sewers Key Rat'), Pot(104, 28, PotItem.Nothing, 'Sewers Key Rat')], - 35: [Pot(86, 26, PotItem.OneRupee, 'TR Lazy Eyes'), Pot(90, 26, PotItem.Heart, 'TR Lazy Eyes'), Pot(94, 26, PotItem.OneRupee, 'TR Lazy Eyes'), Pot(98, 26, PotItem.Bomb, 'TR Lazy Eyes'), Pot(102, 26, PotItem.OneRupee, 'TR Lazy Eyes')], - 36: [Pot(12, 4, PotItem.FiveRupees, 'TR Twin Pokeys'), Pot(48, 4, PotItem.Heart, 'TR Twin Pokeys'), Pot(12, 12, PotItem.SmallMagic, 'TR Twin Pokeys'), Pot(48, 12, PotItem.OneRupee, 'TR Twin Pokeys')], - 38: [Pot(28, 4, PotItem.Bomb, 'Swamp Shooters'), Pot(12, 8, PotItem.SmallMagic, 'Swamp Shooters'), Pot(150, 19, PotItem.Switch, 'Swamp Push Statue'), Pot(22, 26, PotItem.FiveRupees, 'Swamp Push Statue'), - Pot(220, 26, PotItem.FiveArrows, 'Swamp Push Statue', PotFlags.SwitchLogicChange)], - 39: [Pot(214, 19, PotItem.Nothing, 'Hera 4F'), Pot(214, 20, PotItem.Nothing, 'Hera 4F'), Pot(166, 20, PotItem.Bomb, 'Hera 4F'), Pot(214, 21, PotItem.Heart, 'Hera 4F'), Pot(40, 28, PotItem.OneRupee, 'Hera 4F'), - Pot(44, 28, PotItem.OneRupee, 'Hera 4F'), Pot(80, 28, PotItem.FiveRupees, 'Hera 4F'), Pot(84, 28, PotItem.FiveRupees, 'Hera 4F'), Pot(102, 17, PotItem.Nothing, 'Hera 4F'), Pot(98, 17, PotItem.Nothing, 'Hera 4F'), - Pot(106, 17, PotItem.Nothing, 'Hera 4F'), Pot(166, 21, PotItem.Nothing, 'Hera 4F'), Pot(166, 19, PotItem.Nothing, 'Hera 4F'), Pot(92, 12, PotItem.Nothing, 'Hera 4F'), Pot(160, 12, PotItem.Nothing, 'Hera 4F')], - 42: [Pot(80, 12, PotItem.OneRupee, 'PoD Arena Main'), Pot(80, 19, PotItem.Heart, 'PoD Arena Main')], - 43: [Pot(16, 5, PotItem.Heart, 'PoD Sexy Statue'), Pot(44, 5, PotItem.Switch, 'PoD Sexy Statue'), Pot(16, 6, PotItem.Heart, 'PoD Sexy Statue'), Pot(44, 6, PotItem.Bomb, 'PoD Sexy Statue'), Pot(16, 7, PotItem.Heart, 'PoD Sexy Statue'), - Pot(44, 7, PotItem.Bomb, 'PoD Sexy Statue'), Pot(146, 21, PotItem.Bomb, 'PoD Map Balcony'), Pot(170, 21, PotItem.FiveArrows, 'PoD Map Balcony'), Pot(146, 22, PotItem.Bomb, 'PoD Map Balcony'), - Pot(170, 22, PotItem.FiveArrows, 'PoD Map Balcony')], - 44: [Pot(108, 24, PotItem.Heart, 'Hookshot Cave (Middle)'), Pot(112, 24, PotItem.Heart, 'Hookshot Cave (Middle)')], - 0x2F: [Pot(28, 7, PotItem.Heart, 'Kakariko Well (back)'), Pot(32, 7, PotItem.Heart, 'Kakariko Well (back)'), - Pot(28, 9, PotItem.FiveRupees, 'Kakariko Well (back)'), Pot(32, 9, PotItem.FiveRupees, 'Kakariko Well (back)'), - Pot(172, 19, PotItem.FiveRupees, 'Kakariko Well (top)'), Pot(180, 19, PotItem.FiveRupees, 'Kakariko Well (top)'), - Pot(104, 27, PotItem.Heart, 'Kakariko Well (bottom)'), Pot(104, 28, PotItem.Heart, 'Kakariko Well (bottom)')], - 49: [Pot(92, 28, PotItem.Bomb, 'Hera Beetles'), Pot(96, 28, PotItem.Nothing, 'Hera Beetles')], - 50: [Pot(28, 13, PotItem.SmallMagic, 'Sewers Dark Cross')], - 52: [Pot(78, 8, PotItem.FiveRupees, 'Swamp Barrier Ledge'), Pot(92, 8, PotItem.FiveRupees, 'Swamp Barrier Ledge')], - 0x35: [Pot(60, 6, PotItem.Key, 'Swamp Trench 2 Alcove'), Pot(20, 8, PotItem.FiveRupees, 'Swamp Big Key Ledge'), Pot(24, 8, PotItem.FiveRupees, 'Swamp Big Key Ledge'), Pot(28, 8, PotItem.FiveRupees, 'Swamp Big Key Ledge'), - Pot(32, 8, PotItem.FiveRupees, 'Swamp Big Key Ledge'), Pot(36, 8, PotItem.FiveRupees, 'Swamp Big Key Ledge'), Pot(48, 20, PotItem.Heart, 'Swamp Trench 2 Departure'), Pot(76, 23, PotItem.Nothing, 'Swamp Trench 2 Pots'), - Pot(88, 23, PotItem.Nothing, 'Swamp Trench 2 Pots'), Pot(100, 27, PotItem.Nothing, 'Swamp Trench 2 Pots'), Pot(242, 28, PotItem.Nothing, 'Swamp Trench 2 Pots'), Pot(240, 22, PotItem.Heart, 'Swamp Trench 2 Pots'), - Pot(76, 28, PotItem.Heart, 'Swamp Trench 2 Pots')], - 0x36: [Pot(108, 4, PotItem.Bomb, 'Swamp Hub Dead Ledge'), Pot(112, 4, PotItem.FiveRupees, 'Swamp Hub Dead Ledge'), - Pot(10, 16, PotItem.Heart, 'Swamp Hub Side Ledges'), Pot(154, 15, PotItem.Nothing, 'Swamp Hub Side Ledges'), - Pot(114, 16, PotItem.Key, 'Swamp Hub Side Ledges'), Pot(222, 15, PotItem.Nothing, 'Swamp Hub Side Ledges'), - Pot(188, 5, PotItem.Nothing, 'Swamp Hub North Ledge'), - Pot(192, 5, PotItem.Nothing, 'Swamp Hub North Ledge')], - 0x37: [Pot(60, 6, PotItem.Key, 'Swamp Trench 1 Alcove'), Pot(48, 20, PotItem.Nothing, 'Swamp Trench 1 Key Ledge')], - 0x38: [Pot(164, 12, PotItem.Bomb, 'Swamp Pot Row'), Pot(164, 13, PotItem.FiveRupees, 'Swamp Pot Row'), Pot(164, 18, PotItem.Bomb, 'Swamp Pot Row'), Pot(164, 19, PotItem.Key, 'Swamp Pot Row')], - 0x39: [Pot(12, 20, PotItem.Heart, 'Skull Spike Corner'), Pot(48, 28, PotItem.FiveArrows, 'Skull Spike Corner'), Pot(100, 22, PotItem.SmallMagic, 'Skull Final Drop'), Pot(100, 26, PotItem.FiveArrows, 'Skull Final Drop')], - 0x3C: [Pot(24, 8, PotItem.SmallMagic, 'Hookshot Cave (Hook Islands)'), - Pot(64, 12, PotItem.FiveRupees, 'Hookshot Cave (Hook Islands)'), - Pot(20, 14, PotItem.OneRupee, 'Hookshot Cave (Hook Islands)'), - Pot(20, 19, PotItem.Nothing, 'Hookshot Cave (Hook Islands)'), - Pot(68, 18, PotItem.FiveRupees, 'Hookshot Cave (Bonk Islands)'), - Pot(96, 19, PotItem.Heart, 'Hookshot Cave (Front)'), - Pot(64, 20, PotItem.FiveRupees, 'Hookshot Cave (Bonk Islands)'), - Pot(64, 26, PotItem.FiveRupees, 'Hookshot Cave (Bonk Islands)')], - 0x3D: [Pot(76, 12, PotItem.Bomb, 'GT Mini Helmasaur Room'), Pot(112, 12, PotItem.Bomb, 'GT Mini Helmasaur Room'), Pot(24, 22, PotItem.Heart, 'GT Crystal Inner Circle'), Pot(40, 22, PotItem.FiveArrows, 'GT Crystal Inner Circle'), - Pot(32, 24, PotItem.Heart, 'GT Crystal Inner Circle'), Pot(20, 26, PotItem.FiveRupees, 'GT Crystal Inner Circle'), Pot(36, 26, PotItem.BigMagic, 'GT Crystal Inner Circle')], - 0x3E: [Pot(96, 6, PotItem.Bomb, 'Ice Stalfos Hint'), Pot(100, 6, PotItem.SmallMagic, 'Ice Stalfos Hint'), Pot(88, 10, PotItem.Heart, 'Ice Stalfos Hint'), Pot(92, 10, PotItem.SmallMagic, 'Ice Stalfos Hint')], - 0x3F: [Pot(12, 25, PotItem.OneRupee, 'Ice Hammer Block'), Pot(20, 25, PotItem.OneRupee, 'Ice Hammer Block'), - Pot(12, 26, PotItem.Bomb, 'Ice Hammer Block'), Pot(20, 26, PotItem.Bomb, 'Ice Hammer Block'), - Pot(12, 27, PotItem.Switch, 'Ice Hammer Block'), Pot(20, 27, PotItem.Heart, 'Ice Hammer Block'), + 2: [Pot(80, 6, PotItem.Nothing, 'Sewers Yet More Rats', PotFlags.LowerRegion, obj=RoomObject(0x0A8B57, [0xA3, 0x33, 0xFA])), + Pot(80, 8, PotItem.Nothing, 'Sewers Yet More Rats', PotFlags.LowerRegion, obj=RoomObject(0x0A8B5A, [0xA3, 0x43, 0xFA])), + Pot(44, 8, PotItem.Nothing, 'Sewers Yet More Rats', PotFlags.LowerRegion, obj=RoomObject(0x0A8B5D, [0x5B, 0x43, 0xFA])), + Pot(44, 10, PotItem.Nothing, 'Sewers Yet More Rats', PotFlags.LowerRegion, obj=RoomObject(0x0A8B60, [0x5B, 0x53, 0xFA]))], + 4: [Pot(162, 25, PotItem.Nothing, 'TR Dash Room', obj=RoomObject(0x1FE220, [0x47, 0xCF, 0xFA])), + Pot(152, 25, PotItem.Nothing, 'TR Dash Room', obj=RoomObject(0x1FE21D, [0x33, 0xCF, 0xFA])), + Pot(152, 22, PotItem.Nothing, 'TR Dash Room', obj=RoomObject(0x1FE217, [0x33, 0xB7, 0xFA])), + Pot(162, 22, PotItem.Nothing, 'TR Dash Room', obj=RoomObject(0x1FE21A, [0x47, 0xB7, 0xFA])), + Pot(204, 19, PotItem.Bomb, 'TR Tongue Pull', obj=RoomObject(0x1FE241, [0x9B, 0x9F, 0xFA])), + Pot(240, 19, PotItem.Bomb, 'TR Tongue Pull', obj=RoomObject(0x1FE244, [0xE3, 0x9F, 0xFA]))], + 9: [Pot(12, 4, PotItem.OneRupee, 'PoD Shooter Room', obj=RoomObject(0x1FACEC, [0x1B, 0x23, 0xFA])), + Pot(48, 4, PotItem.Heart, 'PoD Shooter Room', obj=RoomObject(0x1FACEF, [0x63, 0x23, 0xFA])), + Pot(12, 12, PotItem.Switch, 'PoD Shooter Room', obj=RoomObject(0x1FACF5, [0x1B, 0x63, 0xFA]))], + 0xa: [Pot(96, 8, PotItem.Heart, 'PoD Stalfos Basement', obj=RoomObject(0x1FA6EC, [0xC3, 0x43, 0xFA])), + Pot(104, 8, PotItem.Heart, 'PoD Stalfos Basement', obj=RoomObject(0x1FA6F2, [0xD3, 0x43, 0xFA])), + Pot(204, 11, PotItem.Switch, 'PoD Stalfos Basement', obj=RoomObject(0x1FA6FB, [0x9B, 0x5F, 0xFA])), + Pot(100, 9, PotItem.Nothing, 'PoD Stalfos Basement', obj=RoomObject(0x1FA6EF, [0xCB, 0x4B, 0xFA])), + Pot(100, 7, PotItem.Nothing, 'PoD Stalfos Basement', obj=RoomObject(0x1FA6F5, [0xCB, 0x3B, 0xFA])), + Pot(156, 17, PotItem.Bomb, 'PoD Basement Ledge', PotFlags.SwitchLogicChange, obj=RoomObject(0x1FA6E6, [0x3B, 0x8F, 0xFA])), + Pot(160, 17, PotItem.FiveArrows, 'PoD Basement Ledge', PotFlags.SwitchLogicChange, obj=RoomObject(0x1FA6E9, [0x43, 0x8F, 0xFA]))], + 0xb: [Pot(202, 3, PotItem.Bomb, 'PoD Dark Pegs Left', obj=RoomObject(0x1FAB48, [0x97, 0x1F, 0xFA])), + Pot(202, 12, PotItem.Bomb, 'PoD Dark Pegs Left', obj=RoomObject(0x1FAB4E, [0x97, 0x67, 0xFA]))], + 0x11: [Pot(152, 19, PotItem.Nothing, 'Sewers Secret Room', obj=RoomObject(0x0A8C07, [0x33, 0x9F, 0xFA])), + Pot(152, 15, PotItem.Nothing, 'Sewers Secret Room', obj=RoomObject(0x0A8BF5, [0x33, 0x7F, 0xFA])), + Pot(144, 15, PotItem.Heart, 'Sewers Secret Room', obj=RoomObject(0x0A8BF2, [0x23, 0x7F, 0xFA])), + Pot(160, 15, PotItem.Heart, 'Sewers Secret Room', obj=RoomObject(0x0A8BF8, [0x43, 0x7F, 0xFA])), + Pot(144, 19, PotItem.Heart, 'Sewers Secret Room', obj=RoomObject(0x0A8C04, [0x23, 0x9F, 0xFA])), + Pot(160, 19, PotItem.Heart, 'Sewers Secret Room', obj=RoomObject(0x0A8C0A, [0x43, 0x9F, 0xFA]))], + 0x15: [Pot(96, 4, PotItem.Bomb, 'TR Pipe Pit', obj=RoomObject(0x1FE551, [0xC3, 0x23, 0xFA])), + Pot(100, 4, PotItem.SmallMagic, 'TR Pipe Pit', obj=RoomObject(0x1FE554, [0xCB, 0x23, 0xFA])), + Pot(104, 4, PotItem.Heart, 'TR Pipe Pit', obj=RoomObject(0x1FE557, [0xD3, 0x23, 0xFA])), + Pot(108, 4, PotItem.SmallMagic, 'TR Pipe Pit', obj=RoomObject(0x1FE55A, [0xDB, 0x23, 0xFA])), + Pot(112, 4, PotItem.FiveArrows, 'TR Pipe Pit', obj=RoomObject(0x1FE55D, [0xE3, 0x23, 0xFA])), + Pot(12, 6, PotItem.OneRupee, 'TR Pipe Pit', obj=RoomObject(0x1FE548, [0x1B, 0x33, 0xFA])), + Pot(16, 6, PotItem.FiveArrows, 'TR Pipe Pit', obj=RoomObject(0x1FE54B, [0x23, 0x33, 0xFA])), + Pot(20, 6, PotItem.FiveRupees, 'TR Pipe Pit', obj=RoomObject(0x1FE54E, [0x2B, 0x33, 0xFA])), + Pot(70, 11, PotItem.BigMagic, 'TR Pipe Ledge', obj=RoomObject(0x1FE545, [0x8F, 0x5B, 0xFA]))], + 0x16: [Pot(188, 3, PotItem.Heart, 'Swamp I', obj=RoomObject(0x1FA09C, [0x7B, 0x1F, 0xFA])), + Pot(192, 3, PotItem.Heart, 'Swamp I', obj=RoomObject(0x1FA09F, [0x83, 0x1F, 0xFA])), + Pot(188, 4, PotItem.SmallMagic, 'Swamp I', obj=RoomObject(0x1FA0A2, [0x7B, 0x27, 0xFA])), + Pot(192, 4, PotItem.SmallMagic, 'Swamp I', obj=RoomObject(0x1FA0A5, [0x83, 0x27, 0xFA])), + Pot(188, 5, PotItem.FiveArrows, 'Swamp I', obj=RoomObject(0x1FA0A8, [0x7B, 0x2F, 0xFA])), + Pot(192, 5, PotItem.FiveArrows, 'Swamp I', obj=RoomObject(0x1FA0AB, [0x83, 0x2F, 0xFA])), + Pot(188, 6, PotItem.Bomb, 'Swamp I', obj=RoomObject(0x1FA0AE, [0x7B, 0x37, 0xFA])), + Pot(192, 6, PotItem.Bomb, 'Swamp I', obj=RoomObject(0x1FA0B1, [0x83, 0x37, 0xFA])), + Pot(240, 19, PotItem.Key, 'Swamp Waterway', obj=RoomObject(0x1FA0D8, [0xE3, 0x9F, 0xFA]))], + 0x17: [Pot(100, 13, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCCE0, [0xCB, 0x6B, 0xFA])), + Pot(100, 14, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCCE3, [0xCB, 0x73, 0xFA])), + Pot(100, 15, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCCE6, [0xCB, 0x7B, 0xFA])), + Pot(100, 16, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCCE9, [0xCB, 0x83, 0xFA])), + Pot(100, 17, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCCEC, [0xCB, 0x8B, 0xFA])), + Pot(100, 18, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCCEF, [0xCB, 0x93, 0xFA])), + Pot(104, 13, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCCF2, [0xD3, 0x6B, 0xFA])), + Pot(104, 14, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCCF5, [0xD3, 0x73, 0xFA])), + Pot(104, 15, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCCF8, [0xD3, 0x7B, 0xFA])), + Pot(104, 16, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCCFB, [0xD3, 0x83, 0xFA])), + Pot(104, 17, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCCFE, [0xD3, 0x8B, 0xFA])), + Pot(104, 18, PotItem.Heart, 'Hera 5F Pot Block', obj=RoomObject(0x1FCD01, [0xD3, 0x93, 0xFA]))], + 0x1A: [Pot(28, 5, PotItem.Bomb, 'PoD Falling Bridge Ledge', obj=RoomObject(0x1FA60D, [0x3B, 0x2B, 0xFA])), + Pot(32, 5, PotItem.Bomb, 'PoD Falling Bridge Ledge', obj=RoomObject(0x1FA610, [0x43, 0x2B, 0xFA])), + Pot(28, 27, PotItem.Bomb, 'PoD Falling Bridge', obj=RoomObject(0x1FA5F5, [0x3B, 0xDB, 0xFA])), + Pot(32, 27, PotItem.Bomb, 'PoD Falling Bridge', obj=RoomObject(0x1FA5F8, [0x43, 0xDB, 0xFA])), + Pot(232, 19, PotItem.Nothing, 'PoD Harmless Hellway', obj=RoomObject(0x1FA64C, [0xD3, 0x9F, 0xFA])), + Pot(212, 19, PotItem.Nothing, 'PoD Harmless Hellway', obj=RoomObject(0x1FA649, [0xAB, 0x9F, 0xFA]))], + 0x1B: [Pot(20, 23, PotItem.FiveArrows, 'PoD Mimics 2', obj=RoomObject(0x1FAAFE, [0x2B, 0xBB, 0xFA])), + Pot(40, 23, PotItem.FiveArrows, 'PoD Mimics 2', obj=RoomObject(0x1FAB01, [0x53, 0xBB, 0xFA]))], + 0x1E: [Pot(84, 9, PotItem.Bomb, 'Ice Bomb Drop', obj=RoomObject(0x1FC325, [0xAB, 0x4B, 0xFA]))], + 0x1F: [Pot(28, 25, PotItem.Switch, 'Ice Pengator Switch', obj=RoomObject(0x1FC38B, [0x3B, 0xCB, 0xFA])), + Pot(28, 23, PotItem.Nothing, 'Ice Pengator Switch', obj=RoomObject(0x1FC388, [0x3B, 0xBB, 0xFA])), + Pot(86, 26, PotItem.Nothing, 'Ice Big Key', obj=RoomObject(0x1FC397, [0xAF, 0xD3, 0xFA])), + Pot(86, 27, PotItem.Nothing, 'Ice Big Key', obj=RoomObject(0x1FC39A, [0xAF, 0xDB, 0xFA]))], + 0x21: [Pot(160, 20, PotItem.Nothing, 'Sewers Key Rat', obj=RoomObject(0x0A8C71, [0x43, 0xA7, 0xFA])), + Pot(168, 24, PotItem.SmallMagic, 'Sewers Key Rat', obj=RoomObject(0x0A8C7A, [0x53, 0xC7, 0xFA])), + Pot(48, 28, PotItem.Heart, 'Sewers Key Rat', obj=RoomObject(0x0A8C80, [0x63, 0xE3, 0xFA])), + Pot(82, 28, PotItem.SmallMagic, 'Sewers Key Rat', obj=RoomObject(0x0A8C7D, [0xA7, 0xE3, 0xFA])), + Pot(100, 28, PotItem.Nothing, 'Sewers Key Rat', obj=RoomObject(0x0A8C74, [0xCB, 0xE3, 0xFA])), + Pot(104, 28, PotItem.Nothing, 'Sewers Key Rat', obj=RoomObject(0x0A8C77, [0xD3, 0xE3, 0xFA]))], + 0x23: [Pot(86, 26, PotItem.OneRupee, 'TR Lazy Eyes', obj=RoomObject(0x1FED09, [0xAF, 0xD3, 0xFA])), + Pot(90, 26, PotItem.Heart, 'TR Lazy Eyes', obj=RoomObject(0x1FED0C, [0xB7, 0xD3, 0xFA])), + Pot(94, 26, PotItem.OneRupee, 'TR Lazy Eyes', obj=RoomObject(0x1FED0F, [0xBF, 0xD3, 0xFA])), + Pot(98, 26, PotItem.Bomb, 'TR Lazy Eyes', obj=RoomObject(0x1FED12, [0xC7, 0xD3, 0xFA])), + Pot(102, 26, PotItem.OneRupee, 'TR Lazy Eyes', obj=RoomObject(0x1FED15, [0xCF, 0xD3, 0xFA]))], + 0x24: [Pot(12, 4, PotItem.FiveRupees, 'TR Twin Pokeys', obj=RoomObject(0x1FE646, [0x1B, 0x23, 0xFA])), + Pot(48, 4, PotItem.Heart, 'TR Twin Pokeys', obj=RoomObject(0x1FE649, [0x63, 0x23, 0xFA])), + Pot(12, 12, PotItem.SmallMagic, 'TR Twin Pokeys', obj=RoomObject(0x1FE64C, [0x1B, 0x63, 0xFA])), + Pot(48, 12, PotItem.OneRupee, 'TR Twin Pokeys', obj=RoomObject(0x1FE64F, [0x63, 0x63, 0xFA]))], + 0x26: [Pot(28, 4, PotItem.Bomb, 'Swamp Shooters', obj=RoomObject(0x1F9BDD, [0x3B, 0x23, 0xFA])), + Pot(12, 8, PotItem.SmallMagic, 'Swamp Shooters', obj=RoomObject(0x1F9BDA, [0x1B, 0x43, 0xFA])), + Pot(150, 19, PotItem.Switch, 'Swamp Push Statue', obj=RoomObject(0x1F9C46, [0x2F, 0x9F, 0xFA])), + Pot(22, 26, PotItem.FiveRupees, 'Swamp Push Statue', obj=RoomObject(0x1F9C49, [0x2F, 0xD3, 0xFA])), + Pot(220, 26, PotItem.FiveArrows, 'Swamp Push Statue', PotFlags.SwitchLogicChange, obj=RoomObject(0x1F9C52, [0xBB, 0xD7, 0xFA]))], + 0x27: [Pot(214, 19, PotItem.Nothing, 'Hera 4F', obj=RoomObject(0x1FCE19, [0xAF, 0x9F, 0xFA])), + Pot(214, 20, PotItem.Nothing, 'Hera 4F', obj=RoomObject(0x1FCE1C, [0xAF, 0xA7, 0xFA])), + Pot(166, 20, PotItem.Bomb, 'Hera 4F', obj=RoomObject(0x1FCE28, [0x4F, 0xA7, 0xFA])), + Pot(214, 21, PotItem.Heart, 'Hera 4F', obj=RoomObject(0x1FCE1F, [0xAF, 0xAF, 0xFA])), + Pot(40, 28, PotItem.OneRupee, 'Hera 4F', obj=RoomObject(0x1FCE4C, [0x53, 0xE3, 0xFA])), + Pot(44, 28, PotItem.OneRupee, 'Hera 4F', obj=RoomObject(0x1FCE4F, [0x5B, 0xE3, 0xFA])), + Pot(80, 28, PotItem.FiveRupees, 'Hera 4F', obj=RoomObject(0x1FCE52, [0xA3, 0xE3, 0xFA])), + Pot(84, 28, PotItem.FiveRupees, 'Hera 4F', obj=RoomObject(0x1FCE55, [0xAB, 0xE3, 0xFA])), + Pot(102, 17, PotItem.Nothing, 'Hera 4F', obj=RoomObject(0x1FCE07, [0xCF, 0x8B, 0xFA])), + Pot(98, 17, PotItem.Nothing, 'Hera 4F', obj=RoomObject(0x1FCE04, [0xC7, 0x8B, 0xFA])), + Pot(106, 17, PotItem.Nothing, 'Hera 4F', obj=RoomObject(0x1FCE0A, [0xD7, 0x8B, 0xFA])), + Pot(166, 21, PotItem.Nothing, 'Hera 4F', obj=RoomObject(0x1FCE2B, [0x4F, 0xAF, 0xFA])), + Pot(166, 19, PotItem.Nothing, 'Hera 4F', obj=RoomObject(0x1FCE25, [0x4F, 0x9F, 0xFA])), + Pot(92, 12, PotItem.Nothing, 'Hera 4F', obj=RoomObject(0x1FCDF8, [0xBB, 0x63, 0xFA])), + Pot(160, 12, PotItem.Nothing, 'Hera 4F', obj=RoomObject(0x1FCDE0, [0x43, 0x67, 0xFA]))], + 0x2A: [Pot(80, 12, PotItem.OneRupee, 'PoD Arena Main', obj=RoomObject(0x1FA57F, [0xA3, 0x63, 0xFA])), + Pot(80, 19, PotItem.Heart, 'PoD Arena Main', obj=RoomObject(0x1FA582, [0xA3, 0x9B, 0xFA]))], + 0x2B: [Pot(16, 5, PotItem.Heart, 'PoD Sexy Statue', obj=RoomObject(0x1FAA14, [0x23, 0x2B, 0xFA])), + Pot(44, 5, PotItem.Switch, 'PoD Sexy Statue', obj=RoomObject(0x1FAA1D, [0x5B, 0x2B, 0xFA])), + Pot(16, 6, PotItem.Heart, 'PoD Sexy Statue', obj=RoomObject(0x1FAA17, [0x23, 0x33, 0xFA])), + Pot(44, 6, PotItem.Bomb, 'PoD Sexy Statue', obj=RoomObject(0x1FAA20, [0x5B, 0x33, 0xFA])), + Pot(16, 7, PotItem.Heart, 'PoD Sexy Statue', obj=RoomObject(0x1FAA1A, [0x23, 0x3B, 0xFA])), + Pot(44, 7, PotItem.Bomb, 'PoD Sexy Statue', obj=RoomObject(0x1FAA23, [0x5B, 0x3B, 0xFA])), + Pot(146, 21, PotItem.Bomb, 'PoD Map Balcony', obj=RoomObject(0x1FAA44, [0x27, 0xAF, 0xFA])), + Pot(170, 21, PotItem.FiveArrows, 'PoD Map Balcony', obj=RoomObject(0x1FAA4A, [0x57, 0xAF, 0xFA])), + Pot(146, 22, PotItem.Bomb, 'PoD Map Balcony', obj=RoomObject(0x1FAA47, [0x27, 0xB7, 0xFA])), + Pot(170, 22, PotItem.FiveArrows, 'PoD Map Balcony', obj=RoomObject(0x1FAA4D, [0x57, 0xB7, 0xFA]))], + 0x2C: [Pot(108, 24, PotItem.Heart, 'Hookshot Cave (Middle)', obj=RoomObject(0x0A889F, [0xDB, 0xC3, 0xFA])), + Pot(112, 24, PotItem.Heart, 'Hookshot Cave (Middle)', obj=RoomObject(0x0A88A2, [0xE3, 0xC3, 0xFA]))], + 0x2F: [Pot(28, 7, PotItem.Heart, 'Kakariko Well (back)', obj=RoomObject(0x0A8744, [0x3B, 0x3B, 0xFA])), + Pot(32, 7, PotItem.Heart, 'Kakariko Well (back)', obj=RoomObject(0x0A8747, [0x43, 0x3B, 0xFA])), + Pot(28, 9, PotItem.FiveRupees, 'Kakariko Well (back)', obj=RoomObject(0x0A874A, [0x3B, 0x4B, 0xFA])), + Pot(32, 9, PotItem.FiveRupees, 'Kakariko Well (back)', obj=RoomObject(0x0A874D, [0x43, 0x4B, 0xFA])), + Pot(172, 19, PotItem.FiveRupees, 'Kakariko Well (top)', obj=RoomObject(0x0A8762, [0x5B, 0x9F, 0xFA])), + Pot(180, 19, PotItem.FiveRupees, 'Kakariko Well (top)', obj=RoomObject(0x0A8765, [0x6B, 0x9F, 0xFA])), + Pot(104, 27, PotItem.Heart, 'Kakariko Well (bottom)', obj=RoomObject(0x0A8771, [0xD3, 0xDB, 0xFA])), + Pot(104, 28, PotItem.Heart, 'Kakariko Well (bottom)', obj=RoomObject(0x0A8774, [0xD3, 0xE3, 0xFA]))], + 0x31: [Pot(92, 28, PotItem.Bomb, 'Hera Beetles', obj=RoomObject(0x1FCF10, [0xBB, 0xE3, 0xFA])), + Pot(96, 28, PotItem.Nothing, 'Hera Beetles', obj=RoomObject(0x1FCF13, [0xC3, 0xE3, 0xFA]))], + 0x32: [Pot(28, 13, PotItem.SmallMagic, 'Sewers Dark Cross', obj=RoomObject(0x0A8E12, [0x3B, 0x6B, 0xFA]))], + 0x34: [Pot(78, 8, PotItem.FiveRupees, 'Swamp Barrier Ledge', obj=RoomObject(0x1F98A3, [0x9F, 0x43, 0xFA])), + Pot(92, 8, PotItem.FiveRupees, 'Swamp Barrier Ledge', obj=RoomObject(0x1F98A6, [0xBB, 0x43, 0xFA]))], + 0x35: [Pot(60, 6, PotItem.Key, 'Swamp Trench 2 Alcove', obj=RoomObject(0x1F979A, [0x7B, 0x33, 0xFA])), + Pot(20, 8, PotItem.FiveRupees, 'Swamp Big Key Ledge', obj=RoomObject(0x1F9725, [0x2B, 0x43, 0xFA])), + Pot(24, 8, PotItem.FiveRupees, 'Swamp Big Key Ledge', obj=RoomObject(0x1F9728, [0x33, 0x43, 0xFA])), + Pot(28, 8, PotItem.FiveRupees, 'Swamp Big Key Ledge', obj=RoomObject(0x1F972B, [0x3B, 0x43, 0xFA])), + Pot(32, 8, PotItem.FiveRupees, 'Swamp Big Key Ledge', obj=RoomObject(0x1F972E, [0x43, 0x43, 0xFA])), + Pot(36, 8, PotItem.FiveRupees, 'Swamp Big Key Ledge', obj=RoomObject(0x1F9731, [0x4B, 0x43, 0xFA])), + Pot(48, 20, PotItem.Heart, 'Swamp Trench 2 Departure', obj=RoomObject(0x1F9764, [0x63, 0xA3, 0xFA])), + Pot(76, 23, PotItem.Nothing, 'Swamp Trench 2 Pots', obj=RoomObject(0x1F976A, [0x9B, 0xBB, 0xFA])), + Pot(88, 23, PotItem.Nothing, 'Swamp Trench 2 Pots', obj=RoomObject(0x1F9776, [0xB3, 0xBB, 0xFA])), + Pot(100, 27, PotItem.Nothing, 'Swamp Trench 2 Pots', obj=RoomObject(0x1F9773, [0xCB, 0xDB, 0xFA])), + Pot(242, 28, PotItem.Nothing, 'Swamp Trench 2 Pots', obj=RoomObject(0x1F9779, [0xE7, 0xE7, 0xFA])), + Pot(240, 22, PotItem.Heart, 'Swamp Trench 2 Pots', obj=RoomObject(0x1F9770, [0xE3, 0xB7, 0xFA])), + Pot(76, 28, PotItem.Heart, 'Swamp Trench 2 Pots', obj=RoomObject(0x1F976D, [0x9B, 0xE3, 0xFA]))], + 0x36: [Pot(108, 4, PotItem.Bomb, 'Swamp Hub Dead Ledge', obj=RoomObject(0x1F9631, [0xDB, 0x23, 0xFA])), + Pot(112, 4, PotItem.FiveRupees, 'Swamp Hub Dead Ledge', obj=RoomObject(0x1F9634, [0xE3, 0x23, 0xFA])), + Pot(10, 16, PotItem.Heart, 'Swamp Hub Side Ledges', obj=RoomObject(0x1F9625, [0x17, 0x83, 0xFA])), + Pot(154, 15, PotItem.Nothing, 'Swamp Hub Side Ledges', obj=RoomObject(0x1F9628, [0x37, 0x7F, 0xFA])), + Pot(114, 16, PotItem.Key, 'Swamp Hub Side Ledges', obj=RoomObject(0x1F963A, [0xE7, 0x83, 0xFA])), + Pot(222, 15, PotItem.Nothing, 'Swamp Hub Side Ledges', obj=RoomObject(0x1F9637, [0xBF, 0x7F, 0xFA])), + Pot(188, 5, PotItem.Nothing, 'Swamp Hub North Ledge', obj=RoomObject(0x1F962B, [0x7B, 0x2F, 0xFA])), + Pot(192, 5, PotItem.Nothing, 'Swamp Hub North Ledge', obj=RoomObject(0x1F962E, [0x83, 0x2F, 0xFA]))], + 0x37: [Pot(60, 6, PotItem.Key, 'Swamp Trench 1 Alcove', obj=RoomObject(0x1F944A, [0x7B, 0x33, 0xFA])), + Pot(48, 20, PotItem.Nothing, 'Swamp Trench 1 Key Ledge', obj=RoomObject(0x1F9423, [0x63, 0xA3, 0xFA]))], + 0x38: [Pot(164, 12, PotItem.Bomb, 'Swamp Pot Row', obj=RoomObject(0x1F933A, [0x4B, 0x67, 0xFA])), + Pot(164, 13, PotItem.FiveRupees, 'Swamp Pot Row', obj=RoomObject(0x1F933D, [0x4B, 0x6F, 0xFA])), + Pot(164, 18, PotItem.Bomb, 'Swamp Pot Row', obj=RoomObject(0x1F9340, [0x4B, 0x97, 0xFA])), + Pot(164, 19, PotItem.Key, 'Swamp Pot Row', obj=RoomObject(0x1F9343, [0x4B, 0x9F, 0xFA]))], + 0x39: [Pot(12, 20, PotItem.Heart, 'Skull Spike Corner', obj=RoomObject(0x1FC14A, [0x1B, 0xA3, 0xFA])), + Pot(48, 28, PotItem.FiveArrows, 'Skull Spike Corner', obj=RoomObject(0x1FC153, [0x63, 0xE3, 0xFA])), + Pot(100, 22, PotItem.SmallMagic, 'Skull Final Drop', obj=RoomObject(0x1FC168, [0xCB, 0xB3, 0xFA])), + Pot(100, 26, PotItem.FiveArrows, 'Skull Final Drop', obj=RoomObject(0x1FC16B, [0xCB, 0xD3, 0xFA]))], + 0x3C: [Pot(24, 8, PotItem.SmallMagic, 'Hookshot Cave (Hook Islands)', obj=RoomObject(0x0A8979, [0x33, 0x43, 0xFA])), + Pot(64, 12, PotItem.FiveRupees, 'Hookshot Cave (Hook Islands)', obj=RoomObject(0x0A898E, [0x83, 0x63, 0xFA])), + Pot(20, 14, PotItem.OneRupee, 'Hookshot Cave (Hook Islands)', obj=RoomObject(0x0A897C, [0x2B, 0x73, 0xFA])), + Pot(20, 19, PotItem.Nothing, 'Hookshot Cave (Hook Islands)', obj=RoomObject(0x0A897F, [0x2B, 0x9B, 0xFA])), + Pot(68, 18, PotItem.FiveRupees, 'Hookshot Cave (Bonk Islands)', obj=RoomObject(0x0A8994, [0x8B, 0x93, 0xFA])), + Pot(96, 19, PotItem.Heart, 'Hookshot Cave (Front)', obj=RoomObject(0x0A8976, [0xC3, 0x9B, 0xFA])), + Pot(64, 20, PotItem.FiveRupees, 'Hookshot Cave (Bonk Islands)', obj=RoomObject(0x0A8997, [0x83, 0xA3, 0xFA])), + Pot(64, 26, PotItem.FiveRupees, 'Hookshot Cave (Bonk Islands)', obj=RoomObject(0x0A899A, [0x83, 0xD3, 0xFA]))], + 0x3D: [Pot(76, 12, PotItem.Bomb, 'GT Mini Helmasaur Room', obj=RoomObject(0x1FFC9B, [0x9B, 0x63, 0xFA])), + Pot(112, 12, PotItem.Bomb, 'GT Mini Helmasaur Room', obj=RoomObject(0x1FFC9E, [0xE3, 0x63, 0xFA])), + Pot(24, 22, PotItem.Heart, 'GT Crystal Inner Circle', obj=RoomObject(0x1FFCE3, [0x33, 0xB3, 0xFA])), + Pot(40, 22, PotItem.FiveArrows, 'GT Crystal Inner Circle', obj=RoomObject(0x1FFCE6, [0x53, 0xB3, 0xFA])), + Pot(32, 24, PotItem.Heart, 'GT Crystal Inner Circle', obj=RoomObject(0x1FFCF8, [0x43, 0xC3, 0xFA])), + Pot(20, 26, PotItem.FiveRupees, 'GT Crystal Inner Circle', obj=RoomObject(0x1FFCFB, [0x2B, 0xD3, 0xFA])), + Pot(36, 26, PotItem.BigMagic, 'GT Crystal Inner Circle', obj=RoomObject(0x1FFCFE, [0x4B, 0xD3, 0xFA]))], + 0x3E: [Pot(96, 6, PotItem.Bomb, 'Ice Stalfos Hint', obj=RoomObject(0x1FC41D, [0xC3, 0x33, 0xFA])), + Pot(100, 6, PotItem.SmallMagic, 'Ice Stalfos Hint', obj=RoomObject(0x1FC420, [0xCB, 0x33, 0xFA])), + Pot(88, 10, PotItem.Heart, 'Ice Stalfos Hint', obj=RoomObject(0x1FC429, [0xB3, 0x53, 0xFA])), + Pot(92, 10, PotItem.SmallMagic, 'Ice Stalfos Hint', obj=RoomObject(0x1FC42C, [0xBB, 0x53, 0xFA]))], + 0x3F: [Pot(12, 25, PotItem.OneRupee, 'Ice Hammer Block', obj=RoomObject(0x1FC4DC, [0x1B, 0xCB, 0xFA])), + Pot(20, 25, PotItem.OneRupee, 'Ice Hammer Block', obj=RoomObject(0x1FC4E5, [0x2B, 0xCB, 0xFA])), + Pot(12, 26, PotItem.Bomb, 'Ice Hammer Block', obj=RoomObject(0x1FC4DF, [0x1B, 0xD3, 0xFA])), + Pot(20, 26, PotItem.Bomb, 'Ice Hammer Block', obj=RoomObject(0x1FC4E8, [0x2B, 0xD3, 0xFA])), + Pot(12, 27, PotItem.Switch, 'Ice Hammer Block', obj=RoomObject(0x1FC4E2, [0x1B, 0xDB, 0xFA])), + Pot(20, 27, PotItem.Heart, 'Ice Hammer Block', obj=RoomObject(0x1FC4EB, [0x2B, 0xDB, 0xFA])), Pot(28, 23, PotItem.Key, 'Ice Hammer Block', PotFlags.Block)], - 0x41: [Pot(100, 10, PotItem.Heart, 'Sewers Behind Tapestry'), Pot(52, 15, PotItem.OneRupee, 'Sewers Behind Tapestry'), Pot(52, 16, PotItem.SmallMagic, 'Sewers Behind Tapestry'), Pot(148, 22, PotItem.SmallMagic, 'Sewers Behind Tapestry')], - 0x43: [Pot(66, 4, PotItem.FiveArrows, 'Desert Wall Slide'), Pot(78, 4, PotItem.SmallMagic, 'Desert Wall Slide'), Pot(66, 9, PotItem.Heart, 'Desert Wall Slide'), Pot(78, 9, PotItem.Heart, 'Desert Wall Slide'), - Pot(112, 28, PotItem.Nothing, 'Desert Tiles 2'), Pot(76, 28, PotItem.Nothing, 'Desert Tiles 2'), Pot(76, 20, PotItem.Nothing, 'Desert Tiles 2'), Pot(112, 20, PotItem.Key, 'Desert Tiles 2')], + 0x41: [Pot(100, 10, PotItem.Heart, 'Sewers Behind Tapestry', obj=RoomObject(0x0A8EDC, [0xCB, 0x53, 0xFA])), + Pot(52, 15, PotItem.OneRupee, 'Sewers Behind Tapestry', obj=RoomObject(0x0A8EDF, [0x6B, 0x7B, 0xFA])), + Pot(52, 16, PotItem.SmallMagic, 'Sewers Behind Tapestry', obj=RoomObject(0x0A8EE2, [0x6B, 0x83, 0xFA])), + Pot(148, 22, PotItem.SmallMagic, 'Sewers Behind Tapestry', obj=RoomObject(0x0A8EE5, [0x2B, 0xB7, 0xFA]))], + 0x43: [Pot(66, 4, PotItem.FiveArrows, 'Desert Wall Slide', obj=RoomObject(0x1F87BC, [0x87, 0x23, 0xFA])), + Pot(78, 4, PotItem.SmallMagic, 'Desert Wall Slide', obj=RoomObject(0x1F87BF, [0x9F, 0x23, 0xFA])), + Pot(66, 9, PotItem.Heart, 'Desert Wall Slide', obj=RoomObject(0x1F87C2, [0x87, 0x4B, 0xFA])), + Pot(78, 9, PotItem.Heart, 'Desert Wall Slide', obj=RoomObject(0x1F87C5, [0x9F, 0x4B, 0xFA])), + Pot(112, 28, PotItem.Nothing, 'Desert Tiles 2', obj=RoomObject(0x1F87DA, [0xE3, 0xE3, 0xFA])), + Pot(76, 28, PotItem.Nothing, 'Desert Tiles 2', obj=RoomObject(0x1F87D7, [0x9B, 0xE3, 0xFA])), + Pot(76, 20, PotItem.Nothing, 'Desert Tiles 2', obj=RoomObject(0x1F87D1, [0x9B, 0xA3, 0xFA])), + Pot(112, 20, PotItem.Key, 'Desert Tiles 2', obj=RoomObject(0x1F87D4, [0xE3, 0xA3, 0xFA]))], 0x44: [Pot(204, 7, PotItem.Nothing, 'Thieves Conveyor Bridge', PotFlags.Block)], - 0x45: [Pot(12, 4, PotItem.FiveArrows, 'Thieves Basement Block'), - Pot(48, 12, PotItem.FiveArrows, 'Thieves Basement Block'), - Pot(92, 11, PotItem.Nothing, "Thieves Blind's Cell Interior"), Pot(108, 11, PotItem.Heart, "Thieves Blind's Cell Interior"), - Pot(220, 16, PotItem.SmallMagic, "Thieves Blind's Cell Interior"), - Pot(236, 16, PotItem.Heart, "Thieves Blind's Cell Interior"), + 0x45: [Pot(12, 4, PotItem.FiveArrows, 'Thieves Basement Block', obj=RoomObject(0x1FDC2A, [0x1B, 0x23, 0xFA])), + Pot(48, 12, PotItem.FiveArrows, 'Thieves Basement Block', obj=RoomObject(0x1FDC2D, [0x63, 0x63, 0xFA])), + Pot(92, 11, PotItem.Nothing, "Thieves Blind's Cell Interior", obj=RoomObject(0x1FDC4E, [0xBB, 0x5B, 0xFA])), + Pot(108, 11, PotItem.Heart, "Thieves Blind's Cell Interior", obj=RoomObject(0x1FDC51, [0xDB, 0x5B, 0xFA])), + Pot(220, 16, PotItem.SmallMagic, "Thieves Blind's Cell Interior", obj=RoomObject(0x1FDC54, [0xBB, 0x87, 0xFA])), + Pot(236, 16, PotItem.Heart, "Thieves Blind's Cell Interior", obj=RoomObject(0x1FDC57, [0xDB, 0x87, 0xFA])), Pot(0x9C, 7, PotItem.Nothing, 'Thieves Basement Block', PotFlags.Block)], - 70: [Pot(96, 5, PotItem.Heart, 'Swamp Donut Top'), Pot(28, 27, PotItem.Heart, 'Swamp Donut Bottom')], - 73: [Pot(104, 15, PotItem.SmallMagic, 'Skull Torch Room'), Pot(104, 16, PotItem.SmallMagic, 'Skull Torch Room'), Pot(156, 27, PotItem.Nothing, 'Skull Star Pits'), Pot(172, 24, PotItem.Nothing, 'Skull Star Pits'), - Pot(172, 23, PotItem.Nothing, 'Skull Star Pits'), Pot(144, 20, PotItem.Nothing, 'Skull Star Pits'), Pot(144, 19, PotItem.SmallMagic, 'Skull Star Pits'), Pot(172, 20, PotItem.Heart, 'Skull Star Pits'), - Pot(144, 27, PotItem.Heart, 'Skull Star Pits'), Pot(172, 28, PotItem.SmallMagic, 'Skull Star Pits'), Pot(160, 27, PotItem.Nothing, 'Skull Star Pits')], - 74: [Pot(14, 5, PotItem.Switch, 'PoD Left Cage'), Pot(32, 5, PotItem.Bomb, 'PoD Left Cage'), Pot(14, 11, PotItem.Heart, 'PoD Left Cage'), Pot(32, 11, PotItem.OneRupee, 'PoD Left Cage'), Pot(56, 8, PotItem.Bomb, 'PoD Middle Cage'), - Pot(68, 8, PotItem.Bomb, 'PoD Middle Cage'), Pot(92, 5, PotItem.Bomb, 'PoD Middle Cage'), Pot(110, 5, PotItem.Switch, 'PoD Middle Cage'), Pot(92, 11, PotItem.OneRupee, 'PoD Middle Cage'), Pot(110, 11, PotItem.Heart, 'PoD Middle Cage')], - 75: [Pot(20, 6, PotItem.FiveArrows, 'PoD Mimics 1'), Pot(40, 6, PotItem.Heart, 'PoD Mimics 1')], - 78: [Pot(140, 7, PotItem.Nothing, 'Ice Bomb Jump Catwalk'), Pot(48, 10, PotItem.Nothing, 'Ice Bomb Jump Catwalk'), Pot(140, 11, PotItem.Switch, 'Ice Bomb Jump Catwalk'), Pot(28, 12, PotItem.Heart, 'Ice Bomb Jump Catwalk'), - Pot(112, 12, PotItem.SmallMagic, 'Ice Narrow Corridor')], - 0x50: [Pot(96, 0x6, PotItem.Heart, 'Hyrule Castle West Hall', PotFlags.LowerRegion), - Pot(100, 0x6, PotItem.Heart, 'Hyrule Castle West Hall', PotFlags.LowerRegion)], - 82: [Pot(138, 3, PotItem.Heart, 'Hyrule Castle East Hall'), Pot(194, 26, PotItem.Heart, 'Hyrule Castle East Hall')], - 0x53: [Pot(92, 11, PotItem.Heart, 'Desert Beamos Hall'), Pot(96, 11, PotItem.SmallMagic, 'Desert Beamos Hall'), Pot(100, 11, PotItem.Key, 'Desert Beamos Hall'), Pot(104, 11, PotItem.Heart, 'Desert Beamos Hall')], - 84: [Pot(186, 25, PotItem.FiveRupees, 'Swamp Attic'), Pot(186, 26, PotItem.Heart, 'Swamp Attic'), Pot(186, 27, PotItem.Heart, 'Swamp Attic'), Pot(186, 28, PotItem.Heart, 'Swamp Attic')], - 85: [Pot(230, 24, PotItem.SmallMagic, 'Hyrule Castle Secret Entrance'), Pot(230, 25, PotItem.SmallMagic, 'Hyrule Castle Secret Entrance')], - 0x56: [Pot(100, 6, PotItem.Nothing, 'Skull Back Drop'), Pot(96, 10, PotItem.Nothing, 'Skull Back Drop'), Pot(92, 10, PotItem.Nothing, 'Skull Back Drop'), Pot(20, 6, PotItem.SmallMagic, 'Skull X Room'), - Pot(40, 6, PotItem.SmallMagic, 'Skull X Room'), Pot(24, 7, PotItem.SmallMagic, 'Skull X Room'), Pot(36, 7, PotItem.SmallMagic, 'Skull X Room'), Pot(12, 8, PotItem.Heart, 'Skull X Room'), Pot(48, 8, PotItem.Heart, 'Skull X Room'), - Pot(24, 9, PotItem.SmallMagic, 'Skull X Room'), Pot(36, 9, PotItem.SmallMagic, 'Skull X Room'), Pot(20, 10, PotItem.FiveRupees, 'Skull X Room'), Pot(40, 10, PotItem.FiveRupees, 'Skull X Room'), Pot(12, 20, PotItem.Key, 'Skull 2 West Lobby'), - Pot(48, 20, PotItem.Nothing, 'Skull 2 West Lobby')], - 87: [Pot(92, 7, PotItem.BigMagic, 'Skull Lone Pot'), Pot(32, 4, PotItem.Nothing, 'Skull Big Key'), Pot(92, 23, PotItem.Bomb, 'Skull Pot Prison'), Pot(100, 23, PotItem.SmallMagic, 'Skull Pot Prison'), - Pot(84, 25, PotItem.FiveRupees, 'Skull Pot Prison'), Pot(76, 27, PotItem.Heart, 'Skull Pot Prison'), Pot(12, 20, PotItem.SmallMagic, 'Skull 2 East Lobby'), Pot(48, 20, PotItem.SmallMagic, 'Skull 2 East Lobby'), - Pot(30, 22, PotItem.Switch, 'Skull 2 East Lobby')], - 88: [Pot(12, 7, PotItem.SmallMagic, 'Skull Pull Switch'), Pot(16, 7, PotItem.Nothing, 'Skull Pull Switch'), Pot(16, 8, PotItem.SmallMagic, 'Skull Pull Switch'), Pot(12, 12, PotItem.Nothing, 'Skull Pull Switch'), - Pot(96, 9, PotItem.Nothing, 'Skull Pot Circle'), Pot(92, 8, PotItem.Nothing, 'Skull Pot Circle'), Pot(108, 8, PotItem.Nothing, 'Skull Pot Circle'), Pot(108, 6, PotItem.Nothing, 'Skull Pot Circle'), - Pot(104, 5, PotItem.Nothing, 'Skull Pot Circle'), Pot(92, 6, PotItem.Nothing, 'Skull Pot Circle'), Pot(96, 5, PotItem.Bomb, 'Skull Pot Circle'), Pot(100, 5, PotItem.SmallMagic, 'Skull Pot Circle'), - Pot(92, 7, PotItem.Heart, 'Skull Pot Circle'), Pot(108, 7, PotItem.Heart, 'Skull Pot Circle'), Pot(100, 9, PotItem.SmallMagic, 'Skull Pot Circle'), Pot(104, 9, PotItem.Bomb, 'Skull Pot Circle')], - 0x59: [Pot(26, 0xb, PotItem.Heart, 'Skull 3 Lobby', PotFlags.LowerRegion), - Pot(32, 8, PotItem.Nothing, 'Skull 3 Lobby', PotFlags.LowerRegion), - Pot(76, 28, PotItem.Nothing, 'Skull East Bridge'), - Pot(112, 28, PotItem.Nothing, 'Skull East Bridge')], - 0x5B: [Pot(218, 0x5, PotItem.Nothing, 'GT Hidden Spikes', PotFlags.LowerRegion), - Pot(222, 0x5, PotItem.Switch, 'GT Hidden Spikes', PotFlags.LowerRegion), - Pot(226, 0x5, PotItem.Nothing, 'GT Hidden Spikes', PotFlags.LowerRegion)], - 92: [Pot(228, 25, PotItem.Nothing, 'GT Refill'), Pot(104, 24, PotItem.Nothing, 'GT Refill'), Pot(228, 22, PotItem.Nothing, 'GT Refill'), Pot(216, 25, PotItem.Nothing, 'GT Refill'), Pot(84, 24, PotItem.Nothing, 'GT Refill'), - Pot(216, 22, PotItem.Nothing, 'GT Refill'), Pot(94, 22, PotItem.Bomb, 'GT Refill'), Pot(94, 26, PotItem.BigMagic, 'GT Refill')], - 93: [Pot(16, 5, PotItem.Bomb, 'GT Gauntlet 2'), Pot(44, 5, PotItem.FiveRupees, 'GT Gauntlet 2'), Pot(16, 11, PotItem.OneRupee, 'GT Gauntlet 2'), Pot(44, 11, PotItem.FiveArrows, 'GT Gauntlet 2'), Pot(12, 20, PotItem.FiveArrows, 'GT Gauntlet 3'), - Pot(48, 20, PotItem.Bomb, 'GT Gauntlet 3'), Pot(12, 28, PotItem.SmallMagic, 'GT Gauntlet 3'), Pot(48, 28, PotItem.Bomb, 'GT Gauntlet 3')], - 94: [Pot(92, 4, PotItem.SmallMagic, 'Ice Falling Square'), Pot(96, 4, PotItem.SmallMagic, 'Ice Falling Square'), Pot(76, 8, PotItem.Heart, 'Ice Falling Square'), Pot(112, 8, PotItem.Heart, 'Ice Falling Square')], - 95: [Pot(44, 27, PotItem.Switch, 'Ice Spike Room')], - 96: [Pot(76, 4, PotItem.Heart, 'Hyrule Castle West Lobby'), Pot(112, 4, PotItem.Heart, 'Hyrule Castle West Lobby')], - 98: [Pot(208, 21, PotItem.Heart, 'Hyrule Castle East Lobby')], - 0x63: [Pot(48, 4, PotItem.Nothing, 'Desert Tiles 1'), Pot(12, 4, PotItem.Nothing, 'Desert Tiles 1'), Pot(12, 8, PotItem.Nothing, 'Desert Tiles 1'), Pot(48, 12, PotItem.Nothing, 'Desert Tiles 1'), Pot(48, 8, PotItem.Heart, 'Desert Tiles 1'), - Pot(12, 12, PotItem.Key, 'Desert Tiles 1')], - 0x64: [Pot(12, 22, PotItem.Bomb, 'Thieves Attic Hint', PotFlags.SwitchLogicChange), - Pot(16, 22, PotItem.Bomb, 'Thieves Attic Hint', PotFlags.SwitchLogicChange), - Pot(20, 22, PotItem.Bomb, 'Thieves Attic Hint', PotFlags.SwitchLogicChange), - Pot(36, 28, PotItem.Bomb, 'Thieves Attic Switch'), Pot(40, 28, PotItem.SmallMagic, 'Thieves Attic Switch'), - Pot(44, 28, PotItem.SmallMagic, 'Thieves Attic Switch'), Pot(48, 28, PotItem.Switch, 'Thieves Attic Switch')], - 0x65: [Pot(100, 28, PotItem.Bomb, 'Thieves Attic Window'), Pot(104, 28, PotItem.Bomb, 'Thieves Attic Window')], - 0x66: [Pot(48, 0x5, PotItem.FiveArrows, 'Swamp Refill', PotFlags.LowerRegion), - Pot(52, 0x5, PotItem.Bomb, 'Swamp Refill', PotFlags.LowerRegion), - Pot(56, 0x5, PotItem.FiveRupees, 'Swamp Refill', PotFlags.LowerRegion), - Pot(48, 0x6, PotItem.FiveArrows, 'Swamp Refill', PotFlags.LowerRegion), - Pot(52, 0x6, PotItem.Bomb, 'Swamp Refill', PotFlags.LowerRegion), - Pot(56, 0x6, PotItem.FiveRupees, 'Swamp Refill', PotFlags.LowerRegion), - Pot(84, 5, PotItem.Heart, 'Swamp Behind Waterfall'), - Pot(104, 5, PotItem.FiveArrows, 'Swamp Behind Waterfall'), - Pot(84, 6, PotItem.Heart, 'Swamp Behind Waterfall'), - Pot(104, 6, PotItem.Bomb, 'Swamp Behind Waterfall')], - 103: [Pot(22, 26, PotItem.Nothing, 'Skull Left Drop'), Pot(18, 22, PotItem.Nothing, 'Skull Left Drop'), Pot(12, 7, PotItem.FiveArrows, 'Skull Left Drop'), Pot(48, 7, PotItem.SmallMagic, 'Skull Left Drop'), - Pot(18, 23, PotItem.SmallMagic, 'Skull Left Drop'), Pot(18, 26, PotItem.Heart, 'Skull Left Drop'), Pot(96, 19, PotItem.Heart, 'Skull Compass Room'), Pot(74, 20, PotItem.SmallMagic, 'Skull Compass Room'), - Pot(92, 9, PotItem.Nothing, 'Skull Compass Room'), Pot(84, 28, PotItem.Nothing, 'Skull Compass Room'), Pot(104, 28, PotItem.Heart, 'Skull Compass Room')], - 104: [Pot(84, 14, PotItem.Nothing, 'Skull Pinball'), Pot(84, 13, PotItem.Nothing, 'Skull Pinball'), Pot(88, 12, PotItem.Nothing, 'Skull Pinball'), Pot(88, 6, PotItem.Nothing, 'Skull Pinball'), Pot(88, 5, PotItem.Nothing, 'Skull Pinball'), - Pot(88, 4, PotItem.Nothing, 'Skull Pinball'), Pot(64, 17, PotItem.Nothing, 'Skull Pinball'), Pot(64, 15, PotItem.Nothing, 'Skull Pinball'), Pot(64, 7, PotItem.Heart, 'Skull Pinball'), Pot(88, 7, PotItem.SmallMagic, 'Skull Pinball'), - Pot(64, 16, PotItem.Heart, 'Skull Pinball'), Pot(64, 24, PotItem.SmallMagic, 'Skull Pinball'), Pot(64, 25, PotItem.Heart, 'Skull Pinball')], - 0x6B: [Pot(28, 5, PotItem.Heart, 'GT Crystal Paths'), Pot(44, 5, PotItem.Nothing, 'GT Crystal Paths'), Pot(28, 8, PotItem.Nothing, 'GT Crystal Paths'), Pot(44, 8, PotItem.SmallMagic, 'GT Crystal Paths'), - Pot(28, 11, PotItem.SmallMagic, 'GT Crystal Paths'), Pot(44, 11, PotItem.Nothing, 'GT Crystal Paths'), Pot(90, 25, PotItem.Nothing, 'GT Mimics 2'), Pot(98, 25, PotItem.FiveArrows, 'GT Mimics 2')], - 0x6C: [Pot(20, 6, PotItem.Heart, 'GT Quad Pot'), Pot(40, 6, PotItem.FiveArrows, 'GT Quad Pot'), Pot(20, 10, PotItem.Bomb, 'GT Quad Pot'), Pot(40, 10, PotItem.SmallMagic, 'GT Quad Pot')], - 0x6D: [Pot(28, 26, PotItem.Heart, 'GT Gauntlet 5'), Pot(32, 26, PotItem.Heart, 'GT Gauntlet 5'), Pot(28, 27, PotItem.SmallMagic, 'GT Gauntlet 5'), Pot(32, 27, PotItem.SmallMagic, 'GT Gauntlet 5')], - 115: [Pot(154, 21, PotItem.FiveArrows, 'Desert Circle of Pots'), Pot(158, 21, PotItem.OneRupee, 'Desert Circle of Pots'), Pot(20, 23, PotItem.Switch, 'Desert Circle of Pots'), Pot(36, 23, PotItem.FiveRupees, 'Desert Circle of Pots'), - Pot(144, 24, PotItem.Heart, 'Desert Circle of Pots'), Pot(168, 24, PotItem.FiveArrows, 'Desert Circle of Pots'), Pot(20, 26, PotItem.SmallMagic, 'Desert Circle of Pots'), Pot(36, 26, PotItem.Heart, 'Desert Circle of Pots'), - Pot(154, 27, PotItem.OneRupee, 'Desert Circle of Pots'), Pot(158, 27, PotItem.FiveRupees, 'Desert Circle of Pots')], - 116: [Pot(30, 5, PotItem.SmallMagic, 'Desert Map Room'), Pot(62, 5, PotItem.Switch, 'Desert Map Room'), Pot(94, 5, PotItem.SmallMagic, 'Desert Map Room'), Pot(14, 11, PotItem.Heart, 'Desert Map Room'), - Pot(46, 11, PotItem.FiveArrows, 'Desert Map Room'), Pot(78, 11, PotItem.FiveArrows, 'Desert Map Room'), Pot(110, 11, PotItem.Heart, 'Desert Map Room')], - 117: [Pot(148, 22, PotItem.SmallMagic, 'Desert Arrow Pot Corner'), Pot(160, 22, PotItem.FiveArrows, 'Desert Arrow Pot Corner'), Pot(172, 22, PotItem.Heart, 'Desert Arrow Pot Corner')], - 118: [Pot(112, 12, PotItem.Heart, 'Swamp Drain Right'), Pot(84, 23, PotItem.Heart, 'Swamp Flooded Spot'), Pot(96, 23, PotItem.Heart, 'Swamp Flooded Spot')], - 0x7B: [Pot(48, 10, PotItem.Nothing, 'GT Conveyor Star Pits'), Pot(88, 10, PotItem.Nothing, 'GT Conveyor Star Pits'), Pot(76, 7, PotItem.Nothing, 'GT Conveyor Star Pits'), Pot(60, 4, PotItem.Heart, 'GT Conveyor Star Pits'), - Pot(64, 4, PotItem.Key, 'GT Conveyor Star Pits')], - 124: [Pot(36, 21, PotItem.Nothing, 'GT Falling Bridge'), Pot(24, 11, PotItem.Nothing, 'GT Falling Bridge'), Pot(28, 4, PotItem.Heart, 'GT Falling Bridge'), Pot(32, 4, PotItem.Heart, 'GT Falling Bridge')], - 125: [Pot(44, 12, PotItem.Nothing, 'GT Firesnake Room'), Pot(44, 6, PotItem.Nothing, 'GT Firesnake Room'), Pot(112, 6, PotItem.Heart, 'GT Firesnake Room'), Pot(108, 20, PotItem.FiveArrows, 'GT Warp Maze - Pot Rail'), - Pot(114, 20, PotItem.Bomb, 'GT Petting Zoo'), Pot(76, 28, PotItem.Bomb, 'GT Petting Zoo')], - 126: [Pot(86, 15, PotItem.Heart, 'Ice Tall Hint'), Pot(82, 26, PotItem.SmallMagic, 'Ice Tall Hint'), Pot(100, 26, PotItem.Switch, 'Ice Tall Hint'), Pot(104, 26, PotItem.Nothing, 'Ice Tall Hint')], - 128: [Pot(48, 4, PotItem.Heart, 'Hyrule Dungeon Cellblock'), Pot(52, 4, PotItem.Heart, 'Hyrule Dungeon Cellblock'), Pot(56, 4, PotItem.Heart, 'Hyrule Dungeon Cellblock')], - 0x82: [Pot(50, 0x5, PotItem.Nothing, 'Hyrule Dungeon South Abyss', PotFlags.LowerRegion), - Pot(50, 0xA, PotItem.Nothing, 'Hyrule Dungeon South Abyss', PotFlags.LowerRegion), - Pot(76, 0x12, PotItem.Heart, 'Hyrule Dungeon South Abyss', PotFlags.LowerRegion)], - 131: [Pot(76, 4, PotItem.FiveArrows, 'Desert West Wing'), Pot(80, 4, PotItem.OneRupee, 'Desert West Wing'), Pot(76, 28, PotItem.FiveRupees, 'Desert West Wing'), Pot(80, 28, PotItem.FiveArrows, 'Desert West Wing')], - 132: [Pot(64, 17, PotItem.Nothing, 'Desert Main Lobby'), Pot(60, 17, PotItem.Nothing, 'Desert Main Lobby'), Pot(80, 14, PotItem.Nothing, 'Desert Main Lobby'), Pot(44, 14, PotItem.Nothing, 'Desert Main Lobby'), - Pot(100, 6, PotItem.Nothing, 'Desert Main Lobby'), Pot(24, 6, PotItem.Nothing, 'Desert Main Lobby'), Pot(24, 7, PotItem.FiveArrows, 'Desert Main Lobby'), Pot(100, 7, PotItem.FiveArrows, 'Desert Main Lobby')], - 133: [Pot(44, 28, PotItem.Heart, 'Desert East Wing'), Pot(48, 28, PotItem.FiveArrows, 'Desert East Wing')], - 135: [Pot(12, 11, PotItem.Nothing, 'Hera Tile Room'), Pot(16, 12, PotItem.Nothing, 'Hera Tile Room'), Pot(40, 12, PotItem.Nothing, 'Hera Tile Room'), Pot(32, 12, PotItem.Nothing, 'Hera Tile Room'), Pot(24, 12, PotItem.Nothing, 'Hera Tile Room'), - Pot(16, 11, PotItem.Nothing, 'Hera Tile Room'), Pot(76, 20, PotItem.SmallMagic, 'Hera Torches'), Pot(112, 20, PotItem.BigMagic, 'Hera Torches')], - 0x8B: [Pot(76, 12, PotItem.Nothing, 'GT Conveyor Cross'), Pot(112, 12, PotItem.Key, 'GT Conveyor Cross'), Pot(32, 23, PotItem.Nothing, 'GT Hookshot South Platform'), Pot(28, 23, PotItem.Nothing, 'GT Hookshot South Platform'), - Pot(32, 9, PotItem.SmallMagic, 'GT Hookshot Mid Platform'), Pot(76, 20, PotItem.Nothing, 'GT Map Room'), Pot(76, 28, PotItem.Heart, 'GT Map Room')], - 140: [Pot(76, 12, PotItem.Switch, 'GT Hope Room'), Pot(112, 12, PotItem.SmallMagic, 'GT Hope Room'), Pot(76, 20, PotItem.Bomb, "GT Bob's Room"), Pot(92, 20, PotItem.Bomb, "GT Bob's Room"), Pot(100, 21, PotItem.FiveArrows, "GT Bob's Room"), - Pot(104, 26, PotItem.Bomb, "GT Bob's Room"), Pot(88, 27, PotItem.Bomb, "GT Bob's Room")], - 141: [Pot(204, 11, PotItem.Nothing, 'GT Speed Torch Upper'), Pot(204, 14, PotItem.BigMagic, 'GT Speed Torch Upper'), Pot(28, 23, PotItem.Heart, 'GT Pots n Blocks'), Pot(36, 23, PotItem.Heart, 'GT Pots n Blocks'), - Pot(32, 24, PotItem.BigMagic, 'GT Pots n Blocks')], - 142: [Pot(80, 5, PotItem.FiveArrows, 'Ice Lonely Freezor'), Pot(80, 6, PotItem.Nothing, 'Ice Lonely Freezor')], - 145: [Pot(84, 4, PotItem.Heart, 'Mire Falling Foes'), Pot(104, 4, PotItem.SmallMagic, 'Mire Falling Foes')], - 146: [Pot(86, 23, PotItem.Nothing, 'Mire Tall Dark and Roomy'), Pot(92, 23, PotItem.Nothing, 'Mire Tall Dark and Roomy'), Pot(98, 23, PotItem.Nothing, 'Mire Tall Dark and Roomy'), Pot(104, 23, PotItem.Nothing, 'Mire Tall Dark and Roomy')], - 0x93: [Pot(28, 7, PotItem.Switch, 'Mire Dark Shooters'), + 0x46: [Pot(96, 5, PotItem.Heart, 'Swamp Donut Top', obj=RoomObject(0x1F9B91, [0xC3, 0x2B, 0xFA])), + Pot(28, 27, PotItem.Heart, 'Swamp Donut Bottom', obj=RoomObject(0x1F9B94, [0x3B, 0xDB, 0xFA]))], + 0x49: [Pot(104, 15, PotItem.SmallMagic, 'Skull Torch Room', obj=RoomObject(0x1FC102, [0xD3, 0x7B, 0xFA])), + Pot(104, 16, PotItem.SmallMagic, 'Skull Torch Room', obj=RoomObject(0x1FC105, [0xD3, 0x83, 0xFA])), + Pot(156, 27, PotItem.Nothing, 'Skull Star Pits', obj=RoomObject(0x1FC063, [0x3B, 0xDF, 0xFA])), + Pot(172, 24, PotItem.Nothing, 'Skull Star Pits', obj=RoomObject(0x1FC084, [0x5B, 0xC7, 0xFA])), + Pot(172, 23, PotItem.Nothing, 'Skull Star Pits', obj=RoomObject(0x1FC081, [0x5B, 0xBF, 0xFA])), + Pot(144, 20, PotItem.Nothing, 'Skull Star Pits', obj=RoomObject(0x1FC04E, [0x23, 0xA7, 0xFA])), + Pot(144, 19, PotItem.SmallMagic, 'Skull Star Pits', obj=RoomObject(0x1FC04B, [0x23, 0x9F, 0xFA])), + Pot(172, 20, PotItem.Heart, 'Skull Star Pits', obj=RoomObject(0x1FC07E, [0x5B, 0xA7, 0xFA])), + Pot(144, 27, PotItem.Heart, 'Skull Star Pits', obj=RoomObject(0x1FC051, [0x23, 0xDF, 0xFA])), + Pot(172, 28, PotItem.SmallMagic, 'Skull Star Pits', obj=RoomObject(0x1FC090, [0x5B, 0xE7, 0xFA])), + Pot(160, 27, PotItem.Nothing, 'Skull Star Pits', obj=RoomObject(0x1FC066, [0x43, 0xDF, 0xFA]))], + 0x4A: [Pot(14, 5, PotItem.Switch, 'PoD Left Cage', obj=RoomObject(0x1FA1C2, [0x1F, 0x2B, 0xFA])), + Pot(32, 5, PotItem.Bomb, 'PoD Left Cage', obj=RoomObject(0x1FA1C5, [0x43, 0x2B, 0xFA])), + Pot(14, 11, PotItem.Heart, 'PoD Left Cage', obj=RoomObject(0x1FA1C8, [0x1F, 0x5B, 0xFA])), + Pot(32, 11, PotItem.OneRupee, 'PoD Left Cage', obj=RoomObject(0x1FA1CB, [0x43, 0x5B, 0xFA])), + Pot(56, 8, PotItem.Bomb, 'PoD Middle Cage', obj=RoomObject(0x1FA1D1, [0x73, 0x43, 0xFA])), + Pot(68, 8, PotItem.Bomb, 'PoD Middle Cage', obj=RoomObject(0x1FA1D4, [0x8B, 0x43, 0xFA])), + Pot(92, 5, PotItem.Bomb, 'PoD Middle Cage', obj=RoomObject(0x1FA1DA, [0xBB, 0x2B, 0xFA])), + Pot(110, 5, PotItem.Switch, 'PoD Middle Cage', obj=RoomObject(0x1FA1DD, [0xDF, 0x2B, 0xFA])), + Pot(92, 11, PotItem.OneRupee, 'PoD Middle Cage', obj=RoomObject(0x1FA1E0, [0xBB, 0x5B, 0xFA])), + Pot(110, 11, PotItem.Heart, 'PoD Middle Cage', obj=RoomObject(0x1FA1E3, [0xDF, 0x5B, 0xFA]))], + 0x4B: [Pot(20, 6, PotItem.FiveArrows, 'PoD Mimics 1', obj=RoomObject(0x1FA83C, [0x2B, 0x33, 0xFA])), + Pot(40, 6, PotItem.Heart, 'PoD Mimics 1', obj=RoomObject(0x1FA83F, [0x53, 0x33, 0xFA]))], + 0x4E: [Pot(140, 7, PotItem.Nothing, 'Ice Bomb Jump Catwalk', obj=RoomObject(0x1FC57E, [0x1B, 0x3F, 0xFA])), + Pot(48, 10, PotItem.Nothing, 'Ice Bomb Jump Catwalk', obj=RoomObject(0x1FC587, [0x63, 0x53, 0xFA])), + Pot(140, 11, PotItem.Switch, 'Ice Bomb Jump Catwalk', obj=RoomObject(0x1FC581, [0x1B, 0x5F, 0xFA])), + Pot(28, 12, PotItem.Heart, 'Ice Bomb Jump Catwalk', obj=RoomObject(0x1FC584, [0x3B, 0x63, 0xFA])), + Pot(112, 12, PotItem.SmallMagic, 'Ice Narrow Corridor', obj=RoomObject(0x1FC58A, [0xE3, 0x63, 0xFA]))], + 0x50: [Pot(96, 0x6, PotItem.Heart, 'Hyrule Castle West Hall', PotFlags.LowerRegion, obj=RoomObject(0x0A9099, [0xC3, 0x33, 0xFA])), + Pot(100, 0x6, PotItem.Heart, 'Hyrule Castle West Hall', PotFlags.LowerRegion, obj=RoomObject(0x0A909C, [0xCB, 0x33, 0xFA]))], + 0x52: [Pot(138, 3, PotItem.Heart, 'Hyrule Castle East Hall', obj=RoomObject(0x0A91C7, [0x17, 0x1F, 0xFA])), + Pot(194, 26, PotItem.Heart, 'Hyrule Castle East Hall', obj=RoomObject(0x0A91CA, [0x87, 0xD7, 0xFA]))], + 0x53: [Pot(92, 11, PotItem.Heart, 'Desert Beamos Hall', obj=RoomObject(0x1F8844, [0xBB, 0x5B, 0xFA])), + Pot(96, 11, PotItem.SmallMagic, 'Desert Beamos Hall', obj=RoomObject(0x1F8847, [0xC3, 0x5B, 0xFA])), + Pot(100, 11, PotItem.Key, 'Desert Beamos Hall', obj=RoomObject(0x1F884A, [0xCB, 0x5B, 0xFA])), + Pot(104, 11, PotItem.Heart, 'Desert Beamos Hall', obj=RoomObject(0x1F884D, [0xD3, 0x5B, 0xFA]))], + 0x54: [Pot(186, 25, PotItem.FiveRupees, 'Swamp Attic', obj=RoomObject(0x1F9A28, [0x77, 0xCF, 0xFA])), + Pot(186, 26, PotItem.Heart, 'Swamp Attic', obj=RoomObject(0x1F9A2B, [0x77, 0xD7, 0xFA])), + Pot(186, 27, PotItem.Heart, 'Swamp Attic', obj=RoomObject(0x1F9A2E, [0x77, 0xDF, 0xFA])), + Pot(186, 28, PotItem.Heart, 'Swamp Attic', obj=RoomObject(0x1F9A31, [0x77, 0xE7, 0xFA]))], + 0x55: [Pot(230, 24, PotItem.SmallMagic, 'Hyrule Castle Secret Entrance', obj=RoomObject(0x0A8127, [0xCF, 0xC7, 0xFA])), + Pot(230, 25, PotItem.SmallMagic, 'Hyrule Castle Secret Entrance', obj=RoomObject(0x0A812A, [0xCF, 0xCF, 0xFA]))], + 0x56: [Pot(100, 6, PotItem.Nothing, 'Skull Back Drop', obj=RoomObject(0x1FBADC, [0xCB, 0x33, 0xFA])), + Pot(96, 10, PotItem.Nothing, 'Skull Back Drop', obj=RoomObject(0x1FBAEE, [0xC3, 0x53, 0xFA])), + Pot(92, 10, PotItem.Nothing, 'Skull Back Drop', obj=RoomObject(0x1FBAEB, [0xBB, 0x53, 0xFA])), + Pot(20, 6, PotItem.SmallMagic, 'Skull X Room', obj=RoomObject(0x1FBB1E, [0x2B, 0x33, 0xFA])), + Pot(40, 6, PotItem.SmallMagic, 'Skull X Room', obj=RoomObject(0x1FBB27, [0x53, 0x33, 0xFA])), + Pot(24, 7, PotItem.SmallMagic, 'Skull X Room', obj=RoomObject(0x1FBB21, [0x33, 0x3B, 0xFA])), + Pot(36, 7, PotItem.SmallMagic, 'Skull X Room', obj=RoomObject(0x1FBB24, [0x4B, 0x3B, 0xFA])), + Pot(12, 8, PotItem.Heart, 'Skull X Room', obj=RoomObject(0x1FBB12, [0x1B, 0x43, 0xFA])), + Pot(48, 8, PotItem.Heart, 'Skull X Room', obj=RoomObject(0x1FBB1B, [0x63, 0x43, 0xFA])), + Pot(24, 9, PotItem.SmallMagic, 'Skull X Room', obj=RoomObject(0x1FBB2A, [0x33, 0x4B, 0xFA])), + Pot(36, 9, PotItem.SmallMagic, 'Skull X Room', obj=RoomObject(0x1FBB30, [0x4B, 0x4B, 0xFA])), + Pot(20, 10, PotItem.FiveRupees, 'Skull X Room', obj=RoomObject(0x1FBB2D, [0x2B, 0x53, 0xFA])), + Pot(40, 10, PotItem.FiveRupees, 'Skull X Room', obj=RoomObject(0x1FBB33, [0x53, 0x53, 0xFA])), + Pot(12, 20, PotItem.Key, 'Skull 2 West Lobby', obj=RoomObject(0x1FBAC1, [0x1B, 0xA3, 0xFA])), + Pot(48, 20, PotItem.Nothing, 'Skull 2 West Lobby', obj=RoomObject(0x1FBAB8, [0x63, 0xA3, 0xFA]))], + 0x57: [Pot(92, 7, PotItem.BigMagic, 'Skull Lone Pot', obj=RoomObject(0x1FBB6F, [0xBB, 0x3B, 0xFA])), + Pot(32, 4, PotItem.Nothing, 'Skull Big Key', obj=RoomObject(0x1FBB72, [0x43, 0x23, 0xFA])), + Pot(92, 23, PotItem.Bomb, 'Skull Pot Prison', obj=RoomObject(0x1FBBB4, [0xBB, 0xBB, 0xFA])), + Pot(100, 23, PotItem.SmallMagic, 'Skull Pot Prison', obj=RoomObject(0x1FBBB7, [0xCB, 0xBB, 0xFA])), + Pot(84, 25, PotItem.FiveRupees, 'Skull Pot Prison', obj=RoomObject(0x1FBBB1, [0xAB, 0xCB, 0xFA])), + Pot(76, 27, PotItem.Heart, 'Skull Pot Prison', obj=RoomObject(0x1FBBAE, [0x9B, 0xDB, 0xFA])), + Pot(12, 20, PotItem.SmallMagic, 'Skull 2 East Lobby', obj=RoomObject(0x1FBB93, [0x1B, 0xA3, 0xFA])), + Pot(48, 20, PotItem.SmallMagic, 'Skull 2 East Lobby', obj=RoomObject(0x1FBB99, [0x63, 0xA3, 0xFA])), + Pot(30, 22, PotItem.Switch, 'Skull 2 East Lobby', obj=RoomObject(0x1FBB96, [0x3F, 0xB3, 0xFA]))], + 0x58: [Pot(12, 7, PotItem.SmallMagic, 'Skull Pull Switch', obj=RoomObject(0x1FBC4B, [0x1B, 0x3B, 0xFA])), + Pot(16, 7, PotItem.Nothing, 'Skull Pull Switch', obj=RoomObject(0x1FBC4E, [0x23, 0x3B, 0xFA])), + Pot(16, 8, PotItem.SmallMagic, 'Skull Pull Switch', obj=RoomObject(0x1FBC54, [0x23, 0x43, 0xFA])), + Pot(12, 12, PotItem.Nothing, 'Skull Pull Switch', obj=RoomObject(0x1FBC51, [0x1B, 0x63, 0xFA])), + Pot(96, 9, PotItem.Nothing, 'Skull Pot Circle', obj=RoomObject(0x1FBC90, [0xC3, 0x4B, 0xFA])), + Pot(92, 8, PotItem.Nothing, 'Skull Pot Circle', obj=RoomObject(0x1FBC8D, [0xBB, 0x43, 0xFA])), + Pot(108, 8, PotItem.Nothing, 'Skull Pot Circle', obj=RoomObject(0x1FBC9F, [0xDB, 0x43, 0xFA])), + Pot(108, 6, PotItem.Nothing, 'Skull Pot Circle', obj=RoomObject(0x1FBC99, [0xDB, 0x33, 0xFA])), + Pot(104, 5, PotItem.Nothing, 'Skull Pot Circle', obj=RoomObject(0x1FBC84, [0xD3, 0x2B, 0xFA])), + Pot(92, 6, PotItem.Nothing, 'Skull Pot Circle', obj=RoomObject(0x1FBC87, [0xBB, 0x33, 0xFA])), + Pot(96, 5, PotItem.Bomb, 'Skull Pot Circle', obj=RoomObject(0x1FBC7E, [0xC3, 0x2B, 0xFA])), + Pot(100, 5, PotItem.SmallMagic, 'Skull Pot Circle', obj=RoomObject(0x1FBC81, [0xCB, 0x2B, 0xFA])), + Pot(92, 7, PotItem.Heart, 'Skull Pot Circle', obj=RoomObject(0x1FBC8A, [0xBB, 0x3B, 0xFA])), + Pot(108, 7, PotItem.Heart, 'Skull Pot Circle', obj=RoomObject(0x1FBC9C, [0xDB, 0x3B, 0xFA])), + Pot(100, 9, PotItem.SmallMagic, 'Skull Pot Circle', obj=RoomObject(0x1FBC93, [0xCB, 0x4B, 0xFA])), + Pot(104, 9, PotItem.Bomb, 'Skull Pot Circle', obj=RoomObject(0x1FBC96, [0xD3, 0x4B, 0xFA]))], + 0x59: [Pot(26, 0xb, PotItem.Heart, 'Skull 3 Lobby', PotFlags.LowerRegion, obj=RoomObject(0x1FBFC0, [0x37, 0x5B, 0xFA])), + Pot(32, 8, PotItem.Nothing, 'Skull 3 Lobby', PotFlags.LowerRegion, obj=RoomObject(0x1FBFBD, [0x43, 0x43, 0xFA])), + Pot(76, 28, PotItem.Nothing, 'Skull East Bridge', obj=RoomObject(0x1FBF82, [0x9B, 0xE3, 0xFA])), + Pot(112, 28, PotItem.Nothing, 'Skull East Bridge', obj=RoomObject(0x1FBF85, [0xE3, 0xE3, 0xFA]))], + 0x5B: [Pot(218, 0x5, PotItem.Nothing, 'GT Hidden Spikes', PotFlags.LowerRegion, obj=RoomObject(0x1FF865, [0xB7, 0x2F, 0xFA])), + Pot(222, 0x5, PotItem.Switch, 'GT Hidden Spikes', PotFlags.LowerRegion, obj=RoomObject(0x1FF868, [0xBF, 0x2F, 0xFA])), + Pot(226, 0x5, PotItem.Nothing, 'GT Hidden Spikes', PotFlags.LowerRegion, obj=RoomObject(0x1FF86B, [0xC7, 0x2F, 0xFA]))], + 0x5C: [Pot(228, 25, PotItem.Nothing, 'GT Refill', obj=RoomObject(0x1FF964, [0xCB, 0xCF, 0xFA])), + Pot(104, 24, PotItem.Nothing, 'GT Refill', obj=RoomObject(0x1FF967, [0xD3, 0xC3, 0xFA])), + Pot(228, 22, PotItem.Nothing, 'GT Refill', obj=RoomObject(0x1FF96A, [0xCB, 0xB7, 0xFA])), + Pot(216, 25, PotItem.Nothing, 'GT Refill', obj=RoomObject(0x1FF95E, [0xB3, 0xCF, 0xFA])), + Pot(84, 24, PotItem.Nothing, 'GT Refill', obj=RoomObject(0x1FF95B, [0xAB, 0xC3, 0xFA])), + Pot(216, 22, PotItem.Nothing, 'GT Refill', obj=RoomObject(0x1FF958, [0xB3, 0xB7, 0xFA])), + Pot(94, 22, PotItem.Bomb, 'GT Refill', obj=RoomObject(0x1FF955, [0xBF, 0xB3, 0xFA])), + Pot(94, 26, PotItem.BigMagic, 'GT Refill', obj=RoomObject(0x1FF961, [0xBF, 0xD3, 0xFA]))], + 0x5D: [Pot(16, 5, PotItem.Bomb, 'GT Gauntlet 2', obj=RoomObject(0x1FF99F, [0x23, 0x2B, 0xFA])), + Pot(44, 5, PotItem.FiveRupees, 'GT Gauntlet 2', obj=RoomObject(0x1FF9A2, [0x5B, 0x2B, 0xFA])), + Pot(16, 11, PotItem.OneRupee, 'GT Gauntlet 2', obj=RoomObject(0x1FF9A5, [0x23, 0x5B, 0xFA])), + Pot(44, 11, PotItem.FiveArrows, 'GT Gauntlet 2', obj=RoomObject(0x1FF9A8, [0x5B, 0x5B, 0xFA])), + Pot(12, 20, PotItem.FiveArrows, 'GT Gauntlet 3', obj=RoomObject(0x1FF9C9, [0x1B, 0xA3, 0xFA])), + Pot(48, 20, PotItem.Bomb, 'GT Gauntlet 3', obj=RoomObject(0x1FF9CC, [0x63, 0xA3, 0xFA])), + Pot(12, 28, PotItem.SmallMagic, 'GT Gauntlet 3', obj=RoomObject(0x1FF9CF, [0x1B, 0xE3, 0xFA])), + Pot(48, 28, PotItem.Bomb, 'GT Gauntlet 3', obj=RoomObject(0x1FF9D2, [0x63, 0xE3, 0xFA]))], + 0x5E: [Pot(92, 4, PotItem.SmallMagic, 'Ice Falling Square', obj=RoomObject(0x1FC679, [0xBB, 0x23, 0xFA])), + Pot(96, 4, PotItem.SmallMagic, 'Ice Falling Square', obj=RoomObject(0x1FC67C, [0xC3, 0x23, 0xFA])), + Pot(76, 8, PotItem.Heart, 'Ice Falling Square', obj=RoomObject(0x1FC67F, [0x9B, 0x43, 0xFA])), + Pot(112, 8, PotItem.Heart, 'Ice Falling Square', obj=RoomObject(0x1FC688, [0xE3, 0x43, 0xFA]))], + 0x5F: [Pot(44, 27, PotItem.Switch, 'Ice Spike Room', obj=RoomObject(0x1FC6E8, [0x5B, 0xDB, 0xFA]))], + 0x60: [Pot(76, 4, PotItem.Heart, 'Hyrule Castle West Lobby', obj=RoomObject(0x0A92B2, [0x9B, 0x23, 0xFA])), + Pot(112, 4, PotItem.Heart, 'Hyrule Castle West Lobby', obj=RoomObject(0x0A92AF, [0xE3, 0x23, 0xFA]))], + 0x62: [Pot(208, 21, PotItem.Heart, 'Hyrule Castle East Lobby', obj=RoomObject(0x0A950E, [0xA3, 0xAF, 0xFA]))], + 0x63: [Pot(48, 4, PotItem.Nothing, 'Desert Tiles 1', obj=RoomObject(0x1F88C9, [0x63, 0x23, 0xFA])), + Pot(12, 4, PotItem.Nothing, 'Desert Tiles 1', obj=RoomObject(0x1F88C6, [0x1B, 0x23, 0xFA])), + Pot(12, 8, PotItem.Nothing, 'Desert Tiles 1', obj=RoomObject(0x1F88CC, [0x1B, 0x43, 0xFA])), + Pot(48, 12, PotItem.Nothing, 'Desert Tiles 1', obj=RoomObject(0x1F88D2, [0x63, 0x63, 0xFA])), + Pot(48, 8, PotItem.Heart, 'Desert Tiles 1', obj=RoomObject(0x1F88CF, [0x63, 0x43, 0xFA])), + Pot(12, 12, PotItem.Key, 'Desert Tiles 1', obj=RoomObject(0x1F88D5, [0x1B, 0x63, 0xFA]))], + 0x64: [Pot(12, 22, PotItem.Bomb, 'Thieves Attic Hint', PotFlags.SwitchLogicChange, obj=RoomObject(0x1FD9F9, [0x1B, 0xB3, 0xFA])), + Pot(16, 22, PotItem.Bomb, 'Thieves Attic Hint', PotFlags.SwitchLogicChange, obj=RoomObject(0x1FD9FC, [0x23, 0xB3, 0xFA])), + Pot(20, 22, PotItem.Bomb, 'Thieves Attic Hint', PotFlags.SwitchLogicChange, obj=RoomObject(0x1FD9FF, [0x2B, 0xB3, 0xFA])), + Pot(36, 28, PotItem.Bomb, 'Thieves Attic Switch', obj=RoomObject(0x1FDA1A, [0x4B, 0xE3, 0xFA])), + Pot(40, 28, PotItem.SmallMagic, 'Thieves Attic Switch', obj=RoomObject(0x1FDA1D, [0x53, 0xE3, 0xFA])), + Pot(44, 28, PotItem.SmallMagic, 'Thieves Attic Switch', obj=RoomObject(0x1FDA20, [0x5B, 0xE3, 0xFA])), + Pot(48, 28, PotItem.Switch, 'Thieves Attic Switch', obj=RoomObject(0x1FDA23, [0x63, 0xE3, 0xFA]))], + 0x65: [Pot(100, 28, PotItem.Bomb, 'Thieves Attic Window', obj=RoomObject(0x1FDA95, [0xCB, 0xE3, 0xFA])), + Pot(104, 28, PotItem.Bomb, 'Thieves Attic Window', obj=RoomObject(0x1FDA98, [0xD3, 0xE3, 0xFA]))], + 0x66: [Pot(48, 0x5, PotItem.FiveArrows, 'Swamp Refill', PotFlags.LowerRegion, obj=RoomObject(0x1F9F51, [0x63, 0x2B, 0xFA])), + Pot(52, 0x5, PotItem.Bomb, 'Swamp Refill', PotFlags.LowerRegion, obj=RoomObject(0x1F9F57, [0x6B, 0x2B, 0xFA])), + Pot(56, 0x5, PotItem.FiveRupees, 'Swamp Refill', PotFlags.LowerRegion, obj=RoomObject(0x1F9F5D, [0x73, 0x2B, 0xFA])), + Pot(48, 0x6, PotItem.FiveArrows, 'Swamp Refill', PotFlags.LowerRegion, RoomObject(0x1F9F54, [0x63, 0x33, 0xFA])), + Pot(52, 0x6, PotItem.Bomb, 'Swamp Refill', PotFlags.LowerRegion, obj=RoomObject(0x1F9F5A, [0x6B, 0x33, 0xFA])), + Pot(56, 0x6, PotItem.FiveRupees, 'Swamp Refill', PotFlags.LowerRegion, obj=RoomObject(0x1F9F60, [0x73, 0x33, 0xFA])), + Pot(84, 5, PotItem.Heart, 'Swamp Behind Waterfall', obj=RoomObject(0x1F9F07, [0xAB, 0x2B, 0xFA])), + Pot(104, 5, PotItem.FiveArrows, 'Swamp Behind Waterfall', obj=RoomObject(0x1F9F0D, [0xD3, 0x2B, 0xFA])), + Pot(84, 6, PotItem.Heart, 'Swamp Behind Waterfall', obj=RoomObject(0x1F9F0A, [0xAB, 0x33, 0xFA])), + Pot(104, 6, PotItem.Bomb, 'Swamp Behind Waterfall', obj=RoomObject(0x1F9F10, [0xD3, 0x33, 0xFA]))], + 0x67: [Pot(22, 26, PotItem.Nothing, 'Skull Left Drop', obj=RoomObject(0x1FBDDE, [0x2F, 0xD3, 0xFA])), + Pot(18, 22, PotItem.Nothing, 'Skull Left Drop', obj=RoomObject(0x1FBDD2, [0x27, 0xB3, 0xFA])), + Pot(12, 7, PotItem.FiveArrows, 'Skull Left Drop', obj=RoomObject(0x1FBDCC, [0x1B, 0x3B, 0xFA])), + Pot(48, 7, PotItem.SmallMagic, 'Skull Left Drop', obj=RoomObject(0x1FBDCF, [0x63, 0x3B, 0xFA])), + Pot(18, 23, PotItem.SmallMagic, 'Skull Left Drop', obj=RoomObject(0x1FBDD5, [0x27, 0xBB, 0xFA])), + Pot(18, 26, PotItem.Heart, 'Skull Left Drop', obj=RoomObject(0x1FBDDB, [0x27, 0xD3, 0xFA])), + Pot(96, 19, PotItem.Heart, 'Skull Compass Room', obj=RoomObject(0x1FBDE7, [0xC3, 0x9B, 0xFA])), + Pot(74, 20, PotItem.SmallMagic, 'Skull Compass Room', obj=RoomObject(0x1FBDEA, [0x97, 0xA3, 0xFA])), + Pot(92, 9, PotItem.Nothing, 'Skull Compass Room', obj=RoomObject(0x1FBDE1, [0xBB, 0x4B, 0xFA])), + Pot(84, 28, PotItem.Nothing, 'Skull Compass Room', obj=RoomObject(0x1FBDF0, [0xAB, 0xE3, 0xFA])), + Pot(104, 28, PotItem.Heart, 'Skull Compass Room', obj=RoomObject(0x1FBDF3, [0xD3, 0xE3, 0xFA]))], + 0x68: [Pot(84, 14, PotItem.Nothing, 'Skull Pinball', obj=RoomObject(0x1FBE8A, [0xAB, 0x73, 0xFA])), + Pot(84, 13, PotItem.Nothing, 'Skull Pinball', obj=RoomObject(0x1FBE87, [0xAB, 0x6B, 0xFA])), + Pot(88, 12, PotItem.Nothing, 'Skull Pinball', obj=RoomObject(0x1FBE84, [0xB3, 0x63, 0xFA])), + Pot(88, 6, PotItem.Nothing, 'Skull Pinball', obj=RoomObject(0x1FBE7E, [0xB3, 0x33, 0xFA])), + Pot(88, 5, PotItem.Nothing, 'Skull Pinball', obj=RoomObject(0x1FBE7B, [0xB3, 0x2B, 0xFA])), + Pot(88, 4, PotItem.Nothing, 'Skull Pinball', obj=RoomObject(0x1FBE78, [0xB3, 0x23, 0xFA])), + Pot(64, 17, PotItem.Nothing, 'Skull Pinball', obj=RoomObject(0x1FBEA5, [0x83, 0x8B, 0xFA])), + Pot(64, 15, PotItem.Nothing, 'Skull Pinball', obj=RoomObject(0x1FBE9F, [0x83, 0x7B, 0xFA])), + Pot(64, 7, PotItem.Heart, 'Skull Pinball', obj=RoomObject(0x1FBE75, [0x83, 0x3B, 0xFA])), + Pot(88, 7, PotItem.SmallMagic, 'Skull Pinball', obj=RoomObject(0x1FBE81, [0xB3, 0x3B, 0xFA])), + Pot(64, 16, PotItem.Heart, 'Skull Pinball', obj=RoomObject(0x1FBEA2, [0x83, 0x83, 0xFA])), + Pot(64, 24, PotItem.SmallMagic, 'Skull Pinball', obj=RoomObject(0x1FBEAB, [0x83, 0xC3, 0xFA])), + Pot(64, 25, PotItem.Heart, 'Skull Pinball', obj=RoomObject(0x1FBEAE, [0x83, 0xCB, 0xFA]))], + 0x6B: [Pot(28, 5, PotItem.Heart, 'GT Crystal Paths', obj=RoomObject(0x1FF7C1, [0x3B, 0x2B, 0xFA])), + Pot(44, 5, PotItem.Nothing, 'GT Crystal Paths', obj=RoomObject(0x1FF7C4, [0x5B, 0x2B, 0xFA])), + Pot(28, 8, PotItem.Nothing, 'GT Crystal Paths', obj=RoomObject(0x1FF7D0, [0x3B, 0x43, 0xFA])), + Pot(44, 8, PotItem.SmallMagic, 'GT Crystal Paths', obj=RoomObject(0x1FF7D3, [0x5B, 0x43, 0xFA])), + Pot(28, 11, PotItem.SmallMagic, 'GT Crystal Paths', obj=RoomObject(0x1FF7D6, [0x3B, 0x5B, 0xFA])), + Pot(44, 11, PotItem.Nothing, 'GT Crystal Paths', obj=RoomObject(0x1FF7D9, [0x5B, 0x5B, 0xFA])), + Pot(90, 25, PotItem.Nothing, 'GT Mimics 2', obj=RoomObject(0x1FF7FD, [0xB7, 0xCB, 0xFA])), + Pot(98, 25, PotItem.FiveArrows, 'GT Mimics 2', obj=RoomObject(0x1FF800, [0xC7, 0xCB, 0xFA]))], + 0x6C: [Pot(20, 6, PotItem.Heart, 'GT Quad Pot', obj=RoomObject(0x1FFA8E, [0x2B, 0x33, 0xFA])), + Pot(40, 6, PotItem.FiveArrows, 'GT Quad Pot', obj=RoomObject(0x1FFA91, [0x53, 0x33, 0xFA])), + Pot(20, 10, PotItem.Bomb, 'GT Quad Pot', obj=RoomObject(0x1FFA94, [0x2B, 0x53, 0xFA])), + Pot(40, 10, PotItem.SmallMagic, 'GT Quad Pot', obj=RoomObject(0x1FFA97, [0x53, 0x53, 0xFA]))], + 0x6D: [Pot(28, 26, PotItem.Heart, 'GT Gauntlet 5', obj=RoomObject(0x1FFA3C, [0x3B, 0xD3, 0xFA])), + Pot(32, 26, PotItem.Heart, 'GT Gauntlet 5', obj=RoomObject(0x1FFA3F, [0x43, 0xD3, 0xFA])), + Pot(28, 27, PotItem.SmallMagic, 'GT Gauntlet 5', obj=RoomObject(0x1FFA42, [0x3B, 0xDB, 0xFA])), + Pot(32, 27, PotItem.SmallMagic, 'GT Gauntlet 5', obj=RoomObject(0x1FFA45, [0x43, 0xDB, 0xFA]))], + 0x73: [Pot(154, 21, PotItem.FiveArrows, 'Desert Circle of Pots', obj=RoomObject(0x1F8933, [0x37, 0xAF, 0xFA])), + Pot(158, 21, PotItem.OneRupee, 'Desert Circle of Pots', obj=RoomObject(0x1F8936, [0x3F, 0xAF, 0xFA])), + Pot(20, 23, PotItem.Switch, 'Desert Circle of Pots', obj=RoomObject(0x1F8939, [0x2B, 0xBB, 0xFA])), + Pot(36, 23, PotItem.FiveRupees, 'Desert Circle of Pots', obj=RoomObject(0x1F894E, [0x4B, 0xBB, 0xFA])), + Pot(144, 24, PotItem.Heart, 'Desert Circle of Pots', obj=RoomObject(0x1F893C, [0x23, 0xC7, 0xFA])), + Pot(168, 24, PotItem.FiveArrows, 'Desert Circle of Pots', obj=RoomObject(0x1F894B, [0x53, 0xC7, 0xFA])), + Pot(20, 26, PotItem.SmallMagic, 'Desert Circle of Pots', obj=RoomObject(0x1F893F, [0x2B, 0xD3, 0xFA])), + Pot(36, 26, PotItem.Heart, 'Desert Circle of Pots', obj=RoomObject(0x1F8948, [0x4B, 0xD3, 0xFA])), + Pot(154, 27, PotItem.OneRupee, 'Desert Circle of Pots', obj=RoomObject(0x1F8942, [0x37, 0xDF, 0xFA])), + Pot(158, 27, PotItem.FiveRupees, 'Desert Circle of Pots', obj=RoomObject(0x1F8945, [0x3F, 0xDF, 0xFA]))], + 0x74: [Pot(30, 5, PotItem.SmallMagic, 'Desert Map Room', obj=RoomObject(0x1F8A39, [0x3F, 0x2B, 0xFA])), + Pot(62, 5, PotItem.Switch, 'Desert Map Room', obj=RoomObject(0x1F89FD, [0x7F, 0x2B, 0xFA])), + Pot(94, 5, PotItem.SmallMagic, 'Desert Map Room', obj=RoomObject(0x1F8A48, [0xBF, 0x2B, 0xFA])), + Pot(14, 11, PotItem.Heart, 'Desert Map Room', obj=RoomObject(0x1F8A3C, [0x1F, 0x5B, 0xFA])), + Pot(46, 11, PotItem.FiveArrows, 'Desert Map Room', obj=RoomObject(0x1F8A3F, [0x5F, 0x5B, 0xFA])), + Pot(78, 11, PotItem.FiveArrows, 'Desert Map Room', obj=RoomObject(0x1F8A42, [0x9F, 0x5B, 0xFA])), + Pot(110, 11, PotItem.Heart, 'Desert Map Room', obj=RoomObject(0x1F8A45, [0xDF, 0x5B, 0xFA]))], + 0x75: [Pot(148, 22, PotItem.SmallMagic, 'Desert Arrow Pot Corner', obj=RoomObject(0x1F8A89, [0x2B, 0xB7, 0xFA])), + Pot(160, 22, PotItem.FiveArrows, 'Desert Arrow Pot Corner', obj=RoomObject(0x1F8A8C, [0x43, 0xB7, 0xFA])), + Pot(172, 22, PotItem.Heart, 'Desert Arrow Pot Corner', obj=RoomObject(0x1F8A8F, [0x5B, 0xB7, 0xFA]))], + 0x76: [Pot(112, 12, PotItem.Heart, 'Swamp Drain Right', obj=RoomObject(0x1F9DCC, [0xE3, 0x63, 0xFA])), + Pot(84, 23, PotItem.Heart, 'Swamp Flooded Spot', obj=RoomObject(0x1F9DF3, [0xAB, 0xBB, 0xFA])), + Pot(96, 23, PotItem.Heart, 'Swamp Flooded Spot', obj=RoomObject(0x1F9DF6, [0xC3, 0xBB, 0xFA]))], + 0x7B: [Pot(48, 10, PotItem.Nothing, 'GT Conveyor Star Pits', obj=RoomObject(0x1FEF9B, [0x63, 0x53, 0xFA])), + Pot(88, 10, PotItem.Nothing, 'GT Conveyor Star Pits', obj=RoomObject(0x1FEFA1, [0xB3, 0x53, 0xFA])), + Pot(76, 7, PotItem.Nothing, 'GT Conveyor Star Pits', obj=RoomObject(0x1FEF9E, [0x9B, 0x3B, 0xFA])), + Pot(60, 4, PotItem.Heart, 'GT Conveyor Star Pits', obj=RoomObject(0x1FEFAD, [0x7B, 0x23, 0xFA])), + Pot(64, 4, PotItem.Key, 'GT Conveyor Star Pits', obj=RoomObject(0x1FEFB0, [0x83, 0x23, 0xFA]))], + 0x7C: [Pot(36, 21, PotItem.Nothing, 'GT Falling Bridge', obj=RoomObject(0x1FF0AA, [0x4B, 0xAB, 0xFA])), + Pot(24, 11, PotItem.Nothing, 'GT Falling Bridge', obj=RoomObject(0x1FF095, [0x33, 0x5B, 0xFA])), + Pot(28, 4, PotItem.Heart, 'GT Falling Bridge', obj=RoomObject(0x1FF08F, [0x3B, 0x23, 0xFA])), + Pot(32, 4, PotItem.Heart, 'GT Falling Bridge', obj=RoomObject(0x1FF092, [0x43, 0x23, 0xFA]))], + 0x7D: [Pot(44, 12, PotItem.Nothing, 'GT Firesnake Room', obj=RoomObject(0x1FF155, [0x5B, 0x63, 0xFA])), + Pot(44, 6, PotItem.Nothing, 'GT Firesnake Room', obj=RoomObject(0x1FF152, [0x5B, 0x33, 0xFA])), + Pot(112, 6, PotItem.Heart, 'GT Firesnake Room', obj=RoomObject(0x1FF16A, [0xE3, 0x33, 0xFA])), + Pot(108, 20, PotItem.FiveArrows, 'GT Warp Maze - Pot Rail', obj=RoomObject(0x1FF1EB, [0xDB, 0xA3, 0xFA])), + Pot(114, 20, PotItem.Bomb, 'GT Petting Zoo', obj=RoomObject(0x1FF1EE, [0xE7, 0xA3, 0xFA])), + Pot(76, 28, PotItem.Bomb, 'GT Petting Zoo', obj=RoomObject(0x1FF1F1, [0x9B, 0xE3, 0xFA]))], + 0x7E: [Pot(86, 15, PotItem.Heart, 'Ice Tall Hint', obj=RoomObject(0x1FC77E, [0xAF, 0x7B, 0xFA])), + Pot(82, 26, PotItem.SmallMagic, 'Ice Tall Hint', obj=RoomObject(0x1FC781, [0xA7, 0xD3, 0xFA])), + Pot(100, 26, PotItem.Switch, 'Ice Tall Hint', obj=RoomObject(0x1FC7A2, [0xCB, 0xD3, 0xFA])), + Pot(104, 26, PotItem.Nothing, 'Ice Tall Hint', obj=RoomObject(0x1FC7A5, [0xD3, 0xD3, 0xFA]))], + 0x80: [Pot(48, 4, PotItem.Heart, 'Hyrule Dungeon Cellblock', obj=RoomObject(0x0AA3CD, [0x63, 0x23, 0xFA])), + Pot(52, 4, PotItem.Heart, 'Hyrule Dungeon Cellblock', obj=RoomObject(0x0AA3D3, [0x6B, 0x23, 0xFA])), + Pot(56, 4, PotItem.Heart, 'Hyrule Dungeon Cellblock', obj=RoomObject(0x0AA3D6, [0x73, 0x23, 0xFA]))], + 0x82: [Pot(50, 0x5, PotItem.Nothing, 'Hyrule Dungeon South Abyss', PotFlags.LowerRegion, obj=RoomObject(0x0AA0D5, [0x67, 0x2B, 0xFA])), + Pot(50, 0xA, PotItem.Nothing, 'Hyrule Dungeon South Abyss', PotFlags.LowerRegion, obj=RoomObject(0x0AA0D8, [0x67, 0x53, 0xFA])), + Pot(76, 0x12, PotItem.Heart, 'Hyrule Dungeon South Abyss', PotFlags.LowerRegion, obj=RoomObject(0x0AA0D2, [0x9B, 0x93, 0xFA]))], + 0x83: [Pot(76, 4, PotItem.FiveArrows, 'Desert West Wing', obj=RoomObject(0x1F8B54, [0x9B, 0x23, 0xFA])), + Pot(80, 4, PotItem.OneRupee, 'Desert West Wing', obj=RoomObject(0x1F8B57, [0xA3, 0x23, 0xFA])), + Pot(76, 28, PotItem.FiveRupees, 'Desert West Wing', obj=RoomObject(0x1F8B5A, [0x9B, 0xE3, 0xFA])), + Pot(80, 28, PotItem.FiveArrows, 'Desert West Wing', obj=RoomObject(0x1F8B5D, [0xA3, 0xE3, 0xFA]))], + 0x84: [Pot(64, 17, PotItem.Nothing, 'Desert Main Lobby', obj=RoomObject(0x1F8C90, [0x83, 0x8B, 0xFA])), + Pot(60, 17, PotItem.Nothing, 'Desert Main Lobby', obj=RoomObject(0x1F8C8D, [0x7B, 0x8B, 0xFA])), + Pot(80, 14, PotItem.Nothing, 'Desert Main Lobby', obj=RoomObject(0x1F8C93, [0xA3, 0x73, 0xFA])), + Pot(44, 14, PotItem.Nothing, 'Desert Main Lobby', obj=RoomObject(0x1F8C96, [0x5B, 0x73, 0xFA])), + Pot(100, 6, PotItem.Nothing, 'Desert Main Lobby', obj=RoomObject(0x1F8C87, [0xCB, 0x33, 0xFA])), + Pot(24, 6, PotItem.Nothing, 'Desert Main Lobby', obj=RoomObject(0x1F8C81, [0x33, 0x33, 0xFA])), + Pot(24, 7, PotItem.FiveArrows, 'Desert Main Lobby', obj=RoomObject(0x1F8C84, [0x33, 0x3B, 0xFA])), + Pot(100, 7, PotItem.FiveArrows, 'Desert Main Lobby', obj=RoomObject(0x1F8C8A, [0xCB, 0x3B, 0xFA]))], + 0x85: [Pot(44, 28, PotItem.Heart, 'Desert East Wing', obj=RoomObject(0x1F8D59, [0x5B, 0xE3, 0xFA])), + Pot(48, 28, PotItem.FiveArrows, 'Desert East Wing', obj=RoomObject(0x1F8D5C, [0x63, 0xE3, 0xFA]))], + 0x87: [Pot(12, 11, PotItem.Nothing, 'Hera Tile Room', obj=RoomObject(0x1FD12A, [0x1B, 0x5B, 0xFA])), + Pot(16, 12, PotItem.Nothing, 'Hera Tile Room', obj=RoomObject(0x1FD130, [0x23, 0x63, 0xFA])), + Pot(40, 12, PotItem.Nothing, 'Hera Tile Room', obj=RoomObject(0x1FD139, [0x53, 0x63, 0xFA])), + Pot(32, 12, PotItem.Nothing, 'Hera Tile Room', obj=RoomObject(0x1FD136, [0x43, 0x63, 0xFA])), + Pot(24, 12, PotItem.Nothing, 'Hera Tile Room', obj=RoomObject(0x1FD133, [0x33, 0x63, 0xFA])), + Pot(16, 11, PotItem.Nothing, 'Hera Tile Room', obj=RoomObject(0x1FD12D, [0x23, 0x5B, 0xFA])), + Pot(76, 20, PotItem.SmallMagic, 'Hera Torches', obj=RoomObject(0x1FD18D, [0x9B, 0xA3, 0xFA])), + Pot(112, 20, PotItem.BigMagic, 'Hera Torches', obj=RoomObject(0x1FD190, [0xE3, 0xA3, 0xFA]))], + 0x8B: [Pot(76, 12, PotItem.Nothing, 'GT Conveyor Cross', obj=RoomObject(0x1FF2F7, [0x9B, 0x63, 0xFA])), + Pot(112, 12, PotItem.Key, 'GT Conveyor Cross', obj=RoomObject(0x1FF2FA, [0xE3, 0x63, 0xFA])), + Pot(32, 23, PotItem.Nothing, 'GT Hookshot South Platform', obj=RoomObject(0x1FF2C7, [0x43, 0xBB, 0xFA])), + Pot(28, 23, PotItem.Nothing, 'GT Hookshot South Platform', obj=RoomObject(0x1FF2C4, [0x3B, 0xBB, 0xFA])), + Pot(32, 9, PotItem.SmallMagic, 'GT Hookshot Mid Platform', obj=RoomObject(0x1FF2C1, [0x43, 0x4B, 0xFA])), + Pot(76, 20, PotItem.Nothing, 'GT Map Room', obj=RoomObject(0x1FF309, [0x9B, 0xA3, 0xFA])), + Pot(76, 28, PotItem.Heart, 'GT Map Room', obj=RoomObject(0x1FF30C, [0x9B, 0xE3, 0xFA]))], + 0x8C: [Pot(76, 12, PotItem.Switch, 'GT Hope Room', obj=RoomObject(0x1FF377, [0x9B, 0x63, 0xFA])), + Pot(112, 12, PotItem.SmallMagic, 'GT Hope Room', obj=RoomObject(0x1FF37A, [0xE3, 0x63, 0xFA])), + Pot(76, 20, PotItem.Bomb, "GT Bob's Room", obj=RoomObject(0x1FF3B9, [0x9B, 0xA3, 0xFA])), + Pot(92, 20, PotItem.Bomb, "GT Bob's Room", obj=RoomObject(0x1FF3BF, [0xBB, 0xA3, 0xFA])), + Pot(100, 21, PotItem.FiveArrows, "GT Bob's Room", obj=RoomObject(0x1FF3C2, [0xCB, 0xAB, 0xFA])), + Pot(104, 26, PotItem.Bomb, "GT Bob's Room", obj=RoomObject(0x1FF3E0, [0xD3, 0xD3, 0xFA])), + Pot(88, 27, PotItem.Bomb, "GT Bob's Room", obj=RoomObject(0x1FF3BC, [0xB3, 0xDB, 0xFA]))], + 0x8D: [Pot(204, 11, PotItem.Nothing, 'GT Speed Torch Upper', obj=RoomObject(0x1FF492, [0x9B, 0x5F, 0xFA])), + Pot(204, 14, PotItem.BigMagic, 'GT Speed Torch Upper', obj=RoomObject(0x1FF495, [0x9B, 0x77, 0xFA])), + Pot(28, 23, PotItem.Heart, 'GT Pots n Blocks', obj=RoomObject(0x1FF477, [0x3B, 0xBB, 0xFA])), + Pot(36, 23, PotItem.Heart, 'GT Pots n Blocks', obj=RoomObject(0x1FF47D, [0x4B, 0xBB, 0xFA])), + Pot(32, 24, PotItem.BigMagic, 'GT Pots n Blocks', obj=RoomObject(0x1FF47A, [0x43, 0xC3, 0xFA]))], + 0x8E: [Pot(80, 5, PotItem.FiveArrows, 'Ice Lonely Freezor', obj=RoomObject(0x1FC835, [0xA3, 0x2B, 0xFA])), + Pot(80, 6, PotItem.Nothing, 'Ice Lonely Freezor', obj=RoomObject(0x1FC838, [0xA3, 0x33, 0xFA]))], + 0x91: [Pot(84, 4, PotItem.Heart, 'Mire Falling Foes', obj=RoomObject(0x1FB9B0, [0xAB, 0x23, 0xFA])), + Pot(104, 4, PotItem.SmallMagic, 'Mire Falling Foes', obj=RoomObject(0x1FB9B3, [0xD3, 0x23, 0xFA]))], + 0x92: [Pot(86, 23, PotItem.Nothing, 'Mire Tall Dark and Roomy', obj=RoomObject(0x1FB966, [0xAF, 0xBB, 0xFA])), + Pot(92, 23, PotItem.Nothing, 'Mire Tall Dark and Roomy', obj=RoomObject(0x1FB969, [0xBB, 0xBB, 0xFA])), + Pot(98, 23, PotItem.Nothing, 'Mire Tall Dark and Roomy', obj=RoomObject(0x1FB96C, [0xC7, 0xBB, 0xFA])), + Pot(104, 23, PotItem.Nothing, 'Mire Tall Dark and Roomy', obj=RoomObject(0x1FB96F, [0xD3, 0xBB, 0xFA]))], + 0x93: [Pot(28, 7, PotItem.Switch, 'Mire Dark Shooters', obj=RoomObject(0x1FB85D, [0x3B, 0x3B, 0xFA])), Pot(0x9C, 0x17, PotItem.Nothing, 'Mire Block X', PotFlags.Block), - Pot(96, 7, PotItem.Heart, 'Mire Dark Shooters', PotFlags.NoSwitch)], - 0x96: [Pot(14, 18, PotItem.Nothing, 'GT Torch Cross'), - Pot(32, 5, PotItem.Nothing, 'GT Torch Cross'), - Pot(0x2e, 0xb, PotItem.Nothing, 'GT Torch Cross'), - Pot(32, 17, PotItem.SmallMagic, 'GT Torch Cross'), - Pot(32, 24, PotItem.SmallMagic, 'GT Torch Cross'), - Pot(14, 24, PotItem.Nothing, 'GT Torch Cross'), - Pot(76, 21, PotItem.Heart, 'GT Staredown'), - Pot(112, 21, PotItem.BigMagic, 'GT Staredown')], - 153: [Pot(40, 20, PotItem.SmallMagic, 'Eastern Darkness'), Pot(84, 20, PotItem.Heart, 'Eastern Darkness')], - 0x9B: [Pot(48, 4, PotItem.SmallMagic, 'GT Double Switch Pot Corners'), Pot(48, 12, PotItem.Key, 'GT Double Switch Pot Corners'), Pot(28, 24, PotItem.Nothing, 'GT Warp Maze - Mid Section'), Pot(32, 24, PotItem.Nothing, 'GT Warp Maze - Mid Section')], - 156: [Pot(56, 8, PotItem.SmallMagic, 'GT Invisible Catwalk'), Pot(56, 9, PotItem.FiveArrows, 'GT Invisible Catwalk')], - 157: [Pot(76, 4, PotItem.Bomb, 'GT Crystal Conveyor Left'), Pot(84, 4, PotItem.SmallMagic, 'GT Crystal Conveyor Left'), Pot(32, 7, PotItem.Nothing, 'GT Compass Room'), Pot(40, 9, PotItem.Nothing, 'GT Compass Room')], - 0x9F: [Pot(138, 20, PotItem.Nothing, 'Ice Many Pots'), Pot(138, 19, PotItem.Heart, 'Ice Many Pots'), Pot(178, 19, PotItem.Heart, 'Ice Many Pots'), Pot(40, 21, PotItem.Switch, 'Ice Many Pots'), Pot(138, 21, PotItem.Key, 'Ice Many Pots'), - Pot(20, 27, PotItem.Heart, 'Ice Many Pots'), Pot(138, 27, PotItem.Heart, 'Ice Many Pots'), Pot(178, 28, PotItem.Heart, 'Ice Many Pots'), Pot(178, 21, PotItem.Nothing, 'Ice Many Pots'), Pot(178, 20, PotItem.Nothing, 'Ice Many Pots'), - Pot(40, 27, PotItem.Nothing, 'Ice Many Pots'), Pot(178, 27, PotItem.Nothing, 'Ice Many Pots'), Pot(178, 26, PotItem.Nothing, 'Ice Many Pots'), Pot(138, 28, PotItem.Nothing, 'Ice Many Pots'), Pot(138, 26, PotItem.Nothing, 'Ice Many Pots'), - Pot(20, 21, PotItem.Nothing, 'Ice Many Pots')], - 0xA1: [Pot(150, 6, PotItem.Key, 'Mire Fishbone'), Pot(100, 11, PotItem.SmallMagic, 'Mire Fishbone'), Pot(104, 12, PotItem.Heart, 'Mire Fishbone'), Pot(108, 13, PotItem.SmallMagic, 'Mire Fishbone'), Pot(112, 14, PotItem.Heart, 'Mire Fishbone'), - Pot(96, 27, PotItem.Nothing, 'Mire South Fish'), Pot(92, 21, PotItem.Nothing, 'Mire South Fish'), Pot(96, 23, PotItem.Heart, 'Mire South Fish'), Pot(92, 25, PotItem.Nothing, 'Mire South Fish'), - Pot(76, 28, PotItem.Nothing, 'Mire South Fish'), Pot(112, 28, PotItem.Nothing, 'Mire South Fish')], - 0xA2: [Pot(12, 28, PotItem.BigMagic, 'Mire Left Bridge')], - 168: [Pot(138, 28, PotItem.Nothing, 'Eastern Stalfos Spawn'), Pot(178, 28, PotItem.Nothing, 'Eastern Stalfos Spawn'), Pot(178, 19, PotItem.Nothing, 'Eastern Stalfos Spawn'), Pot(138, 19, PotItem.Heart, 'Eastern Stalfos Spawn'), - Pot(30, 24, PotItem.OneRupee, 'Eastern Stalfos Spawn')], - 0xA9: [Pot(144, 0xB, PotItem.FiveArrows, 'Eastern Courtyard', PotFlags.LowerRegion), - Pot(236, 0xB, PotItem.FiveArrows, 'Eastern Courtyard', PotFlags.LowerRegion), - Pot(144, 0xC, PotItem.FiveArrows, 'Eastern Courtyard', PotFlags.LowerRegion), - Pot(236, 0xC, PotItem.Heart, 'Eastern Courtyard', PotFlags.LowerRegion), - Pot(12, 19, PotItem.Nothing, 'Eastern Courtyard Ledge'), - Pot(112, 19, PotItem.Nothing, 'Eastern Courtyard Ledge'), - Pot(16, 20, PotItem.Heart, 'Eastern Courtyard Ledge'), - Pot(108, 20, PotItem.Heart, 'Eastern Courtyard Ledge')], - 0xAA: [Pot(212, 10, PotItem.Nothing, 'Eastern Pot Switch'), Pot(232, 10, PotItem.Nothing, 'Eastern Pot Switch'), - Pot(232, 5, PotItem.Nothing, 'Eastern Pot Switch'), Pot(212, 5, PotItem.Heart, 'Eastern Pot Switch'), - Pot(94, 8, PotItem.Switch, 'Eastern Pot Switch'), - Pot(108, 0x17, PotItem.Heart, 'Eastern Map Balcony', PotFlags.LowerRegion), - Pot(108, 0x18, PotItem.Heart, 'Eastern Map Balcony', PotFlags.LowerRegion), - Pot(108, 0x19, PotItem.Heart, 'Eastern Map Balcony', PotFlags.LowerRegion)], - 0xAB: [Pot(20, 24, PotItem.Key, 'Thieves Spike Switch')], - 174: [Pot(76, 12, PotItem.Switch, 'Iced T')], - 176: [Pot(20, 27, PotItem.Nothing, 'Tower Circle of Pots'), Pot(24, 24, PotItem.Nothing, 'Tower Circle of Pots'), Pot(44, 25, PotItem.Nothing, 'Tower Circle of Pots'), Pot(20, 21, PotItem.Bomb, 'Tower Circle of Pots'), - Pot(28, 21, PotItem.OneRupee, 'Tower Circle of Pots'), Pot(32, 21, PotItem.FiveRupees, 'Tower Circle of Pots'), Pot(40, 21, PotItem.FiveArrows, 'Tower Circle of Pots'), Pot(16, 23, PotItem.FiveRupees, 'Tower Circle of Pots'), - Pot(44, 23, PotItem.OneRupee, 'Tower Circle of Pots'), Pot(36, 24, PotItem.Heart, 'Tower Circle of Pots'), Pot(16, 25, PotItem.Heart, 'Tower Circle of Pots'), Pot(28, 27, PotItem.FiveArrows, 'Tower Circle of Pots'), - Pot(40, 27, PotItem.Bomb, 'Tower Circle of Pots'), Pot(32, 27, PotItem.Nothing, 'Tower Circle of Pots')], - 177: [Pot(76, 4, PotItem.Heart, 'Mire Spike Barrier'), Pot(112, 4, PotItem.OneRupee, 'Mire Spike Barrier')], - 0xB2: [Pot(48, 0x8, PotItem.OneRupee, 'Mire BK Door Room', PotFlags.LowerRegion), - Pot(76, 0x8, PotItem.OneRupee, 'Mire BK Door Room', PotFlags.LowerRegion), - Pot(48, 0x9, PotItem.Nothing, 'Mire BK Door Room', PotFlags.LowerRegion), - Pot(76, 0x9, PotItem.Heart, 'Mire BK Door Room', PotFlags.LowerRegion), - Pot(48, 0xA, PotItem.Nothing, 'Mire BK Door Room', PotFlags.LowerRegion), - Pot(76, 0xA, PotItem.Nothing, 'Mire BK Door Room', PotFlags.LowerRegion)], - 0xB3: [Pot(12, 20, PotItem.Key, 'Mire Spikes'), Pot(48, 20, PotItem.SmallMagic, 'Mire Spikes'), Pot(48, 28, PotItem.Switch, 'Mire Spikes')], - 0xB4: [Pot(44, 28, PotItem.BigMagic, 'TR Final Abyss Balcony'), Pot(48, 28, PotItem.Heart, 'TR Final Abyss Balcony')], - 0xB5: [Pot(112, 4, PotItem.FiveRupees, 'TR Dark Ride Ledges'), Pot(112, 15, PotItem.Heart, 'TR Dark Ride Ledges'), - Pot(76, 16, PotItem.Switch, 'TR Dark Ride Ledges'), Pot(112, 16, PotItem.BigMagic, 'TR Dark Ride Ledges'), - Pot(112, 17, PotItem.Heart, 'TR Dark Ride Ledges'), Pot(112, 28, PotItem.Bomb, 'TR Dark Ride Ledges')], - 0xB6: [Pot(94, 9, PotItem.BigMagic, 'TR Refill')], - 0xB7: [Pot(30, 5, PotItem.SmallMagic, 'TR Roller Room')], - 0xB8: [Pot(96, 13, PotItem.Switch, 'Eastern Big Key'), Pot(88, 16, PotItem.Heart, 'Eastern Big Key'), Pot(104, 16, PotItem.Heart, 'Eastern Big Key')], - 0xB9: [Pot(92, 18, PotItem.OneRupee, 'Eastern Cannonball'), Pot(96, 18, PotItem.FiveRupees, 'Eastern Cannonball'), Pot(104, 18, PotItem.FiveRupees, 'Eastern Cannonball'), Pot(108, 18, PotItem.OneRupee, 'Eastern Cannonball')], - 0xBA: [Pot(100, 8, PotItem.Nothing, 'Eastern Dark Pots'), Pot(88, 8, PotItem.Nothing, 'Eastern Dark Pots'), Pot(94, 4, PotItem.OneRupee, 'Eastern Dark Pots'), Pot(76, 6, PotItem.Heart, 'Eastern Dark Pots'), - Pot(112, 6, PotItem.Key, 'Eastern Dark Pots'), Pot(76, 10, PotItem.Heart, 'Eastern Dark Pots'), Pot(112, 10, PotItem.SmallMagic, 'Eastern Dark Pots'), Pot(94, 12, PotItem.OneRupee, 'Eastern Dark Pots')], - 0xBC: [Pot(86, 4, PotItem.Heart, 'Thieves Hallway'), Pot(102, 4, PotItem.Key, 'Thieves Hallway'), Pot(138, 3, PotItem.Bomb, 'Thieves Conveyor Maze'), Pot(178, 3, PotItem.Switch, 'Thieves Conveyor Maze'), - Pot(138, 12, PotItem.Heart, 'Thieves Conveyor Maze'), Pot(178, 12, PotItem.Bomb, 'Thieves Conveyor Maze'), Pot(12, 20, PotItem.Nothing, 'Thieves Pot Alcove Mid'), Pot(48, 20, PotItem.Bomb, 'Thieves Pot Alcove Mid'), - Pot(12, 28, PotItem.Bomb, 'Thieves Pot Alcove Mid'), Pot(48, 28, PotItem.Bomb, 'Thieves Pot Alcove Mid'), Pot(28, 21, PotItem.FiveRupees, 'Thieves Pot Alcove Top'), Pot(32, 21, PotItem.FiveRupees, 'Thieves Pot Alcove Top'), - Pot(28, 27, PotItem.FiveRupees, 'Thieves Pot Alcove Bottom'), Pot(32, 27, PotItem.FiveRupees, 'Thieves Pot Alcove Bottom')], - 190: [Pot(92, 25, PotItem.Switch, 'Ice Switch Room')], - 191: [Pot(40, 20, PotItem.FiveArrows, 'Ice Refill'), Pot(44, 20, PotItem.Heart, 'Ice Refill'), Pot(48, 20, PotItem.Bomb, 'Ice Refill'), Pot(40, 28, PotItem.SmallMagic, 'Ice Refill'), Pot(44, 28, PotItem.SmallMagic, 'Ice Refill'), - Pot(48, 28, PotItem.SmallMagic, 'Ice Refill')], - 192: [Pot(48, 10, PotItem.Bomb, 'Tower Dark Pits'), Pot(12, 14, PotItem.FiveRupees, 'Tower Dark Pits'), Pot(12, 26, PotItem.Heart, 'Tower Dark Pits'), Pot(28, 27, PotItem.OneRupee, 'Tower Dark Pits')], - 0xC2: [Pot(180, 7, PotItem.Switch, 'Mire Hub Switch'), - Pot(100, 0xE, PotItem.SmallMagic, 'Mire Hub Right', PotFlags.LowerRegion), - Pot(68, 0x10, PotItem.OneRupee, 'Mire Hub', PotFlags.LowerRegion), - Pot(64, 0x14, PotItem.FiveArrows, 'Mire Hub', PotFlags.LowerRegion)], - 0xC4: [Pot(84, 9, PotItem.Bomb, 'TR Crystal Maze Interior'), Pot(24, 14, PotItem.Heart, 'TR Crystal Maze Interior'), Pot(56, 17, PotItem.FiveRupees, 'TR Crystal Maze Interior'), Pot(84, 17, PotItem.Bomb, 'TR Crystal Maze Interior'), - Pot(12, 21, PotItem.FiveArrows, 'TR Crystal Maze Interior'), Pot(76, 23, PotItem.OneRupee, 'TR Crystal Maze Interior'), Pot(48, 25, PotItem.SmallMagic, 'TR Crystal Maze Interior'), Pot(12, 26, PotItem.Heart, 'TR Crystal Maze Interior')], - 0xC6: [Pot(12, 7, PotItem.BigMagic, 'TR Hub Ledges'), Pot(12, 25, PotItem.Heart, 'TR Hub Ledges')], - 0xC7: [Pot(12, 10, PotItem.Heart, 'TR Torches'), Pot(12, 11, PotItem.BigMagic, 'TR Torches'), Pot(12, 22, PotItem.SmallMagic, 'TR Torches Ledge'), Pot(12, 28, PotItem.FiveArrows, 'TR Torches Ledge')], - 0xC9: [Pot(30, 22, PotItem.OneRupee, 'Eastern Lobby'), Pot(94, 22, PotItem.OneRupee, 'Eastern Lobby'), Pot(60, 22, PotItem.Switch, 'Eastern Lobby')], - 0xCB: [Pot(80, 4, PotItem.Nothing, 'Thieves Ambush'), Pot(80, 28, PotItem.Nothing, 'Thieves Ambush'), Pot(88, 16, PotItem.Heart, 'Thieves Ambush'), Pot(88, 28, PotItem.FiveRupees, 'Thieves Ambush')], - 0xCC: [Pot(36, 4, PotItem.FiveRupees, 'Thieves Rail Ledge'), Pot(36, 28, PotItem.FiveRupees, 'Thieves Rail Ledge'), Pot(112, 4, PotItem.Heart, 'Thieves BK Corner'), Pot(112, 28, PotItem.Bomb, 'Thieves BK Corner')], - 0xCE: [Pot(76, 8, PotItem.SmallMagic, 'Ice Antechamber'), Pot(80, 8, PotItem.SmallMagic, 'Ice Antechamber'), - Pot(108, 12, PotItem.Bomb, 'Ice Antechamber'), Pot(112, 12, PotItem.FiveArrows, 'Ice Antechamber'), + Pot(96, 7, PotItem.Heart, 'Mire Dark Shooters', PotFlags.NoSwitch, obj=RoomObject(0x1FB860, [0xC3, 0x3B, 0xFA]))], + 0x96: [Pot(14, 18, PotItem.Nothing, 'GT Torch Cross', obj=RoomObject(0x1FFC69, [0x1F, 0x93, 0xFA])), + Pot(32, 5, PotItem.Nothing, 'GT Torch Cross', obj=RoomObject(0x1FFC5D, [0x43, 0x2B, 0xFA])), + Pot(46, 11, PotItem.Nothing, 'GT Torch Cross', obj=RoomObject(0x1FFC60, [0x5F, 0x5B, 0xFA])), + Pot(32, 17, PotItem.SmallMagic, 'GT Torch Cross', obj=RoomObject(0x1FFC63, [0x43, 0x8B, 0xFA])), + Pot(32, 24, PotItem.SmallMagic, 'GT Torch Cross', obj=RoomObject(0x1FFC6F, [0x43, 0xC3, 0xFA])), + Pot(14, 24, PotItem.Nothing, 'GT Torch Cross', obj=RoomObject(0x1FFC6C, [0x1F, 0xC3, 0xFA])), + Pot(76, 21, PotItem.Heart, 'GT Staredown', obj=RoomObject(0x1FFC0F, [0x9B, 0xAB, 0xFA])), + Pot(112, 21, PotItem.BigMagic, 'GT Staredown', obj=RoomObject(0x1FFC12, [0xE3, 0xAB, 0xFA]))], + 0x99: [Pot(40, 20, PotItem.SmallMagic, 'Eastern Darkness', obj=RoomObject(0x0A96F4, [0x53, 0xA3, 0xFA])), + Pot(84, 20, PotItem.Heart, 'Eastern Darkness', obj=RoomObject(0x0A96F7, [0xAB, 0xA3, 0xFA]))], + 0x9B: [Pot(48, 4, PotItem.SmallMagic, 'GT Double Switch Pot Corners', obj=RoomObject(0x1FF509, [0x63, 0x23, 0xFA])), + Pot(48, 12, PotItem.Key, 'GT Double Switch Pot Corners', obj=RoomObject(0x1FF50C, [0x63, 0x63, 0xFA])), + Pot(28, 24, PotItem.Nothing, 'GT Warp Maze - Mid Section', obj=RoomObject(0x1FF53C, [0x3B, 0xC3, 0xFA])), + Pot(32, 24, PotItem.Nothing, 'GT Warp Maze - Mid Section', obj=RoomObject(0x1FF53F, [0x43, 0xC3, 0xFA]))], + 0x9C: [Pot(56, 8, PotItem.SmallMagic, 'GT Invisible Catwalk', obj=RoomObject(0x1FF693, [0x73, 0x43, 0xFA])), + Pot(56, 9, PotItem.FiveArrows, 'GT Invisible Catwalk', obj=RoomObject(0x1FF696, [0x73, 0x4B, 0xFA]))], + 0x9D: [Pot(76, 4, PotItem.Bomb, 'GT Crystal Conveyor Left', obj=RoomObject(0x1FF6ED, [0x9B, 0x23, 0xFA])), + Pot(84, 4, PotItem.SmallMagic, 'GT Crystal Conveyor Left', obj=RoomObject(0x1FF6F0, [0xAB, 0x23, 0xFA])), + Pot(32, 7, PotItem.Nothing, 'GT Compass Room', obj=RoomObject(0x1FF6EA, [0x43, 0x3B, 0xFA])), + Pot(40, 9, PotItem.Nothing, 'GT Compass Room', obj=RoomObject(0x1FF6E7, [0x53, 0x4B, 0xFA]))], + 0x9F: [Pot(138, 20, PotItem.Nothing, 'Ice Many Pots', obj=RoomObject(0x1FC904, [0x17, 0xA7, 0xFA])), + Pot(138, 19, PotItem.Heart, 'Ice Many Pots', obj=RoomObject(0x1FC901, [0x17, 0x9F, 0xFA])), + Pot(178, 19, PotItem.Heart, 'Ice Many Pots', obj=RoomObject(0x1FC913, [0x67, 0x9F, 0xFA])), + Pot(40, 21, PotItem.Switch, 'Ice Many Pots', obj=RoomObject(0x1FC928, [0x53, 0xAB, 0xFA])), + Pot(138, 21, PotItem.Key, 'Ice Many Pots', obj=RoomObject(0x1FC907, [0x17, 0xAF, 0xFA])), + Pot(20, 27, PotItem.Heart, 'Ice Many Pots', obj=RoomObject(0x1FC92B, [0x2B, 0xDB, 0xFA])), + Pot(138, 27, PotItem.Heart, 'Ice Many Pots', obj=RoomObject(0x1FC90D, [0x17, 0xDF, 0xFA])), + Pot(178, 28, PotItem.Heart, 'Ice Many Pots', obj=RoomObject(0x1FC922, [0x67, 0xE7, 0xFA])), + Pot(178, 21, PotItem.Nothing, 'Ice Many Pots', obj=RoomObject(0x1FC919, [0x67, 0xAF, 0xFA])), + Pot(178, 20, PotItem.Nothing, 'Ice Many Pots', obj=RoomObject(0x1FC916, [0x67, 0xA7, 0xFA])), + Pot(40, 27, PotItem.Nothing, 'Ice Many Pots', obj=RoomObject(0x1FC92E, [0x53, 0xDB, 0xFA])), + Pot(178, 27, PotItem.Nothing, 'Ice Many Pots', obj=RoomObject(0x1FC91F, [0x67, 0xDF, 0xFA])), + Pot(178, 26, PotItem.Nothing, 'Ice Many Pots', obj=RoomObject(0x1FC91C, [0x67, 0xD7, 0xFA])), + Pot(138, 28, PotItem.Nothing, 'Ice Many Pots', obj=RoomObject(0x1FC910, [0x17, 0xE7, 0xFA])), + Pot(138, 26, PotItem.Nothing, 'Ice Many Pots', obj=RoomObject(0x1FC90A, [0x17, 0xD7, 0xFA])), + Pot(20, 21, PotItem.Nothing, 'Ice Many Pots', obj=RoomObject(0x1FC925, [0x2B, 0xAB, 0xFA]))], + 0xA1: [Pot(150, 6, PotItem.Key, 'Mire Fishbone', obj=RoomObject(0x1FB7F2, [0x2F, 0x37, 0xFA])), + Pot(100, 11, PotItem.SmallMagic, 'Mire Fishbone', obj=RoomObject(0x1FB80D, [0xCB, 0x5B, 0xFA])), + Pot(104, 12, PotItem.Heart, 'Mire Fishbone', obj=RoomObject(0x1FB810, [0xD3, 0x63, 0xFA])), + Pot(108, 13, PotItem.SmallMagic, 'Mire Fishbone', obj=RoomObject(0x1FB813, [0xDB, 0x6B, 0xFA])), + Pot(112, 14, PotItem.Heart, 'Mire Fishbone', obj=RoomObject(0x1FB816, [0xE3, 0x73, 0xFA])), + Pot(96, 27, PotItem.Nothing, 'Mire South Fish', obj=RoomObject(0x1FB804, [0xC3, 0xDB, 0xFA])), + Pot(92, 21, PotItem.Nothing, 'Mire South Fish', obj=RoomObject(0x1FB7FB, [0xBB, 0xAB, 0xFA])), + Pot(96, 23, PotItem.Heart, 'Mire South Fish', obj=RoomObject(0x1FB7FE, [0xC3, 0xBB, 0xFA])), + Pot(92, 25, PotItem.Nothing, 'Mire South Fish', obj=RoomObject(0x1FB801, [0xBB, 0xCB, 0xFA])), + Pot(76, 28, PotItem.Nothing, 'Mire South Fish', obj=RoomObject(0x1FB807, [0x9B, 0xE3, 0xFA])), + Pot(112, 28, PotItem.Nothing, 'Mire South Fish', obj=RoomObject(0x1FB80A, [0xE3, 0xE3, 0xFA]))], + 0xA2: [Pot(12, 28, PotItem.BigMagic, 'Mire Left Bridge', obj=RoomObject(0x1FB6B1, [0x1B, 0xE3, 0xFA]))], + 0xA8: [Pot(138, 28, PotItem.Nothing, 'Eastern Stalfos Spawn', obj=RoomObject(0x0A97BB, [0x17, 0xE7, 0xFA])), + Pot(178, 28, PotItem.Nothing, 'Eastern Stalfos Spawn', obj=RoomObject(0x0A97BE, [0x67, 0xE7, 0xFA])), + Pot(178, 19, PotItem.Nothing, 'Eastern Stalfos Spawn', obj=RoomObject(0x0A97B8, [0x67, 0x9F, 0xFA])), + Pot(138, 19, PotItem.Heart, 'Eastern Stalfos Spawn', obj=RoomObject(0x0A97B5, [0x17, 0x9F, 0xFA])), + Pot(30, 24, PotItem.OneRupee, 'Eastern Stalfos Spawn', obj=RoomObject(0x0A97C1, [0x3F, 0xC3, 0xFA]))], + 0xA9: [Pot(144, 0xB, PotItem.FiveArrows, 'Eastern Courtyard', PotFlags.LowerRegion, obj=RoomObject(0x0A9983, [0x23, 0x5F, 0xFA])), + Pot(236, 0xB, PotItem.FiveArrows, 'Eastern Courtyard', PotFlags.LowerRegion, obj=RoomObject(0x0A9989, [0xDB, 0x5F, 0xFA])), + Pot(144, 0xC, PotItem.FiveArrows, 'Eastern Courtyard', PotFlags.LowerRegion, obj=RoomObject(0x0A9986, [0x23, 0x67, 0xFA])), + Pot(236, 0xC, PotItem.Heart, 'Eastern Courtyard', PotFlags.LowerRegion, obj=RoomObject(0x0A998C, [0xDB, 0x67, 0xFA])), + Pot(12, 19, PotItem.Nothing, 'Eastern Courtyard Ledge', obj=RoomObject(0x0A994B, [0x1B, 0x9B, 0xFA])), + Pot(112, 19, PotItem.Nothing, 'Eastern Courtyard Ledge', obj=RoomObject(0x0A993C, [0xE3, 0x9B, 0xFA])), + Pot(16, 20, PotItem.Heart, 'Eastern Courtyard Ledge', obj=RoomObject(0x0A994E, [0x23, 0xA3, 0xFA])), + Pot(108, 20, PotItem.Heart, 'Eastern Courtyard Ledge', obj=RoomObject(0x0A9936, [0xDB, 0xA3, 0xFA]))], + 0xAA: [Pot(212, 10, PotItem.Nothing, 'Eastern Pot Switch', obj=RoomObject(0x0A9AA5, [0xAB, 0x57, 0xFA])), + Pot(232, 10, PotItem.Nothing, 'Eastern Pot Switch', obj=RoomObject(0x0A9AA8, [0xD3, 0x57, 0xFA])), + Pot(232, 5, PotItem.Nothing, 'Eastern Pot Switch', obj=RoomObject(0x0A9AA2, [0xD3, 0x2F, 0xFA])), + Pot(212, 5, PotItem.Heart, 'Eastern Pot Switch', obj=RoomObject(0x0A9A9F, [0xAB, 0x2F, 0xFA])), + Pot(94, 8, PotItem.Switch, 'Eastern Pot Switch', obj=RoomObject(0x0A9AAB, [0xBF, 0x43, 0xFA])), + Pot(108, 0x17, PotItem.Heart, 'Eastern Map Balcony', PotFlags.LowerRegion, obj=RoomObject(0x0A9AF5, [0xDB, 0xBB, 0xFA])), + Pot(108, 0x18, PotItem.Heart, 'Eastern Map Balcony', PotFlags.LowerRegion, obj=RoomObject(0x0A9AF8, [0xDB, 0xC3, 0xFA])), + Pot(108, 0x19, PotItem.Heart, 'Eastern Map Balcony', PotFlags.LowerRegion, obj=RoomObject(0x0A9AFB, [0xDB, 0xCB, 0xFA]))], + 0xAB: [Pot(20, 24, PotItem.Key, 'Thieves Spike Switch', obj=RoomObject(0x1FD99D, [0x2B, 0xC3, 0xFA]))], + 0xAE: [Pot(76, 12, PotItem.Switch, 'Iced T', obj=RoomObject(0x1FC95D, [0x9B, 0x63, 0xFA]))], + 0xB0: [Pot(20, 27, PotItem.Nothing, 'Tower Circle of Pots', obj=RoomObject(0x1F8F2C, [0x2B, 0xDB, 0xFA])), + Pot(24, 24, PotItem.Nothing, 'Tower Circle of Pots', obj=RoomObject(0x1F8F26, [0x33, 0xC3, 0xFA])), + Pot(44, 25, PotItem.Nothing, 'Tower Circle of Pots', obj=RoomObject(0x1F8F38, [0x5B, 0xCB, 0xFA])), + Pot(20, 21, PotItem.Bomb, 'Tower Circle of Pots', obj=RoomObject(0x1F8F14, [0x2B, 0xAB, 0xFA])), + Pot(28, 21, PotItem.OneRupee, 'Tower Circle of Pots', obj=RoomObject(0x1F8F17, [0x3B, 0xAB, 0xFA])), + Pot(32, 21, PotItem.FiveRupees, 'Tower Circle of Pots', obj=RoomObject(0x1F8F1A, [0x43, 0xAB, 0xFA])), + Pot(40, 21, PotItem.FiveArrows, 'Tower Circle of Pots', obj=RoomObject(0x1F8F1D, [0x53, 0xAB, 0xFA])), + Pot(16, 23, PotItem.FiveRupees, 'Tower Circle of Pots', obj=RoomObject(0x1F8F20, [0x23, 0xBB, 0xFA])), + Pot(44, 23, PotItem.OneRupee, 'Tower Circle of Pots', obj=RoomObject(0x1F8F3B, [0x5B, 0xBB, 0xFA])), + Pot(36, 24, PotItem.Heart, 'Tower Circle of Pots', obj=RoomObject(0x1F8F29, [0x4B, 0xC3, 0xFA])), + Pot(16, 25, PotItem.Heart, 'Tower Circle of Pots', obj=RoomObject(0x1F8F23, [0x23, 0xCB, 0xFA])), + Pot(28, 27, PotItem.FiveArrows, 'Tower Circle of Pots', obj=RoomObject(0x1F8F2F, [0x3B, 0xDB, 0xFA])), + Pot(40, 27, PotItem.Bomb, 'Tower Circle of Pots', obj=RoomObject(0x1F8F35, [0x53, 0xDB, 0xFA])), + Pot(32, 27, PotItem.Nothing, 'Tower Circle of Pots', obj=RoomObject(0x1F8F32, [0x43, 0xDB, 0xFA]))], + 0xB1: [Pot(76, 4, PotItem.Heart, 'Mire Spike Barrier', obj=RoomObject(0x1FB35A, [0x9B, 0x23, 0xFA])), + Pot(112, 4, PotItem.OneRupee, 'Mire Spike Barrier', obj=RoomObject(0x1FB35D, [0xE3, 0x23, 0xFA]))], + 0xB2: [Pot(48, 0x8, PotItem.OneRupee, 'Mire BK Door Room', PotFlags.LowerRegion, obj=RoomObject(0x1FB467, [0x63, 0x43, 0xFA])), + Pot(76, 0x8, PotItem.OneRupee, 'Mire BK Door Room', PotFlags.LowerRegion, obj=RoomObject(0x1FB470, [0x9B, 0x43, 0xFA])), + Pot(48, 0x9, PotItem.Nothing, 'Mire BK Door Room', PotFlags.LowerRegion, obj=RoomObject(0x1FB46A, [0x63, 0x4B, 0xFA])), + Pot(76, 0x9, PotItem.Heart, 'Mire BK Door Room', PotFlags.LowerRegion, obj=RoomObject(0x1FB473, [0x9B, 0x4B, 0xFA])), + Pot(48, 0xA, PotItem.Nothing, 'Mire BK Door Room', PotFlags.LowerRegion, obj=RoomObject(0x1FB46D, [0x63, 0x53, 0xFA])), + Pot(76, 0xA, PotItem.Nothing, 'Mire BK Door Room', PotFlags.LowerRegion, obj=RoomObject(0x1FB476, [0x9B, 0x53, 0xFA]))], + 0xB3: [Pot(12, 20, PotItem.Key, 'Mire Spikes', obj=RoomObject(0x1FB5A2, [0x1B, 0xA3, 0xFA])), + Pot(48, 20, PotItem.SmallMagic, 'Mire Spikes', obj=RoomObject(0x1FB5A5, [0x63, 0xA3, 0xFA])), + Pot(48, 28, PotItem.Switch, 'Mire Spikes', obj=RoomObject(0x1FB5C0, [0x63, 0xE3, 0xFA]))], + 0xB4: [Pot(44, 28, PotItem.BigMagic, 'TR Final Abyss Balcony', obj=RoomObject(0x1FE7B6, [0x5B, 0xE3, 0xFA])), + Pot(48, 28, PotItem.Heart, 'TR Final Abyss Balcony', obj=RoomObject(0x1FE7B9, [0x63, 0xE3, 0xFA]))], + 0xB5: [Pot(112, 4, PotItem.FiveRupees, 'TR Dark Ride Ledges', obj=RoomObject(0x1FEA78, [0xE3, 0x23, 0xFA])), + Pot(112, 15, PotItem.Heart, 'TR Dark Ride Ledges', obj=RoomObject(0x1FEAD5, [0xE3, 0x7B, 0xFA])), + Pot(76, 16, PotItem.Switch, 'TR Dark Ride Ledges', obj=RoomObject(0x1FEA93, [0x9B, 0x83, 0xFA])), + Pot(112, 16, PotItem.BigMagic, 'TR Dark Ride Ledges', obj=RoomObject(0x1FEAD8, [0xE3, 0x83, 0xFA])), + Pot(112, 17, PotItem.Heart, 'TR Dark Ride Ledges', obj=RoomObject(0x1FEADB, [0xE3, 0x8B, 0xFA])), + Pot(112, 28, PotItem.Bomb, 'TR Dark Ride Ledges', obj=RoomObject(0x1FEAF3, [0xE3, 0xE3, 0xFA]))], + 0xB6: [Pot(94, 9, PotItem.BigMagic, 'TR Refill', obj=RoomObject(0x1FDD29, [0xBF, 0x4B, 0xFA]))], + 0xB7: [Pot(30, 5, PotItem.SmallMagic, 'TR Roller Room', obj=RoomObject(0x1FDD76, [0x3F, 0x2B, 0xFA]))], + 0xB8: [Pot(96, 13, PotItem.Switch, 'Eastern Big Key', obj=RoomObject(0x0A9B66, [0xC3, 0x6B, 0xFA])), + Pot(88, 16, PotItem.Heart, 'Eastern Big Key', obj=RoomObject(0x0A9B60, [0xB3, 0x83, 0xFA])), + Pot(104, 16, PotItem.Heart, 'Eastern Big Key', obj=RoomObject(0x0A9B63, [0xD3, 0x83, 0xFA]))], + 0xB9: [Pot(92, 18, PotItem.OneRupee, 'Eastern Cannonball', obj=RoomObject(0x0A9C82, [0xBB, 0x93, 0xFA])), + Pot(96, 18, PotItem.FiveRupees, 'Eastern Cannonball', obj=RoomObject(0x0A9C85, [0xC3, 0x93, 0xFA])), + Pot(104, 18, PotItem.FiveRupees, 'Eastern Cannonball', obj=RoomObject(0x0A9C88, [0xD3, 0x93, 0xFA])), + Pot(108, 18, PotItem.OneRupee, 'Eastern Cannonball', obj=RoomObject(0x0A9C8B, [0xDB, 0x93, 0xFA]))], + 0xBA: [Pot(100, 8, PotItem.Nothing, 'Eastern Dark Pots', obj=RoomObject(0x0A9D3F, [0xCB, 0x43, 0xFA])), + Pot(88, 8, PotItem.Nothing, 'Eastern Dark Pots', obj=RoomObject(0x0A9D36, [0xB3, 0x43, 0xFA])), + Pot(94, 4, PotItem.OneRupee, 'Eastern Dark Pots', obj=RoomObject(0x0A9D39, [0xBF, 0x23, 0xFA])), + Pot(76, 6, PotItem.Heart, 'Eastern Dark Pots', obj=RoomObject(0x0A9D30, [0x9B, 0x33, 0xFA])), + Pot(112, 6, PotItem.Key, 'Eastern Dark Pots', obj=RoomObject(0x0A9D42, [0xE3, 0x33, 0xFA])), + Pot(76, 10, PotItem.Heart, 'Eastern Dark Pots', obj=RoomObject(0x0A9D33, [0x9B, 0x53, 0xFA])), + Pot(112, 10, PotItem.SmallMagic, 'Eastern Dark Pots', obj=RoomObject(0x0A9D45, [0xE3, 0x53, 0xFA])), + Pot(94, 12, PotItem.OneRupee, 'Eastern Dark Pots', obj=RoomObject(0x0A9D3C, [0xBF, 0x63, 0xFA]))], + 0xBC: [Pot(86, 4, PotItem.Heart, 'Thieves Hallway', obj=RoomObject(0x1FD941, [0xAF, 0x23, 0xFA])), + Pot(102, 4, PotItem.Key, 'Thieves Hallway', obj=RoomObject(0x1FD944, [0xCF, 0x23, 0xFA])), + Pot(138, 3, PotItem.Bomb, 'Thieves Conveyor Maze', obj=RoomObject(0x1FD8DB, [0x17, 0x1F, 0xFA])), + Pot(178, 3, PotItem.Switch, 'Thieves Conveyor Maze', obj=RoomObject(0x1FD8DE, [0x67, 0x1F, 0xFA])), + Pot(138, 12, PotItem.Heart, 'Thieves Conveyor Maze', obj=RoomObject(0x1FD8E1, [0x17, 0x67, 0xFA])), + Pot(178, 12, PotItem.Bomb, 'Thieves Conveyor Maze', obj=RoomObject(0x1FD8F3, [0x67, 0x67, 0xFA])), + Pot(12, 20, PotItem.Nothing, 'Thieves Pot Alcove Mid', obj=RoomObject(0x1FD8FF, [0x1B, 0xA3, 0xFA])), + Pot(48, 20, PotItem.Bomb, 'Thieves Pot Alcove Mid', obj=RoomObject(0x1FD902, [0x63, 0xA3, 0xFA])), + Pot(12, 28, PotItem.Bomb, 'Thieves Pot Alcove Mid', obj=RoomObject(0x1FD905, [0x1B, 0xE3, 0xFA])), + Pot(48, 28, PotItem.Bomb, 'Thieves Pot Alcove Mid', obj=RoomObject(0x1FD908, [0x63, 0xE3, 0xFA])), + Pot(28, 21, PotItem.FiveRupees, 'Thieves Pot Alcove Top', obj=RoomObject(0x1FD914, [0x3B, 0xAB, 0xFA])), + Pot(32, 21, PotItem.FiveRupees, 'Thieves Pot Alcove Top', obj=RoomObject(0x1FD917, [0x43, 0xAB, 0xFA])), + Pot(28, 27, PotItem.FiveRupees, 'Thieves Pot Alcove Bottom', obj=RoomObject(0x1FD923, [0x3B, 0xDB, 0xFA])), + Pot(32, 27, PotItem.FiveRupees, 'Thieves Pot Alcove Bottom', obj=RoomObject(0x1FD926, [0x43, 0xDB, 0xFA]))], + 0xBE: [Pot(92, 25, PotItem.Switch, 'Ice Switch Room', obj=RoomObject(0x1FC9E9, [0xBB, 0xCB, 0xFA]))], + 0xBF: [Pot(40, 20, PotItem.FiveArrows, 'Ice Refill', obj=RoomObject(0x1FCA56, [0x53, 0xA3, 0xFA])), + Pot(44, 20, PotItem.Heart, 'Ice Refill', obj=RoomObject(0x1FCA59, [0x5B, 0xA3, 0xFA])), + Pot(48, 20, PotItem.Bomb, 'Ice Refill', obj=RoomObject(0x1FCA5C, [0x63, 0xA3, 0xFA])), + Pot(40, 28, PotItem.SmallMagic, 'Ice Refill', obj=RoomObject(0x1FCA5F, [0x53, 0xE3, 0xFA])), + Pot(44, 28, PotItem.SmallMagic, 'Ice Refill', obj=RoomObject(0x1FCA62, [0x5B, 0xE3, 0xFA])), + Pot(48, 28, PotItem.SmallMagic, 'Ice Refill', obj=RoomObject(0x1FCA65, [0x63, 0xE3, 0xFA]))], + 0xC0: [Pot(48, 10, PotItem.Bomb, 'Tower Dark Pits', obj=RoomObject(0x1F8FE1, [0x63, 0x53, 0xFA])), + Pot(12, 14, PotItem.FiveRupees, 'Tower Dark Pits', obj=RoomObject(0x1F8FE7, [0x1B, 0x73, 0xFA])), + Pot(12, 26, PotItem.Heart, 'Tower Dark Pits', obj=RoomObject(0x1F8FF0, [0x1B, 0xD3, 0xFA])), + Pot(28, 27, PotItem.OneRupee, 'Tower Dark Pits', obj=RoomObject(0x1F8FF3, [0x3B, 0xDB, 0xFA]))], + 0xC2: [Pot(180, 7, PotItem.Switch, 'Mire Hub Switch', obj=RoomObject(0x1FB0C4, [0x6B, 0x3F, 0xFA])), + Pot(100, 0xE, PotItem.SmallMagic, 'Mire Hub Right', PotFlags.LowerRegion, RoomObject(0x1FB071, [0xCB, 0x73, 0xFA])), + Pot(68, 0x10, PotItem.OneRupee, 'Mire Hub', PotFlags.LowerRegion, RoomObject(0x1FB086, [0x8B, 0x83, 0xFA])), + Pot(64, 0x14, PotItem.FiveArrows, 'Mire Hub', PotFlags.LowerRegion, RoomObject(0x1FB089, [0x83, 0xA3, 0xFA]))], + 0xC4: [Pot(84, 9, PotItem.Bomb, 'TR Crystal Maze Interior', obj=RoomObject(0x1FEC06, [0xAB, 0x4B, 0xFA])), + Pot(24, 14, PotItem.Heart, 'TR Crystal Maze Interior', obj=RoomObject(0x1FEC09, [0x33, 0x73, 0xFA])), + Pot(56, 17, PotItem.FiveRupees, 'TR Crystal Maze Interior', obj=RoomObject(0x1FEC0C, [0x73, 0x8B, 0xFA])), + Pot(84, 17, PotItem.Bomb, 'TR Crystal Maze Interior', obj=RoomObject(0x1FEC0F, [0xAB, 0x8B, 0xFA])), + Pot(12, 21, PotItem.FiveArrows, 'TR Crystal Maze Interior', obj=RoomObject(0x1FEC15, [0x1B, 0xAB, 0xFA])), + Pot(76, 23, PotItem.OneRupee, 'TR Crystal Maze Interior', obj=RoomObject(0x1FEC12, [0x9B, 0xBB, 0xFA])), + Pot(48, 25, PotItem.SmallMagic, 'TR Crystal Maze Interior', obj=RoomObject(0x1FEC1B, [0x63, 0xCB, 0xFA])), + Pot(12, 26, PotItem.Heart, 'TR Crystal Maze Interior', obj=RoomObject(0x1FEC18, [0x1B, 0xD3, 0xFA]))], + 0xC6: [Pot(12, 7, PotItem.BigMagic, 'TR Hub Ledges', obj=RoomObject(0x1FDF50, [0x1B, 0x3B, 0xFA])), + Pot(12, 25, PotItem.Heart, 'TR Hub Ledges', obj=RoomObject(0x1FDF53, [0x1B, 0xCB, 0xFA]))], + 0xC7: [Pot(12, 10, PotItem.Heart, 'TR Torches', obj=RoomObject(0x1FE080, [0x1B, 0x53, 0xFA])), + Pot(12, 11, PotItem.BigMagic, 'TR Torches', obj=RoomObject(0x1FE083, [0x1B, 0x5B, 0xFA])), + Pot(12, 22, PotItem.SmallMagic, 'TR Torches Ledge', obj=RoomObject(0x1FE098, [0x1B, 0xB3, 0xFA])), + Pot(12, 28, PotItem.FiveArrows, 'TR Torches Ledge', obj=RoomObject(0x1FE095, [0x1B, 0xE3, 0xFA]))], + 0xC9: [Pot(30, 22, PotItem.OneRupee, 'Eastern Lobby', obj=RoomObject(0x0A9E30, [0x3F, 0xB3, 0xFA])), + Pot(94, 22, PotItem.OneRupee, 'Eastern Lobby', obj=RoomObject(0x0A9E36, [0xBF, 0xB3, 0xFA])), + Pot(60, 22, PotItem.Switch, 'Eastern Lobby', obj=RoomObject(0x0A9E33, [0x7B, 0xB3, 0xFA]))], + 0xCB: [Pot(80, 4, PotItem.Nothing, 'Thieves Ambush', obj=RoomObject(0x1FD59A, [0xA3, 0x23, 0xFA])), + Pot(80, 28, PotItem.Nothing, 'Thieves Ambush', obj=RoomObject(0x1FD5A3, [0xA3, 0xE3, 0xFA])), + Pot(88, 16, PotItem.Heart, 'Thieves Ambush', obj=RoomObject(0x1FD59D, [0xB3, 0x83, 0xFA])), + Pot(88, 28, PotItem.FiveRupees, 'Thieves Ambush', obj=RoomObject(0x1FD5A0, [0xB3, 0xE3, 0xFA]))], + 0xCC: [Pot(36, 4, PotItem.FiveRupees, 'Thieves Rail Ledge', obj=RoomObject(0x1FD6F0, [0x4B, 0x23, 0xFA])), + Pot(36, 28, PotItem.FiveRupees, 'Thieves Rail Ledge', obj=RoomObject(0x1FD6F3, [0x4B, 0xE3, 0xFA])), + Pot(112, 4, PotItem.Heart, 'Thieves BK Corner', obj=RoomObject(0x1FD6ED, [0xE3, 0x23, 0xFA])), + Pot(112, 28, PotItem.Bomb, 'Thieves BK Corner', obj=RoomObject(0x1FD6F6, [0xE3, 0xE3, 0xFA]))], + 0xCE: [Pot(76, 8, PotItem.SmallMagic, 'Ice Antechamber', obj=RoomObject(0x1FCAA7, [0x9B, 0x43, 0xFA])), + Pot(80, 8, PotItem.SmallMagic, 'Ice Antechamber', obj=RoomObject(0x1FCAAA, [0xA3, 0x43, 0xFA])), + Pot(108, 12, PotItem.Bomb, 'Ice Antechamber', obj=RoomObject(0x1FCAB9, [0xDB, 0x63, 0xFA])), + Pot(112, 12, PotItem.FiveArrows, 'Ice Antechamber', obj=RoomObject(0x1FCABC, [0xE3, 0x63, 0xFA])), Pot(204, 11, PotItem.Hole, 'Ice Antechamber'), Pot(0x6c, 8, PotItem.Nothing, 'Ice Antechamber', PotFlags.Block)], - 208: [Pot(158, 5, PotItem.SmallMagic, 'Tower Dark Maze'), Pot(140, 11, PotItem.OneRupee, 'Tower Dark Maze'), Pot(42, 13, PotItem.SmallMagic, 'Tower Dark Maze'), Pot(48, 16, PotItem.Heart, 'Tower Dark Maze'), - Pot(176, 20, PotItem.OneRupee, 'Tower Dark Maze'), Pot(146, 23, PotItem.FiveRupees, 'Tower Dark Maze'), Pot(12, 28, PotItem.Heart, 'Tower Dark Maze')], - 209: [Pot(48, 4, PotItem.BigMagic, 'Mire Conveyor Barrier'), Pot(168, 7, PotItem.OneRupee, 'Mire Conveyor Barrier'), Pot(76, 4, PotItem.OneRupee, 'Mire Neglected Room'), Pot(112, 4, PotItem.FiveArrows, 'Mire Neglected Room'), - Pot(76, 12, PotItem.Nothing, 'Mire Neglected Room'), Pot(112, 12, PotItem.OneRupee, 'Mire Neglected Room')], - 214: [Pot(92, 22, PotItem.BigMagic, 'TR Main Lobby'), Pot(96, 22, PotItem.Bomb, 'TR Main Lobby')], - 216: [Pot(202, 8, PotItem.Heart, 'Eastern Duo Eyegores'), Pot(242, 8, PotItem.FiveArrows, 'Eastern Duo Eyegores'), Pot(202, 10, PotItem.FiveArrows, 'Eastern Duo Eyegores'), Pot(242, 10, PotItem.FiveArrows, 'Eastern Duo Eyegores'), - Pot(202, 12, PotItem.FiveArrows, 'Eastern Duo Eyegores'), Pot(242, 12, PotItem.Heart, 'Eastern Duo Eyegores'), Pot(92, 24, PotItem.Heart, 'Eastern Single Eyegore'), Pot(96, 24, PotItem.FiveArrows, 'Eastern Single Eyegore')], - 217: [Pot(92, 20, PotItem.FiveArrows, 'Eastern False Switches'), Pot(92, 28, PotItem.Heart, 'Eastern False Switches')], - 218: [Pot(24, 23, PotItem.FiveArrows, 'Eastern Attic Start'), Pot(36, 23, PotItem.FiveArrows, 'Eastern Attic Start'), Pot(24, 25, PotItem.Switch, 'Eastern Attic Start'), Pot(36, 25, PotItem.Heart, 'Eastern Attic Start')], - 0xDB: [Pot(12, 4, PotItem.Nothing, 'Thieves Lobby'), - Pot(62, 19, PotItem.Nothing, 'Thieves Lobby', PotFlags.LowerRegion), - Pot(112, 4, PotItem.FiveRupees, 'Thieves Lobby'), Pot(88, 16, PotItem.Heart, 'Thieves Lobby')], - 0xDC: [Pot(56, 4, PotItem.FiveRupees, 'Thieves Compass Room'), Pot(112, 4, PotItem.Bomb, 'Thieves Compass Room'), Pot(68, 16, PotItem.Heart, 'Thieves Compass Room'), Pot(12, 28, PotItem.FiveArrows, 'Thieves Compass Room')], - 0xE3: [Pot(88, 0x17, PotItem.Nothing, 'Bat Cave (right)', PotFlags.LowerRegion), - Pot(100, 0x19, PotItem.OneRupee, 'Bat Cave (right)', PotFlags.LowerRegion)], - 0xE4: [Pot(32, 9, PotItem.FiveRupees, 'Old Man House'), Pot(112, 10, PotItem.OneRupee, 'Old Man House')], - 0xE5: [Pot(48, 4, PotItem.OneRupee, 'Old Man House Back'), Pot(76, 4, PotItem.OneRupee, 'Old Man House Back'), Pot(112, 16, PotItem.OneRupee, 'Old Man House Back'), Pot(64, 18, PotItem.FiveRupees, 'Old Man House Back')], - 0xE6: [Pot(108, 12, PotItem.FiveArrows, 'Death Mountain Return Cave (left)'), Pot(88, 16, PotItem.Heart, 'Death Mountain Return Cave (left)'), Pot(72, 20, PotItem.Nothing, 'Death Mountain Return Cave (left)'), - Pot(56, 24, PotItem.OneRupee, 'Death Mountain Return Cave (left)')], - 0xE7: [Pot(68, 5, PotItem.OneRupee, 'Death Mountain Return Cave (right)'), Pot(72, 5, PotItem.OneRupee, 'Death Mountain Return Cave (right)')], - 232: [Pot(96, 4, PotItem.Heart, 'Superbunny Cave (Bottom)')], - 235: [Pot(206, 8, PotItem.FiveRupees, 'Bumper Cave'), Pot(210, 8, PotItem.FiveRupees, 'Bumper Cave'), Pot(88, 14, PotItem.SmallMagic, 'Bumper Cave'), Pot(92, 14, PotItem.Heart, 'Bumper Cave'), Pot(96, 14, PotItem.SmallMagic, 'Bumper Cave')], - 241: [Pot(64, 5, PotItem.Heart, 'Old Man Cave')], - 0xF3: [Pot(0x28, 0x14, PotItem.Nothing, 'Elder House'), - Pot(0x2C, 0x14, PotItem.Nothing, 'Elder House'), - Pot(0x30, 0x14, PotItem.Nothing, 'Elder House')], - 248: [Pot(242, 13, PotItem.BigMagic, 'Superbunny Cave (Top)')], - 253: [Pot(88, 6, PotItem.FiveRupees, 'Fairy Ascension Cave (Top)'), Pot(100, 6, PotItem.FiveRupees, 'Fairy Ascension Cave (Top)'), Pot(84, 23, PotItem.FiveRupees, 'Fairy Ascension Cave (Bottom)'), - Pot(84, 24, PotItem.FiveRupees, 'Fairy Ascension Cave (Bottom)')], - 255: [Pot(92, 8, PotItem.Heart, 'Paradox Cave Bomb Area'), Pot(96, 8, PotItem.Heart, 'Paradox Cave Bomb Area'), Pot(112, 28, PotItem.OneRupee, 'Paradox Cave Front')], - 257: [Pot(12, 20, PotItem.Heart, 'Snitch Lady (East)'), Pot(224, 19, PotItem.Chicken, 'Snitch Lady (West)'), Pot(228, 19, PotItem.Heart, 'Snitch Lady (West)')], - 258: [Pot(146, 19, PotItem.Heart, 'Sick Kids House'), Pot(150, 19, PotItem.Heart, 'Sick Kids House')], - 259: [Pot(140, 7, PotItem.Chicken, 'Tavern'), Pot(140, 9, PotItem.Nothing, 'Tavern'), Pot(12, 12, PotItem.Heart, 'Tavern (Front)')], - 260: [Pot(202, 21, PotItem.Heart, 'Links House'), Pot(202, 22, PotItem.Heart, 'Links House'), Pot(202, 23, PotItem.Heart, 'Links House')], - 261: [Pot(30, 20, PotItem.Heart, 'Sahasrahlas Hut'), Pot(28, 21, PotItem.Heart, 'Sahasrahlas Hut'), Pot(32, 21, PotItem.Heart, 'Sahasrahlas Hut')], - 0x106: [Pot(0x6c, 0x1b, PotItem.Nothing, 'Brewery')], - 263: [Pot(214, 23, PotItem.Bomb, 'Light World Bomb Hut'), Pot(222, 23, PotItem.FiveArrows, 'Light World Bomb Hut'), Pot(230, 23, PotItem.Bomb, 'Light World Bomb Hut'), Pot(214, 25, PotItem.OneRupee, 'Light World Bomb Hut'), - Pot(222, 25, PotItem.Nothing, 'Light World Bomb Hut'), Pot(230, 25, PotItem.OneRupee, 'Light World Bomb Hut'), Pot(214, 27, PotItem.Bomb, 'Light World Bomb Hut'), Pot(230, 27, PotItem.Bomb, 'Light World Bomb Hut')], - 264: [Pot(166, 19, PotItem.Chicken, 'Chicken House')], - 268: [Pot(88, 14, PotItem.Heart, 'Hookshot Fairy')], - 276: [Pot(92, 4, PotItem.Heart, 'Dark Desert Hint'), Pot(96, 4, PotItem.Heart, 'Dark Desert Hint'), Pot(92, 5, PotItem.Bomb, 'Dark Desert Hint'), Pot(96, 5, PotItem.Bomb, 'Dark Desert Hint'), Pot(92, 10, PotItem.FiveArrows, 'Dark Desert Hint'), - Pot(96, 10, PotItem.Heart, 'Dark Desert Hint')], - 0x117: [Pot(138, 3, PotItem.Heart, 'Spike Cave'), Pot(142, 3, PotItem.Heart, 'Spike Cave'), - Pot(166, 3, PotItem.Heart, 'Spike Cave'), Pot(170, 3, PotItem.Heart, 'Spike Cave'), - Pot(138, 4, PotItem.Heart, 'Spike Cave'), Pot(142, 4, PotItem.Heart, 'Spike Cave'), - Pot(166, 4, PotItem.Heart, 'Spike Cave'), Pot(170, 4, PotItem.Heart, 'Spike Cave'), + 0xD0: [Pot(158, 5, PotItem.SmallMagic, 'Tower Dark Maze', obj=RoomObject(0x1F90A5, [0x3F, 0x2F, 0xFA])), + Pot(140, 11, PotItem.OneRupee, 'Tower Dark Maze', obj=RoomObject(0x1F90A8, [0x1B, 0x5F, 0xFA])), + Pot(42, 13, PotItem.SmallMagic, 'Tower Dark Maze', obj=RoomObject(0x1F90AE, [0x57, 0x6B, 0xFA])), + Pot(48, 16, PotItem.Heart, 'Tower Dark Maze', obj=RoomObject(0x1F90B1, [0x63, 0x83, 0xFA])), + Pot(176, 20, PotItem.OneRupee, 'Tower Dark Maze', obj=RoomObject(0x1F90B4, [0x63, 0xA7, 0xFA])), + Pot(146, 23, PotItem.FiveRupees, 'Tower Dark Maze', obj=RoomObject(0x1F90B7, [0x27, 0xBF, 0xFA])), + Pot(12, 28, PotItem.Heart, 'Tower Dark Maze', obj=RoomObject(0x1F90BA, [0x1B, 0xE3, 0xFA]))], + 0xD1: [Pot(48, 4, PotItem.BigMagic, 'Mire Conveyor Barrier', obj=RoomObject(0x1FB22C, [0x63, 0x23, 0xFA])), + Pot(168, 7, PotItem.OneRupee, 'Mire Conveyor Barrier', obj=RoomObject(0x1FB229, [0x53, 0x3F, 0xFA])), + Pot(76, 4, PotItem.OneRupee, 'Mire Neglected Room', obj=RoomObject(0x1FB23B, [0x9B, 0x23, 0xFA])), + Pot(112, 4, PotItem.FiveArrows, 'Mire Neglected Room', obj=RoomObject(0x1FB250, [0xE3, 0x23, 0xFA])), + Pot(76, 12, PotItem.Nothing, 'Mire Neglected Room', obj=RoomObject(0x1FB232, [0x9B, 0x63, 0xFA])), + Pot(112, 12, PotItem.OneRupee, 'Mire Neglected Room', obj=RoomObject(0x1FB235, [0xE3, 0x63, 0xFA]))], + 0xD6: [Pot(92, 22, PotItem.BigMagic, 'TR Main Lobby', obj=RoomObject(0x1FE0F9, [0xBB, 0xB3, 0xFA])), + Pot(96, 22, PotItem.Bomb, 'TR Main Lobby', obj=RoomObject(0x1FE0FC, [0xC3, 0xB3, 0xFA]))], + 0xD8: [Pot(202, 8, PotItem.Heart, 'Eastern Duo Eyegores', obj=RoomObject(0x0A95C0, [0x97, 0x47, 0xFA])), + Pot(242, 8, PotItem.FiveArrows, 'Eastern Duo Eyegores', obj=RoomObject(0x0A95CF, [0xE7, 0x47, 0xFA])), + Pot(202, 10, PotItem.FiveArrows, 'Eastern Duo Eyegores', obj=RoomObject(0x0A95C3, [0x97, 0x57, 0xFA])), + Pot(242, 10, PotItem.FiveArrows, 'Eastern Duo Eyegores', obj=RoomObject(0x0A95C9, [0xE7, 0x57, 0xFA])), + Pot(202, 12, PotItem.FiveArrows, 'Eastern Duo Eyegores', obj=RoomObject(0x0A95C6, [0x97, 0x67, 0xFA])), + Pot(242, 12, PotItem.Heart, 'Eastern Duo Eyegores', obj=RoomObject(0x0A95CC, [0xE7, 0x67, 0xFA])), + Pot(92, 24, PotItem.Heart, 'Eastern Single Eyegore', obj=RoomObject(0x0A95DB, [0xBB, 0xC3, 0xFA])), + Pot(96, 24, PotItem.FiveArrows, 'Eastern Single Eyegore', obj=RoomObject(0x0A95DE, [0xC3, 0xC3, 0xFA]))], + 0xD9: [Pot(92, 20, PotItem.FiveArrows, 'Eastern False Switches', obj=RoomObject(0x0A965A, [0xBB, 0xA3, 0xFA])), + Pot(92, 28, PotItem.Heart, 'Eastern False Switches', obj=RoomObject(0x0A965D, [0xBB, 0xE3, 0xFA]))], + 0xDA: [Pot(24, 23, PotItem.FiveArrows, 'Eastern Attic Start', obj=RoomObject(0x0A968B, [0x33, 0xBB, 0xFA])), + Pot(36, 23, PotItem.FiveArrows, 'Eastern Attic Start', obj=RoomObject(0x0A968E, [0x4B, 0xBB, 0xFA])), + Pot(24, 25, PotItem.Switch, 'Eastern Attic Start', obj=RoomObject(0x0A9691, [0x33, 0xCB, 0xFA])), + Pot(36, 25, PotItem.Heart, 'Eastern Attic Start', obj=RoomObject(0x0A9694, [0x4B, 0xCB, 0xFA]))], + 0xDB: [Pot(12, 4, PotItem.Nothing, 'Thieves Lobby', obj=RoomObject(0x1FD2C5, [0x1B, 0x23, 0xFA])), + Pot(62, 19, PotItem.Nothing, 'Thieves Lobby', PotFlags.LowerRegion, RoomObject(0x1FD300, [0x7F, 0x9B, 0xFA])), + Pot(112, 4, PotItem.FiveRupees, 'Thieves Lobby', obj=RoomObject(0x1FD2C8, [0xE3, 0x23, 0xFA])), + Pot(88, 16, PotItem.Heart, 'Thieves Lobby', obj=RoomObject(0x1FD2CB, [0xB3, 0x83, 0xFA]))], + 0xDC: [Pot(56, 4, PotItem.FiveRupees, 'Thieves Compass Room', obj=RoomObject(0x1FD447, [0x73, 0x23, 0xFA])), + Pot(112, 4, PotItem.Bomb, 'Thieves Compass Room', obj=RoomObject(0x1FD44A, [0xE3, 0x23, 0xFA])), + Pot(68, 16, PotItem.Heart, 'Thieves Compass Room', obj=RoomObject(0x1FD44D, [0x8B, 0x83, 0xFA])), + Pot(12, 28, PotItem.FiveArrows, 'Thieves Compass Room', obj=RoomObject(0x1FD453, [0x1B, 0xE3, 0xFA]))], + 0xE3: [Pot(88, 0x17, PotItem.Nothing, 'Bat Cave (right)', PotFlags.LowerRegion, RoomObject(0x0A82EE, [0xB3, 0xBB, 0xFA])), + Pot(100, 0x19, PotItem.OneRupee, 'Bat Cave (right)', PotFlags.LowerRegion, RoomObject(0x0A82F1, [0xCB, 0xCB, 0xFA]))], + 0xE4: [Pot(32, 9, PotItem.FiveRupees, 'Old Man House', obj=RoomObject(0x0AB42A, [0x43, 0x4B, 0xFA])), + Pot(112, 10, PotItem.OneRupee, 'Old Man House', obj=RoomObject(0x0AB46C, [0xE3, 0x53, 0xFA]))], + 0xE5: [Pot(48, 4, PotItem.OneRupee, 'Old Man House Back', obj=RoomObject(0x0AB545, [0x63, 0x23, 0xFA])), + Pot(76, 4, PotItem.OneRupee, 'Old Man House Back', obj=RoomObject(0x0AB548, [0x9B, 0x23, 0xFA])), + Pot(112, 16, PotItem.OneRupee, 'Old Man House Back', obj=RoomObject(0x0AB54B, [0xE3, 0x83, 0xFA])), + Pot(64, 18, PotItem.FiveRupees, 'Old Man House Back', obj=RoomObject(0x0AB54E, [0x83, 0x93, 0xFA]))], + 0xE6: [Pot(108, 12, PotItem.FiveArrows, 'Death Mountain Return Cave (left)', obj=RoomObject(0x0AB29D, [0xDB, 0x63, 0xFA])), + Pot(88, 16, PotItem.Heart, 'Death Mountain Return Cave (left)', obj=RoomObject(0x0AB2A0, [0xB3, 0x83, 0xFA])), + Pot(72, 20, PotItem.Nothing, 'Death Mountain Return Cave (left)', obj=RoomObject(0x0AB2A3, [0x93, 0xA3, 0xFA])), + Pot(56, 24, PotItem.OneRupee, 'Death Mountain Return Cave (left)', obj=RoomObject(0x0AB2A6, [0x73, 0xC3, 0xFA]))], + 0xE7: [Pot(68, 5, PotItem.OneRupee, 'Death Mountain Return Cave (right)', obj=RoomObject(0x0AB389, [0x8B, 0x2B, 0xFA])), + Pot(72, 5, PotItem.OneRupee, 'Death Mountain Return Cave (right)', obj=RoomObject(0x0AB38C, [0x93, 0x2B, 0xFA]))], + 0xE8: [Pot(96, 4, PotItem.Heart, 'Superbunny Cave (Bottom)', obj=RoomObject(0x0AA98E, [0xC3, 0x23, 0xFA]))], + 0xEB: [Pot(206, 8, PotItem.FiveRupees, 'Bumper Cave', obj=RoomObject(0x0AADE7, [0x9F, 0x47, 0xFA])), + Pot(210, 8, PotItem.FiveRupees, 'Bumper Cave', obj=RoomObject(0x0AADEA, [0xA7, 0x47, 0xFA])), + Pot(88, 14, PotItem.SmallMagic, 'Bumper Cave', obj=RoomObject(0x0AADED, [0xB3, 0x73, 0xFA])), + Pot(92, 14, PotItem.Heart, 'Bumper Cave', obj=RoomObject(0x0AADF0, [0xBB, 0x73, 0xFA])), + Pot(96, 14, PotItem.SmallMagic, 'Bumper Cave', obj=RoomObject(0x0AADF3, [0xC3, 0x73, 0xFA]))], + 0xF1: [Pot(64, 5, PotItem.Heart, 'Old Man Cave', obj=RoomObject(0x0AA6B2, [0x83, 0x2B, 0xFA]))], + 0xF3: [Pot(0x28, 0x14, PotItem.Nothing, 'Elder House', obj=RoomObject(0x0AA76F, [0x53, 0xA3, 0xFA])), + Pot(0x2C, 0x14, PotItem.Nothing, 'Elder House', obj=RoomObject(0x0AA772, [0x5B, 0xA3, 0xFA])), + Pot(0x30, 0x14, PotItem.Nothing, 'Elder House', obj=RoomObject(0x0AA775, [0x63, 0xA3, 0xFA]))], + 0xF8: [Pot(242, 13, PotItem.BigMagic, 'Superbunny Cave (Top)', obj=RoomObject(0x0AA8B9, [0xE7, 0x6F, 0xFA]))], + 0xFD: [Pot(88, 6, PotItem.FiveRupees, 'Fairy Ascension Cave (Top)', obj=RoomObject(0x0AAA51, [0xB3, 0x33, 0xFA])), + Pot(100, 6, PotItem.FiveRupees, 'Fairy Ascension Cave (Top)', obj=RoomObject(0x0AAA54, [0xCB, 0x33, 0xFA])), + Pot(84, 23, PotItem.FiveRupees, 'Fairy Ascension Cave (Bottom)', obj=RoomObject(0x0AAA57, [0xAB, 0xBB, 0xFA])), + Pot(84, 24, PotItem.FiveRupees, 'Fairy Ascension Cave (Bottom)', obj=RoomObject(0x0AAA5A, [0xAB, 0xC3, 0xFA]))], + 0xFF: [Pot(92, 8, PotItem.Heart, 'Paradox Cave Bomb Area', obj=RoomObject(0x0AAC5B, [0xBB, 0x43, 0xFA])), + Pot(96, 8, PotItem.Heart, 'Paradox Cave Bomb Area', obj=RoomObject(0x0AAC5E, [0xC3, 0x43, 0xFA])), + Pot(112, 28, PotItem.OneRupee, 'Paradox Cave Front', obj=RoomObject(0x0AAC6A, [0xE3, 0xE3, 0xFA]))], + 0x101: [Pot(12, 20, PotItem.Heart, 'Snitch Lady (East)', obj=RoomObject(0x03EBE5, [0x1B, 0xA3, 0xFA])), + Pot(224, 19, PotItem.Chicken, 'Snitch Lady (West)', obj=RoomObject(0x03EC1E, [0xC3, 0x9F, 0xFA])), + Pot(228, 19, PotItem.Heart, 'Snitch Lady (West)', obj=RoomObject(0x03EC21, [0xCB, 0x9F, 0xFA]))], + 0x102: [Pot(146, 19, PotItem.Heart, 'Sick Kids House', obj=RoomObject(0x03EC81, [0x27, 0x9F, 0xFA])), + Pot(150, 19, PotItem.Heart, 'Sick Kids House', obj=RoomObject(0x03EC84, [0x2F, 0x9F, 0xFA]))], + 0x103: [Pot(140, 7, PotItem.Chicken, 'Tavern', obj=RoomObject(0x03ECDA, [0x1B, 0x3F, 0xFA])), + Pot(140, 9, PotItem.Nothing, 'Tavern', obj=RoomObject(0x03ECDD, [0x1B, 0x4F, 0xFA])), + Pot(12, 12, PotItem.Heart, 'Tavern (Front)', obj=RoomObject(0x03ECE6, [0x1B, 0x63, 0xFA]))], + 0x104: [Pot(202, 21, PotItem.Heart, 'Links House', obj=RoomObject(0x0A8017, [0x97, 0xAF, 0xFA])), + Pot(202, 22, PotItem.Heart, 'Links House', obj=RoomObject(0x0A801A, [0x97, 0xB7, 0xFA])), + Pot(202, 23, PotItem.Heart, 'Links House', obj=RoomObject(0x0A801D, [0x97, 0xBF, 0xFA]))], + 0x105: [Pot(30, 20, PotItem.Heart, 'Sahasrahlas Hut', obj=RoomObject(0x03EDF2, [0x3F, 0xA3, 0xFA])), + Pot(28, 21, PotItem.Heart, 'Sahasrahlas Hut', obj=RoomObject(0x03EDEC, [0x3B, 0xAB, 0xFA])), + Pot(32, 21, PotItem.Heart, 'Sahasrahlas Hut', obj=RoomObject(0x03EDEF, [0x43, 0xAB, 0xFA]))], + 0x106: [Pot(0x6c, 0x1b, PotItem.Nothing, 'Brewery', obj=RoomObject(0x03EEB0, [0xDB, 0xDB, 0xFA]))], + 0x107: [Pot(214, 23, PotItem.Bomb, 'Light World Bomb Hut', obj=RoomObject(0x03EF49, [0xAF, 0xBF, 0xFA])), + Pot(222, 23, PotItem.FiveArrows, 'Light World Bomb Hut', obj=RoomObject(0x03EF4C, [0xBF, 0xBF, 0xFA])), + Pot(230, 23, PotItem.Bomb, 'Light World Bomb Hut', obj=RoomObject(0x03EF4F, [0xCF, 0xBF, 0xFA])), + Pot(214, 25, PotItem.OneRupee, 'Light World Bomb Hut', obj=RoomObject(0x03EF52, [0xAF, 0xCF, 0xFA])), + Pot(222, 25, PotItem.Nothing, 'Light World Bomb Hut', obj=RoomObject(0x03EF55, [0xBF, 0xCF, 0xFA])), + Pot(230, 25, PotItem.OneRupee, 'Light World Bomb Hut', obj=RoomObject(0x03EF58, [0xCF, 0xCF, 0xFA])), + Pot(214, 27, PotItem.Bomb, 'Light World Bomb Hut', obj=RoomObject(0x03EF5B, [0xAF, 0xDF, 0xFA])), + Pot(230, 27, PotItem.Bomb, 'Light World Bomb Hut', obj=RoomObject(0x03EF5E, [0xCF, 0xDF, 0xFA]))], + 0x108: [Pot(166, 19, PotItem.Chicken, 'Chicken House', obj=RoomObject(0x03EFA9, [0x4F, 0x9F, 0xFA]))], + 0x10C: [Pot(88, 14, PotItem.Heart, 'Hookshot Fairy', obj=RoomObject(0x03F329, [0xB3, 0x73, 0xFA]))], + 0x114: [Pot(92, 4, PotItem.Heart, 'Dark Desert Hint', obj=RoomObject(0x03F7A0, [0xBB, 0x23, 0xFA])), + Pot(96, 4, PotItem.Heart, 'Dark Desert Hint', obj=RoomObject(0x03F7A3, [0xC3, 0x23, 0xFA])), + Pot(92, 5, PotItem.Bomb, 'Dark Desert Hint', obj=RoomObject(0x03F7A6, [0xBB, 0x2B, 0xFA])), + Pot(96, 5, PotItem.Bomb, 'Dark Desert Hint', obj=RoomObject(0x03F7A9, [0xC3, 0x2B, 0xFA])), + Pot(92, 10, PotItem.FiveArrows, 'Dark Desert Hint', obj=RoomObject(0x03F7AC, [0xBB, 0x53, 0xFA])), + Pot(96, 10, PotItem.Heart, 'Dark Desert Hint', obj=RoomObject(0x03F7AF, [0xC3, 0x53, 0xFA]))], + 0x117: [Pot(138, 3, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCB2, [0x17, 0x1F, 0xFA])), # 0x38A -> 38A + Pot(142, 3, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCB8, [0x1F, 0x1F, 0xFA])), + Pot(166, 3, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCC1, [0x4F, 0x1F, 0xFA])), + Pot(170, 3, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCC7, [0x57, 0x1F, 0xFA])), + Pot(138, 4, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCB5, [0x17, 0x27, 0xFA])), + Pot(142, 4, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCBB, [0x1F, 0x27, 0xFA])), + Pot(166, 4, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCC4, [0x4F, 0x27, 0xFA])), + Pot(170, 4, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCCA, [0x57, 0x27, 0xFA])), Pot(0x18, 0x8, PotItem.Nothing, 'Spike Cave', PotFlags.Block)], - 281: [Pot(44, 28, PotItem.Heart, 'Blinds Hideout'), Pot(48, 28, PotItem.OneRupee, 'Blinds Hideout'), Pot(76, 28, PotItem.Heart, 'Blinds Hideout'), Pot(80, 28, PotItem.Heart, 'Blinds Hideout')], - 282: [Pot(214, 10, PotItem.Heart, 'Palace of Darkness Hint'), Pot(218, 10, PotItem.Heart, 'Palace of Darkness Hint'), Pot(226, 10, PotItem.Heart, 'Palace of Darkness Hint'), Pot(230, 10, PotItem.Heart, 'Palace of Darkness Hint')], - 0x11B: [Pot(24, 0x15, PotItem.Nothing, 'Cave 45', PotFlags.LowerRegion), - Pot(24, 0x16, PotItem.Heart, 'Cave 45', PotFlags.LowerRegion), - Pot(32, 0x16, PotItem.Heart, 'Cave 45', PotFlags.LowerRegion), - Pot(40, 0x16, PotItem.Heart, 'Cave 45', PotFlags.LowerRegion), - Pot(24, 0x17, PotItem.Heart, 'Cave 45', PotFlags.LowerRegion), - Pot(28, 0x18, PotItem.Heart, 'Cave 45', PotFlags.LowerRegion), - Pot(92, 22, PotItem.Bomb, 'Graveyard Cave'), Pot(96, 22, PotItem.Heart, 'Graveyard Cave'), - Pot(92, 23, PotItem.Bomb, 'Graveyard Cave'), Pot(96, 23, PotItem.Heart, 'Graveyard Cave'), - Pot(92, 24, PotItem.Bomb, 'Graveyard Cave'), Pot(96, 24, PotItem.Heart, 'Graveyard Cave'), - Pot(92, 25, PotItem.Bomb, 'Graveyard Cave'), Pot(96, 25, PotItem.Heart, 'Graveyard Cave')], - 0x11D: [Pot(60, 6, PotItem.FiveRupees, 'Blinds Hideout (Top)'), Pot(64, 6, PotItem.FiveRupees, 'Blinds Hideout (Top)'), - Pot(60, 7, PotItem.FiveRupees, 'Blinds Hideout (Top)'), Pot(64, 7, PotItem.FiveRupees, 'Blinds Hideout (Top)'), - Pot(60, 8, PotItem.FiveRupees, 'Blinds Hideout (Top)'), Pot(64, 8, PotItem.FiveRupees, 'Blinds Hideout (Top)')], - 0x11F: [Pot(174, 28, PotItem.Heart, 'Lumberjack House'), Pot(178, 28, PotItem.Heart, 'Lumberjack House')], - 292: [Pot(20, 20, PotItem.FiveRupees, '50 Rupee Cave'), Pot(40, 20, PotItem.FiveRupees, '50 Rupee Cave'), Pot(20, 21, PotItem.FiveRupees, '50 Rupee Cave'), Pot(40, 21, PotItem.FiveRupees, '50 Rupee Cave'), - Pot(20, 22, PotItem.FiveRupees, '50 Rupee Cave'), Pot(40, 22, PotItem.FiveRupees, '50 Rupee Cave'), Pot(24, 24, PotItem.FiveRupees, '50 Rupee Cave'), Pot(28, 24, PotItem.FiveRupees, '50 Rupee Cave'), - Pot(32, 24, PotItem.FiveRupees, '50 Rupee Cave'), Pot(36, 24, PotItem.FiveRupees, '50 Rupee Cave')], - 293: [Pot(24, 25, PotItem.FiveRupees, '20 Rupee Cave'), Pot(28, 25, PotItem.FiveRupees, '20 Rupee Cave'), Pot(32, 25, PotItem.FiveRupees, '20 Rupee Cave'), Pot(36, 25, PotItem.FiveRupees, '20 Rupee Cave'), - Pot(88, 22, PotItem.Heart, 'Dark Lake Hylia Ledge Spike Cave'), Pot(100, 22, PotItem.Heart, 'Dark Lake Hylia Ledge Spike Cave'), Pot(88, 28, PotItem.Heart, 'Dark Lake Hylia Ledge Spike Cave'), Pot(100, 28, PotItem.Heart, 'Dark Lake Hylia Ledge Spike Cave')], - 0x127: [Pot(24, 25, PotItem.Nothing, 'Dark World Hammer Peg Cave'), Pot(28, 25, PotItem.Nothing, 'Dark World Hammer Peg Cave'), Pot(32, 25, PotItem.Nothing, 'Dark World Hammer Peg Cave'), Pot(36, 25, PotItem.Nothing, 'Dark World Hammer Peg Cave')], + 0x119: [Pot(44, 28, PotItem.Heart, 'Blinds Hideout', obj=RoomObject(0x03FDFB, [0x5B, 0xE3, 0xFA])), + Pot(48, 28, PotItem.OneRupee, 'Blinds Hideout', obj=RoomObject(0x03FDFE, [0x63, 0xE3, 0xFA])), + Pot(76, 28, PotItem.Heart, 'Blinds Hideout', obj=RoomObject(0x03FE01, [0x9B, 0xE3, 0xFA])), + Pot(80, 28, PotItem.Heart, 'Blinds Hideout', obj=RoomObject(0x03FE04, [0xA3, 0xE3, 0xFA]))], + 0x11A: [Pot(214, 10, PotItem.Heart, 'Palace of Darkness Hint', obj=RoomObject(0x03F91F, [0xAF, 0x57, 0xFA])), + Pot(218, 10, PotItem.Heart, 'Palace of Darkness Hint', obj=RoomObject(0x03F922, [0xB7, 0x57, 0xFA])), + Pot(226, 10, PotItem.Heart, 'Palace of Darkness Hint', obj=RoomObject(0x03F925, [0xC7, 0x57, 0xFA])), + Pot(230, 10, PotItem.Heart, 'Palace of Darkness Hint', obj=RoomObject(0x03F928, [0xCF, 0x57, 0xFA]))], + 0x11B: [Pot(24, 0x15, PotItem.Nothing, 'Cave 45', PotFlags.LowerRegion, RoomObject(0x03F416, [0x33, 0xAB, 0xFA])), + Pot(24, 0x16, PotItem.Heart, 'Cave 45', PotFlags.LowerRegion, obj=RoomObject(0x03F419, [0x33, 0xB3, 0xFA])), + Pot(32, 0x16, PotItem.Heart, 'Cave 45', PotFlags.LowerRegion, obj=RoomObject(0x03F422, [0x43, 0xB3, 0xFA])), + Pot(40, 0x16, PotItem.Heart, 'Cave 45', PotFlags.LowerRegion, obj=RoomObject(0x03F425, [0x53, 0xB3, 0xFA])), + Pot(24, 0x17, PotItem.Heart, 'Cave 45', PotFlags.LowerRegion, obj=RoomObject(0x03F41C, [0x33, 0xBB, 0xFA])), + Pot(28, 0x18, PotItem.Heart, 'Cave 45', PotFlags.LowerRegion, obj=RoomObject(0x03F41F, [0x3B, 0xC3, 0xFA])), + Pot(92, 22, PotItem.Bomb, 'Graveyard Cave', obj=RoomObject(0x03F3D8, [0xBB, 0xB3, 0xFA])), + Pot(96, 22, PotItem.Heart, 'Graveyard Cave', obj=RoomObject(0x03F3DB, [0xC3, 0xB3, 0xFA])), + Pot(92, 23, PotItem.Bomb, 'Graveyard Cave', obj=RoomObject(0x03F3DE, [0xBB, 0xBB, 0xFA])), + Pot(96, 23, PotItem.Heart, 'Graveyard Cave', obj=RoomObject(0x03F3E1, [0xC3, 0xBB, 0xFA])), + Pot(92, 24, PotItem.Bomb, 'Graveyard Cave', obj=RoomObject(0x03F3E4, [0xBB, 0xC3, 0xFA])), + Pot(96, 24, PotItem.Heart, 'Graveyard Cave', obj=RoomObject(0x03F3E7, [0xC3, 0xC3, 0xFA])), + Pot(92, 25, PotItem.Bomb, 'Graveyard Cave', obj=RoomObject(0x03F3EA, [0xBB, 0xCB, 0xFA])), + Pot(96, 25, PotItem.Heart, 'Graveyard Cave', obj=RoomObject(0x03F3ED, [0xC3, 0xCB, 0xFA]))], + 0x11D: [Pot(60, 6, PotItem.FiveRupees, 'Blinds Hideout (Top)', obj=RoomObject(0x03FE69, [0x7B, 0x33, 0xFA])), + Pot(64, 6, PotItem.FiveRupees, 'Blinds Hideout (Top)', obj=RoomObject(0x03FE6C, [0x83, 0x33, 0xFA])), + Pot(60, 7, PotItem.FiveRupees, 'Blinds Hideout (Top)', obj=RoomObject(0x03FE6F, [0x7B, 0x3B, 0xFA])), + Pot(64, 7, PotItem.FiveRupees, 'Blinds Hideout (Top)', obj=RoomObject(0x03FE72, [0x83, 0x3B, 0xFA])), + Pot(60, 8, PotItem.FiveRupees, 'Blinds Hideout (Top)', obj=RoomObject(0x03FE75, [0x7B, 0x43, 0xFA])), + Pot(64, 8, PotItem.FiveRupees, 'Blinds Hideout (Top)', obj=RoomObject(0x03FE78, [0x83, 0x43, 0xFA]))], + 0x11F: [Pot(174, 28, PotItem.Heart, 'Lumberjack House', obj=RoomObject(0x03FF8A, [0x5F, 0xE7, 0xFA])), + Pot(178, 28, PotItem.Heart, 'Lumberjack House', obj=RoomObject(0x03FF8D, [0x67, 0xE7, 0xFA]))], + 0x124: [Pot(20, 20, PotItem.FiveRupees, '50 Rupee Cave', obj=RoomObject(0x0AB5C2, [0x2B, 0xA3, 0xFA])), + Pot(40, 20, PotItem.FiveRupees, '50 Rupee Cave', obj=RoomObject(0x0AB5E3, [0x53, 0xA3, 0xFA])), + Pot(20, 21, PotItem.FiveRupees, '50 Rupee Cave', obj=RoomObject(0x0AB5C5, [0x2B, 0xAB, 0xFA])), + Pot(40, 21, PotItem.FiveRupees, '50 Rupee Cave', obj=RoomObject(0x0AB5E0, [0x53, 0xAB, 0xFA])), + Pot(20, 22, PotItem.FiveRupees, '50 Rupee Cave', obj=RoomObject(0x0AB5C8, [0x2B, 0xB3, 0xFA])), + Pot(40, 22, PotItem.FiveRupees, '50 Rupee Cave', obj=RoomObject(0x0AB5DD, [0x53, 0xB3, 0xFA])), + Pot(24, 24, PotItem.FiveRupees, '50 Rupee Cave', obj=RoomObject(0x0AB5CE, [0x33, 0xC3, 0xFA])), + Pot(28, 24, PotItem.FiveRupees, '50 Rupee Cave', obj=RoomObject(0x0AB5D1, [0x3B, 0xC3, 0xFA])), + Pot(32, 24, PotItem.FiveRupees, '50 Rupee Cave', obj=RoomObject(0x0AB5D4, [0x43, 0xC3, 0xFA])), + Pot(36, 24, PotItem.FiveRupees, '50 Rupee Cave', obj=RoomObject(0x0AB5D7, [0x4B, 0xC3, 0xFA]))], + 0x125: [Pot(24, 25, PotItem.FiveRupees, '20 Rupee Cave', obj=RoomObject(0x0AB618, [0x33, 0xCB, 0xFA])), + Pot(28, 25, PotItem.FiveRupees, '20 Rupee Cave', obj=RoomObject(0x0AB61B, [0x3B, 0xCB, 0xFA])), + Pot(32, 25, PotItem.FiveRupees, '20 Rupee Cave', obj=RoomObject(0x0AB61E, [0x43, 0xCB, 0xFA])), + Pot(36, 25, PotItem.FiveRupees, '20 Rupee Cave', obj=RoomObject(0x0AB621, [0x4B, 0xCB, 0xFA])), + Pot(88, 22, PotItem.Heart, 'Dark Lake Hylia Ledge Spike Cave', obj=RoomObject(0x0AB627, [0xB3, 0xB3, 0xFA])), + Pot(100, 22, PotItem.Heart, 'Dark Lake Hylia Ledge Spike Cave', obj=RoomObject(0x0AB62A, [0xCB, 0xB3, 0xFA])), + Pot(88, 28, PotItem.Heart, 'Dark Lake Hylia Ledge Spike Cave', obj=RoomObject(0x0AB633, [0xB3, 0xE3, 0xFA])), + Pot(100, 28, PotItem.Heart, 'Dark Lake Hylia Ledge Spike Cave', obj=RoomObject(0x0AB636, [0xCB, 0xE3, 0xFA]))], + 0x127: [Pot(24, 25, PotItem.Nothing, 'Dark World Hammer Peg Cave', obj=RoomObject(0x2A801A, [0xB3, 0xB3, 0xFA])), + Pot(28, 25, PotItem.Nothing, 'Dark World Hammer Peg Cave', obj=RoomObject(0x2A801D, [0x3B, 0xCB, 0xFA])), + Pot(32, 25, PotItem.Nothing, 'Dark World Hammer Peg Cave', obj=RoomObject(0x2A8020, [0x43, 0xCB, 0xFA])), + Pot(36, 25, PotItem.Nothing, 'Dark World Hammer Peg Cave', obj=RoomObject(0x2A8023, [0x4B, 0xCB, 0xFA]))], } @@ -467,6 +963,39 @@ def shuffle_pot_switches(world, player): world.clear_location_cache() +def choose_pots(world, player): + pot_pool = set() + if world.pottery[player] == 'reduced': + dungeon_list = [] + for super_tile, pot_list in vanilla_pots.items(): + for pot in pot_list: + if world.get_region(pot.room, player).type == RegionType.Cave: + pot_pool.add(pot) + else: + dungeon_list.append(pot) + k = len(dungeon_list) // 4 + pot_pool.update(random.choices(dungeon_list, k=k)) + elif world.pottery[player] == 'clustered': + dungeon_map = defaultdict(list) + dungeon_count = 0 + for super_tile, pot_list in vanilla_pots.items(): + for pot in pot_list: + if world.get_region(pot.room, player).type == RegionType.Cave: + pot_pool.add(pot) + else: + dungeon_map[pot.room].append(pot) + dungeon_count += 1 + k = dungeon_count // 2 + options = sorted(list(dungeon_map.keys())) + chosen_amt = 0 + while chosen_amt < k: + chosen_section = random.choice(options) + pot_pool.update(dungeon_map[chosen_section]) + chosen_amt += len(dungeon_map[chosen_section]) + options.remove(chosen_section) + return pot_pool + + key_drop_data = { 'Hyrule Castle - Map Guard Key Drop': ['Drop', (0x09E20C, 0x72, 0), 'dropped in Hyrule Castle', 'Small Key (Escape)'], 'Hyrule Castle - Boomerang Guard Key Drop': ['Drop', (0x09E204, 0x71, 1), 'dropped in Hyrule Castle', 'Small Key (Escape)'], @@ -509,7 +1038,7 @@ class PotSecretTable(object): self.room_map = defaultdict(list) self.multiworld_count = 0 - def write_pot_data_to_rom(self, rom): + def write_pot_data_to_rom(self, rom, colorize): pointer_address = 0x140000 # pots currently in bank 28 pointer_offset = 0x128 * 2 empty_address = (pointer_address + pointer_offset) @@ -518,12 +1047,19 @@ class PotSecretTable(object): for room in range(0, 0x128): if room in self.room_map: list_idx = 0 + collection_rate_mask = 0x00 data_address = pc_to_snes(data_pointer) & 0xFFFF rom.write_bytes(pointer_address + room * 2, int16_as_bytes(data_address)) for pot in self.room_map[room]: rom.write_bytes(data_pointer + list_idx * 3, pot.pot_data()) + if pot.location is not None: + collection_rate_mask |= 1 << (15 - list_idx) + if colorize and pot.obj_ref: + pot.obj_ref.change_type(Shuffled_Pot) + pot.obj_ref.write_to_rom(rom) list_idx += 1 rom.write_bytes(data_pointer + list_idx * 3, [0xFF, 0xFF]) + rom.write_bytes(snes_to_pc(0x28AA60) + room * 2, int16_as_bytes(collection_rate_mask)) data_pointer += 3 * list_idx + 2 else: rom.write_bytes(pointer_address + room * 2, int16_as_bytes(empty_pointer)) diff --git a/Regions.py b/Regions.py index 1d952189..331795dc 100644 --- a/Regions.py +++ b/Regions.py @@ -1,7 +1,7 @@ import collections from Items import ItemFactory from BaseClasses import Region, Location, Entrance, RegionType, Shop, ShopType, LocationType, PotItem, PotFlags -from PotShuffle import key_drop_data, vanilla_pots, PotSecretTable +from PotShuffle import key_drop_data, vanilla_pots, choose_pots, PotSecretTable def create_regions(world, player): @@ -1007,6 +1007,7 @@ def adjust_locations(world, player): pot = pot.copy() loc.address = pot_address(pot_index, datum[1]) loc.pot = pot + pot.location = loc if (not world.dropshuffle[player] and drop_location)\ or (not drop_location and world.pottery[player] in ['none', 'cave']): loc.skip = True @@ -1023,6 +1024,7 @@ def adjust_locations(world, player): dungeon.small_keys.append(key_item) elif key_item.bigkey: dungeon.big_key = key_item + world.pot_pool[player] = choose_pots(world, player) for super_tile, pot_list in vanilla_pots.items(): for pot_index, pot_orig in enumerate(pot_list): if pot_orig.item == PotItem.Key: @@ -1032,7 +1034,7 @@ def adjust_locations(world, player): pot = pot_orig.copy() world.pot_contents[player].room_map[super_tile].append(pot) - if valid_pot_location(pot, world, player): + if valid_pot_location(pot, world.pot_pool[player], world, player): create_pot_location(pot, pot_index, super_tile, world, player) if world.shopsanity[player]: index = 0 @@ -1055,12 +1057,16 @@ def adjust_locations(world, player): location.skip = True -def valid_pot_location(pot, world, player): +def valid_pot_location(pot, pot_set, world, player): if world.pottery[player] == 'lottery': return True + if world.pottery[player] == 'nonempty' and pot.item != PotItem.Nothing: + return True + if world.pottery[player] in ['reduced', 'clustered'] and pot in pot_set: + return True if world.pottery[player] == 'dungeon' and world.get_region(pot.room, player).type == RegionType.Dungeon: return True - if world.pottery[player] == 'cave' and world.get_region(pot.room, player).type == RegionType.Cave: + if world.pottery[player] in ['cave', 'cavekeys'] and world.get_region(pot.room, player).type == RegionType.Cave: return True return False @@ -1068,7 +1074,7 @@ def valid_pot_location(pot, world, player): def create_pot_location(pot, pot_index, super_tile, world, player): if (pot.item not in [PotItem.Key, PotItem.Hole] and (pot.item != PotItem.Switch or (world.potshuffle[player] - and world.pottery[player] in ['lottery', 'dungeon']))): + and world.pottery[player] not in ['none', 'cave', 'keys', 'cavekeys']))): address = pot_address(pot_index, super_tile) region = pot.room if world.mode[player] == 'inverted': @@ -1084,6 +1090,7 @@ def create_pot_location(pot, pot_index, super_tile, world, player): parent=parent) world.dynamic_locations.append(pot_location) pot_location.pot = pot + pot.location = pot_location pot_location.type = LocationType.Pot parent.locations.append(pot_location) diff --git a/Rom.py b/Rom.py index 0a392c1f..c4a31ed6 100644 --- a/Rom.py +++ b/Rom.py @@ -32,10 +32,11 @@ from EntranceShuffle import door_addresses, exit_ids, ow_prize_table from source.classes.SFX import randomize_sfx from source.item.FillUtil import valid_pot_items +from source.dungeon.RoomList import Room0127 JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '8d196e8024faebbbbe1304032158ccea' +RANDOMIZERBASEHASH = 'eb982135bdfe95a23b9068bd9cac4449' class JsonRom(object): @@ -651,9 +652,11 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False): rom.write_byte(0x155C9, random.choice([0x11, 0x16])) # Randomize GT music too with map shuffle if world.pot_contents[player]: + colorize_pots = (world.pottery[player] not in ['vanilla', 'lottery'] + and (world.colorizepots[player] or world.pottery[player] in ['reduced', 'clustered'])) if world.pot_contents[player].size() > 0x2800: raise Exception('Pot table is too big for current area') - world.pot_contents[player].write_pot_data_to_rom(rom) + world.pot_contents[player].write_pot_data_to_rom(rom, colorize_pots) # fix for swamp drains if necessary swamp1location = world.get_location('Swamp Palace - Trench 1 Pot Key', player) if not swamp1location.pot.indicator: @@ -893,14 +896,11 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False): if world.pottery[player] not in ['none', 'keys']: # Cuccos should not prevent kill rooms from opening rom.write_byte(snes_to_pc(0x0DB457), 0x40) - if world.pottery[player] in ['none', 'keys']: - rom.write_byte(snes_to_pc(0x28AA56), 0) - elif world.pottery[player] == 'cave': - rom.write_byte(snes_to_pc(0x28AA56), 1) - elif world.pottery[player] == 'dungeon': - rom.write_byte(snes_to_pc(0x28AA56), 2) - elif world.pottery[player] == 'lottery': - rom.write_byte(snes_to_pc(0x28AA56), 3) + rom.write_byte(snes_to_pc(0x28AA56), 0 if world.pottery[player] == 'none' else 1) + if world.pottery[player] not in ['none']: + rom.write_bytes(snes_to_pc(0x1F8375), int32_as_bytes(0x2A8000)) + # make hammer pegs use different tiles + Room0127.write_to_rom(snes_to_pc(0x2A8000), rom) write_int16(rom, 0x187010, credits_total) # dynamic credits if credits_total != 216: diff --git a/Rules.py b/Rules.py index 0572d679..c47452b6 100644 --- a/Rules.py +++ b/Rules.py @@ -721,7 +721,7 @@ def bomb_rules(world, player): def pot_rules(world, player): - if world.pottery[player] in ['lottery', 'cave']: + if world.pottery[player] != 'none': blocks = [l for l in world.get_locations() if l.type == LocationType.Pot and l.pot.flags & PotFlags.Block] for block_pot in blocks: add_rule(block_pot, lambda state: state.can_lift_rocks(player)) @@ -748,8 +748,6 @@ def pot_rules(world, player): or state.has('Cape', player) or (state.has('Cane of Byrna', player) and state.world.difficulty_adjustments[player] == 'normal')) - - if world.pottery[player] in ['lottery', 'dungeon']: for l in world.get_region('Ice Hammer Block', player).locations: if l.type == LocationType.Pot: add_rule(l, lambda state: state.has('Hammer', player) and state.can_lift_rocks(player)) diff --git a/Utils.py b/Utils.py index a307a6cd..75b83d14 100644 --- a/Utils.py +++ b/Utils.py @@ -679,9 +679,22 @@ def extract_data_from_jp_rom(rom): # print() +def check_pots(): + from PotShuffle import vanilla_pots + for supertile, pot_list in vanilla_pots.items(): + for i,pot in enumerate(pot_list): + if pot.obj_ref: + r = pot.obj_ref + secret_vram = pot.x | (pot.y << 8) + tile_vram = ((r.data[1] & 0xFC) << 5) | ((r.data[0] & 0xFC) >> 1) + if secret_vram != tile_vram: + print(f'{pot.room}#{i+1} secret: {hex(secret_vram)} tile: {hex(tile_vram)}') + + if __name__ == '__main__': # make_new_base2current() # read_entrance_data(old_rom=sys.argv[1]) # room_palette_data(old_rom=sys.argv[1]) # extract_data_from_us_rom(sys.argv[1]) - extract_data_from_jp_rom(sys.argv[1]) + # extract_data_from_jp_rom(sys.argv[1]) + check_pots() diff --git a/data/base2current.bps b/data/base2current.bps index e4759a9cb06c9a0621447ee21979121ff6fe9960..f8e2828436e7bbdb235ce9da1f19ad562f2d79f5 100644 GIT binary patch delta 19838 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 IG3W6A0hFq{?EnA( diff --git a/resources/app/cli/args.json b/resources/app/cli/args.json index 70bf5ab0..aea8fb58 100644 --- a/resources/app/cli/args.json +++ b/resources/app/cli/args.json @@ -78,9 +78,17 @@ "keys", "dungeon", "cave", + "cavekeys", + "reduced", + "clustered", + "nonempty", "lottery" ] }, + "colorizepots" : { + "action": "store_true", + "type": "bool" + }, "shufflepots": { "action": "store_true", "type": "bool" diff --git a/resources/app/cli/lang/en.json b/resources/app/cli/lang/en.json index 6ae45ea5..f158ef10 100644 --- a/resources/app/cli/lang/en.json +++ b/resources/app/cli/lang/en.json @@ -258,9 +258,15 @@ "None: No pots are changed", "Keys: Key pots are included in the location pool and other items can take their place", "Cave: Only pots in houses and caves are included in the location pool", + "CaveKeys: Both pots in houses and caves and keys pots are included in the location pool", + "Reduced: Same as KeyCaves + 25% of Pots in dungeons (dynamic mode)", + "Clustered: Same as KeyCaves + 50% of Pots in dungeons, chosen by logical group (dynamic mode)", + "NonEmpty: All pots that are not originally empty are included in the location pool", "Dungeon: Only pots in dungeons are included in the location pool", "Lottery: All pots are part of the location pool" ], + "colorizepots": ["All pots chosen to be in location pool by the pottery setting are different.", + "Forced on in dynamic modes. Forced off in lottery"], "shufflepots": [ "Pots and switches are shuffled on the supertile (legacy potshuffle) (default: %(default)s)"], "mixed_travel": [ "How to handle potential traversal between dungeon in Crossed door shuffle", diff --git a/resources/app/gui/lang/en.json b/resources/app/gui/lang/en.json index e18f7304..ad801517 100644 --- a/resources/app/gui/lang/en.json +++ b/resources/app/gui/lang/en.json @@ -61,8 +61,13 @@ "randomizer.dungeon.pottery.none": "None", "randomizer.dungeon.pottery.keys": "Key Pots", "randomizer.dungeon.pottery.cave": "Cave Pots", + "randomizer.dungeon.pottery.cavekeys": "Cave+Key Pots", + "randomizer.dungeon.pottery.reduced": "Reduced Dungeon Pots (Dynamic)", + "randomizer.dungeon.pottery.clustered": "Clustered Dungeon Pots (Dynamic)", + "randomizer.dungeon.pottery.nonempty": "Excludes Empty Pots", "randomizer.dungeon.pottery.dungeon": "Dungeon Pots", "randomizer.dungeon.pottery.lottery": "Lottery (All Pots and Large Blocks)", + "randomizer.dungeon.colorizepots": "Colorize Randomized Pots", "randomizer.dungeon.dungeondoorshuffle": "Dungeon Door Shuffle", "randomizer.dungeon.dungeondoorshuffle.vanilla": "Vanilla", diff --git a/resources/app/gui/randomize/dungeon/widgets.json b/resources/app/gui/randomize/dungeon/widgets.json index 7a4d0d13..2a99ea1a 100644 --- a/resources/app/gui/randomize/dungeon/widgets.json +++ b/resources/app/gui/randomize/dungeon/widgets.json @@ -30,6 +30,10 @@ "none", "keys", "cave", + "cavekeys", + "reduced", + "clustered", + "nonempty", "dungeon", "lottery" ], @@ -37,6 +41,7 @@ "width": 35 } }, + "colorizepots": { "type": "checkbox" }, "dropshuffle": { "type": "checkbox" }, "potshuffle": { "type": "checkbox" }, "experimental": { "type": "checkbox" }, diff --git a/source/classes/constants.py b/source/classes/constants.py index 9199b47a..f5e6c5ef 100644 --- a/source/classes/constants.py +++ b/source/classes/constants.py @@ -98,6 +98,7 @@ SETTINGSTOPROCESS = { "keydropshuffle": "keydropshuffle", "dropshuffle": "dropshuffle", "pottery": "pottery", + "colorizepots": "colorizepots", "potshuffle": "shufflepots", "experimental": "experimental", "dungeon_counters": "dungeon_counters", diff --git a/source/dungeon/RoomList.py b/source/dungeon/RoomList.py new file mode 100644 index 00000000..4b8c2a75 --- /dev/null +++ b/source/dungeon/RoomList.py @@ -0,0 +1,58 @@ +from RoomData import DoorKind, Position +from source.dungeon.RoomObject import RoomObject, DoorObject + + +class Room: + + def __init__(self, layout, layer1, layer2, doors): + self.layout = layout + self.layer1 = layer1 + self.layer2 = layer2 + self.doors = doors + + def write_to_rom(self, address, rom): + rom.write_bytes(address, self.layout) + address += 2 + for obj in self.layer1: + rom.write_bytes(address, obj.data) + address += 3 + rom.write_bytes(address, [0xFF, 0xFF]) + address += 2 + for obj in self.layer2: + rom.write_bytes(address, obj.data) + address += 3 + rom.write_bytes(address, [0xFF, 0xFF, 0xF0, 0xFF]) + address += 4 + for door in self.doors: + rom.write_bytes(address, door.get_bytes()) + address += 2 + rom.write_bytes(address, [0xFF, 0xFF]) + return address + 2 # where the data ended + + +Room0127 = Room([0xE1, 0x00], + [RoomObject(0x0AB600, [0xFE, 0x89, 0x00]), + RoomObject(0x0AB603, [0xA2, 0xA1, 0x61]), + RoomObject(0x0AB606, [0xFE, 0x8E, 0x81]), + RoomObject(0x0AB609, [0xFF, 0x49, 0x02]), + RoomObject(0x0AB60C, [0xD2, 0xA1, 0x62]), + RoomObject(0x0AB60F, [0xFF, 0x4E, 0x83]), + RoomObject(0x0AB612, [0x20, 0xB3, 0xDD]), + RoomObject(0x0AB615, [0x50, 0xB3, 0xDD]), + RoomObject(0x0AB618, [0x33, 0xCB, 0xFA]), + RoomObject(0x0AB61B, [0x3B, 0xCB, 0xFA]), + RoomObject(0x0AB61E, [0x43, 0xCB, 0xFA]), + RoomObject(0x0AB621, [0x4B, 0xCB, 0xFA]), + RoomObject(0x0AB624, [0xBF, 0x94, 0xF9]), + RoomObject(0x0AB627, [0xB3, 0xB3, 0xFA]), + RoomObject(0x0AB62A, [0xCB, 0xB3, 0xFA]), + RoomObject(0x0AB62D, [0xAD, 0xC8, 0xDF]), + RoomObject(0x0AB630, [0xC4, 0xC8, 0xDF]), + RoomObject(0x0AB633, [0xB3, 0xE3, 0xFA]), + RoomObject(0x0AB636, [0xCB, 0xE3, 0xFA]), + RoomObject(0x0AB639, [0x81, 0x93, 0xC0]), + RoomObject(0x0AB63C, [0x81, 0xD2, 0xC0]), + RoomObject(0x0AB63F, [0xE1, 0x93, 0xC0]), + RoomObject(0x0AB642, [0xE1, 0xD2, 0xC0])], + [], [DoorObject(Position.SouthW, DoorKind.CaveEntrance), + DoorObject(Position.SouthE, DoorKind.CaveEntrance)]) diff --git a/source/dungeon/RoomObject.py b/source/dungeon/RoomObject.py new file mode 100644 index 00000000..359231e0 --- /dev/null +++ b/source/dungeon/RoomObject.py @@ -0,0 +1,34 @@ +from Utils import snes_to_pc + +# Subtype 3 object (0x2xx by jpdasm id - see bank 01) +# B +Normal_Pot = (0xFA, 3, 3) +Shuffled_Pot = (0xFB, 0, 0) # formerly weird pot, or black diagonal thing + + +class RoomObject: + + def __init__(self, address, data): + self.address = address + self.data = data + + def change_type(self, new_type): + type_id, datum_a, datum_b = new_type + if 0xF8 <= type_id < 0xFC: # sub type 3 + self.data = (self.data[0] & 0xFC) | datum_a, (self.data[1] & 0xFC) | datum_b, type_id + else: + pass # not yet implemented + + def write_to_rom(self, rom): + rom.write_bytes(snes_to_pc(self.address), self.data) + + +class DoorObject: + + def __init__(self, pos, kind): + self.pos = pos + self.kind = kind + + def get_bytes(self): + return [self.pos.value, self.kind.value] + diff --git a/source/item/FillUtil.py b/source/item/FillUtil.py index 24f22b3b..4be12667 100644 --- a/source/item/FillUtil.py +++ b/source/item/FillUtil.py @@ -70,7 +70,7 @@ def create_item_pool_config(world): if world.dropshuffle[player]: for item, locs in keydrop_vanilla_mapping.items(): config.static_placement[player][item].extend(locs) - if world.pottery[player] != 'none': + if world.pottery[player] not in ['none', 'cave']: for item, locs in potkeys_vanilla_mapping.items(): config.static_placement[player][item].extend(locs) if world.pottery[player] in ['lottery', 'cave', 'dungeon']: