Esempio n. 1
0
 def CanEnter(self, items: Progression):
     if self.Logic == SMLogic.Normal:
         return (items.CanDestroyBombWalls() or items.SpeedBooster) and items.Super and items.Morph or \
             items.CanAccessNorfairUpperPortal() and (items.Ice or items.HiJump or items.SpaceJump)
     else:
         return (items.CanDestroyBombWalls() or items.SpeedBooster) and items.Super and items.Morph or \
             items.CanAccessNorfairUpperPortal() and (items.Ice or items.CanSpringBallJump() or items.HiJump or items.CanFly())
Esempio n. 2
0
 def CanEnter(self, items: Progression):
     if self.Logic == SMLogic.Normal:
         return items.CanOpenRedDoors() and (items.CanDestroyBombWalls() or items.SpeedBooster) or \
         items.CanUsePowerBombs() or \
         items.CanAccessNorfairUpperPortal() and items.Morph and items.Wave and \
             (items.Ice or items.HiJump or items.SpaceJump)
     else:
         return items.CanOpenRedDoors() and (items.CanDestroyBombWalls() or items.SpeedBooster) or \
             items.CanUsePowerBombs() or \
             items.CanAccessNorfairUpperPortal() and items.Morph and (items.CanOpenRedDoors() or items.Wave) and \
                 (items.Ice or items.HiJump or items.CanSpringBallJump() or items.CanFly())
Esempio n. 3
0
 def CanEnter(self, items: Progression):
     if self.Logic == SMLogic.Normal:
         return (
             (items.CanDestroyBombWalls() or items.SpeedBooster)
             and items.Super and items.Morph
             or items.CanAccessNorfairUpperPortal()
         ) and (items.Varia) and (
             # /* Ice Beam -> Croc Speedway */
             (items.CardNorfairL1 if self.Config.Keysanity else items.Super)
             and items.CanUsePowerBombs() and items.SpeedBooster or
             # /* Frog Speedway */
             items.SpeedBooster and items.Wave or
             # /* Cathedral -> through the floor or Vulcano */
             items.CanOpenRedDoors() and
             (items.CardNorfairL2 if self.Config.Keysanity else items.Super)
             and (items.CanFly() or items.HiJump or items.SpeedBooster) and
             (items.CanPassBombPassages() or items.Gravity and items.Morph)
             and items.Wave or
             # /* Reverse Lava Dive */
             items.CanAccessNorfairLowerPortal() and items.ScrewAttack
             and items.SpaceJump and items.Super and items.Gravity
             and items.Wave and (items.CardNorfairL2 or items.Morph))
     else:
         return (
             (items.CanDestroyBombWalls() or items.SpeedBooster)
             and items.Super and items.Morph
             or items.CanAccessNorfairUpperPortal()
         ) and (
             # /* Ice Beam -> Croc Speedway */
             (items.CardNorfairL1 if self.Config.Keysanity else items.Super)
             and items.CanUsePowerBombs() and items.SpeedBooster and
             (items.HasEnergyReserves(3) or items.Varia) or
             # /* Frog Speedway */
             items.SpeedBooster and
             (items.HasEnergyReserves(2) or items.Varia) and
             (items.Missile or items.Super or items.Wave) or
             (  # /* Blue Gate */
                 # /* Cathedral -> through the floor or Vulcano */
                 items.CanHellRun()) and items.CanOpenRedDoors() and
             (items.CardNorfairL2 if self.Config.Keysanity else items.Super)
             and
             (items.CanFly() or items.HiJump or items.SpeedBooster
              or items.CanSpringBallJump() or items.Varia and items.Ice) and
             (items.CanPassBombPassages() or items.Varia and items.Morph)
             and
             (items.Missile or items.Super or items.Wave)  # /* Blue Gate */
         ) or (
             # /* Reverse Lava Dive */
             items.CanAccessNorfairLowerPortal()
         ) and items.ScrewAttack and items.SpaceJump and items.Varia and items.Super and (
             items.HasEnergyReserves(2)) and (items.CardNorfairL2
                                              or items.Morph)
Esempio n. 4
0
 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)
Esempio n. 5
0
 def CanEnter(self, items:Progression):
     if self.Logic == SMLogic.Normal:
         return ((items.CanDestroyBombWalls() or items.SpeedBooster) and items.Super and items.Morph or
                 items.CanAccessNorfairUpperPortal()
             ) and items.Varia and items.Super and (
                 # /* Cathedral */
                 items.CanOpenRedDoors() and (items.CardNorfairL2 if self.Config.Keysanity else items.Super) and
                     (items.CanFly() or items.HiJump or items.SpeedBooster) or
                 # /* Frog Speedway */
                 items.SpeedBooster and (items.CardNorfairL2 or items.Wave) and items.CanUsePowerBombs()
             )
     else:
         return ((items.CanDestroyBombWalls() or items.SpeedBooster) and items.Super and items.Morph or
                 items.CanAccessNorfairUpperPortal()) and (
             items.CanHellRun()) and (
                 # /* Cathedral */
                 items.CanOpenRedDoors() and (items.CardNorfairL2 if self.Config.Keysanity else items.Super) and (
                     items.CanFly() or items.HiJump or items.SpeedBooster or
                     items.CanSpringBallJump() or items.Varia and items.Ice
                 ) or
                 # /* Frog Speedway */
                 items.SpeedBooster and (items.CardNorfairL2 or items.Missile or items.Super or items.Wave) and items.CanUsePowerBombs())
Esempio n. 6
0
 def CanEnter(self, items: Progression):
     return (
         items.CanDestroyBombWalls() or items.SpeedBooster
     ) and items.Super and items.Morph or items.CanAccessNorfairUpperPortal(
     )
Esempio n. 7
0
 def CanEnter(self, items: Progression):
     return (items.CanDestroyBombWalls() or items.SpeedBooster or items.CanAccessNorfairUpperPortal()) and \
         items.Super and items.CanPassBombPassages()