예제 #1
0
 def recoverMerits(self,
                   av,
                   cogList,
                   zoneId,
                   multiplier=1,
                   extraMerits=None):
     avId = av.getDoId()
     meritsRecovered = [0, 0, 0, 0, 0]
     if extraMerits is None:
         extraMerits = [0, 0, 0, 0, 0]
     if self.air.suitInvasionManager.getInvading():
         multiplier *= getInvasionMultiplier()
     for i in xrange(len(extraMerits)):
         if CogDisguiseGlobals.isSuitComplete(av.getCogParts(), i):
             meritsRecovered[i] += extraMerits[i]
             self.notify.debug('recoverMerits: extra merits = %s' %
                               extraMerits[i])
     self.notify.debug('recoverMerits: multiplier = %s' % multiplier)
     for cogDict in cogList:
         dept = SuitDNA.suitDepts.index(cogDict['track'])
         if avId in cogDict['activeToons']:
             if CogDisguiseGlobals.isSuitComplete(
                     av.getCogParts(),
                     SuitDNA.suitDepts.index(cogDict['track'])):
                 self.notify.debug(
                     'recoverMerits: checking against cogDict: %s' %
                     cogDict)
                 rand = random.random() * 100
                 if rand <= self.getPercentChance(
                 ) and not cogDict['isVirtual']:
                     merits = cogDict['level'] * MeritMultiplier
                     merits = int(round(merits))
                     if cogDict['hasRevives']:
                         merits *= 2
                     merits = merits * multiplier
                     merits = int(round(merits))
                     meritsRecovered[dept] += merits
                     self.notify.debug('recoverMerits: merits = %s' %
                                       merits)
                 else:
                     self.notify.debug('recoverMerits: virtual cog!')
     if meritsRecovered != [0, 0, 0, 0, 0]:
         actualCounted = [0, 0, 0, 0, 0]
         merits = av.getCogMerits()
         for i in xrange(len(meritsRecovered)):
             max = CogDisguiseGlobals.getTotalMerits(av, i)
             if max:
                 if merits[i] + meritsRecovered[i] <= max:
                     actualCounted[i] = meritsRecovered[i]
                     merits[i] += meritsRecovered[i]
                 else:
                     actualCounted[i] = max - merits[i]
                     merits[i] = max
                 av.b_setCogMerits(merits)
         if reduce(lambda x, y: x + y, actualCounted):
             self.air.writeServerEvent(
                 'merits', avId, '%s|%s|%s|%s|%s' % tuple(actualCounted))
             self.notify.debug('recoverMerits: av %s recovered merits %s' %
                               (avId, actualCounted))
     return meritsRecovered
예제 #2
0
    def updateMeritBars(self):
        if not self.meritBars:
            return

        for i in xrange(len(self.meritBars)):
            meritBar = self.meritBars[i]

            if CogDisguiseGlobals.isSuitComplete(base.localAvatar.cogParts, i):
                meritBar.show()
                totalMerits = CogDisguiseGlobals.getTotalMerits(
                    base.localAvatar, i)
                merits = base.localAvatar.cogMerits[i]

                if totalMerits:
                    meritBar['range'] = totalMerits
                    meritBar['value'] = merits

                    if merits == totalMerits:
                        meritBar['text'] = TTLocalizer.RewardPanelMeritAlert
                    else:
                        meritBar['text'] = '%s/%s %s' % (
                            merits, totalMerits,
                            TTLocalizer.RewardPanelMeritBarLabels[i])
                else:
                    meritBar['range'] = 1
                    meritBar['value'] = 1
                    meritBar['text'] = TTLocalizer.RewardPanelMeritsMaxed
            else:
                meritBar.hide()
        def dbCallback(dclass, fields, toonId=toonId, suitDeptIndex=suitDeptIndex):
            if dclass != self.air.dclassesByName['DistributedToonAI']:
                return

            parts = fields['setCogParts'][0]
            if CogDisguiseGlobals.isSuitComplete(parts, suitDeptIndex):
                # Code from DistributedToonAI.loseCogParts:
                loseCount = random.randrange(CogDisguiseGlobals.MinPartLoss,
                                             CogDisguiseGlobals.MaxPartLoss+1)

                partBitmask = parts[suitDeptIndex]
                partList = range(17)

                while loseCount > 0 and partList:
                    losePart = random.choice(partList)
                    partList.remove(losePart)

                    losePartBit = 1 << losePart
                    if partBitmask & losePartBit:
                        partBitmask &= ~losePartBit
                        loseCount -= 1

                parts[suitDeptIndex] = partBitmask

                # Update the cog parts in the db:
                self.air.dbInterface.updateObject(
                    self.air.dbId, toonId,
                    self.air.dclassesByName['DistributedToonAI'],
                    {'setCogParts': (parts,)}
                )
