60 lines
3.7 KiB
Python
60 lines
3.7 KiB
Python
from ....Region import SMRegion
|
|
from ....Config import Config, SMLogic
|
|
from ....Location import Location, LocationType
|
|
from ....Item import Progression
|
|
|
|
class East(SMRegion):
|
|
Name = "Crateria East"
|
|
Area = "Crateria"
|
|
|
|
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 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 items.CardWreckedShipBoss and items.CanPassBombPassages()),
|
|
Location(self, 4, 0x8F8248, LocationType.Visible, "Missile (Crateria moat)",
|
|
lambda items: True)
|
|
]
|
|
|
|
def CanEnter(self, items:Progression):
|
|
if self.Logic == SMLogic.Normal:
|
|
# /* Ship -> Moat */
|
|
return (items.CardCrateriaL2 if self.Config.Keysanity else items.CanUsePowerBombs()) and items.Super or (
|
|
# /* UN Portal -> Red Tower -> Moat
|
|
items.CardCrateriaL2 if self.Config.Keysanity else items.CanUsePowerBombs()) and items.CanAccessNorfairUpperPortal() and (
|
|
items.Ice or items.HiJump or items.SpaceJump) or (
|
|
# /*Through Maridia From Portal*/
|
|
items.CanAccessMaridiaPortal(self.world)) and items.Gravity and items.Super and (
|
|
# /* Oasis -> Forgotten Highway */
|
|
items.CardMaridiaL2 and items.CanDestroyBombWalls() or (
|
|
# /* Draygon -> Cactus Alley -> Forgotten Highway */
|
|
self.world.GetLocation("Space Jump").Available(items))) or (
|
|
# /*Through Maridia from Pipe*/
|
|
items.CanUsePowerBombs()) and items.Super and items.Gravity
|
|
else:
|
|
# /* Ship -> Moat */
|
|
return (items.CardCrateriaL2 if self.Config.Keysanity else items.CanUsePowerBombs()) and items.Super or (
|
|
# /* UN Portal -> Red Tower -> Moat */
|
|
items.CardCrateriaL2 if self.Config.Keysanity else items.CanUsePowerBombs()) and items.CanAccessNorfairUpperPortal() and (
|
|
items.Ice or items.HiJump or items.CanFly() or items.CanSpringBallJump()) or (
|
|
# /*Through Maridia From Portal*/
|
|
items.CanAccessMaridiaPortal(self.world)) and (
|
|
# /* Oasis -> Forgotten Highway */
|
|
items.CardMaridiaL2 and items.Super and (
|
|
items.HiJump and items.CanPassBombPassages() or
|
|
items.Gravity and items.CanDestroyBombWalls()
|
|
) or
|
|
# /* Draygon -> Cactus Alley -> Forgotten Highway */
|
|
items.Gravity and self.world.GetLocation("Space Jump").Available(items)) or (
|
|
# /*Through Maridia from Pipe*/
|
|
items.CanUsePowerBombs()) and items.Super and (items.Gravity or items.HiJump and (items.Ice or items.CanSpringBallJump())
|
|
and items.Grapple and items.CardMaridiaL1)
|