def __generateSOS(self, difficulty):
        g = lambda : random.choice(NPCToons.FOnpcFriends.keys())
        v = g()
        getStars = lambda x: NPCToons.getNPCTrackLevelHpRarity(x)[-1]
        maxStars = min(2, int(math.ceil(difficulty / 5.0)))
        minStars = max(0, maxStars - 1)
        while not minStars <= getStars(v) <= maxStars:
            v = g()

        return v
    def __generateSOS(self, difficulty):
        g = lambda: random.choice(NPCToons.FOnpcFriends.keys())
        v = g()
        getStars = lambda x: NPCToons.getNPCTrackLevelHpRarity(x)[-1]
        maxStars = min(2, int(math.ceil(difficulty / 5.0)))
        minStars = max(0, maxStars - 1)
        while not minStars <= getStars(v) <= maxStars:
            v = g()

        return v
 def __generateSOS(self, difficulty):
     g = lambda: random.choice(NPCToons.FOnpcFriends.keys())
     v = g()
     getStars = lambda x: NPCToons.getNPCTrackLevelHpRarity(x)[-1]
     maxStars = min(2, int(math.ceil(difficulty / 5.)))
     minStars = max(0, maxStars - 1)
     while not (minStars <= getStars(v) <= maxStars):
         v = g()
     self.notify.info('selected SOS %s (stars = %s)' % (v, getStars(v)))
     return v
    def update(self, NPCID, count = 0, fCallable = 0):
        oldNPCID = self['NPCID']
        self['NPCID'] = NPCID
        if NPCID != oldNPCID:
            if self.NPCHead:
                self.NPCHead.detachNode()
                self.NPCHead.delete()
            if NPCID is None:
                self.showBack()
                return
            self.front.show()
            self.back.hide()
            self.NPCName['text'] = TTLocalizer.NPCToonNames[NPCID]
            self.NPCHead = self.createNPCToonHead(NPCID, dimension=self.NPCHeadDim)
            self.NPCHead.reparentTo(self.front)
            self.NPCHead.setZ(self.NPCHeadPosZ)
            track, level, hp, rarity = NPCToons.getNPCTrackLevelHpRarity(NPCID)
            if track == 100:
                sosText = TTLocalizer.InventoryFire
            else:
                sosText = self.sosTracks[track]
            if track == ToontownBattleGlobals.NPC_RESTOCK_GAGS:
                if level == -1:
                    sosText += ' All'
                else:
                    sosText += ' ' + self.sosTracks[level]
            sosText = TextEncoder.upper(sosText)
            self.sosTypeInfo['text'] = sosText
            for i in xrange(self.maxRarity):
                if i < rarity:
                    self.rarityStars[i].show()
                else:
                    self.rarityStars[i].hide()

        if fCallable:
            self.sosCallButton.show()
            self.sosCountInfo.setPos(-0.4, 0, self.sosCountInfoPosZ)
            self.sosCountInfo['text_scale'] = self.sosCountInfoScale
            self.sosCountInfo['text_align'] = TextNode.ALeft
        else:
            self.sosCallButton.hide()
            self.sosCountInfo.setPos(0, 0, self.sosCountInfo2PosZ)
            self.sosCountInfo['text_scale'] = self.sosCountInfo2Scale
            self.sosCountInfo['text_align'] = TextNode.ACenter
        if count > 0:
            countText = TTLocalizer.NPCFriendPanelRemaining % count
            self.sosCallButton['state'] = DGG.NORMAL
        else:
            countText = 'Unavailable'
            self.sosCallButton['state'] = DGG.DISABLED
        
        self.sosCountInfo['text'] = countText
 def __generateSOS(self, difficulty):
     g = lambda: random.choice(NPCToons.FOnpcFriends.keys())
     v = g()
     
     getStars = lambda x: NPCToons.getNPCTrackLevelHpRarity(x)[-1]
     
     maxStars = min(2, int(math.ceil(difficulty / 5.)))
     minStars = max(0, maxStars - 1)
     
     while not (minStars <= getStars(v) <= maxStars):
         v = g()
         
     self.notify.info('selected SOS %s (stars = %s)' % (v, getStars(v)))
     return v
