Archipelago/worlds/sm/variaRandomizer/graph/location.py

1533 lines
37 KiB
Python

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',
)
}