Ejemplo n.º 1
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(
             self, 256 + 4, 0x308141, LocationType.Regular,
             "Floating Island", lambda items: items.Mirror and items.
             MoonPearl and items.CanLiftHeavy()),
         Location(self, 256 + 5, 0x1E9BF, LocationType.Regular,
                  "Spiral Cave"),
         Location(self, 256 + 6, 0x1EB39, LocationType.Regular,
                  "Paradox Cave Upper - Left"),
         Location(self, 256 + 7, 0x1EB3C, LocationType.Regular,
                  "Paradox Cave Upper - Right"),
         Location(self, 256 + 8, 0x1EB2A, LocationType.Regular,
                  "Paradox Cave Lower - Far Left"),
         Location(self, 256 + 9, 0x1EB2D, LocationType.Regular,
                  "Paradox Cave Lower - Left"),
         Location(self, 256 + 10, 0x1EB36, LocationType.Regular,
                  "Paradox Cave Lower - Middle"),
         Location(self, 256 + 11, 0x1EB30, LocationType.Regular,
                  "Paradox Cave Lower - Right"),
         Location(self, 256 + 12, 0x1EB33, LocationType.Regular,
                  "Paradox Cave Lower - Far Right"),
         Location(
             self, 256 + 13, 0x1E9C5, LocationType.Regular, "Mimic Cave",
             lambda items: items.Mirror and items.KeyTR >= 2 and self.world.
             CanEnter("Turtle Rock", items))
     ]
Ejemplo n.º 2
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 256 + 89, 0x1EA73, LocationType.Regular,
                  "Mire Shed - Left", lambda items: items.MoonPearl),
         Location(self, 256 + 90, 0x1EA76, LocationType.Regular,
                  "Mire Shed - Right", lambda items: items.MoonPearl)
     ]
Ejemplo n.º 3
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 43, 0x8F899C, LocationType.Hidden,
                  "Energy Tank, Kraid",
                  lambda items: items.CardBrinstarBoss),
         Location(self, 48, 0x8F8ACA, LocationType.Chozo, "Varia Suit",
                  lambda items: items.CardBrinstarBoss),
         Location(self, 44, 0x8F89EC, LocationType.Hidden,
                  "Missile (Kraid)", lambda items: items.CanUsePowerBombs())
     ]
Ejemplo n.º 4
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Reward = RewardType.Agahnim
     self.RegionItems = [ItemType.KeyCT]
     self.Locations = [
         Location(self, 256 + 101, 0x1EAB5, LocationType.Regular,
                  "Castle Tower - Foyer"),
         Location(self, 256 + 102, 0x1EAB2, LocationType.Regular,
                  "Castle Tower - Dark Maze",
                  lambda items: items.Lamp and items.KeyCT >= 1)
     ]
Ejemplo n.º 5
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 61, 0x8F8C3E, LocationType.Chozo, "Reserve Tank, Norfair", 
             lambda items: items.CardNorfairL2 and items.Morph and (
                 items.CanFly() or
                 items.Grapple and (items.SpeedBooster or items.CanPassBombPassages()) or
                 items.HiJump or items.Ice
             ) if self.Logic == SMLogic.Normal else \
             lambda items: items.CardNorfairL2 and items.Morph and items.Super),
         Location(self, 62, 0x8F8C44, LocationType.Hidden, "Missile (Norfair Reserve Tank)",
             lambda items: items.CardNorfairL2 and items.Morph and (
                 items.CanFly() or
                 items.Grapple and (items.SpeedBooster or items.CanPassBombPassages()) or
                 items.HiJump or items.Ice
             ) if self.Logic == SMLogic.Normal else \
             lambda items: items.CardNorfairL2 and items.Morph and items.Super),
         Location(self, 63, 0x8F8C52, LocationType.Visible, "Missile (bubble Norfair green door)",
             lambda items: items.CardNorfairL2 and (
                 items.CanFly() or
                 items.Grapple and items.Morph and (items.SpeedBooster or items.CanPassBombPassages()) or
                 items.HiJump or items.Ice
             ) if self.Logic == SMLogic.Normal else \
             lambda items: items.CardNorfairL2 and items.Super),
         Location(self, 64, 0x8F8C66, LocationType.Visible, "Missile (bubble Norfair)", 
             lambda items: items.CardNorfairL2),
         Location(self, 65, 0x8F8C74, LocationType.Hidden, "Missile (Speed Booster)",
             lambda items: items.CardNorfairL2 and (
                 items.CanFly() or
                 items.Morph and (items.SpeedBooster or items.CanPassBombPassages()) or
                 items.HiJump or items.Ice
             ) if self.Logic == SMLogic.Normal else \
             lambda items: items.CardNorfairL2 and items.Super),
         Location(self, 66, 0x8F8C82, LocationType.Chozo, "Speed Booster",
             lambda items: items.CardNorfairL2 and (
                 items.CanFly() or
                 items.Morph and (items.SpeedBooster or items.CanPassBombPassages()) or
                 items.HiJump or items.Ice
             ) if self.Logic == SMLogic.Normal else \
             lambda items: items.CardNorfairL2 and items.Super),
         Location(self, 67, 0x8F8CBC, LocationType.Visible, "Missile (Wave Beam)",
             lambda items: items.CardNorfairL2 and (
                 items.CanFly() or
                 items.Morph and (items.SpeedBooster or items.CanPassBombPassages()) or
                 items.HiJump or items.Ice
             ) or
             items.SpeedBooster and items.Wave and items.Morph and items.Super if self.Logic == SMLogic.Normal else \
             lambda items: items.CardNorfairL2 or items.Varia),
         Location(self, 68, 0x8F8CCA, LocationType.Chozo, "Wave Beam",
             lambda items: items.Morph and (
                 items.CardNorfairL2 and (
                     items.CanFly() or
                     items.Morph and (items.SpeedBooster or items.CanPassBombPassages()) or
                     items.HiJump or items.Ice
                 ) or
                 items.SpeedBooster and items.Wave and items.Morph and items.Super
             ) if self.Logic == SMLogic.Normal else \
             lambda items: items.CanOpenRedDoors() and (items.CardNorfairL2 or items.Varia) and
                 (items.Morph or items.Grapple or items.HiJump and items.Varia or items.SpaceJump))
         ]
