Exemple #1
0
 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))))
Exemple #2
0
 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)
Exemple #3
0
 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)
Exemple #4
0
 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)
Exemple #5
0
 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
Exemple #6
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)
Exemple #7
0
 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)))