예제 #4
0
 def confirmJoinGroup(self, groupId, buttonTuple):
     doneStatus = self.joinDialog.doneStatus
     self.joinDialog.cleanup()
     del self.joinDialog
     if doneStatus is not 'ok':
         return
     for gid in base.cr.groupManager.id2type.keys():
         if base.cr.groupManager.isInGroup(base.localAvatar.doId, gid):
             self.rejectGroup(4)
             return
     #if len(base.cr.groupManager.getGroupPlayers(groupId)) >= 8:
     #    self.rejectGroup(3)
     #    return
     suitIdx = -1
     gids = {10000:0, 11000:1, 12000:2, 13000:3}
     suitIdx = gids.get(groupId)
     if suitIdx is not None:
         merits = base.localAvatar.cogMerits[suitIdx]
         if CogDisguiseGlobals.getTotalMerits(base.localAvatar, suitIdx) > merits:
             self.rejectGroup(2, suitIdx)
             return
         parts = base.localAvatar.getCogParts()
         if not CogDisguiseGlobals.isSuitComplete(parts, suitIdx):
             self.rejectGroup(1)
             return
     base.cr.groupManager.d_addPlayerToGroup(groupId, base.localAvatar.doId)
     self.currentGroupJoined = groupId
     try:
         place = base.cr.playGame.getPlace()
     except:
         try:
             place = base.cr.playGame.hood.loader.place
         except:
             place = base.cr.playGame.hood.place
     place.requestTeleport(groupId, groupId, base.localAvatar.defaultShard, -1)
예제 #5
0
    def updateMeritBars(self):
        if not self.meritBars:
            return

        for i in xrange(len(self.meritBars)):
            meritBar = self.meritBars[i]

            if CogDisguiseGlobals.isSuitComplete(base.localAvatar.cogParts, i):
                meritBar.show()
                totalMerits = CogDisguiseGlobals.getTotalMerits(base.localAvatar, i)
                merits = base.localAvatar.cogMerits[i]

                if totalMerits:
                    meritBar['range'] = totalMerits
                    meritBar['value'] = merits

                    if merits == totalMerits:
                        meritBar['text'] = TTLocalizer.RewardPanelMeritAlert
                    else:
                        meritBar['text'] = '%s/%s %s' % (merits, totalMerits, TTLocalizer.RewardPanelMeritBarLabels[i])
                else:
                    meritBar['range'] = 1
                    meritBar['value'] = 1
                    meritBar['text'] = TTLocalizer.RewardPanelMeritsMaxed
            else:
                meritBar.hide()
        def dbCallback(dclass,
                       fields,
                       toonId=toonId,
                       suitDeptIndex=suitDeptIndex):
            if dclass != self.air.dclassesByName['DistributedToonAI']:
                return

            parts = fields['setCogParts'][0]
            if CogDisguiseGlobals.isSuitComplete(parts, suitDeptIndex):
                # Code from DistributedToonAI.loseCogParts:
                loseCount = random.randrange(
                    CogDisguiseGlobals.MinPartLoss,
                    CogDisguiseGlobals.MaxPartLoss + 1)

                partBitmask = parts[suitDeptIndex]
                partList = range(17)

                while loseCount > 0 and partList:
                    losePart = random.choice(partList)
                    partList.remove(losePart)

                    losePartBit = 1 << losePart
                    if partBitmask & losePartBit:
                        partBitmask &= ~losePartBit
                        loseCount -= 1

                parts[suitDeptIndex] = partBitmask

                # Update the cog parts in the db:
                self.air.dbInterface.updateObject(
                    self.air.dbId, toonId,
                    self.air.dclassesByName['DistributedToonAI'],
                    {'setCogParts': (parts, )})
    def update(self):
        if not CogDisguiseGlobals.isSuitComplete(base.localAvatar.cogParts, self.deptIndex):
            self.progressBar['text'] = '%s %s' % (
                CogDisguiseGlobals.getPartCountAsString(base.localAvatar.cogParts, self.deptIndex),
                TTLocalizer.DisguiseParts)

            self.progressBar['range'] = CogDisguiseGlobals.PartsPerSuit[self.deptIndex]
            self.progressBar['value'] = CogDisguiseGlobals.getPartCount(base.localAvatar.cogParts, self.deptIndex)
            return

        promoStatus = base.localAvatar.promotionStatus[self.deptIndex]

        if promoStatus != ToontownGlobals.PendingPromotion:
            totalMerits = CogDisguiseGlobals.getTotalMerits(base.localAvatar, self.deptIndex)
            merits = base.localAvatar.cogMerits[self.deptIndex]

            self.progressBar['range'] = totalMerits
            self.progressBar['value'] = merits

            self.progressBar['text'] = '%s/%s %s' % (
            merits, totalMerits, TTLocalizer.RewardPanelMeritBarLabels[self.deptIndex])
        else:
            self.progressBar['range'] = 1
            self.progressBar['value'] = 1

            maxSuitLevel = (SuitDNA.levelsPerSuit - 1) + (SuitDNA.suitsPerDept - 1)
            if base.localAvatar.cogLevels[self.deptIndex] == maxSuitLevel:
                self.progressBar['text'] = TTLocalizer.RewardPanelMeritsMaxed
            else:
                self.progressBar['text'] = TTLocalizer.RewardPanelPromotionPending
예제 #8
0
 def recoverPart(self, toon, factoryType, suitTrack, zoneId, toons):
     recoveredParts = [0, 0, 0, 0]
     parts = toon.getCogParts()
     suitTrack = suitTrackIndex[suitTrack]
     if CogDisguiseGlobals.isSuitComplete(parts, suitTrack):
         return recoveredParts
     recoveredParts[suitTrack] = toon.giveGenericCogPart(factoryType, suitTrack)
     return recoveredParts