Ejemplo n.º 6
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.RegionItems = [
         ItemType.KeySW, ItemType.BigKeySW, ItemType.MapSW,
         ItemType.CompassSW
     ]
     self.Reward = RewardType.Null
     self.Locations = [
         Location(self, 256 + 145, 0x1E9A1, LocationType.Regular,
                  "Skull Woods - Pot Prison"),
         Location(self, 256 + 146, 0x1E992, LocationType.Regular,
                  "Skull Woods - Compass Chest"),
         Location(self, 256 + 147, 0x1E998, LocationType.Regular,
                  "Skull Woods - Big Chest", lambda items: items.BigKeySW).
         AlwaysAllow(
             lambda item, items: item.Is(ItemType.BigKeySW, self.world)),
         Location(self, 256 + 148, 0x1E99B, LocationType.Regular,
                  "Skull Woods - Map Chest"),
         Location(
             self, 256 + 149, 0x1E9C8, LocationType.Regular,
             "Skull Woods - Pinball Room").Allow(
                 lambda item, items: item.Is(ItemType.KeySW, self.world)),
         Location(self, 256 + 150, 0x1E99E, LocationType.Regular,
                  "Skull Woods - Big Key Chest"),
         Location(self, 256 + 151, 0x1E9FE, LocationType.Regular,
                  "Skull Woods - Bridge Room", lambda items: items.Firerod),
         Location(
             self, 256 + 152, 0x308155, LocationType.Regular,
             "Skull Woods - Mothula", lambda items: items.Firerod and items.
             Sword and items.KeySW >= 3),
     ]
Ejemplo n.º 7
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.RegionItems = [
         ItemType.KeyTT, ItemType.BigKeyTT, ItemType.MapTT,
         ItemType.CompassTT
     ]
     self.Reward = RewardType.Null
     self.Locations = [
         Location(self, 256 + 153, 0x1EA01, LocationType.Regular,
                  "Thieves' Town - Map Chest"),
         Location(self, 256 + 154, 0x1EA0A, LocationType.Regular,
                  "Thieves' Town - Ambush Chest"),
         Location(self, 256 + 155, 0x1EA07, LocationType.Regular,
                  "Thieves' Town - Compass Chest"),
         Location(self, 256 + 156, 0x1EA04, LocationType.Regular,
                  "Thieves' Town - Big Key Chest"),
         Location(self, 256 + 157, 0x1EA0D, LocationType.Regular,
                  "Thieves' Town - Attic",
                  lambda items: items.BigKeyTT and items.KeyTT),
         Location(self, 256 + 158, 0x1EA13, LocationType.Regular,
                  "Thieves' Town - Blind's Cell",
                  lambda items: items.BigKeyTT),
         Location(
             self, 256 + 159, 0x1EA10, LocationType.Regular,
             "Thieves' Town - Big Chest",
             lambda items: items.BigKeyTT and items.Hammer and
             (self.GetLocation("Thieves' Town - Big Chest").ItemIs(
                 ItemType.KeyTT, self.world) or items.KeyTT)).AlwaysAllow(
                     lambda item, items: item.Is(ItemType.KeyTT, self.world
                                                 ) and items.Hammer),
         Location(
             self, 256 + 160, 0x308156, LocationType.Regular,
             "Thieves' Town - Blind", lambda items: items.BigKeyTT and items
             .KeyTT and self.CanBeatBoss(items)),
     ]
Ejemplo n.º 8
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Weight = -6
     self.Locations = [
         Location(self, 13, 0x8F84AC, LocationType.Chozo, "Power Bomb (green Brinstar bottom)",
             lambda items: items.CardBrinstarL2 and items.CanUsePowerBombs()),
         Location(self, 15, 0x8F8518, LocationType.Visible, "Missile (green Brinstar below super missile)",
             lambda items: items.CanPassBombPassages() and items.CanOpenRedDoors()),
         Location(self, 16, 0x8F851E, LocationType.Visible, "Super Missile (green Brinstar top)",
             lambda items: items.CanOpenRedDoors() and items.SpeedBooster if self.Logic == SMLogic.Normal else \
             lambda items: items.CanOpenRedDoors() and (items.Morph or items.SpeedBooster)),
         Location(self, 17, 0x8F852C, LocationType.Chozo, "Reserve Tank, Brinstar",
             lambda items: items.CanOpenRedDoors() and items.SpeedBooster if self.Logic == SMLogic.Normal else \
             lambda items: items.CanOpenRedDoors() and (items.Morph or items.SpeedBooster)),
         Location(self, 18, 0x8F8532, LocationType.Hidden, "Missile (green Brinstar behind missile)",
             lambda items: items.SpeedBooster and items.CanPassBombPassages() and items.CanOpenRedDoors() if self.Logic == SMLogic.Normal else \
             lambda items: (items.CanPassBombPassages() or items.Morph and items.ScrewAttack) and items.CanOpenRedDoors()),
         Location(self, 19, 0x8F8538, LocationType.Visible, "Missile (green Brinstar behind reserve tank)",
             lambda items: items.SpeedBooster and items.CanOpenRedDoors() and items.Morph if self.Logic == SMLogic.Normal else \
             lambda items: items.CanOpenRedDoors() and items.Morph),
         Location(self, 30, 0x8F87C2, LocationType.Visible, "Energy Tank, Etecoons",
             lambda items: items.CardBrinstarL2 and items.CanUsePowerBombs()),
         Location(self, 31, 0x8F87D0, LocationType.Visible, "Super Missile (green Brinstar bottom)",
             lambda items: items.CardBrinstarL2 and items.CanUsePowerBombs() and items.Super)
     ]
