Esempio n. 1
0
 def canPassCacatacAlley(self):
     sm = self.smbm
     return sm.wand(
         Bosses.bossDead(sm, 'Draygon'),
         sm.wor(
             sm.haveItem('Gravity'),
             sm.wand(sm.knowsGravLessLevel2(), sm.haveItem('HiJump'),
                     sm.haveItem('SpaceJump'))))
Esempio n. 2
0
 def canPassSpongeBath(self):
     sm = self.smbm
     return sm.wand(
         Bosses.bossDead('Phantoon'),
         sm.wor(
             sm.wand(sm.canPassBombPassages(),
                     sm.knowsSpongeBathBombJump()),
             sm.wand(sm.haveItem('HiJump'), sm.knowsSpongeBathHiJump()),
             sm.wor(
                 sm.haveItem('Gravity'), sm.haveItem('SpaceJump'),
                 sm.wand(sm.haveItem('SpeedBooster'),
                         sm.knowsSpongeBathSpeed()),
                 sm.canSpringBallJump())))
 def fullComebackCheck(self, container, ap, item, loc, comebackCheck):
     sm = container.sm
     tmpItems = []
     # draygon special case: there are two locations, and we can
     # place one item, but we might need both the item and the boss
     # dead to get out
     if loc['SolveArea'] == "Draygon Boss" and Bosses.bossDead(
             sm, 'Draygon').bool == False:
         # temporary kill draygon
         tmpItems.append('Draygon')
     sm.addItems(tmpItems)
     ret = self.locPostAvailable(
         sm, loc, item.Type
         if item is not None else None) and not self.isSoftlockPossible(
             container, ap, item, loc, comebackCheck)
     for tmp in tmpItems:
         sm.removeItem(tmp)
     return ret
Esempio n. 4
0
 def canPassBowling(self):
     sm = self.smbm
     return sm.wand(
         Bosses.bossDead(sm, 'Phantoon'),
         sm.wor(sm.heatProof(), sm.energyReserveCountOk(1),
                sm.haveItem("SpaceJump"), sm.haveItem("Grapple")))