예제 #9
0
 def recoverMerits(self, av, cogList, zoneId, multiplier = 1, extraMerits = None):
     avId = av.getDoId()
     meritsRecovered = [0, 0, 0, 0]
     if extraMerits is None:
         extraMerits = [0, 0, 0, 0]
     if self.air.suitInvasionManager.getInvading():
         multiplier *= getInvasionMultiplier()
     for i in xrange(len(extraMerits)):
         if CogDisguiseGlobals.isSuitComplete(av.getCogParts(), i):
             meritsRecovered[i] += extraMerits[i]
             self.notify.debug('recoverMerits: extra merits = %s' % extraMerits[i])
     self.notify.debug('recoverMerits: multiplier = %s' % multiplier)
     for cogDict in cogList:
         dept = SuitDNA.suitDepts.index(cogDict['track'])
         if avId in cogDict['activeToons']:
             if CogDisguiseGlobals.isSuitComplete(av.getCogParts(), SuitDNA.suitDepts.index(cogDict['track'])):
                 self.notify.debug('recoverMerits: checking against cogDict: %s' % cogDict)
                 rand = random.random() * 100
                 if rand <= self.getPercentChance() and not cogDict['isVirtual']:
                     merits = cogDict['level'] * MeritMultiplier
                     merits = int(round(merits))
                     if cogDict['hasRevives']:
                         merits *= 2
                     merits = merits * multiplier
                     merits = int(round(merits))
                     meritsRecovered[dept] += merits
                     self.notify.debug('recoverMerits: merits = %s' % merits)
                 else:
                     self.notify.debug('recoverMerits: virtual cog!')
     if meritsRecovered != [0, 0, 0, 0]:
         actualCounted = [0, 0, 0, 0]
         merits = av.getCogMerits()
         for i in xrange(len(meritsRecovered)):
             max = CogDisguiseGlobals.getTotalMerits(av, i)
             if max:
                 if merits[i] + meritsRecovered[i] <= max:
                     actualCounted[i] = meritsRecovered[i]
                     merits[i] += meritsRecovered[i]
                 else:
                     actualCounted[i] = max - merits[i]
                     merits[i] = max
                 av.b_setCogMerits(merits)
         if reduce(lambda x, y: x + y, actualCounted):
             self.air.writeServerEvent('merits', avId, '%s|%s|%s|%s' % tuple(actualCounted))
             self.notify.debug('recoverMerits: av %s recovered merits %s' % (avId, actualCounted))
     return meritsRecovered
예제 #10
0
 def recoverPart(self, toon, factoryType, suitTrack, zoneId, toons):
     recoveredParts = [0, 0, 0, 0, 0]
     parts = toon.getCogParts()
     suitTrack = suitTrackIndex[suitTrack]
     if CogDisguiseGlobals.isSuitComplete(parts, suitTrack):
         return recoveredParts
     recoveredParts[suitTrack] = toon.giveGenericCogPart(factoryType, suitTrack)
     return recoveredParts
예제 #11
0
    def changeMeritBars(self, hide):
        if not self.meritBars:
            return

        for i in xrange(len(self.meritBars)):
            meritBar = self.meritBars[i]

            if CogDisguiseGlobals.isSuitComplete(base.localAvatar.cogParts, i):
                meritBar.hide() if hide else meritBar.show()
            else:
                meritBar.hide()
예제 #12
0
    def changeMeritBars(self, hide):
        if not self.meritBars:
            return

        for i in xrange(len(self.meritBars)):
            meritBar = self.meritBars[i]

            if CogDisguiseGlobals.isSuitComplete(base.localAvatar.cogParts, i):
                meritBar.hide() if hide else meritBar.show()
            else:
                meritBar.hide()
예제 #13
0
    def recoverPart(self, toon, factoryType, suitTrack):
        if suitTrack not in SuitDNA.suitDepts:
            return

        recoveredParts = [0, 0, 0, 0]
        parts = toon.getCogParts()
        suitTrack = SuitDNA.suitDepts.index(suitTrack)

        if CogDisguiseGlobals.isSuitComplete(parts, suitTrack):
            return recoveredParts

        recoveredParts[suitTrack] = toon.giveGenericCogPart(
            factoryType, suitTrack)
        return recoveredParts