Ejemplo n.º 9
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 8, 0x8F8432, LocationType.Visible, "Energy Tank, Terminator"),
         Location(self, 5, 0x8F8264, LocationType.Visible, "Energy Tank, Gauntlet",
             lambda items: self.CanEnterAndLeaveGauntlet(items) and items.HasEnergyReserves(1) if self.Logic == SMLogic.Normal else \
             lambda items: self.CanEnterAndLeaveGauntlet(items)),
         Location(self, 9, 0x8F8464, LocationType.Visible, "Missile (Crateria gauntlet right)",
             lambda items: self.CanEnterAndLeaveGauntlet(items) and items.CanPassBombPassages() and items.HasEnergyReserves(2) if self.Logic == SMLogic.Normal else \
             lambda items: self.CanEnterAndLeaveGauntlet(items) and items.CanPassBombPassages()),
         Location(self, 10, 0x8F846A, LocationType.Visible, "Missile (Crateria gauntlet left)",
             lambda items: self.CanEnterAndLeaveGauntlet(items) and items.CanPassBombPassages() and items.HasEnergyReserves(2) if self.Logic == SMLogic.Normal else \
             lambda items: self.CanEnterAndLeaveGauntlet(items) and items.CanPassBombPassages())
     ]
Ejemplo n.º 10
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Reward = RewardType.GoldenFourBoss
     self.Locations = [
         Location(self, 128, 0x8FC265, LocationType.Visible, "Missile (Wrecked Ship middle)",
             lambda items: items.CanPassBombPassages()),
         Location(self, 129, 0x8FC2E9, LocationType.Chozo, "Reserve Tank, Wrecked Ship",
             lambda items: self.CanUnlockShip(items) and items.CardWreckedShipL1 and items.SpeedBooster and items.CanUsePowerBombs() and
                 (items.Grapple or items.SpaceJump or items.Varia and items.HasEnergyReserves(2) or items.HasEnergyReserves(3)) if self.Logic == SMLogic.Normal else \
             lambda items: self.CanUnlockShip(items) and items.CardWreckedShipL1 and items.CanUsePowerBombs() and items.SpeedBooster and
                 (items.Varia or items.HasEnergyReserves(2))),
         Location(self, 130, 0x8FC2EF, LocationType.Visible, "Missile (Gravity Suit)",
             lambda items: self.CanUnlockShip(items) and items.CardWreckedShipL1 and
                 (items.Grapple or items.SpaceJump or items.Varia and items.HasEnergyReserves(2) or items.HasEnergyReserves(3)) if self.Logic == SMLogic.Normal else \
             lambda items: self.CanUnlockShip(items) and items.CardWreckedShipL1 and (items.Varia or items.HasEnergyReserves(1))),
         Location(self, 131, 0x8FC319, LocationType.Visible, "Missile (Wrecked Ship top)",
             lambda items: self.CanUnlockShip(items)),
         Location(self, 132, 0x8FC337, LocationType.Visible, "Energy Tank, Wrecked Ship",
             lambda items: self.CanUnlockShip(items) and
                 (items.HiJump or items.SpaceJump or items.SpeedBooster or items.Gravity) if self.Logic == SMLogic.Normal else \
             lambda items: self.CanUnlockShip(items) and (items.Bombs or items.PowerBomb or items.CanSpringBallJump() or
                 items.HiJump or items.SpaceJump or items.SpeedBooster or items.Gravity)),
         Location(self, 133, 0x8FC357, LocationType.Visible, "Super Missile (Wrecked Ship left)",
             lambda items: self.CanUnlockShip(items)),
         Location(self, 134, 0x8FC365, LocationType.Visible, "Right Super, Wrecked Ship",
             lambda items: self.CanUnlockShip(items)),
         Location(self, 135, 0x8FC36D, LocationType.Chozo, "Gravity Suit",
             lambda items: self.CanUnlockShip(items) and items.CardWreckedShipL1 and
                 (items.Grapple or items.SpaceJump or items.Varia and items.HasEnergyReserves(2) or items.HasEnergyReserves(3)) if self.Logic == SMLogic.Normal else \
             lambda items: self.CanUnlockShip(items) and items.CardWreckedShipL1 and (items.Varia or items.HasEnergyReserves(1)))
         ]
Ejemplo n.º 11
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 136, 0x8FC437, LocationType.Visible, "Missile (green Maridia shinespark)",
             lambda items: items.SpeedBooster if self.Logic == SMLogic.Normal else \
             lambda items: items.Gravity and items.SpeedBooster),
         Location(self, 137, 0x8FC43D, LocationType.Visible, "Super Missile (green Maridia)"),
         Location(self, 138, 0x8FC47D, LocationType.Visible, "Energy Tank, Mama turtle",
             lambda items: items.CanOpenRedDoors() and (items.CanFly() or items.SpeedBooster or items.Grapple) if self.Logic == SMLogic.Normal else \
             lambda items: items.CanOpenRedDoors() and (
                 items.CanFly() or items.SpeedBooster or items.Grapple or
                 items.CanSpringBallJump() and (items.Gravity or items.HiJump))),
         Location(self, 139, 0x8FC483, LocationType.Hidden, "Missile (green Maridia tatori)",
             lambda items: items.CanOpenRedDoors())
         ]
