Exemplo n.º 1
0
    def loadEntityValues(self):
        self.track = self.getEntityValueInt("track")
        if self.track == -1:
            # random track
            self.track = random.choice(GagGlobals.TrackIdByName.values())

        trackName = GagGlobals.getTrackName(self.track)

        self.gagId = self.getEntityValueInt("gag")
        if self.gagId != -1:
            self.gagId = GagGlobals.gagIdByName[
                GagGlobals.TrackGagNamesByTrackName[trackName][self.gagId]]
Exemplo n.º 2
0
    def d_setGrab(self, avId):
        DistributedRestockBarrelAI.d_setGrab(self, avId)
        avatar = self.air.doId2do.get(avId)
        backpack = avatar.backpack
        trackName = GagGlobals.getTrackName(self.track)
        availableGags = []
        restockGags = {}

        trackGags = GagGlobals.TrackGagNamesByTrackName.get(trackName)
        if self.gagId == -1:
            # Gets the gag ids of gags in this gag track.
            for trackGag in trackGags:
                gagId = self.air.attackMgr.getAttackIDByName(trackGag)
                if backpack.hasGag(gagId):
                    availableGags.append(gagId)
            # The strongest gags should be first.
            availableGags.reverse()
        else:
            # this barrel restocks a specific gag
            if backpack.hasGag(self.gagId):
                availableGags.append(self.gagId)

        restockLeft = int(self.maxRestock)

        for gagId in availableGags:
            if restockLeft <= 0:
                break
            supply = backpack.getSupply(gagId)
            maxAmount = backpack.getMaxSupply(gagId)

            if supply < maxAmount:
                giveAmount = maxAmount - backpack.getSupply(gagId)
                if restockLeft < giveAmount:
                    giveAmount = restockLeft
                restockGags[gagId] = supply + giveAmount
                restockLeft -= giveAmount
                self.notify.info(
                    'Requesting to give %s %ss.' %
                    (str(giveAmount), self.air.attackMgr.getAttackName(gagId)))

        for gagId in restockGags.keys():
            attack = avatar.getAttack(gagId)
            avatar.b_updateAttackAmmo(gagId, restockGags.get(gagId),
                                      *attack.getAmmoValues()[1:])