from ..utils.parameters import infinity import copy class Location: graph_slots = ( 'distance', 'accessPoint', 'difficulty', 'path', 'pathDifficulty', 'locDifficulty' ) rando_slots = ( 'restricted', ) solver_slots = ( 'itemName', 'comeBack', 'areaWeight' ) __slots__ = graph_slots + rando_slots + solver_slots def __init__( self, distance=None, accessPoint=None, difficulty=None, path=None, pathDifficulty=None, locDifficulty=None, restricted=None, itemName=None, itemType=None, comeBack=None, areaWeight=None): self.distance = distance self.accessPoint = accessPoint self.difficulty = difficulty self.path = path self.pathDifficulty = pathDifficulty self.locDifficulty = locDifficulty self.restricted = restricted self.itemName = itemName self.itemType = itemType self.comeBack = comeBack self.areaWeight = areaWeight def isMajor(self): return self._isMajor def isChozo(self): return self._isChozo def isMinor(self): return self._isMinor def isBoss(self): return self._isBoss def isScavenger(self): return self._isScavenger def isClass(self, _class): return _class in self.Class def setClass(self, _class): self.Class = _class self._isChozo = 'Chozo' in _class self._isMajor = 'Major' in _class self._isMinor = 'Minor' in _class self._isBoss = 'Boss' in _class self._isScavenger = 'Scavenger' in _class def evalPostAvailable(self, smbm): if self.difficulty.bool == True and self.PostAvailable is not None: smbm.addItem(self.itemName) postAvailable = self.PostAvailable(smbm) smbm.removeItem(self.itemName) self.difficulty = self.difficulty & postAvailable def evalComeBack(self, smbm, areaGraph, ap): if self.difficulty.bool == True: # check if we can come back to given ap from the location self.comeBack = areaGraph.canAccess(smbm, self.accessPoint, ap, infinity, self.itemName) def json(self): # to return after plando rando ret = {'Name': self.Name, 'accessPoint': self.accessPoint} if self.difficulty is not None: ret['difficulty'] = self.difficulty.json() return ret def __repr__(self): return "Location({}: {})".format(self.Name, '. '.join( (repr(getattr(self, slot)) for slot in Location.__slots__ if getattr(self, slot) is not None))) def __copy__(self): d = self.difficulty difficulty = copy.copy(d) if d is not None else None ret = type(self)( self.distance, self.accessPoint, difficulty, self.path, self.pathDifficulty, self.locDifficulty, self.restricted, self.itemName, self.itemType, self.comeBack, self.areaWeight) ret.AccessFrom = self.AccessFrom ret.Available = self.Available ret.PostAvailable = self.PostAvailable ret.setClass(self.Class) return ret def __eq__(self, other): return self.Name == other.Name def define_location( Area, GraphArea, SolveArea, Name, Class, CanHidden, Address, Id, Visibility, Room, VanillaItemType=None, AccessFrom=None, Available=None, PostAvailable=None, HUD=None): name = Name.replace(' ', '').replace(',', '') + 'Location' subclass = type(name, (Location,), { 'Area': Area, 'GraphArea': GraphArea, 'SolveArea': SolveArea, 'Name': Name, 'Class': Class, 'CanHidden': CanHidden, 'Address': Address, 'Id': Id, 'Visibility': Visibility, 'Room': Room, 'VanillaItemType': VanillaItemType, 'HUD': HUD, 'AccessFrom': AccessFrom, 'Available': Available, 'PostAvailable': PostAvailable, '_isMajor': 'Major' in Class, '_isChozo': 'Chozo' in Class, '_isMinor': 'Minor' in Class, '_isBoss': 'Boss' in Class, '_isScavenger': 'Scavenger' in Class }) return subclass() # all the items locations with the prerequisites to access them locationsDict = { ###### MAJORS "Energy Tank, Gauntlet": define_location( Area="Crateria", GraphArea="Crateria", SolveArea="Crateria Gauntlet", Name="Energy Tank, Gauntlet", Class=["Major", "Chozo"], CanHidden=False, Address=0x78264, Id=0x5, Visibility="Visible", Room='Gauntlet Energy Tank Room', ), "Bomb": define_location( Area="Crateria", GraphArea="Crateria", SolveArea="Crateria Bombs", Name="Bomb", Address=0x78404, Id=0x7, Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Visibility="Chozo", Room='Bomb Torizo Room', VanillaItemType='Bomb', HUD=1, ), "Energy Tank, Terminator": define_location( Area="Crateria", GraphArea="Crateria", SolveArea="Crateria Terminator", Name="Energy Tank, Terminator", Class=["Major"], CanHidden=False, Address=0x78432, Id=0x8, Visibility="Visible", Room='Terminator Room', ), "Reserve Tank, Brinstar": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Green Brinstar Reserve", Name="Reserve Tank, Brinstar", Class=["Major", "Chozo"], CanHidden=False, Address=0x7852C, Id=0x11, Visibility="Chozo", Room='Brinstar Reserve Tank Room', ), "Charge Beam": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Pink Brinstar", Name="Charge Beam", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x78614, Id=0x17, Visibility="Chozo", Room='Big Pink', VanillaItemType='Charge', HUD=2, ), "Morphing Ball": define_location( Area="Brinstar", GraphArea="Crateria", SolveArea="Blue Brinstar", Name="Morphing Ball", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x786DE, Id=0x1a, Visibility="Visible", Room='Morph Ball Room', VanillaItemType='Morph', HUD=0, ), "Energy Tank, Brinstar Ceiling": define_location( Area="Brinstar", GraphArea="Crateria", SolveArea="Blue Brinstar", Name="Energy Tank, Brinstar Ceiling", Class=["Major"], CanHidden=False, Address=0x7879E, Id=0x1d, Visibility="Hidden", Room='Blue Brinstar Energy Tank Room', ), "Energy Tank, Etecoons": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Green Brinstar", Name="Energy Tank, Etecoons", Class=["Major"], CanHidden=True, Address=0x787C2, Id=0x1e, Visibility="Visible", Room='Etecoon Energy Tank Room', ), "Energy Tank, Waterway": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Pink Brinstar", Name="Energy Tank, Waterway", Class=["Major"], CanHidden=True, Address=0x787FA, Id=0x21, Visibility="Visible", Room='Waterway Energy Tank Room', ), "Energy Tank, Brinstar Gate": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Pink Brinstar", Name="Energy Tank, Brinstar Gate", Class=["Major"], CanHidden=True, Address=0x78824, Id=0x23, Visibility="Visible", Room='Hopper Energy Tank Room', ), "X-Ray Scope": define_location( Area="Brinstar", GraphArea="RedBrinstar", SolveArea="Red Brinstar", Name="X-Ray Scope", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x78876, Id=0x26, Visibility="Chozo", Room='X-Ray Scope Room', VanillaItemType='XRayScope', HUD=10, ), "Spazer": define_location( Area="Brinstar", GraphArea="RedBrinstar", SolveArea="Red Brinstar", Name="Spazer", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x7896E, Id=0x2a, Visibility="Chozo", Room='Spazer Room', VanillaItemType='Spazer', HUD=3, ), "Energy Tank, Kraid": define_location( Area="Brinstar", GraphArea="Kraid", SolveArea="Kraid", Name="Energy Tank, Kraid", Class=["Major"], CanHidden=False, Address=0x7899C, Id=0x2b, Visibility="Hidden", Room='Warehouse Energy Tank Room', ), "Kraid": define_location( Area="Brinstar", GraphArea="Kraid", SolveArea="Kraid Boss", Name="Kraid", Class=["Boss"], CanHidden=False, Address=0xB055B055, Id=None, Visibility="Hidden", Room='Kraid Room', ), "Varia Suit": define_location( Area="Brinstar", GraphArea="Kraid", SolveArea="Kraid Boss", Name="Varia Suit", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x78ACA, Id=0x30, Visibility="Chozo", Room='Varia Suit Room', VanillaItemType='Varia', HUD=4, ), "Ice Beam": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Norfair Ice", Name="Ice Beam", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x78B24, Id=0x32, Visibility="Chozo", Room='Ice Beam Room', VanillaItemType='Ice', HUD=6, ), "Energy Tank, Crocomire": define_location( Area="Norfair", GraphArea="Crocomire", SolveArea="Crocomire", Name="Energy Tank, Crocomire", Class=["Major"], CanHidden=True, Address=0x78BA4, Id=0x34, Visibility="Visible", Room="Crocomire's Room", ), "Hi-Jump Boots": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Norfair Entrance", Name="Hi-Jump Boots", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x78BAC, Id=0x35, Visibility="Chozo", Room='Hi Jump Boots Room', VanillaItemType='HiJump', HUD=5, ), "Grapple Beam": define_location( Area="Norfair", GraphArea="Crocomire", SolveArea="Crocomire", Name="Grapple Beam", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x78C36, Id=0x3c, Visibility="Chozo", Room='Grapple Beam Room', VanillaItemType='Grapple', HUD=9, ), "Reserve Tank, Norfair": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Bubble Norfair Reserve", Name="Reserve Tank, Norfair", Class=["Major"], CanHidden=False, Address=0x78C3E, Id=0x3d, Visibility="Chozo", Room='Norfair Reserve Tank Room', ), "Speed Booster": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Bubble Norfair Speed", Name="Speed Booster", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x78C82, Id=0x42, Visibility="Chozo", Room='Speed Booster Room', VanillaItemType='SpeedBooster', HUD=7, ), "Wave Beam": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Bubble Norfair Wave", Name="Wave Beam", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x78CCA, Id=0x44, Visibility="Chozo", Room='Wave Beam Room', VanillaItemType='Wave', HUD=8, ), "Ridley": define_location( Area="LowerNorfair", GraphArea="LowerNorfair", SolveArea="Ridley Boss", Name="Ridley", Class=["Boss"], CanHidden=False, Address=0xB055B056, Id=None, Visibility="Hidden", Room="Ridley's Room", ), "Energy Tank, Ridley": define_location( Area="LowerNorfair", GraphArea="LowerNorfair", SolveArea="Ridley Boss", Name="Energy Tank, Ridley", Class=["Major", "Chozo"], CanHidden=False, Address=0x79108, Id=0x4e, Visibility="Hidden", Room='Ridley Tank Room', ), "Screw Attack": define_location( Area="LowerNorfair", GraphArea="LowerNorfair", SolveArea="Lower Norfair Screw Attack", Name="Screw Attack", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x79110, Id=0x4f, Visibility="Chozo", Room='Screw Attack Room', VanillaItemType='ScrewAttack', HUD=15, ), "Energy Tank, Firefleas": define_location( Area="LowerNorfair", GraphArea="LowerNorfair", SolveArea="Lower Norfair After Amphitheater", Name="Energy Tank, Firefleas", Class=["Major"], CanHidden=True, Address=0x79184, Id=0x50, Visibility="Visible", Room='Lower Norfair Fireflea Room', ), "Reserve Tank, Wrecked Ship": define_location( Area="WreckedShip", GraphArea="WreckedShip", SolveArea="WreckedShip Gravity", Name="Reserve Tank, Wrecked Ship", Class=["Major"], CanHidden=False, Address=0x7C2E9, Id=0x81, Visibility="Chozo", Room='Bowling Alley', ), "Energy Tank, Wrecked Ship": define_location( Area="WreckedShip", GraphArea="WreckedShip", SolveArea="WreckedShip Back", Name="Energy Tank, Wrecked Ship", Class=["Major", "Chozo"], CanHidden=True, Address=0x7C337, Id=0x84, Visibility="Visible", Room='Wrecked Ship Energy Tank Room', ), "Phantoon": define_location( Area="WreckedShip", GraphArea="WreckedShip", SolveArea="Phantoon Boss", Name="Phantoon", Class=["Boss"], CanHidden=False, Address=0xB055B057, Id=None, Visibility="Hidden", Room="Phantoon's Room", ), "Right Super, Wrecked Ship": define_location( Area="WreckedShip", GraphArea="WreckedShip", SolveArea="WreckedShip Main", Name="Right Super, Wrecked Ship", Class=["Major", "Chozo"], CanHidden=True, Address=0x7C365, Id=0x86, Visibility="Visible", Room='Wrecked Ship East Super Room', ), "Gravity Suit": define_location( Area="WreckedShip", GraphArea="WreckedShip", SolveArea="WreckedShip Gravity", Name="Gravity Suit", Class=["Major", "Scavenger"], CanHidden=False, Address=0x7C36D, Id=0x87, Visibility="Chozo", Room='Gravity Suit Room', VanillaItemType='Gravity', HUD=11, ), "Energy Tank, Mama turtle": define_location( Area="Maridia", GraphArea="WestMaridia", SolveArea="Maridia Green", Name="Energy Tank, Mama turtle", Class=["Major"], CanHidden=True, Address=0x7C47D, Id=0x8a, Visibility="Visible", Room='Mama Turtle Room', ), "Plasma Beam": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Maridia Forgotten Highway", Name="Plasma Beam", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x7C559, Id=0x8f, Visibility="Chozo", Room='Plasma Room', VanillaItemType='Plasma', HUD=14, ), "Reserve Tank, Maridia": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Left Sandpit", Name="Reserve Tank, Maridia", Class=["Major"], CanHidden=False, Address=0x7C5E3, Id=0x91, Visibility="Chozo", Room='West Sand Hole', ), "Spring Ball": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Maridia Sandpits", Name="Spring Ball", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x7C6E5, Id=0x96, Visibility="Chozo", Room='Spring Ball Room', VanillaItemType='SpringBall', HUD=13, ), "Energy Tank, Botwoon": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Maridia Pink Top", Name="Energy Tank, Botwoon", Class=["Major"], CanHidden=True, Address=0x7C755, Id=0x98, Visibility="Visible", Room='Botwoon Energy Tank Room', ), "Draygon": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Draygon Boss", Name="Draygon", Class=["Boss"], CanHidden=False, Address=0xB055B058, Id=None, Visibility="Hidden", Room="Draygon's Room", ), "Space Jump": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Draygon Boss", Name="Space Jump", Class=["Major", "Chozo", "Scavenger"], CanHidden=False, Address=0x7C7A7, Id=0x9a, Visibility="Chozo", Room='Space Jump Room', VanillaItemType='SpaceJump', HUD=12, ), "Mother Brain": define_location( Area="Tourian", GraphArea="Tourian", SolveArea="Tourian", Name="Mother Brain", Class=["Boss"], Address=0xB055B059, Id=None, Visibility="Hidden", CanHidden=False, Room='Mother Brain Room', ), ###### MINORS "Power Bomb (Crateria surface)": define_location( Area="Crateria", GraphArea="Crateria", SolveArea="Crateria Landing Site", Name="Power Bomb (Crateria surface)", Class=["Minor"], CanHidden=True, Address=0x781CC, Id=0x0, Visibility="Visible", Room='Crateria Power Bomb Room', ), "Missile (outside Wrecked Ship bottom)": define_location( Area="Crateria", GraphArea="WreckedShip", SolveArea="WreckedShip Bottom", Name="Missile (outside Wrecked Ship bottom)", Class=["Minor"], CanHidden=True, Address=0x781E8, Id=0x1, Visibility="Visible", Room='West Ocean', ), "Missile (outside Wrecked Ship top)": define_location( Area="Crateria", GraphArea="WreckedShip", SolveArea="WreckedShip Top", Name="Missile (outside Wrecked Ship top)", Class=["Minor"], CanHidden=False, Address=0x781EE, Id=0x2, Visibility="Hidden", Room='West Ocean', ), "Missile (outside Wrecked Ship middle)": define_location( Area="Crateria", GraphArea="WreckedShip", SolveArea="WreckedShip Top", Name="Missile (outside Wrecked Ship middle)", CanHidden=True, Class=["Minor"], Address=0x781F4, Id=0x3, Visibility="Visible", Room='West Ocean', ), "Missile (Crateria moat)": define_location( Area="Crateria", GraphArea="Crateria", SolveArea="Crateria Landing Site", Name="Missile (Crateria moat)", Class=["Minor"], CanHidden=False, Address=0x78248, Id=0x4, Visibility="Visible", Room='The Moat', ), "Missile (Crateria bottom)": define_location( Area="Crateria", GraphArea="Crateria", SolveArea="Crateria Landing Site", Name="Missile (Crateria bottom)", Class=["Minor"], CanHidden=True, Address=0x783EE, Id=0x6, Visibility="Visible", Room='Pit Room', ), "Missile (Crateria gauntlet right)": define_location( Area="Crateria", GraphArea="Crateria", SolveArea="Crateria Gauntlet", Name="Missile (Crateria gauntlet right)", Class=["Minor"], CanHidden=True, Address=0x78464, Id=0x9, Visibility="Visible", Room='Green Pirates Shaft', ), "Missile (Crateria gauntlet left)": define_location( Area="Crateria", GraphArea="Crateria", SolveArea="Crateria Gauntlet", Name="Missile (Crateria gauntlet left)", Class=["Minor"], CanHidden=True, Address=0x7846A, Id=0xa, Visibility="Visible", Room='Green Pirates Shaft', ), "Super Missile (Crateria)": define_location( Area="Crateria", GraphArea="Crateria", SolveArea="Crateria Landing Site", Name="Super Missile (Crateria)", Class=["Minor"], CanHidden=True, Address=0x78478, Id=0xb, Visibility="Visible", Room='Crateria Super Room', ), "Missile (Crateria middle)": define_location( Area="Crateria", GraphArea="Crateria", SolveArea="Crateria Landing Site", Name="Missile (Crateria middle)", Class=["Minor", "Chozo"], CanHidden=True, Address=0x78486, Id=0xc, Visibility="Visible", Room='The Final Missile', ), "Power Bomb (green Brinstar bottom)": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Green Brinstar", Name="Power Bomb (green Brinstar bottom)", Class=["Minor"], CanHidden=False, Address=0x784AC, Id=0xd, Visibility="Chozo", Room='Green Brinstar Main Shaft', ), "Super Missile (pink Brinstar)": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Pink Brinstar", Name="Super Missile (pink Brinstar)", Class=["Minor", "Chozo"], CanHidden=False, Address=0x784E4, Id=0xe, Visibility="Chozo", Room='Spore Spawn Super Room', ), "Missile (green Brinstar below super missile)": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Green Brinstar", Name="Missile (green Brinstar below super missile)", Class=["Minor"], CanHidden=False, Address=0x78518, Id=0xf, Visibility="Visible", Room='Early Supers Room', ), "Super Missile (green Brinstar top)": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Green Brinstar Reserve", Name="Super Missile (green Brinstar top)", Class=["Minor"], CanHidden=True, Address=0x7851E, Id=0x10, Visibility="Visible", Room='Early Supers Room', ), "Missile (green Brinstar behind missile)": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Green Brinstar Reserve", Name="Missile (green Brinstar behind missile)", Class=["Minor"], CanHidden=False, Address=0x78532, Id=0x12, Visibility="Hidden", Room='Brinstar Reserve Tank Room', ), "Missile (green Brinstar behind reserve tank)": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Green Brinstar Reserve", Name="Missile (green Brinstar behind reserve tank)", Class=["Minor"], CanHidden=True, Address=0x78538, Id=0x13, Visibility="Visible", Room='Brinstar Reserve Tank Room', ), "Missile (pink Brinstar top)": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Pink Brinstar", Name="Missile (pink Brinstar top)", Class=["Minor"], CanHidden=True, Address=0x78608, Id=0x15, Visibility="Visible", Room='Big Pink', ), "Missile (pink Brinstar bottom)": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Pink Brinstar", Name="Missile (pink Brinstar bottom)", Class=["Minor"], CanHidden=True, Address=0x7860E, Id=0x16, Visibility="Visible", Room='Big Pink', ), "Power Bomb (pink Brinstar)": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Pink Brinstar", Name="Power Bomb (pink Brinstar)", Class=["Minor"], CanHidden=True, Address=0x7865C, Id=0x18, Visibility="Visible", Room='Pink Brinstar Power Bomb Room', ), "Missile (green Brinstar pipe)": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Brinstar Hills", Name="Missile (green Brinstar pipe)", Class=["Minor"], CanHidden=True, Address=0x78676, Id=0x19, Visibility="Visible", Room='Green Hill Zone', ), "Power Bomb (blue Brinstar)": define_location( Area="Brinstar", GraphArea="Crateria", SolveArea="Blue Brinstar", Name="Power Bomb (blue Brinstar)", Class=["Minor"], CanHidden=True, Address=0x7874C, Id=0x1b, Visibility="Visible", Room='Morph Ball Room', ), "Missile (blue Brinstar middle)": define_location( Area="Brinstar", GraphArea="Crateria", SolveArea="Blue Brinstar", Name="Missile (blue Brinstar middle)", Address=0x78798, Id=0x1c, Class=["Minor"], CanHidden=True, Visibility="Visible", Room='Blue Brinstar Energy Tank Room', ), "Super Missile (green Brinstar bottom)": define_location( Area="Brinstar", GraphArea="GreenPinkBrinstar", SolveArea="Green Brinstar", Name="Super Missile (green Brinstar bottom)", Class=["Minor"], CanHidden=True, Address=0x787D0, Id=0x1f, Visibility="Visible", Room='Etecoon Super Room', ), "Missile (blue Brinstar bottom)": define_location( Area="Brinstar", GraphArea="Crateria", SolveArea="Blue Brinstar", Name="Missile (blue Brinstar bottom)", Class=["Minor", "Chozo"], CanHidden=False, Address=0x78802, Id=0x22, Visibility="Chozo", Room='First Missile Room', ), "Missile (blue Brinstar top)": define_location( Area="Brinstar", GraphArea="Crateria", SolveArea="Blue Brinstar", Name="Missile (blue Brinstar top)", Class=["Minor"], CanHidden=True, Address=0x78836, Id=0x24, Visibility="Visible", Room='Billy Mays Room', ), "Missile (blue Brinstar behind missile)": define_location( Area="Brinstar", GraphArea="Crateria", SolveArea="Blue Brinstar", Name="Missile (blue Brinstar behind missile)", Class=["Minor"], CanHidden=False, Address=0x7883C, Id=0x25, Visibility="Hidden", Room='Billy Mays Room', ), "Power Bomb (red Brinstar sidehopper room)": define_location( Area="Brinstar", GraphArea="RedBrinstar", SolveArea="Red Brinstar Top", Name="Power Bomb (red Brinstar sidehopper room)", Class=["Minor"], CanHidden=True, Address=0x788CA, Id=0x27, Visibility="Visible", Room='Beta Power Bomb Room', ), "Power Bomb (red Brinstar spike room)": define_location( Area="Brinstar", GraphArea="RedBrinstar", SolveArea="Red Brinstar Top", Name="Power Bomb (red Brinstar spike room)", Class=["Minor", "Chozo"], CanHidden=False, Address=0x7890E, Id=0x28, Visibility="Chozo", Room='Alpha Power Bomb Room', ), "Missile (red Brinstar spike room)": define_location( Area="Brinstar", GraphArea="RedBrinstar", SolveArea="Red Brinstar Top", Name="Missile (red Brinstar spike room)", Class=["Minor"], CanHidden=True, Address=0x78914, Id=0x29, Visibility="Visible", Room='Alpha Power Bomb Room', ), "Missile (Kraid)": define_location( Area="Brinstar", GraphArea="Kraid", SolveArea="Kraid", Name="Missile (Kraid)", Class=["Minor"], CanHidden=False, Address=0x789EC, Id=0x2c, Visibility="Hidden", Room='Warehouse Keyhunter Room', ), "Missile (lava room)": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Norfair Entrance", Name="Missile (lava room)", Class=["Minor"], CanHidden=False, Address=0x78AE4, Id=0x31, Visibility="Hidden", Room='Cathedral', ), "Missile (below Ice Beam)": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Norfair Ice", Name="Missile (below Ice Beam)", Class=["Minor"], CanHidden=False, Address=0x78B46, Id=0x33, Visibility="Hidden", Room='Crumble Shaft', ), "Missile (above Crocomire)": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Norfair Grapple Escape", Name="Missile (above Crocomire)", Class=["Minor"], CanHidden=False, Address=0x78BC0, Id=0x36, Visibility="Visible", Room='Crocomire Escape', ), "Missile (Hi-Jump Boots)": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Norfair Entrance", Name="Missile (Hi-Jump Boots)", Class=["Minor"], CanHidden=True, Address=0x78BE6, Id=0x37, Visibility="Visible", Room='Hi Jump Energy Tank Room', ), "Energy Tank (Hi-Jump Boots)": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Norfair Entrance", Name="Energy Tank (Hi-Jump Boots)", CanHidden=True, Class=["Minor"], Address=0x78BEC, Id=0x38, Visibility="Visible", Room='Hi Jump Energy Tank Room', ), "Power Bomb (Crocomire)": define_location( Area="Norfair", GraphArea="Crocomire", SolveArea="Crocomire", Name="Power Bomb (Crocomire)", Class=["Minor"], CanHidden=True, Address=0x78C04, Id=0x39, Visibility="Visible", Room='Post Crocomire Power Bomb Room', ), "Missile (below Crocomire)": define_location( Area="Norfair", GraphArea="Crocomire", SolveArea="Crocomire", Name="Missile (below Crocomire)", Class=["Minor"], CanHidden=True, Address=0x78C14, Id=0x3a, Visibility="Visible", Room='Post Crocomire Missile Room', ), "Missile (Grapple Beam)": define_location( Area="Norfair", GraphArea="Crocomire", SolveArea="Crocomire", Name="Missile (Grapple Beam)", Class=["Minor"], CanHidden=True, Address=0x78C2A, Id=0x3b, Visibility="Visible", Room='Post Crocomire Jump Room', ), "Missile (Norfair Reserve Tank)": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Bubble Norfair Reserve", Name="Missile (Norfair Reserve Tank)", Class=["Minor"], CanHidden=False, Address=0x78C44, Id=0x3e, Visibility="Hidden", Room='Norfair Reserve Tank Room', ), "Missile (bubble Norfair green door)": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Bubble Norfair Reserve", Name="Missile (bubble Norfair green door)", Class=["Minor"], CanHidden=True, Address=0x78C52, Id=0x3f, Visibility="Visible", Room='Green Bubbles Missile Room', ), "Missile (bubble Norfair)": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Bubble Norfair Bottom", Name="Missile (bubble Norfair)", Class=["Minor"], CanHidden=True, Address=0x78C66, Id=0x40, Visibility="Visible", Room='Bubble Mountain', ), "Missile (Speed Booster)": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Bubble Norfair Speed", Name="Missile (Speed Booster)", Class=["Minor"], CanHidden=False, Address=0x78C74, Id=0x41, Visibility="Hidden", Room='Speed Booster Hall', ), "Missile (Wave Beam)": define_location( Area="Norfair", GraphArea="Norfair", SolveArea="Bubble Norfair Wave", Name="Missile (Wave Beam)", Class=["Minor"], CanHidden=True, Address=0x78CBC, Id=0x43, Visibility="Visible", Room='Double Chamber', ), "Missile (Gold Torizo)": define_location( Area="LowerNorfair", GraphArea="LowerNorfair", SolveArea="Lower Norfair Screw Attack", Name="Missile (Gold Torizo)", Class=["Minor"], CanHidden=True, Address=0x78E6E, Id=0x46, Visibility="Visible", Room="Golden Torizo's Room", ), "Super Missile (Gold Torizo)": define_location( Area="LowerNorfair", GraphArea="LowerNorfair", SolveArea="Lower Norfair Screw Attack", Name="Super Missile (Gold Torizo)", Class=["Minor"], CanHidden=False, Address=0x78E74, Id=0x47, Visibility="Hidden", Room="Golden Torizo's Room", ), "Missile (Mickey Mouse room)": define_location( Area="LowerNorfair", GraphArea="LowerNorfair", SolveArea="Lower Norfair Before Amphitheater", Name="Missile (Mickey Mouse room)", Class=["Minor"], CanHidden=True, Address=0x78F30, Id=0x49, Visibility="Visible", Room='Mickey Mouse Room', ), "Missile (lower Norfair above fire flea room)": define_location( Area="LowerNorfair", GraphArea="LowerNorfair", SolveArea="Lower Norfair After Amphitheater", Name="Missile (lower Norfair above fire flea room)", Class=["Minor"], CanHidden=True, Address=0x78FCA, Id=0x4a, Visibility="Visible", Room='Lower Norfair Spring Ball Maze Room', ), "Power Bomb (lower Norfair above fire flea room)": define_location( Area="LowerNorfair", GraphArea="LowerNorfair", SolveArea="Lower Norfair After Amphitheater", Name="Power Bomb (lower Norfair above fire flea room)", Class=["Minor"], CanHidden=False, Address=0x78FD2, Id=0x4b, Visibility="Visible", Room='Lower Norfair Escape Power Bomb Room', ), "Power Bomb (Power Bombs of shame)": define_location( Area="LowerNorfair", GraphArea="LowerNorfair", SolveArea="Lower Norfair After Amphitheater", Name="Power Bomb (Power Bombs of shame)", Class=["Minor"], CanHidden=True, Address=0x790C0, Id=0x4c, Visibility="Visible", Room='Wasteland', ), "Missile (lower Norfair near Wave Beam)": define_location( Area="LowerNorfair", GraphArea="LowerNorfair", SolveArea="Lower Norfair After Amphitheater", Name="Missile (lower Norfair near Wave Beam)", Class=["Minor"], CanHidden=True, Address=0x79100, Id=0x4d, Visibility="Visible", Room="Three Muskateers' Room", ), "Missile (Wrecked Ship middle)": define_location( Area="WreckedShip", GraphArea="WreckedShip", SolveArea="WreckedShip Main", Name="Missile (Wrecked Ship middle)", Class=["Minor"], CanHidden=True, Address=0x7C265, Id=0x80, Visibility="Visible", Room='Wrecked Ship Main Shaft', ), "Missile (Gravity Suit)": define_location( Area="WreckedShip", GraphArea="WreckedShip", SolveArea="WreckedShip Gravity", Name="Missile (Gravity Suit)", Class=["Minor", "Chozo"], CanHidden=False, Address=0x7C2EF, Id=0x82, Visibility="Visible", Room='Bowling Alley', ), "Missile (Wrecked Ship top)": define_location( Area="WreckedShip", GraphArea="WreckedShip", SolveArea="WreckedShip Top", Name="Missile (Wrecked Ship top)", Class=["Minor"], CanHidden=True, Address=0x7C319, Id=0x83, Visibility="Visible", Room='Wrecked Ship East Missile Room', ), "Super Missile (Wrecked Ship left)": define_location( Area="WreckedShip", GraphArea="WreckedShip", SolveArea="WreckedShip Main", Name="Super Missile (Wrecked Ship left)", Class=["Minor"], CanHidden=True, Address=0x7C357, Id=0x85, Visibility="Visible", Room='Wrecked Ship West Super Room', ), "Missile (green Maridia shinespark)": define_location( Area="Maridia", GraphArea="WestMaridia", SolveArea="Maridia Green", Name="Missile (green Maridia shinespark)", Class=["Minor"], CanHidden=False, Address=0x7C437, Id=0x88, Visibility="Visible", Room='Main Street', ), "Super Missile (green Maridia)": define_location( Area="Maridia", GraphArea="WestMaridia", SolveArea="Maridia Green", Name="Super Missile (green Maridia)", Class=["Minor"], CanHidden=True, Address=0x7C43D, Id=0x89, Visibility="Visible", Room='Main Street', ), "Missile (green Maridia tatori)": define_location( Area="Maridia", GraphArea="WestMaridia", SolveArea="Maridia Green", Name="Missile (green Maridia tatori)", Class=["Minor"], CanHidden=False, Address=0x7C483, Id=0x8b, Visibility="Hidden", Room='Mama Turtle Room', ), "Super Missile (yellow Maridia)": define_location( Area="Maridia", GraphArea="WestMaridia", SolveArea="Maridia Pink Bottom", Name="Super Missile (yellow Maridia)", Class=["Minor"], CanHidden=True, Address=0x7C4AF, Id=0x8c, Visibility="Visible", Room='Watering Hole', ), "Missile (yellow Maridia super missile)": define_location( Area="Maridia", GraphArea="WestMaridia", SolveArea="Maridia Pink Bottom", Name="Missile (yellow Maridia super missile)", Class=["Minor"], CanHidden=True, Address=0x7C4B5, Id=0x8d, Visibility="Visible", Room='Watering Hole', ), "Missile (yellow Maridia false wall)": define_location( Area="Maridia", GraphArea="WestMaridia", SolveArea="Maridia Pink Bottom", Name="Missile (yellow Maridia false wall)", Class=["Minor"], CanHidden=True, Address=0x7C533, Id=0x8e, Visibility="Visible", Room='Pseudo Plasma Spark Room', ), "Missile (left Maridia sand pit room)": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Left Sandpit", Name="Missile (left Maridia sand pit room)", Class=["Minor"], CanHidden=True, Address=0x7C5DD, Id=0x90, Visibility="Visible", Room='West Sand Hole', ), "Missile (right Maridia sand pit room)": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Right Sandpit", Name="Missile (right Maridia sand pit room)", Class=["Minor"], CanHidden=True, Address=0x7C5EB, Id=0x92, Visibility="Visible", Room='East Sand Hole', ), "Power Bomb (right Maridia sand pit room)": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Right Sandpit", Name="Power Bomb (right Maridia sand pit room)", Class=["Minor"], CanHidden=True, Address=0x7C5F1, Id=0x93, Visibility="Visible", Room='East Sand Hole', ), "Missile (pink Maridia)": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Maridia Pink Bottom", Name="Missile (pink Maridia)", Address=0x7C603, Id=0x94, Class=["Minor"], CanHidden=True, Visibility="Visible", Room='Aqueduct', ), "Super Missile (pink Maridia)": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Maridia Pink Bottom", Name="Super Missile (pink Maridia)", Class=["Minor"], CanHidden=True, Address=0x7C609, Id=0x95, Visibility="Visible", Room='Aqueduct', ), "Missile (Draygon)": define_location( Area="Maridia", GraphArea="EastMaridia", SolveArea="Maridia Pink Top", Name="Missile (Draygon)", Class=["Minor"], CanHidden=False, Address=0x7C74D, Id=0x97, Visibility="Hidden", Room='The Precious Room', ) }