예제 #14
0
    def recoverMerits(self,
                      toon,
                      suitsKilled,
                      zoneId,
                      multiplier=1,
                      extraMerits=None):
        if 1:  #extraMerits is None:
            extraMerits = [0, 0, 0, 0]

        #else:
        # extraMerits = [0, extraMerits, 0, 0]

        # to do: figure out which track we should add extra merits to (check zoneId?)

        amounts = {x: y for x, y in zip(SuitDNA.suitDepts, extraMerits)}
        parts = toon.getCogParts()

        # calc
        for suit in suitsKilled:
            if suit['isVirtual']:
                continue

            track, level = suit['track'], suit['level']
            deptIdx = SuitDNA.suitDepts.index(track)
            if not CogDisguiseGlobals.isSuitComplete(parts, deptIdx):
                continue

            mult = multiplier * (
                getInvasionMultiplier(self.air.suitInvasionManager.isMega())
                if self.air.suitInvasionManager.hasInvading() else 1)
            mult *= int(suit['hasRevives']) + 1

            amount = int((level + 1) / 2 * mult)
            amounts[track] += amount

        merits = toon.getCogMerits()
        am2 = [0, 0, 0, 0]

        for dept, value in amounts.items():
            dept = SuitDNA.suitDepts.index(dept)
            needed = max(
                0,
                CogDisguiseGlobals.getTotalMerits(toon, dept) - merits[dept])
            am2[dept] = min(needed, value)

        # apply
        toon.b_setCogMerits([x + y for x, y in zip(merits, am2)])

        return am2
 def isToonWearingRentalSuit(self, toonId):
     if not self.isToonKnown(toonId):
         self.notify.warning('isToonWearingRentalSuit: unknown toonId %s' %
                             toonId)
         return False
     toon = self.air.doId2do.get(toonId)
     if toon:
         if hasattr(toon,
                    'forceRentalDisguise') and toon.forceRentalDisguise:
             return True
         else:
             return not CogDisguiseGlobals.isSuitComplete(
                 toon.getCogParts(), self.dept)
     else:
         self.notify.warning(
             'isToonWearingRentalSuit: toonId %s does not exist' % toonId)
         return False
예제 #16
0
 def requestEnter(self):
     avId = self.air.getAvatarIdFromSender()
     dept = ToontownGlobals.cogHQZoneId2deptIndex(self.destinationZone)
     av = self.air.doId2do.get(avId)
     if av:
         if self.doorType == DoorTypes.EXT_COGHQ and self.isLockedDoor():
             parts = av.getCogParts()
             if CogDisguiseGlobals.isSuitComplete(parts, dept):
                 allowed = 1
             else:
                 allowed = 0
         else:
             allowed = 1
         if not allowed:
             self.sendReject(avId, self.isLockedDoor())
         else:
             self.enter(avId)
    def removeParts(self, toonId, suitDeptIndex):
        toon = self.air.doId2do.get(toonId)

        # Check if the toon is in our doId2do:
        if toon is not None:
            parts = toon.getCogParts()
            if CogDisguiseGlobals.isSuitComplete(parts, suitDeptIndex):
                toon.loseCogParts(suitDeptIndex)

        def dbCallback(dclass,
                       fields,
                       toonId=toonId,
                       suitDeptIndex=suitDeptIndex):
            if dclass != self.air.dclassesByName['DistributedToonAI']:
                return

            parts = fields['setCogParts'][0]
            if CogDisguiseGlobals.isSuitComplete(parts, suitDeptIndex):
                # Code from DistributedToonAI.loseCogParts:
                loseCount = random.randrange(
                    CogDisguiseGlobals.MinPartLoss,
                    CogDisguiseGlobals.MaxPartLoss + 1)

                partBitmask = parts[suitDeptIndex]
                partList = range(17)

                while loseCount > 0 and partList:
                    losePart = random.choice(partList)
                    partList.remove(losePart)

                    losePartBit = 1 << losePart
                    if partBitmask & losePartBit:
                        partBitmask &= ~losePartBit
                        loseCount -= 1

                parts[suitDeptIndex] = partBitmask

                # Update the cog parts in the db:
                self.air.dbInterface.updateObject(
                    self.air.dbId, toonId,
                    self.air.dclassesByName['DistributedToonAI'],
                    {'setCogParts': (parts, )})

        # It doesn't look like the toon was in our doId2do. Lets query the db:
        self.air.dbInterface.queryObject(self.air.dbId, toonId, dbCallback)
    def removeParts(self, toonId, suitDeptIndex):
        toon = self.air.doId2do.get(toonId)

        # Check if the toon is in our doId2do:
        if toon is not None:
            parts = toon.getCogParts()
            if CogDisguiseGlobals.isSuitComplete(parts, suitDeptIndex):
                toon.loseCogParts(suitDeptIndex)

        def dbCallback(dclass, fields, toonId=toonId, suitDeptIndex=suitDeptIndex):
            if dclass != self.air.dclassesByName['DistributedToonAI']:
                return

            parts = fields['setCogParts'][0]
            if CogDisguiseGlobals.isSuitComplete(parts, suitDeptIndex):
                # Code from DistributedToonAI.loseCogParts:
                loseCount = random.randrange(CogDisguiseGlobals.MinPartLoss,
                                             CogDisguiseGlobals.MaxPartLoss+1)

                partBitmask = parts[suitDeptIndex]
                partList = range(17)

                while loseCount > 0 and partList:
                    losePart = random.choice(partList)
                    partList.remove(losePart)

                    losePartBit = 1 << losePart
                    if partBitmask & losePartBit:
                        partBitmask &= ~losePartBit
                        loseCount -= 1

                parts[suitDeptIndex] = partBitmask

                # Update the cog parts in the db:
                self.air.dbInterface.updateObject(
                    self.air.dbId, toonId,
                    self.air.dclassesByName['DistributedToonAI'],
                    {'setCogParts': (parts,)}
                )

        # It doesn't look like the toon was in our doId2do. Lets query the db:
        self.air.dbInterface.queryObject(self.air.dbId, toonId, dbCallback)
 def recoverMerits(self, toon, suitsKilled, zoneId, mult = 1, extraMerits = None):
     if 1: #extraMerits is None:
         extraMerits = [0, 0, 0, 0]
         
     #else:
         # extraMerits = [0, extraMerits, 0, 0]
     
     # to do: figure out which track we should add extra merits to (check zoneId?)
         
     amounts = {x: y for x, y in zip(SuitDNA.suitDepts, extraMerits)}
     parts = toon.getCogParts()
     
     # calc
     for suit in suitsKilled:
         if suit['isVirtual']:
             continue
             
         track, level = suit['track'], suit['level']
         deptIdx = SuitDNA.suitDepts.index(track)
         if not CogDisguiseGlobals.isSuitComplete(parts, deptIdx):
             continue
         
         mult = (2 if self.air.suitInvasionManager.hasInvading() else 1)
         mult *= int(suit['hasRevives']) + 1
             
         amount = int((level + 1) / 2 * mult) * mult
         amounts[track] += amount
         
     merits = toon.getCogMerits()
     am2 = [0, 0, 0, 0]
     
     for dept, value in amounts.items():
         dept = SuitDNA.suitDepts.index(dept)
         needed = max(0, CogDisguiseGlobals.getTotalMerits(toon, dept) - merits[dept])
         am2[dept] = min(needed, value)
         
     # apply
     toon.b_setCogMerits([x + y for x, y in zip(merits, am2)])
     
     return am2
     