Ejemplo n.º 12
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 0, 0x8F81CC, LocationType.Visible, "Power Bomb (Crateria surface)",
             lambda items: (items.CardCrateriaL1 if config.Keysanity else items.CanUsePowerBombs()) and (items.SpeedBooster or items.CanFly())),
         Location(self, 12, 0x8F8486, LocationType.Visible, "Missile (Crateria middle)",
             lambda items: items.CanPassBombPassages()),
         Location(self, 6, 0x8F83EE, LocationType.Visible, "Missile (Crateria bottom)",
             lambda items: items.CanDestroyBombWalls()),
         Location(self, 11, 0x8F8478, LocationType.Visible, "Super Missile (Crateria)",
             lambda items: items.CanUsePowerBombs() and items.HasEnergyReserves(2) and items.SpeedBooster),
         Location(self, 7, 0x8F8404, LocationType.Chozo, "Bombs",
             lambda items: (items.CardCrateriaBoss if config.Keysanity else items.CanOpenRedDoors()) and items.CanPassBombPassages() if self.Logic == SMLogic.Normal else \
             lambda items: (items.CardCrateriaBoss if config.Keysanity else items.CanOpenRedDoors()) and items.Morph)
         ]
Ejemplo n.º 13
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 1, 0x8F81E8, LocationType.Visible, "Missile (outside Wrecked Ship bottom)",
             lambda items: items.Morph and (
                 items.SpeedBooster or items.Grapple or items.SpaceJump or
                 items.Gravity and (items.CanIbj() or items.HiJump) or
                 self.world.CanEnter("Wrecked Ship", items)) if self.Logic == SMLogic.Normal else \
             lambda items: items.Morph),
         Location(self, 2, 0x8F81EE, LocationType.Hidden, "Missile (outside Wrecked Ship top)",
             lambda items: self.world.CanEnter("Wrecked Ship", items) and (not self.Config.Keysanity or items.CardWreckedShipBoss) and items.CanPassBombPassages()),
         Location(self, 3, 0x8F81F4, LocationType.Visible, "Missile (outside Wrecked Ship middle)",
             lambda items: self.world.CanEnter("Wrecked Ship", items) and (not self.Config.Keysanity or items.CardWreckedShipBoss) and items.CanPassBombPassages()),
         Location(self, 4, 0x8F8248, LocationType.Visible, "Missile (Crateria moat)",
             lambda items: True)
         ]
Ejemplo n.º 14
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.RegionItems = [
         ItemType.KeySP, ItemType.BigKeySP, ItemType.MapSP,
         ItemType.CompassSP
     ]
     self.Reward = RewardType.Null
     self.Locations = [
         Location(self, 256 + 135, 0x1EA9D, LocationType.Regular,
                  "Swamp Palace - Entrance").Allow(
                      lambda item, items: self.Config.Keysanity or item.Is(
                          ItemType.KeySP, self.world)),
         Location(self, 256 + 136, 0x1E986, LocationType.Regular,
                  "Swamp Palace - Map Chest", lambda items: items.KeySP),
         Location(
             self, 256 + 137, 0x1E989, LocationType.Regular,
             "Swamp Palace - Big Chest",
             lambda items: items.BigKeySP and items.KeySP and items.Hammer).
         AlwaysAllow(
             lambda item, items: item.Is(ItemType.BigKeySP, self.world)),
         Location(self, 256 + 138, 0x1EAA0, LocationType.Regular,
                  "Swamp Palace - Compass Chest",
                  lambda items: items.KeySP and items.Hammer),
         Location(self, 256 + 139, 0x1EAA3, LocationType.Regular,
                  "Swamp Palace - West Chest",
                  lambda items: items.KeySP and items.Hammer),
         Location(self, 256 + 140, 0x1EAA6, LocationType.Regular,
                  "Swamp Palace - Big Key Chest",
                  lambda items: items.KeySP and items.Hammer),
         Location(
             self, 256 + 141, 0x1EAA9, LocationType.Regular,
             "Swamp Palace - Flooded Room - Left",
             lambda items: items.KeySP and items.Hammer and items.Hookshot),
         Location(
             self, 256 + 142, 0x1EAAC, LocationType.Regular,
             "Swamp Palace - Flooded Room - Right",
             lambda items: items.KeySP and items.Hammer and items.Hookshot),
         Location(
             self, 256 + 143, 0x1EAAF, LocationType.Regular,
             "Swamp Palace - Waterfall Room",
             lambda items: items.KeySP and items.Hammer and items.Hookshot),
         Location(
             self, 256 + 144, 0x308154, LocationType.Regular,
             "Swamp Palace - Arrghus",
             lambda items: items.KeySP and items.Hammer and items.Hookshot)
     ]
Ejemplo n.º 15
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(
             self, 256 + 64, 0x1EA8B, LocationType.Regular, "Spike Cave",
             lambda items: items.MoonPearl and items.Hammer and items.
             CanLiftLight() and
             (items.CanExtendMagic() and items.Cape or items.Byrna) and self
             .world.CanEnter("Light World Death Mountain West", items))
     ]
Ejemplo n.º 16
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 38, 0x8F8876, LocationType.Chozo, "X-Ray Scope",
             lambda items: items.CanUsePowerBombs() and items.CanOpenRedDoors() and (items.Grapple or items.SpaceJump) if self.Logic == SMLogic.Normal else \
             lambda items: items.CanUsePowerBombs() and items.CanOpenRedDoors() and (
                 items.Grapple or items.SpaceJump or
                 (items.CanIbj() or items.HiJump and items.SpeedBooster or items.CanSpringBallJump()) and
                     (items.Varia and items.HasEnergyReserves(3) or items.HasEnergyReserves(5)))),
         Location(self, 39, 0x8F88CA, LocationType.Visible, "Power Bomb (red Brinstar sidehopper room)",
             lambda items: items.CanUsePowerBombs() and items.Super),
         Location(self, 40, 0x8F890E, LocationType.Chozo, "Power Bomb (red Brinstar spike room)",
             lambda items: (items.CanUsePowerBombs() or items.Ice) and items.Super if self.Logic == SMLogic.Normal else \
             lambda items: items.Super),
         Location(self, 41, 0x8F8914, LocationType.Visible, "Missile (red Brinstar spike room)",
             lambda items: items.CanUsePowerBombs() and items.Super),
         Location(self, 42, 0x8F896E, LocationType.Chozo, "Spazer",
             lambda items: items.CanPassBombPassages() and items.Super)
     ]
