Esempio n. 1
0
    def setBackpackAmmo(self, gagIds, ammoList):
        if self.ammo == ammoList:
            return
        if len(self.backpack.gags.keys()) > 0:
            for index in range(len(gagIds)):
                gagId = gagIds[index]
                numOfThisGag = 0
                for gag in self.backpack.gags.keys():
                    if type(self.backpack.gagMgr.getGagByName(GagGlobals.getGagByID(gagId))) == type(gag):
                        numOfThisGag += 1

                if numOfThisGag < 1:
                    self.backpack.resetGags()
                    break

        for index in range(len(ammoList)):
            amt = ammoList[index]
            gagId = gagIds[index]
            if amt < 0:
                amt = 0
            self.backpack.setSupply(amt, GagGlobals.getGagByID(gagId))

        self.ammo = ammoList
        self.gagIds = gagIds
        if self.setupGags == False:
            self.d_setBackpackAmmo(gagIds, ammoList)
Esempio n. 2
0
 def toonHitByPie(self, avId, gag_id):
     obj = self.air.doId2do.get(avId, None)
     hp = self.gagMgr.getGagByName(GagGlobals.getGagByID(gag_id)).getHealth()
     if obj:
         if obj.getHealth() < obj.getMaxHealth() and not obj.isDead():
             obj.toonUp(hp)
     return
Esempio n. 3
0
 def gagRelease(self, gag_id):
     supply = self.backpack.getSupply(GagGlobals.getGagByID(gag_id))
     amt = supply - 1
     if amt < 0:
         self.ejectSelf()
         return
     self.b_setGagAmmo(gag_id, amt)
Esempio n. 4
0
    def hitByGag(self, gagId):
        avatar = self.air.doId2do.get(self.air.getAvatarIdFromSender(), None)
        gagName = GagGlobals.getGagByID(gagId)
        data = GagGlobals.getGagData(gagId)
        dmg = data.get('damage')
        track = GagGlobals.getTrackOfGag(gagId, getId=True)

        if self.canGetHit():
            self.b_setHealth(self.getHealth() - dmg)
            Sequence(Func(self.d_announceHealth, 0, dmg),
                     Wait(self.showComboDamageTime),
                     Func(self.__showComboLabel)).start()
            self.__handleCombos(avatar.doId, gagName)

            if self.isDead():
                if track == GagType.THROW or gagName == CIGlobals.TNT:
                    self.b_setAnimState('pie', 0)
                elif track == GagType.DROP:
                    majorDrops = [
                        CIGlobals.GrandPiano, CIGlobals.Safe,
                        CIGlobals.BigWeight
                    ]
                    if gagName in majorDrops:
                        self.b_setAnimState('drop', 0)
                    else:
                        self.b_setAnimState('drop-react', 0)
                elif track == GagType.SQUIRT or track == GagType.SOUND:
                    if gagName == CIGlobals.StormCloud:
                        self.b_setAnimState('soak', 0)
                    else:
                        self.b_setAnimState('squirt-small', 0)
                avatar.questManager.cogDefeated(self)
            else:
                # I've been hit! Take appropriate actions.
                self.handleToonThreat(avatar, True)
Esempio n. 5
0
 def setLabel(self, labelId):
     if labelId == 0:
         self.gagModel = loader.loadModel(
             'phase_4/models/props/icecream.bam')
         self.gagModel.reparentTo(self.gagNode)
         self.gagModel.find('**/p1_2').clearBillboard()
         self.gagModel.setScale(0.6)
         self.gagModel.setPos(0, -0.1, -0.1 - 0.6)
     elif labelId == 1:
         purchaseModels = loader.loadModel(
             'phase_4/models/gui/purchase_gui.bam')
         self.gagModel = purchaseModels.find('**/Jar')
         self.gagModel.reparentTo(self.gagNode)
         self.gagModel.setScale(3.0)
         self.gagModel.setPos(0, -0.1, 0)
         purchaseModels.removeNode()
     else:
         gagId = labelId - 2
         iconName = GagGlobals.InventoryIconByName.get(
             GagGlobals.getGagByID(gagId))
         invModel = loader.loadModel(
             'phase_3.5/models/gui/inventory_icons.bam').find('**/%s' %
                                                              iconName)
         if invModel:
             self.gagModel = invModel
             self.gagModel.reparentTo(self.gagNode)
             self.gagModel.setScale(13.0)
             self.gagModel.setPos(0, -0.1, 0)
         else:
             self.notify.warning('Failed to find gag label %s.' %
                                 (str(labelId)))
 def addGag(self, gagId, curSupply=0, maxSupply=0):
     if not gagId in self.gags.keys():
         gagName = GagGlobals.getGagByID(gagId)
         if not gagName is None:
             gag = self.gagManager.getGagByName(gagName)
             gag.setAvatar(self.avatar)
             self.gags.update({gagId: [gag, curSupply, maxSupply]})
Esempio n. 7
0
    def buildAmmoList(self, gagIds):
        ammoList = []
        for index in range(len(gagIds)):
            gagId = gagIds[index]
            amt = self.backpack.getSupply(GagGlobals.getGagByID(gagId))
            ammoList.append(amt)

        return ammoList
 def confirmPurchase(self):
     ammoList = []
     if not hasattr(self.originalSupply, 'keys'):
         gagIds = []
     else:
         gagIds = self.originalSupply.keys()
         for gagId in gagIds:
             ammoList.append(base.localAvatar.getBackpack().getSupply(GagGlobals.getGagByID(gagId)))
     self.distShop.sendUpdate('confirmPurchase', [gagIds, ammoList, base.localAvatar.getMoney()])
     Shop.confirmPurchase(self)