예제 #20
0
 def requestEnter(self):
     avatarId = self.air.getAvatarIdFromSender()
     dept = ToontownGlobals.cogHQZoneId2deptIndex(self.destinationZone)
     av = self.air.doId2do.get(avatarId)
     if av:
         if self.doorType == DoorTypes.EXT_COGHQ and self.isLockedDoor():
             parts = av.getCogParts()
             if CogDisguiseGlobals.isSuitComplete(parts, dept):
                 allowed = 1
             else:
                 allowed = 0
         else:
             allowed = 1
         if not allowed:
             self.sendReject(avatarId, self.isLockedDoor())
             return
         self.enqueueAvatarIdEnter(avatarId)
         self.sendUpdateToAvatarId(
             avatarId, 'setOtherZoneIdAndDoId',
             [self.destinationZone,
              self.otherDoor.getDoId()])
    def update(self):
        if not CogDisguiseGlobals.isSuitComplete(base.localAvatar.cogParts,
                                                 self.deptIndex):
            self.progressBar['text'] = '%s %s' % (
                CogDisguiseGlobals.getPartCountAsString(
                    base.localAvatar.cogParts,
                    self.deptIndex), TTLocalizer.DisguiseParts)

            self.progressBar['range'] = CogDisguiseGlobals.PartsPerSuit[
                self.deptIndex]
            self.progressBar['value'] = CogDisguiseGlobals.getPartCount(
                base.localAvatar.cogParts, self.deptIndex)
            return

        promoStatus = base.localAvatar.promotionStatus[self.deptIndex]

        if promoStatus != ToontownGlobals.PendingPromotion:
            totalMerits = CogDisguiseGlobals.getTotalMerits(
                base.localAvatar, self.deptIndex)
            merits = base.localAvatar.cogMerits[self.deptIndex]

            self.progressBar['range'] = totalMerits
            self.progressBar['value'] = merits

            self.progressBar['text'] = '%s/%s %s' % (
                merits, totalMerits,
                TTLocalizer.RewardPanelMeritBarLabels[self.deptIndex])
        else:
            self.progressBar['range'] = 1
            self.progressBar['value'] = 1

            maxSuitLevel = (SuitDNA.levelsPerSuit -
                            1) + (SuitDNA.suitsPerDept - 1)
            if base.localAvatar.cogLevels[self.deptIndex] == maxSuitLevel:
                self.progressBar['text'] = TTLocalizer.RewardPanelMeritsMaxed
            else:
                self.progressBar[
                    'text'] = TTLocalizer.RewardPanelPromotionPending