Esempio n. 6
0
 def npcFriendsMaxStars(stars):
     return [
         id for id in NPCToons.npcFriends.keys()
         if NPCToons.getNPCTrackLevelHpRarity(id)[3] <= stars
     ]
    def setValues(self, index, track, level = None, numTargets = None, targetIndex = None, localNum = None):
        self.notify.debug('Toon Panel setValues: index=%s track=%s level=%s numTargets=%s targetIndex=%s localNum=%s' % (index,
         track,
         level,
         numTargets,
         targetIndex,
         localNum))
        self.undecidedText.hide()
        self.sosText.hide()
        self.fireText.hide()
        self.gagNode.hide()
        self.whichText.hide()
        self.passNode.hide()
        self.cleanupSosHead()
        self.hoverButton.unbind(DGG.ENTER)
        if self.hasGag:
            self.gag.removeNode()
            self.hasGag = 0
        if track == BattleBase.NO_ATTACK or track == BattleBase.UN_ATTACK:
            self.undecidedText.show()
        elif track == BattleBase.PASS_ATTACK:
            self.passNode.show()
        elif track == BattleBase.FIRE:
            self.fireText.show()
            self.whichText.show()
            self.whichText['text'] = self.determineWhichText(numTargets, targetIndex, localNum, index)
        elif track == BattleBase.NPCSOS:
            self.sosHead = createNPCToonHead(targetIndex)
            self.sosHead.reparentTo(self)
            self.sosHead.setPos(0.1, 0, 0.045)
            self.sosHead.setScale(0.24)
            track, level, hp, rarity = NPCToons.getNPCTrackLevelHpRarity(targetIndex)
            sosType = self.sosTracks[track]

            if track == NPC_RESTOCK_GAGS:
                if level == -1:
                    sosType += ' All'
                else:
                    sosType += ' ' + self.sosTracks[level]

            if hp:
                hpString = TTLocalizer.BattleSOSPopupHP % (TTLocalizer.BattleSOSPopupHeal if track == HEAL_TRACK else TTLocalizer.BattleSOSPopupHarm, hp)
            
            sosType = TextEncoder.upper(sosType)
            count = max(0, self.avatar.getNPCFriendCount(targetIndex) - 1)
            info = TTLocalizer.BattleSOSPopup % (sosType, NPCToons.getNPCName(targetIndex), hpString if hp else '', rarity, count)
            self.hoverButton.bind(DGG.ENTER, self.battle.showRolloverFrame, extraArgs=[self, TTLocalizer.BattleHoverSos, info])
        elif track == BattleBase.SOS or track == BattleBase.PETSOS:
            self.sosText.show()
        elif track >= MIN_TRACK_INDEX and track <= MAX_TRACK_INDEX:
            self.undecidedText.hide()
            self.passNode.hide()
            self.gagNode.show()
            invButton = base.localAvatar.inventory.buttonLookup(track, level)
            self.gag = invButton.instanceUnderNode(self.gagNode, 'gag')
            self.gag.setScale(0.8)
            self.gag.setPos(0, 0, 0.02)
            self.hasGag = 1
            if self.avatar:
                curExp, nextExp = self.avatar.inventory.getCurAndNextExpValues(track)
                organic = self.avatar.checkGagBonus(track, level)
                damage = int(getAvPropDamage(track, level, curExp, organic))
                numItems = max(0, self.avatar.inventory.numItem(track, level) - 1)
                info = TTLocalizer.BattleGagPopup % (self.avatar.inventory.getToonupDmgStr(track, 0), damage, numItems)
                self.hoverButton.bind(DGG.ENTER, self.battle.showRolloverFrame, extraArgs=[self, TTLocalizer.BattleHoverGag, info])

                if self.avatar.checkGagBonus(track, level):
                    self.gag.setColor((1, 0, 0, 1) if track == 1 and level == 5 else (0, 1, 0, 1))
            if numTargets is not None and targetIndex is not None and localNum is not None:
                self.whichText.show()
                self.whichText['text'] = self.determineWhichText(numTargets, targetIndex, localNum, index)
        else:
            self.notify.error('Bad track value: %s' % track)