Ejemplo n.º 17
0
 def FrontFillItemInOwnWorld(self, itemPool, itemType):
     item = TotalSMZ3Item.Item.Get(itemPool, itemType, self.smz3World)
     location = next(iter(self.world.random.sample(TotalSMZ3Location.AvailableGlobal(TotalSMZ3Location.Empty(self.smz3World.Locations), self.smz3World.Items()), 1)), None)
     if (location == None):
         raise Exception(f"Tried to front fill {item.Name} in, but no location was available")
     
     location.Item = item
     itemFromPool = next((i for i in self.world.itempool if i.player == self.player and i.name == item.Type.name), None)
     if itemFromPool is not None:
         self.world.get_location(location.Name, self.player).place_locked_item(itemFromPool)
         self.world.itempool.remove(itemFromPool)
     itemPool.remove(item)
Ejemplo n.º 18
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Reward = RewardType.Null
     self.RegionItems = [
         ItemType.KeyDP, ItemType.BigKeyDP, ItemType.MapDP,
         ItemType.CompassDP
     ]
     self.Locations = [
         Location(self, 256 + 109, 0x1E98F, LocationType.Regular,
                  "Desert Palace - Big Chest",
                  lambda items: items.BigKeyDP),
         Location(self, 256 + 110, 0x308160, LocationType.Regular,
                  "Desert Palace - Torch", lambda items: items.Boots),
         Location(self, 256 + 111, 0x1E9B6, LocationType.Regular,
                  "Desert Palace - Map Chest"),
         Location(self, 256 + 112, 0x1E9C2, LocationType.Regular,
                  "Desert Palace - Big Key Chest",
                  lambda items: items.KeyDP),
         Location(self, 256 + 113, 0x1E9CB, LocationType.Regular,
                  "Desert Palace - Compass Chest",
                  lambda items: items.KeyDP),
         Location(
             self, 256 + 114, 0x308151, LocationType.Regular,
             "Desert Palace - Lanmolas", lambda items:
             (items.CanLiftLight() or items.CanAccessMiseryMirePortal(
                 self.Config) and items.Mirror) and items.BigKeyDP and items
             .KeyDP and items.CanLightTorches() and self.CanBeatBoss(items))
     ]
Ejemplo n.º 19
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 49, 0x8F8AE4, LocationType.Hidden, "Missile (lava room)",
             lambda items: items.Varia and (
                     items.CanOpenRedDoors() and (items.CanFly() or items.HiJump or items.SpeedBooster) or
                     self.world.CanEnter("Norfair Upper East", items) and items.CardNorfairL2
                 ) and items.Morph if self.Logic == SMLogic.Normal else \
             lambda items: items.CanHellRun() and (
                     items.CanOpenRedDoors() and (
                         items.CanFly() or items.HiJump or items.SpeedBooster or
                         items.CanSpringBallJump() or items.Varia and items.Ice
                     ) or
                     self.world.CanEnter("Norfair Upper East", items) and items.CardNorfairL2
                 ) and items.Morph),
         Location(self, 50, 0x8F8B24, LocationType.Chozo, "Ice Beam",
             lambda items: (items.CardNorfairL1 if config.Keysanity else items.Super) and items.CanPassBombPassages() and items.Varia and items.SpeedBooster if self.Logic == SMLogic.Normal else \
             lambda items: (items.CardNorfairL1 if config.Keysanity else items.Super) and items.Morph and (items.Varia or items.HasEnergyReserves(3))),
         Location(self, 51, 0x8F8B46, LocationType.Hidden, "Missile (below Ice Beam)",
             lambda items: (items.CardNorfairL1 if config.Keysanity else items.Super) and items.CanUsePowerBombs() and items.Varia and items.SpeedBooster if self.Logic == SMLogic.Normal else \
             lambda items:
                 (items.CardNorfairL1 if config.Keysanity else items.Super) and items.CanUsePowerBombs() and (items.Varia or items.HasEnergyReserves(3)) or
                 (items.Missile or items.Super or items.Wave) and items.Varia and items.SpeedBooster and # /* Blue Gate */
                 # /* Access to Croc's room to get spark */
                 (items.CardNorfairBoss if config.Keysanity else items.Super) and items.CardNorfairL1),
         Location(self, 53, 0x8F8BAC, LocationType.Chozo, "Hi-Jump Boots",
             lambda items: items.CanOpenRedDoors() and items.CanPassBombPassages()),
         Location(self, 55, 0x8F8BE6, LocationType.Visible, "Missile (Hi-Jump Boots)",
             lambda items: items.CanOpenRedDoors() and items.Morph),
         Location(self, 56, 0x8F8BEC, LocationType.Visible, "Energy Tank (Hi-Jump Boots)",
             lambda items: items.CanOpenRedDoors())
         ]
