コード例 #1
0
 def getForbiddenItemsFromList(self, itemList):
     self.log.debug('getForbiddenItemsFromList: ' + str(itemList))
     remove = []
     n = randGaussBounds(len(itemList))
     for i in range(n):
         idx = random.randint(0, len(itemList) - 1)
         item = itemList.pop(idx)
         if item is not None:
             remove.append(item)
     return remove
コード例 #2
0
 def __init__(self, itemManager, qty, sm, maxDiff):
     super(ItemPoolGeneratorMajors, self).__init__(itemManager, qty, sm,
                                                   maxDiff)
     self.sparseRest = 1 + randGaussBounds(2, 5)
     self.mediumRest = 3 + randGaussBounds(4, 3.7)
     self.ultraSparseNoTanks = self.isUltraSparseNoTanks()
コード例 #3
0
    def addEnergy(self):
        total = 18
        energyQty = self.qty['energy']
        if energyQty == 'ultra sparse':
            # 0-1, remove reserve tank and two etanks, check if it also remove the last etank
            self.itemManager.removeItem('Reserve')
            self.itemManager.addItem('NoEnergy', 'Chozo')
            self.itemManager.removeItem('ETank')
            self.itemManager.addItem('NoEnergy', 'Chozo')
            self.itemManager.removeItem('ETank')
            self.itemManager.addItem('NoEnergy', 'Chozo')
            if self.isUltraSparseNoTanks():
                # no etank nor reserve
                self.itemManager.removeItem('ETank')
                self.itemManager.addItem('NoEnergy', 'Chozo')
            elif random.random() < 0.5:
                # replace only etank with reserve
                self.itemManager.removeItem('ETank')
                self.itemManager.addItem('Reserve', 'Chozo')

            # complete up to 18 energies with nothing item
            alreadyInPool = 4
            for i in range(total - alreadyInPool):
                self.itemManager.addItem('Nothing', 'Minor')
        elif energyQty == 'sparse':
            # 4-6
            # already 3E and 1R
            alreadyInPool = 4
            rest = randGaussBounds(2, 5)
            if rest >= 1:
                if random.random() < 0.5:
                    self.itemManager.addItem('Reserve', 'Minor')
                else:
                    self.itemManager.addItem('ETank', 'Minor')
            for i in range(rest - 1):
                self.itemManager.addItem('ETank', 'Minor')
            # complete up to 18 energies with nothing item
            for i in range(total - alreadyInPool - rest):
                self.itemManager.addItem('Nothing', 'Minor')
        elif energyQty == 'medium':
            # 8-12
            # add up to 3 Reserves or ETanks (cannot add more than 3 reserves)
            for i in range(3):
                if random.random() < 0.5:
                    self.itemManager.addItem('Reserve', 'Minor')
                else:
                    self.itemManager.addItem('ETank', 'Minor')
            # 7 already in the pool (3 E, 1 R, + the previous 3)
            alreadyInPool = 7
            rest = 1 + randGaussBounds(4, 3.7)
            for i in range(rest):
                self.itemManager.addItem('ETank', 'Minor')
            # fill the rest with NoEnergy
            for i in range(total - alreadyInPool - rest):
                self.itemManager.addItem('Nothing', 'Minor')
        else:
            # add the vanilla 3 reserves and 13 Etanks
            for i in range(3):
                self.itemManager.addItem('Reserve', 'Minor')
            for i in range(11):
                self.itemManager.addItem('ETank', 'Minor')
コード例 #4
0
 isVanilla = random.random() < 0.5
 strictMinors = bool(random.getrandbits(1))
 minQty = 100
 energyQty = 'vanilla'
 forbidden = []
 if not isVanilla:
     minQty = random.randint(1, 99)
     r = random.random()
     if r < 0.33:
         energyQty = 'medium'
     elif r > 0.66:
         energyQty = 'sparse'
     else:
         energyQty = 'ultra sparse'
     funPick = fun[:]
     for i in range(randGaussBounds(len(fun))):
         item = random.choice(funPick)
         forbidden.append(item)
         funPick.remove(item)
 nLocs = 105
 if random.random() < 0.25:
     nLocs = random.randint(40, 80)
 missProb = random.randint(1, 9)
 superProb = random.randint(1, 9)
 pbProb = random.randint(1, 9)
 qty = {
     'minors': minQty,
     'energy': energyQty,
     'ammo': {
         'Missile': missProb,
         'Super': superProb,