Esempio n. 8
0
    def setValues(self,
                  index,
                  track,
                  level=None,
                  numTargets=None,
                  targetIndex=None,
                  localNum=None):
        self.notify.debug(
            'Toon Panel setValues: index=%s track=%s level=%s numTargets=%s targetIndex=%s localNum=%s'
            % (index, track, level, numTargets, targetIndex, localNum))
        self.undecidedText.hide()
        self.sosText.hide()
        self.fireText.hide()
        self.gagNode.hide()
        self.whichText.hide()
        self.passNode.hide()
        self.cleanupSosHead()
        self.hoverButton.unbind(DGG.ENTER)
        if self.hasGag:
            self.gag.removeNode()
            self.hasGag = 0
        if track == BattleBase.NO_ATTACK or track == BattleBase.UN_ATTACK:
            self.undecidedText.show()
        elif track == BattleBase.PASS_ATTACK:
            self.passNode.show()
        elif track == BattleBase.FIRE:
            self.fireText.show()
            self.whichText.show()
            self.whichText['text'] = self.determineWhichText(
                numTargets, targetIndex, localNum, index)
        elif track == BattleBase.NPCSOS:
            self.sosHead = createNPCToonHead(targetIndex)
            self.sosHead.reparentTo(self)
            self.sosHead.setPos(0.1, 0, 0.045)
            self.sosHead.setScale(0.24)
            track, level, hp, rarity = NPCToons.getNPCTrackLevelHpRarity(
                targetIndex)
            sosType = self.sosTracks[track]

            if track == NPC_RESTOCK_GAGS:
                if level == -1:
                    sosType += ' All'
                else:
                    sosType += ' ' + self.sosTracks[level]

            if hp:
                hpString = TTLocalizer.BattleSOSPopupHP % (
                    TTLocalizer.BattleSOSPopupHeal if track == HEAL_TRACK else
                    TTLocalizer.BattleSOSPopupHarm, hp)

            sosType = TextEncoder.upper(sosType)
            count = max(0, self.avatar.getNPCFriendCount(targetIndex) - 1)
            info = TTLocalizer.BattleSOSPopup % (
                sosType, NPCToons.getNPCName(targetIndex),
                hpString if hp else '', rarity, count)
            self.hoverButton.bind(
                DGG.ENTER,
                self.battle.showRolloverFrame,
                extraArgs=[self, TTLocalizer.BattleHoverSos, info])
        elif track == BattleBase.SOS or track == BattleBase.PETSOS:
            self.sosText.show()
        elif track >= MIN_TRACK_INDEX and track <= MAX_TRACK_INDEX:
            self.undecidedText.hide()
            self.passNode.hide()
            self.gagNode.show()
            invButton = base.localAvatar.inventory.buttonLookup(track, level)
            self.gag = invButton.instanceUnderNode(self.gagNode, 'gag')
            self.gag.setScale(0.8)
            self.gag.setPos(0, 0, 0.02)
            self.hasGag = 1
            if self.avatar:
                curExp, nextExp = self.avatar.inventory.getCurAndNextExpValues(
                    track)
                organic = self.avatar.checkGagBonus(track, level)
                damage = int(getAvPropDamage(track, level, curExp, organic))
                numItems = max(0,
                               self.avatar.inventory.numItem(track, level) - 1)
                info = TTLocalizer.BattleGagPopup % (
                    self.avatar.inventory.getToonupDmgStr(track,
                                                          0), damage, numItems)
                self.hoverButton.bind(
                    DGG.ENTER,
                    self.battle.showRolloverFrame,
                    extraArgs=[self, TTLocalizer.BattleHoverGag, info])

                if self.avatar.checkGagBonus(track, level):
                    self.gag.setColor((
                        1, 0, 0, 1) if track == 1 and level == 5 else (0, 1, 0,
                                                                       1))
            if numTargets is not None and targetIndex is not None and localNum is not None:
                self.whichText.show()
                self.whichText['text'] = self.determineWhichText(
                    numTargets, targetIndex, localNum, index)
        else:
            self.notify.error('Bad track value: %s' % track)