def CanEnter(self, items: Progression): if self.Logic == SMLogic.Normal: return items.Super and ( # /* Over the Moat */ (items.CardCrateriaL2 if self.Config.Keysanity else items.CanUsePowerBombs()) and (items.SpeedBooster or items.Grapple or items.SpaceJump or items.Gravity and (items.CanIbj() or items.HiJump)) or # /* Through Maridia -> Forgotten Highway */ items.CanUsePowerBombs() and items.Gravity or # /* From Maridia portal -> Forgotten Highway */ items.CanAccessMaridiaPortal(self.world) and items.Gravity and (items.CanDestroyBombWalls() and items.CardMaridiaL2 or self.world.GetLocation("Space Jump").Available(items))) else: return items.Super and ( # /* Over the Moat */ (items.CardCrateriaL2 if self.Config.Keysanity else items.CanUsePowerBombs()) or # /* Through Maridia -> Forgotten Highway */ items.CanUsePowerBombs() and (items.Gravity or # /* Climb Mt. Everest */ items.HiJump and (items.Ice or items.CanSpringBallJump()) and items.Grapple and items.CardMaridiaL1) or # /* From Maridia portal -> Forgotten Highway */ items.CanAccessMaridiaPortal(self.world) and (items.HiJump and items.CanPassBombPassages() and items.CardMaridiaL2 or items.Gravity and (items.CanDestroyBombWalls() and items.CardMaridiaL2 or self.world.GetLocation("Space Jump").Available(items))))
def CanDefeatBotwoon(self, items: Progression): if self.Logic == SMLogic.Normal: return items.SpeedBooster or items.CanAccessMaridiaPortal( self.world) else: return items.Ice or items.SpeedBooster and items.Gravity or items.CanAccessMaridiaPortal( self.world)
def CanReachAqueduct(self, items: Progression): if self.Logic == SMLogic.Normal: return items.CardMaridiaL1 and (items.CanFly() or items.SpeedBooster or items.Grapple) \ or items.CardMaridiaL2 and items.CanAccessMaridiaPortal(self.world) else: return items.CardMaridiaL1 and (items.Gravity or items.HiJump and (items.Ice or items.CanSpringBallJump()) and items.Grapple) \ or items.CardMaridiaL2 and items.CanAccessMaridiaPortal(self.world)
def CanEnter(self, items: Progression): if self.Logic == SMLogic.Normal: return items.Gravity and ( self.world.CanEnter("Norfair Upper West", items) and items.Super and items.CanUsePowerBombs() and (items.CanFly() or items.SpeedBooster or items.Grapple) or items.CanAccessMaridiaPortal(self.world)) else: return items.Super and self.world.CanEnter("Norfair Upper West", items) and items.CanUsePowerBombs() and ( items.Gravity or items.HiJump and (items.Ice or items.CanSpringBallJump()) and items.Grapple) or \ items.CanAccessMaridiaPortal(self.world)
def CanDefeatDraygon(self, items: Progression): if self.Logic == SMLogic.Normal: return (items.CardMaridiaL1 and items.CardMaridiaL2 and self.CanDefeatBotwoon(items) or items.CanAccessMaridiaPortal(self.world) ) and items.CardMaridiaBoss and items.Gravity and ( items.SpeedBooster and items.HiJump or items.CanFly()) else: return (items.CardMaridiaL1 and items.CardMaridiaL2 and self.CanDefeatBotwoon(items) or items.CanAccessMaridiaPortal(self.world) ) and items.CardMaridiaBoss and items.Gravity
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)
def CanEnter(self, items: Progression): if self.Logic == SMLogic.Normal: return items.Gravity and ( self.world.CanEnter("Norfair Upper West", items) and items.CanUsePowerBombs() or items.CanAccessMaridiaPortal(self.world) and items.CardMaridiaL1 and items.CardMaridiaL2 and (items.CanPassBombPassages() or items.ScrewAttack)) else: return self.world.CanEnter( "Norfair Upper West", items) and items.CanUsePowerBombs() and ( items.Gravity or items.HiJump and (items.CanSpringBallJump() or items.Ice)) or ( items.CanAccessMaridiaPortal(self.world) ) and items.CardMaridiaL1 and items.CardMaridiaL2 and ( items.CanPassBombPassages() or items.Gravity and items.ScrewAttack or items.Super and (items.Gravity or items.HiJump and (items.CanSpringBallJump() or items.Ice)))