예제 #22
0
    def initGagFrame(self, toon, expList, meritList, noSkip=False):
        self.avNameLabel['text'] = toon.getName()
        self.endTrackFrame.hide()
        self.gagExpFrame.show()
        self.newGagFrame.hide()
        self.promotionFrame.hide()
        self.questFrame.hide()
        self.itemFrame.hide()
        self.cogPartFrame.hide()
        self.missedItemFrame.hide()
        trackBarOffset = 0
        self.skipButton['state'] = choice(noSkip, DGG.DISABLED, DGG.NORMAL)
        for i in xrange(len(SuitDNA.suitDepts)):
            meritBar = self.meritBars[i]
            meritLabel = self.meritLabels[i]
            totalMerits = CogDisguiseGlobals.getTotalMerits(toon, i)
            merits = meritList[i]
            self.meritIncLabels[i].hide()
            promoStatus = toon.promotionStatus[i]
            if CogDisguiseGlobals.isSuitComplete(toon.cogParts, i):
                if not self.trackBarsOffset:
                    trackBarOffset = 0.47
                    self.trackBarsOffset = 1
                meritBar.show()
                meritLabel.show()
                meritLabel.show()
                if totalMerits:
                    meritBar['range'] = totalMerits
                    meritBar['value'] = merits
                    if promoStatus != ToontownGlobals.PendingPromotion:
                        meritBar['text'] = '%s/%s %s' % (
                            merits, totalMerits,
                            TTLocalizer.RewardPanelMeritBarLabels[i])
                maxSuitType = SuitDNA.suitsPerDept - 1
                maxSuitLevel = (SuitDNA.levelsPerSuit - 1) + maxSuitType
                if toon.cogLevels[i] == maxSuitLevel:
                    if promoStatus == ToontownGlobals.PendingPromotion:
                        meritBar['range'] = 1
                        meritBar['value'] = 1
                        meritBar['text'] = TTLocalizer.RewardPanelMeritsMaxed
                elif promoStatus == ToontownGlobals.PendingPromotion:
                    meritBar['range'] = 1
                    meritBar['value'] = 1
                    meritBar['text'] = TTLocalizer.RewardPanelPromotionPending
                self.resetMeritBarColor(i)
            else:
                meritBar.hide()
                meritLabel.hide()

        for i in xrange(len(expList)):
            curExp = expList[i]
            trackBar = self.trackBars[i]
            trackLabel = self.trackLabels[i]
            trackIncLabel = self.trackIncLabels[i]
            trackBar.setX(trackBar.getX() - trackBarOffset)
            trackLabel.setX(trackLabel.getX() - trackBarOffset)
            trackIncLabel.setX(trackIncLabel.getX() - trackBarOffset)
            trackIncLabel.hide()
            if toon.hasTrackAccess(i):
                trackBar.show()
                if curExp >= ToontownBattleGlobals.UnpaidMaxSkills[
                        i] and toon.getGameAccess() != OTPGlobals.AccessFull:
                    nextExp = self.getNextExpValue(curExp, i)
                    trackBar['range'] = nextExp
                    trackBar['value'] = ToontownBattleGlobals.UnpaidMaxSkills[
                        i]
                    trackBar['text'] = TTLocalizer.InventoryGuestExp
                elif curExp >= ToontownBattleGlobals.regMaxSkill:
                    nextExp = self.getNextExpValueUber(curExp, i)
                    trackBar['range'] = nextExp
                    uberCurrExp = curExp - ToontownBattleGlobals.regMaxSkill
                    trackBar['value'] = uberCurrExp
                    trackBar['text'] = TTLocalizer.InventoryUberTrackExp % {
                        'nextExp': ToontownBattleGlobals.MaxSkill - curExp
                    }
                else:
                    nextExp = self.getNextExpValue(curExp, i)
                    trackBar['range'] = nextExp
                    trackBar['value'] = curExp
                    trackBar['text'] = '%s/%s' % (curExp, nextExp)
                self.resetBarColor(i)
            else:
                trackBar.hide()