Ejemplo n.º 20
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.RegionItems = [
         ItemType.KeyTH, ItemType.BigKeyTH, ItemType.MapTH,
         ItemType.CompassTH
     ]
     self.Reward = RewardType.Null
     self.Locations = [
         Location(self, 256 + 115, 0x308162, LocationType.HeraStandingKey,
                  "Tower of Hera - Basement Cage"),
         Location(self, 256 + 116, 0x1E9AD, LocationType.Regular,
                  "Tower of Hera - Map Chest"),
         Location(self, 256 + 117, 0x1E9E6, LocationType.Regular,
                  "Tower of Hera - Big Key Chest",
                  lambda items: items.KeyTH and items.CanLightTorches()).
         AlwaysAllow(
             lambda item, items: item.Is(ItemType.KeyTH, self.world)),
         Location(self, 256 + 118, 0x1E9FB, LocationType.Regular,
                  "Tower of Hera - Compass Chest",
                  lambda items: items.BigKeyTH),
         Location(self, 256 + 119, 0x1E9F8, LocationType.Regular,
                  "Tower of Hera - Big Chest",
                  lambda items: items.BigKeyTH),
         Location(self, 256 + 120, 0x308152, LocationType.Regular,
                  "Tower of Hera - Moldorm",
                  lambda items: items.BigKeyTH and self.CanBeatBoss(items)),
     ]
Ejemplo n.º 21
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 256 + 78, 0x1DE185, LocationType.Regular, "Catfish",
                  lambda items: items.MoonPearl and items.CanLiftLight()),
         Location(self, 256 + 79, 0x308147, LocationType.Regular,
                  "Pyramid"),
         Location(
             self, 256 + 80, 0x1E980, LocationType.Regular,
             "Pyramid Fairy - Left", lambda items: self.world.CanAquireAll(
                 items, RewardType.CrystalRed) and items.MoonPearl and self.
             world.CanEnter("Dark World South", items) and
             (items.Hammer or items.Mirror and self.world.CanAquire(
                 items, RewardType.Agahnim))),
         Location(
             self, 256 + 81, 0x1E983, LocationType.Regular,
             "Pyramid Fairy - Right", lambda items: self.world.CanAquireAll(
                 items, RewardType.CrystalRed) and items.MoonPearl and self.
             world.CanEnter("Dark World South", items) and
             (items.Hammer or items.Mirror and self.world.CanAquire(
                 items, RewardType.Agahnim)))
     ]
Ejemplo n.º 22
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 256+82, 0x308148, LocationType.Regular, "Digging Game"),
         Location(self, 256+83, 0x6B0C7, LocationType.Regular, "Stumpy"),
         Location(self, 256+84, 0x1EB1E, LocationType.Regular, "Hype Cave - Top"),
         Location(self, 256+85, 0x1EB21, LocationType.Regular, "Hype Cave - Middle Right"),
         Location(self, 256+86, 0x1EB24, LocationType.Regular, "Hype Cave - Middle Left"),
         Location(self, 256+87, 0x1EB27, LocationType.Regular, "Hype Cave - Bottom"),
         Location(self, 256+88, 0x308011, LocationType.Regular, "Hype Cave - NPC")
         ]
Ejemplo n.º 23
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.RegionItems = [
         ItemType.KeyIP, ItemType.BigKeyIP, ItemType.MapIP,
         ItemType.CompassIP
     ]
     self.Reward = RewardType.Null
     self.Locations = [
         Location(self, 256 + 161, 0x1E9D4, LocationType.Regular,
                  "Ice Palace - Compass Chest"),
         Location(
             self, 256 + 162, 0x1E9E0, LocationType.Regular,
             "Ice Palace - Spike Room",
             lambda items: items.Hookshot or items.KeyIP >= 1 and self.
             CanNotWasteKeysBeforeAccessible(items, [
                 self.GetLocation("Ice Palace - Map Chest"),
                 self.GetLocation("Ice Palace - Big Key Chest")
             ])),
         Location(
             self, 256 + 163, 0x1E9DD, LocationType.Regular,
             "Ice Palace - Map Chest",
             lambda items: items.Hammer and items.CanLiftLight() and
             (items.Hookshot or items.KeyIP >= 1 and self.
              CanNotWasteKeysBeforeAccessible(items, [
                  self.GetLocation("Ice Palace - Spike Room"),
                  self.GetLocation("Ice Palace - Big Key Chest")
              ]))),
         Location(
             self, 256 + 164, 0x1E9A4, LocationType.Regular,
             "Ice Palace - Big Key Chest",
             lambda items: items.Hammer and items.CanLiftLight() and
             (items.Hookshot or items.KeyIP >= 1 and self.
              CanNotWasteKeysBeforeAccessible(items, [
                  self.GetLocation("Ice Palace - Spike Room"),
                  self.GetLocation("Ice Palace - Map Chest")
              ]))),
         Location(self, 256 + 165, 0x1E9E3, LocationType.Regular,
                  "Ice Palace - Iced T Room"),
         Location(self, 256 + 166, 0x1E995, LocationType.Regular,
                  "Ice Palace - Freezor Chest"),
         Location(self, 256 + 167, 0x1E9AA, LocationType.Regular,
                  "Ice Palace - Big Chest", lambda items: items.BigKeyIP),
         Location(
             self, 256 + 168, 0x308157, LocationType.Regular,
             "Ice Palace - Kholdstare", lambda items: items.BigKeyIP and
             items.Hammer and items.CanLiftLight() and items.KeyIP >=
             (1 if items.Somaria else 2))
     ]