Esempio n. 9
0
    def confirmPurchase(self):
        ammoList = []
        if not hasattr(self.originalSupply, 'keys'):
            gagIds = []
        else:
            gagIds = self.originalSupply.keys()
            for gagId in gagIds:
                ammoList.append(base.localAvatar.getBackpack().getSupply(GagGlobals.getGagByID(gagId)))

        self.distShop.sendUpdate('confirmPurchase', [gagIds, ammoList, base.localAvatar.getMoney()])
        Shop.confirmPurchase(self)
Esempio n. 10
0
    def setBackpackAmmo(self, gagIds, ammoList):
        if -1 in ammoList:
            return
        else:
            self.gagBPData = [gagIds, ammoList]
            if not self.initAmmo:
                self.initAmmo = ammoList
                self.initGagIds = gagIds
            else:
                self.initAmmo = None
                self.initGagIds = None
            bpReset = False
            if len(self.backpack.gags.keys()) > 0:
                for index in range(len(gagIds)):
                    gagId = gagIds[index]
                    numOfThisGag = 0
                    for gag in self.backpack.gags.keys():
                        if type(self.backpack.gagMgr.getGagByName(GagGlobals.getGagByID(gagId))) == type(gag):
                            numOfThisGag += 1

                    if numOfThisGag < 1:
                        self.backpack.resetGags()
                        bpReset = True
                        break

            for index in range(len(ammoList)):
                amt = ammoList[index]
                gagId = gagIds[index]
                self.backpack.setSupply(amt, GagGlobals.getGagByID(gagId))

            if self.backpack.gagGUI:
                if bpReset:
                    self.disablePies()
                    self.enablePies(1)
                self.backpack.gagGUI.update()
            return
 def d_setGrab(self, avId):
     self.sendUpdate('setGrab', [avId])
     avatar = self.air.doId2do.get(avId)
     backpack = avatar.backpack
     track = GagGlobals.getTrackOfGag(self.gagId)
     availableGags = []
     restockGags = {}
     
     if not self.loadoutOnly:
         trackGags = GagGlobals.TrackGagNamesByTrackName.get(GagGlobals.TrackNameById.get(GagGlobals.Type2TrackName.get(track)))
         
         # Get the gagids of gags in this gag track.
         for trackGag in trackGags:
             gagId = GagGlobals.getIDByName(trackGag)
             if backpack.hasGag(gagId):
                 availableGags.append(gagId)
         # The strongest gags should be first.
         availableGags.reverse()
     else:
         loadout = backpack.getLoadout()
         for gagId in loadout:
             if GagGlobals.getTrackOfGag(gagId) == track:
                 availableGags.append(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
             print 'Requesting to give %s %ss.' % (str(restockGags[gagId]), GagGlobals.getGagByID(gagId))
             
     for gagId in restockGags.keys():
         avatar.b_setGagAmmo(gagId, restockGags.get(gagId))
         
    def announceGenerate(self):
        DistributedAvatarAI.announceGenerate(self)
        DistributedSmoothNodeAI.announceGenerate(self)
        if self.parentId != self.getDefaultShard():
            self.b_setDefaultShard(self.parentId)

        if self.__class__.__name__ == "DistributedToonAI":
            # TEMPORARY: Any new gags that we make have to be given to toons automatically.
            newGags = GagGlobals.gagIds.keys()
            currentGags = self.backpack.gags
            needsToUpdate = False
            for newGag in newGags:
                if not newGag in currentGags.keys():
                    print 'This player is missing {0}'.format(GagGlobals.getGagByID(newGag))
                    self.backpack.addGag(newGag)
                    if not needsToUpdate:
                        needsToUpdate = True
            if needsToUpdate:
                self.backpack.updateNetAmmo()
Esempio n. 13
0
 def suitHitByPie(self, avId, gag_id):
     obj = self.air.doId2do.get(avId, None)
     gag = self.gagMgr.getGagByName(GagGlobals.getGagByID(gag_id))
     dmg = gag.getDamage()
     if obj:
         obj.b_setHealth(obj.getHealth() - dmg)
         if obj.getHealth() <= 0:
             if gag.getType() == GagType.THROW or gag.getName() == CIGlobals.TNT:
                 obj.b_setAnimState('pie')
             elif gag.getType() == GagType.DROP:
                 majorDrops = [CIGlobals.GrandPiano, CIGlobals.Safe, CIGlobals.BigWeight]
                 if gag.getName() in majorDrops:
                     obj.b_setAnimState('drop')
                 else:
                     obj.b_setAnimState('drop-react')
             elif gag.getType() == GagType.SQUIRT or gag.getType() == GagType.SOUND:
                 if gag.getName() == CIGlobals.StormCloud:
                     obj.b_setAnimState('soak')
                 else:
                     obj.b_setAnimState('squirt-small')
             if obj.__class__.__name__ == 'DistributedSuit':
                 self.questManager.cogDefeated(obj)
     return
Esempio n. 14
0
 def setGagAmmo(self, gagId, ammo):
     if self.backpack.getGagByID(gagId):
         self.backpack.setSupply(ammo, GagGlobals.getGagByID(gagId))
Esempio n. 15
0
 def setGagAmmo(self, gagId, ammo):
     self.backpack.setSupply(ammo, GagGlobals.getGagByID(gagId))
     if self.backpack.gagGUI:
         self.backpack.gagGUI.update()