예제 #23
0
    def initGagFrame(self, toon, expList, meritList, noSkip = False):
        self.avNameLabel['text'] = toon.getName()
        self.endTrackFrame.hide()
        self.gagExpFrame.show()
        self.newGagFrame.hide()
        self.promotionFrame.hide()
        self.questFrame.hide()
        self.itemFrame.hide()
        self.cogPartFrame.hide()
        self.missedItemFrame.hide()
        trackBarOffset = 0
        self.skipButton['state'] = choice(noSkip, DGG.DISABLED, DGG.NORMAL)
        for i in xrange(len(SuitDNA.suitDepts)):
            meritBar = self.meritBars[i]
            meritLabel = self.meritLabels[i]
            totalMerits = CogDisguiseGlobals.getTotalMerits(toon, i)
            merits = meritList[i]
            self.meritIncLabels[i].hide()
            if CogDisguiseGlobals.isSuitComplete(toon.cogParts, i):
                if not self.trackBarsOffset:
                    trackBarOffset = 0.47
                    self.trackBarsOffset = 1
                meritBar.show()
                meritLabel.show()
                meritLabel.show()
                if totalMerits:
                    meritBar['range'] = totalMerits
                    meritBar['value'] = merits
                    if merits == totalMerits:
                        meritBar['text'] = TTLocalizer.RewardPanelMeritAlert
                    else:
                        meritBar['text'] = '%s/%s %s' % (merits, totalMerits, TTLocalizer.RewardPanelMeritBarLabels[i])
                else:
                    meritBar['range'] = 1
                    meritBar['value'] = 1
                    meritBar['text'] = TTLocalizer.RewardPanelMeritsMaxed
                self.resetMeritBarColor(i)
            else:
                meritBar.hide()
                meritLabel.hide()

        for i in xrange(len(expList)):
            curExp = expList[i]
            trackBar = self.trackBars[i]
            trackLabel = self.trackLabels[i]
            trackIncLabel = self.trackIncLabels[i]
            trackBar.setX(trackBar.getX() - trackBarOffset)
            trackLabel.setX(trackLabel.getX() - trackBarOffset)
            trackIncLabel.setX(trackIncLabel.getX() - trackBarOffset)
            trackIncLabel.hide()
            if toon.hasTrackAccess(i):
                trackBar.show()
                if curExp >= ToontownBattleGlobals.UnpaidMaxSkills[i] and toon.getGameAccess() != OTPGlobals.AccessFull:
                    nextExp = self.getNextExpValue(curExp, i)
                    trackBar['range'] = nextExp
                    trackBar['value'] = ToontownBattleGlobals.UnpaidMaxSkills[i]
                    trackBar['text'] = TTLocalizer.InventoryGuestExp
                elif curExp >= ToontownBattleGlobals.regMaxSkill:
                    nextExp = self.getNextExpValueUber(curExp, i)
                    trackBar['range'] = nextExp
                    uberCurrExp = curExp - ToontownBattleGlobals.regMaxSkill
                    trackBar['value'] = uberCurrExp
                    trackBar['text'] = TTLocalizer.InventoryUberTrackExp % {'nextExp': ToontownBattleGlobals.MaxSkill - curExp}
                else:
                    nextExp = self.getNextExpValue(curExp, i)
                    trackBar['range'] = nextExp
                    trackBar['value'] = curExp
                    trackBar['text'] = '%s/%s' % (curExp, nextExp)
                self.resetBarColor(i)
            else:
                trackBar.hide()
    def initGagFrame(self, toon, expList, meritList, noSkip=False):
        self.notify.debug('Initializing Gag Frame!')
        self.avNameLabel['text'] = toon.getName()
        self.hqBonusLabel.hide()
        try:
            zoneId = base.cr.playGame.getPlace().getTaskZoneId()
        except:
            zoneId = 0
        if hasattr(base.cr, 'newsManager'):
            if base.cr.newsManager.isHolidayRunning(
                    ToontownGlobals.MORE_XP_HOLIDAY):
                self.multiplierLabel['text'] = "5x Gag Multiplier"
            if base.cr.newsManager.getInvading():
                self.hqBonusLabel['text'] = TTLocalizer.CogInvasionBonus
            if ZoneUtil.isCogHQZone(zoneId):
                self.hqBonusLabel['text'] = TTLocalizer.CogHQBonus
            if base.cr.newsManager.getInvading() and ZoneUtil.isCogHQZone(
                    zoneId):
                self.hqBonusLabel['text'] = TTLocalizer.MegaBonus
        if ZoneUtil.isCogHQZone(zoneId) or self.hqBonusLabel['text'] != '':
            self.hqBonusLabel.show()
            self.growShrink = Sequence(
                LerpScaleInterval(self.hqBonusLabel,
                                  1,
                                  1.1,
                                  0.9,
                                  blendType='easeInOut'),
                LerpScaleInterval(self.hqBonusLabel,
                                  1,
                                  0.9,
                                  1.1,
                                  blendType='easeInOut'))
            self.growShrink.loop()
        self.endTrackFrame.hide()
        self.gagExpFrame.show()
        self.multiplierLabel.show()
        self.newGagFrame.hide()
        self.promotionFrame.hide()
        self.questFrame.hide()
        self.itemFrame.hide()
        self.cogPartFrame.hide()
        self.missedItemFrame.hide()
        trackBarOffset = 0
        self.skipButton['state'] = DGG.DISABLED if noSkip else DGG.NORMAL
        for i in xrange(len(SuitDNA.suitDepts)):
            meritBar = self.meritBars[i]
            meritLabel = self.meritLabels[i]
            totalMerits = CogDisguiseGlobals.getTotalMerits(toon, i)
            merits = meritList[i]
            self.meritIncLabels[i].hide()
            if CogDisguiseGlobals.isSuitComplete(toon.cogParts, i):
                if not self.trackBarsOffset:
                    trackBarOffset = 0.47
                    self.trackBarsOffset = 1
                meritBar.show()
                meritLabel.show()
                meritLabel.show()
                if totalMerits:
                    meritBar['range'] = totalMerits
                    meritBar['value'] = merits
                    if merits == totalMerits:
                        meritBar['text'] = TTLocalizer.RewardPanelMeritAlert
                    else:
                        meritBar['text'] = '%s/%s %s' % (
                            merits, totalMerits,
                            TTLocalizer.RewardPanelMeritBarLabels[i])
                else:
                    meritBar['range'] = 1
                    meritBar['value'] = 1
                    meritBar['text'] = TTLocalizer.RewardPanelMeritsMaxed
                self.resetMeritBarColor(i)
            else:
                meritBar.hide()
                meritLabel.hide()

        for i in xrange(len(expList)):
            curExp = expList[i]
            trackBar = self.trackBars[i]
            trackLabel = self.trackLabels[i]
            trackIncLabel = self.trackIncLabels[i]
            trackBar.setX(trackBar.getX() - trackBarOffset)
            trackLabel.setX(trackLabel.getX() - trackBarOffset)
            trackIncLabel.setX(trackIncLabel.getX() - trackBarOffset)
            trackIncLabel.hide()
            if toon.hasTrackAccess(i):
                trackBar.show()
                if curExp >= ToontownBattleGlobals.UnpaidMaxSkills[
                        i] and toon.getGameAccess() != OTPGlobals.AccessFull:
                    nextExp = self.getNextExpValue(curExp, i)
                    trackBar['range'] = nextExp
                    trackBar['value'] = ToontownBattleGlobals.UnpaidMaxSkills[
                        i]
                    trackBar['text'] = TTLocalizer.InventoryGuestExp
                elif curExp >= ToontownBattleGlobals.regMaxSkill:
                    nextExp = self.getNextExpValueUber(curExp, i)
                    trackBar['range'] = nextExp
                    uberCurrExp = curExp - ToontownBattleGlobals.regMaxSkill
                    trackBar['value'] = uberCurrExp
                    trackBar['text'] = TTLocalizer.InventoryUberTrackExp % {
                        'nextExp': ToontownBattleGlobals.MaxSkill - curExp
                    }
                else:
                    nextExp = self.getNextExpValue(curExp, i)
                    trackBar['range'] = nextExp
                    trackBar['value'] = curExp
                    trackBar['text'] = '%s/%s' % (curExp, nextExp)
                self.resetBarColor(i)
            else:
                trackBar.hide()