Ejemplo n.º 24
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 70, 0x8F8E6E, LocationType.Visible, "Missile (Gold Torizo)",
             lambda items: items.CanUsePowerBombs() and items.SpaceJump and items.Super if self.Logic == SMLogic.Normal else \
             lambda items: items.CanUsePowerBombs() and items.SpaceJump and items.Varia and (
                 items.HiJump or items.Gravity or
                 items.CanAccessNorfairLowerPortal() and (items.CanFly() or items.CanSpringBallJump() or items.SpeedBooster) and items.Super)),
         Location(self, 71, 0x8F8E74, LocationType.Hidden, "Super Missile (Gold Torizo)",
             lambda items: items.CanDestroyBombWalls() and (items.Super or items.Charge) and
                 (items.CanAccessNorfairLowerPortal() or items.SpaceJump and items.CanUsePowerBombs()) if self.Logic == SMLogic.Normal else \
             lambda items: items.CanDestroyBombWalls() and items.Varia and (items.Super or items.Charge)),
         Location(self, 79, 0x8F9110, LocationType.Chozo, "Screw Attack",
             lambda items: items.CanDestroyBombWalls() and (items.SpaceJump and items.CanUsePowerBombs() or items.CanAccessNorfairLowerPortal()) if self.Logic == SMLogic.Normal else \
             lambda items: items.CanDestroyBombWalls() and (items.Varia or items.CanAccessNorfairLowerPortal())),
         Location(self, 73, 0x8F8F30, LocationType.Visible, "Missile (Mickey Mouse room)", 
             lambda items: items.CanFly() and items.Morph and items.Super and (
                 # /*Exit to Upper Norfair*/
                 (items.CardLowerNorfairL1 or 
                 # /*Vanilla or Reverse Lava Dive*/
                 items.Gravity) and 
                 # /*Bubble Mountain*/
                 items.CardNorfairL2 or
                 # /* Volcano Room and Blue Gate */
                 items.Gravity and items.Wave and 
                 # /*Spikey Acid Snakes and Croc Escape*/
                 (items.Grapple or items.SpaceJump)  or
                 # /*Exit via GT fight and Portal*/
                 (items.CanUsePowerBombs() and items.SpaceJump and (items.Super or items.Charge))) if self.Logic == SMLogic.Normal else \
             lambda items:
                     items.Morph and items.Varia and items.Super and ((items.CanFly() or items.CanSpringBallJump() or
                                     items.SpeedBooster and (items.HiJump and items.CanUsePowerBombs() or items.Charge and items.Ice)) and
                     # /*Exit to Upper Norfair*/
                     (items.CardNorfairL2 or (items.SpeedBooster or items.CanFly() or items.Grapple or items.HiJump and
                 (items.CanSpringBallJump() or items.Ice))) or
                     # /*Return to Portal*/
                     items.CanUsePowerBombs())) 
         ]
Ejemplo n.º 25
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.RegionItems = [ItemType.KeyHC, ItemType.MapHC]
     sphereOne = -10
     self.Locations = [
         Location(self, 256 + 91, 0x1EA79, LocationType.Regular,
                  "Sanctuary").Weighted(sphereOne),
         Location(
             self, 256 + 92, 0x1EB5D, LocationType.Regular,
             "Sewers - Secret Room - Left", lambda items: items.
             CanLiftLight() or items.Lamp and items.KeyHC),
         Location(
             self, 256 + 93, 0x1EB60, LocationType.Regular,
             "Sewers - Secret Room - Middle", lambda items: items.
             CanLiftLight() or items.Lamp and items.KeyHC),
         Location(
             self, 256 + 94, 0x1EB63, LocationType.Regular,
             "Sewers - Secret Room - Right", lambda items: items.
             CanLiftLight() or items.Lamp and items.KeyHC),
         Location(self, 256 + 95, 0x1E96E, LocationType.Regular,
                  "Sewers - Dark Cross", lambda items: items.Lamp),
         Location(self, 256 + 96, 0x1EB0C, LocationType.Regular,
                  "Hyrule Castle - Map Chest").Weighted(sphereOne),
         Location(self, 256 + 97, 0x1E974, LocationType.Regular,
                  "Hyrule Castle - Boomerang Chest",
                  lambda items: items.KeyHC).Weighted(sphereOne),
         Location(self, 256 + 98, 0x1EB09, LocationType.Regular,
                  "Hyrule Castle - Zelda's Cell",
                  lambda items: items.KeyHC).Weighted(sphereOne),
         Location(self, 256 + 99, 0x5DF45, LocationType.NotInDungeon,
                  "Link's Uncle").Allow(
                      lambda item, items: self.Config.Keysanity or not item.
                      IsDungeonItem()).Weighted(sphereOne),
         Location(self, 256 + 100, 0x1E971, LocationType.NotInDungeon,
                  "Secret Passage").Allow(
                      lambda item, items: self.Config.Keysanity or not item.
                      IsDungeonItem()).Weighted(sphereOne),
     ]
Ejemplo n.º 26
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     sphereOne = -10
     self.Locations = [
         Location(self, 256+36, 0x1DE1C3, LocationType.Regular, "King Zora",
             lambda items: items.CanLiftLight() or items.Flippers),
         Location(self, 256+37, 0x308149, LocationType.Regular, "Zora's Ledge",
             lambda items: items.Flippers),
         Location(self, 256+254, 0x1E9B0, LocationType.Regular, "Waterfall Fairy - Left",
             lambda items: items.Flippers),
         Location(self, 256+39, 0x1E9D1, LocationType.Regular, "Waterfall Fairy - Right",
             lambda items: items.Flippers),
         Location(self, 256+40, 0x308014, LocationType.Regular, "Potion Shop",
             lambda items: items.Mushroom),
         Location(self, 256+41, 0x1EA82, LocationType.Regular, "Sahasrahla's Hut - Left").Weighted(sphereOne),
         Location(self, 256+42, 0x1EA85, LocationType.Regular, "Sahasrahla's Hut - Middle").Weighted(sphereOne),
         Location(self, 256+43, 0x1EA88, LocationType.Regular, "Sahasrahla's Hut - Right").Weighted(sphereOne),
         Location(self, 256+44, 0x5F1FC, LocationType.Regular, "Sahasrahla",
             lambda items: self.world.CanAquire(items, RewardType.PendantGreen))
         ]