예제 #25
0
 def removeParts(self, toon, suitDept):
     parts = toon.getCogParts()
     if CogDisguiseGlobals.isSuitComplete(parts, suitDept):
         toon.loseCogParts(suitDept)
예제 #26
0
    def initGagFrame(self, toon, expList, meritList):
        self.avNameLabel['text'] = toon.getName()
        self.endTrackFrame.hide()
        self.gagExpFrame.show()
        self.newGagFrame.hide()
        self.promotionFrame.hide()
        self.questFrame.hide()
        self.itemFrame.hide()
        self.cogPartFrame.hide()
        self.missedItemFrame.hide()

        trackBarOffset = 0

        # Initialize the cog merit bars if enabled
        for i in range(len(SuitDNA.suitDepts)):
            meritBar = self.meritBars[i]
            meritLabel = self.meritLabels[i]
            totalMerits = CogDisguiseGlobals.getTotalMerits(toon, i)
            merits = meritList[i]
            self.meritIncLabels[i].hide()
            # if we are have a full suit then we are working on promotions
            if CogDisguiseGlobals.isSuitComplete(toon.cogParts, i):
                # if we don't show the merit bar, we must shift the skill bars left
                if not self.trackBarsOffset:
                    trackBarOffset = 0.47
                    # only do this once! :)
                    self.trackBarsOffset = 1
                meritBar.show()
                meritLabel.show()
                meritLabel.show()
                if totalMerits:
                    meritBar["range"] = totalMerits
                    meritBar["value"] = merits
                    if merits == totalMerits:
                        meritBar["text"] = TTLocalizer.RewardPanelMeritAlert
                    else:
                        meritBar["text"] = ("%s/%s %s" % (merits,
                                                          totalMerits,
                                                          TTLocalizer.RewardPanelMeritBarLabels[i],))
                else:
                    # if total merits = None, this dept is maxed out
                    meritBar["range"] = 1
                    meritBar["value"] = 1
                    meritBar["text"] = TTLocalizer.RewardPanelMeritsMaxed
                self.resetMeritBarColor(i)
            else:
                meritBar.hide()
                meritLabel.hide()

        # Initialize all the bars with the current and next exp
        for i in range(len(expList)):
            curExp = expList[i]
            trackBar = self.trackBars[i]
            trackLabel = self.trackLabels[i]
            trackIncLabel = self.trackIncLabels[i]
            trackBar.setX(trackBar.getX() - trackBarOffset)
            trackLabel.setX(trackLabel.getX() - trackBarOffset)
            trackIncLabel.setX(trackIncLabel.getX() - trackBarOffset)
            trackIncLabel.hide()
            if toon.hasTrackAccess(i):
                trackBar.show()

                if curExp >= ToontownBattleGlobals.UnpaidMaxSkill and toon.getGameAccess() != OTPGlobals.AccessFull:
                    nextExp = self.getNextExpValue(curExp, i)
                    trackBar["range"] = nextExp
                    trackBar["value"] = ToontownBattleGlobals.UnpaidMaxSkill
                    trackBar["text"] = (TTLocalizer.InventoryGuestExp)

                elif curExp >= ToontownBattleGlobals.regMaxSkill:
                    nextExp = self.getNextExpValueUber(curExp, i)
                    trackBar["range"] = nextExp
                    uberCurrExp = curExp - ToontownBattleGlobals.regMaxSkill
                    trackBar["value"] = uberCurrExp
                    trackBar["text"] = (TTLocalizer.InventoryUberTrackExp %
                                                  {"nextExp": ToontownBattleGlobals.MaxSkill - curExp,})
                else:
                    nextExp = self.getNextExpValue(curExp, i)
                    trackBar["range"] = nextExp
                    trackBar["value"] = curExp
                    trackBar["text"] = ("%s/%s" % (curExp, nextExp))
                self.resetBarColor(i)
            else:
                trackBar.hide()


        return
예제 #27
0
 def removeParts(self, toon, suitDept):
     parts = toon.getCogParts()
     if CogDisguiseGlobals.isSuitComplete(parts, suitDept):
         toon.loseCogParts(suitDept)