Ejemplo n.º 27
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 26, 0x8F86EC, LocationType.Visible, "Morphing Ball"),
         Location(self, 27, 0x8F874C, LocationType.Visible, "Power Bomb (blue Brinstar)",
             lambda items: items.CanUsePowerBombs()),
         Location(self, 28, 0x8F8798, LocationType.Visible, "Missile (blue Brinstar middle)",
             lambda items: items.CardBrinstarL1 and items.Morph),
         Location(self, 29, 0x8F879E, LocationType.Hidden, "Energy Tank, Brinstar Ceiling",
             lambda items: items.CardBrinstarL1 and (items.CanFly() or items.HiJump or items.SpeedBooster or items.Ice) if self.Logic == SMLogic.Normal else \
             lambda items: items.CardBrinstarL1),
         Location(self, 34, 0x8F8802, LocationType.Chozo, "Missile (blue Brinstar bottom)",
             lambda items: items.Morph),
         Location(self, 36, 0x8F8836, LocationType.Visible, "Missile (blue Brinstar top)",
             lambda items: items.CardBrinstarL1 and items.CanUsePowerBombs()),
         Location(self, 37, 0x8F883C, LocationType.Hidden, "Missile (blue Brinstar behind missile)",
             lambda items: items.CardBrinstarL1 and items.CanUsePowerBombs())
         ]
Ejemplo n.º 28
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Weight = -4
     self.Locations = [
         Location(self, 14, 0x8F84E4, LocationType.Chozo, "Super Missile (pink Brinstar)",
             lambda items: items.CardBrinstarBoss and items.CanPassBombPassages() and items.Super if self.Logic == SMLogic.Normal else \
             lambda items: (items.CardBrinstarBoss or items.CardBrinstarL2) and items.CanPassBombPassages() and items.Super),
         Location(self, 21, 0x8F8608, LocationType.Visible, "Missile (pink Brinstar top)"),
         Location(self, 22, 0x8F860E, LocationType.Visible, "Missile (pink Brinstar bottom)"),
         Location(self, 23, 0x8F8614, LocationType.Chozo, "Charge Beam",
             lambda items: items.CanPassBombPassages()),
         Location(self, 24, 0x8F865C, LocationType.Visible, "Power Bomb (pink Brinstar)",
             lambda items: items.CanUsePowerBombs() and items.Super and items.HasEnergyReserves(1) if self.Logic == SMLogic.Normal else \
             lambda items: items.CanUsePowerBombs() and items.Super),
         Location(self, 25, 0x8F8676, LocationType.Visible, "Missile (green Brinstar pipe)",
             lambda items: items.Morph and (items.PowerBomb or items.Super or items.CanAccessNorfairUpperPortal())),
         Location(self, 33, 0x8F87FA, LocationType.Visible, "Energy Tank, Waterway",
             lambda items: items.CanUsePowerBombs() and items.CanOpenRedDoors() and items.SpeedBooster and (items.HasEnergyReserves(1) or items.Gravity)),
         Location(self, 35, 0x8F8824, LocationType.Visible, "Energy Tank, Brinstar Gate",
             lambda items: items.CardBrinstarL2 and items.CanUsePowerBombs() and items.Wave and items.HasEnergyReserves(1) if self.Logic == SMLogic.Normal else \
             lambda items: items.CardBrinstarL2 and items.CanUsePowerBombs() and (items.Wave or items.Super))
     ]
Ejemplo n.º 29
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Locations = [
         Location(self, 256 + 71, 0x308146, LocationType.Regular,
                  "Bumper Cave",
                  lambda items: items.CanLiftLight() and items.Cape),
         Location(self, 256 + 72, 0x1EDA8, LocationType.Regular,
                  "Chest Game"),
         Location(self, 256 + 73, 0x1E9EF, LocationType.Regular,
                  "C-Shaped House"),
         Location(self, 256 + 74, 0x1E9EC, LocationType.Regular, "Brewery"),
         Location(self, 256 + 75, 0x308006, LocationType.Regular,
                  "Hammer Pegs",
                  lambda items: items.CanLiftHeavy() and items.Hammer),
         Location(self, 256 + 76, 0x30802A, LocationType.Regular,
                  "Blacksmith", lambda items: items.CanLiftHeavy()),
         Location(self, 256 + 77, 0x6BD68, LocationType.Regular,
                  "Purple Chest", lambda items: items.CanLiftHeavy())
     ]
Ejemplo n.º 30
0
 def __init__(self, world, config: Config):
     super().__init__(world, config)
     self.Reward = RewardType.GoldenFourBoss
     self.Locations = [
         Location(self, 74, 0x8F8FCA, LocationType.Visible, "Missile (lower Norfair above fire flea room)",
             lambda items: self.CanExit(items)),
         Location(self, 75, 0x8F8FD2, LocationType.Visible, "Power Bomb (lower Norfair above fire flea room)",
             lambda items: self.CanExit(items)) if self.Logic == SMLogic.Normal else \
             lambda items: self.CanExit(items) and items.CanPassBombPassages(),
         Location(self, 76, 0x8F90C0, LocationType.Visible, "Power Bomb (Power Bombs of shame)",
             lambda items: self.CanExit(items) and items.CanUsePowerBombs()),
         Location(self, 77, 0x8F9100, LocationType.Visible, "Missile (lower Norfair near Wave Beam)",
             lambda items: self.CanExit(items)) if self.Logic == SMLogic.Normal else \
             lambda items: self.CanExit(items) and items.Morph and items.CanDestroyBombWalls(),
         Location(self, 78, 0x8F9108, LocationType.Hidden, "Energy Tank, Ridley",
             lambda items: self.CanExit(items) and items.CardLowerNorfairBoss and items.CanUsePowerBombs() and items.Super),
         Location(self, 80, 0x8F9184, LocationType.Visible, "Energy Tank, Firefleas",
             lambda items: self.CanExit(items))
         ]