def updateQuestInfo(self):
        for marker in self.buildingMarkers:
            marker.destroy()

        self.buildingMarkers = []
        dnaData = base.cr.playGame.dnaData
        for questIndex in self.av.questPage.quests.keys():
            questDesc = self.av.questPage.quests.get(questIndex)
            if questDesc is None:
                continue
            mapIndex = questIndex + 1
            questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc
            quest = Quests.getQuest(questId)
            fComplete = quest.getCompletionStatus(self.av, questDesc) == Quests.COMPLETE
            if not fComplete:
                if quest.getType() == Quests.RecoverItemQuest:
                    if quest.getHolder() == Quests.AnyFish:
                        self.putBuildingMarker(self.fishingSpotInfo, mapIndex=mapIndex)
                    continue
                elif quest.getType() != Quests.DeliverGagQuest and quest.getType() != Quests.DeliverItemQuest and quest.getType() != Quests.VisitQuest and quest.getType() != Quests.TrackChoiceQuest:
                    continue
            if toNpcId == Quests.ToonHQ:
                self.putBuildingMarker(self.hqPosInfo, mapIndex=mapIndex)
            else:
                npcZone = NPCToons.getNPCZone(toNpcId)
                hoodId = ZoneUtil.getCanonicalHoodId(npcZone)
                branchId = ZoneUtil.getCanonicalBranchZone(npcZone)
                if self.hoodId == hoodId and self.zoneId == branchId:
                    for blockId, block in dnaData.getBlocks():
                        zone = block.zone
                        branchZone = zone - zone % 100
                        finalZone = branchZone + 500 + blockId
                        if npcZone == finalZone:
                            building = block.node
                            self.putBuildingMarker(Point3(building.getPos()), building.getHpr(), mapIndex=mapIndex)
예제 #2
0
    def showChoicePoster(self, questId, fromNpcId, toNpcId, rewardId, callback):
        self.update((questId,
         fromNpcId,
         toNpcId,
         rewardId,
         0))
        quest = Quests.getQuest(questId)
        self.rewardText.show()
        self.rewardText.setZ(-0.205)
        self.questProgress.hide()
        if not hasattr(self, 'chooseButton'):
            guiButton = loader.loadModel('phase_3/models/gui/quit_button')
            self.chooseButton = DirectButton(parent=self.questFrame, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(0.7, 1, 1), text=TTLocalizer.QuestPageChoose, text_scale=0.06, text_pos=(0, -0.02), pos=(0.285, 0, 0.245), scale=0.65)
            guiButton.removeNode()
        npcZone = NPCToons.getNPCZone(toNpcId)
        hoodId = ZoneUtil.getCanonicalHoodId(npcZone)
        if not base.cr.isPaid() and (questId == 401 or hasattr(quest, 'getLocation') and quest.getLocation() == 1000 or hoodId == 1000):

            def showTeaserPanel():
                TeaserPanel(pageName='getGags')

            self.chooseButton['command'] = showTeaserPanel
        else:
            self.chooseButton['command'] = callback
            self.chooseButton['extraArgs'] = [questId]
        self.unbind(DGG.WITHIN)
        self.unbind(DGG.WITHOUT)
        if not quest.getType() == Quests.TrackChoiceQuest:
            self.questInfo.setZ(-0.0625)
        return
예제 #3
0
    def showChoicePoster(self, questId, fromNpcId, toNpcId, rewardId, callback):
        self.update((questId,
         fromNpcId,
         toNpcId,
         rewardId,
         0))
        quest = Quests.getQuest(questId)
        self.rewardText.show()
        self.rewardText.setZ(-0.205)
        self.questProgress.hide()
        if not hasattr(self, 'chooseButton'):
            guiButton = loader.loadModel('phase_3/models/gui/quit_button')
            self.chooseButton = DirectButton(parent=self.questFrame, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(0.7, 1, 1), text=TTLocalizer.QuestPageChoose, text_scale=0.06, text_pos=(0, -0.02), pos=(0.285, 0, 0.245), scale=0.65)
            guiButton.removeNode()
        npcZone = NPCToons.getNPCZone(toNpcId)
        hoodId = ZoneUtil.getCanonicalHoodId(npcZone)
        if not base.cr.isPaid() and (questId == 401 or hasattr(quest, 'getLocation') and quest.getLocation() == 1000 or hoodId == 1000):

            def showTeaserPanel():
                TeaserPanel(pageName='getGags')

            self.chooseButton['command'] = showTeaserPanel
        else:
            self.chooseButton['command'] = callback
            self.chooseButton['extraArgs'] = [questId]
        self.unbind(DGG.WITHIN)
        self.unbind(DGG.WITHOUT)
        if not quest.getType() == Quests.TrackChoiceQuest:
            self.questInfo.setZ(-0.0625)
        return
    def teleportToShop(self, npcId):
        if base.cr.playGame.getPlace().getState() != 'walk':
            return

        npcZone = NPCToons.getNPCZone(npcId)
        npcHood = ZoneUtil.getCanonicalHoodId(npcZone)
        hqZone = {2000:2520, 1000:1507, 3000:3508, 4000:4504, 5000:5502, 7000:7503, 9000:9505}

        if npcZone in (-1, 0, None):
            zoneId = base.localAvatar.getZoneId()
            if ZoneUtil.isDynamicZone(zoneId) or ZoneUtil.isCogHQZone(zoneId):
                zoneId = 2000 
            npcHood = ZoneUtil.getCanonicalHoodId(zoneId)
            npcZone = hqZone.get(npcHood, 2520)
        
        cost = ToontownGlobals.getTeleportButtonCost(npcHood)
        self.destroyDialog()
        base.cr.playGame.getPlace().setState('stopped')
        
        if base.localAvatar.getTotalMoney() < cost:
            self.dialog = TTDialog.TTDialog(style=TTDialog.Acknowledge, text=TTLocalizer.TeleportButtonNoMoney % cost, command=self.destroyDialog)
        else:
            self.dialog = TTDialog.TTDialog(style=TTDialog.YesNo, text=TTLocalizer.TeleportButtonConfirm % cost, command=lambda value: self.teleportToShopConfirm(npcZone, npcHood, cost, value))

        self.dialog.show()
예제 #5
0
    def updateQuestInfo(self):
        for marker in self.buildingMarkers:
            marker.destroy()

        self.buildingMarkers = []

        for (i, questDesc) in enumerate(self.av.quests):
            mapIndex = i + 1
            quest = Quests.getQuest(questDesc[0])
            toNpcId = questDesc[2]

            completed = quest.getCompletionStatus(self.av,
                                                  questDesc) == Quests.COMPLETE
            if not completed:
                if quest.getType() == Quests.RecoverItemQuest:
                    if quest.getHolder() == Quests.AnyFish:
                        self.putBuildingMarker(self.fishingSpotInfo,
                                               mapIndex=mapIndex)
                    continue
                elif quest.getType() not in (Quests.DeliverGagQuest,
                                             Quests.DeliverItemQuest,
                                             Quests.VisitQuest,
                                             Quests.TrackChoiceQuest):
                    continue

            if toNpcId == Quests.ToonHQ:
                self.putBuildingMarker(self.hqPosInfo, mapIndex=mapIndex)
                continue

            npcZoneId = NPCToons.getNPCZone(toNpcId)
            hoodId = ZoneUtil.getCanonicalHoodId(npcZoneId)
            branchId = ZoneUtil.getCanonicalBranchZone(npcZoneId)

            if (self.hoodId != hoodId) or (self.zoneId != branchId):
                continue

            for blockIndex in xrange(
                    base.cr.playGame.dnaStore.getNumBlockNumbers()):
                blockNumber = base.cr.playGame.dnaStore.getBlockNumberAt(
                    blockIndex)
                zoneId = base.cr.playGame.dnaStore.getZoneFromBlockNumber(
                    blockNumber)
                interiorZoneId = (zoneId - (zoneId % 100)) + 500 + blockNumber
                if npcZoneId == interiorZoneId:
                    self.putBuildingMarker(
                        base.cr.playGame.dnaStore.getDoorPosHprFromBlockNumber(
                            blockNumber).getPos(render),
                        base.cr.playGame.dnaStore.getDoorPosHprFromBlockNumber(
                            blockNumber).getHpr(render),
                        mapIndex=mapIndex,
                        zoneId=zoneId)
예제 #6
0
    def updateQuestInfo(self):
        for marker in self.buildingMarkers:
            marker.destroy()

        self.buildingMarkers = []
        dnaStore = base.cr.playGame.dnaStore
        for questIndex in self.av.questPage.quests.keys():
            questDesc = self.av.questPage.quests.get(questIndex)
            if questDesc is None:
                continue
            mapIndex = questIndex + 1
            questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc
            quest = Quests.getQuest(questId)
            fComplete = quest.getCompletionStatus(self.av,
                                                  questDesc) == Quests.COMPLETE
            if not fComplete:
                if quest.getType() == Quests.RecoverItemQuest:
                    if quest.getHolder() == Quests.AnyFish:
                        self.putBuildingMarker(self.fishingSpotInfo,
                                               mapIndex=mapIndex)
                    continue
                elif quest.getType(
                ) != Quests.DeliverGagQuest and quest.getType(
                ) != Quests.DeliverItemQuest and quest.getType(
                ) != Quests.VisitQuest and quest.getType(
                ) != Quests.TrackChoiceQuest:
                    continue
            if toNpcId == Quests.ToonHQ:
                self.putBuildingMarker(self.hqPosInfo, mapIndex=mapIndex)
            else:
                npcZone = NPCToons.getNPCZone(toNpcId)
                hoodId = ZoneUtil.getCanonicalHoodId(npcZone)
                branchId = ZoneUtil.getCanonicalBranchZone(npcZone)
                if self.hoodId == hoodId and self.zoneId == branchId:
                    for blockIndex in xrange(dnaStore.getNumBlockTitles()):
                        blockNumber = dnaStore.getTitleBlockAt(blockIndex)
                        zone = dnaStore.getZoneFromBlockNumber(blockNumber)
                        branchZone = zone - zone % 100
                        finalZone = branchZone + 500 + blockNumber
                        buildingType = dnaStore.getBlockBuildingType(
                            blockNumber)
                        if npcZone == finalZone:
                            self.putBuildingMarker(
                                dnaStore.getDoorPosHprFromBlockNumber(
                                    blockNumber).getPos(),
                                dnaStore.getDoorPosHprFromBlockNumber(
                                    blockNumber).getHpr(),
                                mapIndex=mapIndex)

        return
예제 #7
0
    def updateQuestInfo(self):
        for marker in self.buildingMarkers:
            marker.destroy()

        self.buildingMarkers = []
        dnaStore = base.cr.playGame.dnaStore
        for questIndex in self.av.questPage.quests.keys():
            questDesc = self.av.questPage.quests.get(questIndex)
            if questDesc is None:
                continue
            mapIndex = questIndex + 1
            questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc
            quest = Quests.getQuest(questId)
            fComplete = quest.getCompletionStatus(self.av, questDesc) == Quests.COMPLETE
            if not fComplete:
                if quest.getType() == Quests.RecoverItemQuest:
                    if quest.getHolder() == Quests.AnyFish:
                        self.putBuildingMarker(self.fishingSpotInfo, mapIndex=mapIndex)
                    continue
                elif (
                    quest.getType() != Quests.DeliverGagQuest
                    and quest.getType() != Quests.DeliverItemQuest
                    and quest.getType() != Quests.VisitQuest
                    and quest.getType() != Quests.TrackChoiceQuest
                ):
                    continue
            if toNpcId == Quests.ToonHQ:
                self.putBuildingMarker(self.hqPosInfo, mapIndex=mapIndex)
            else:
                npcZone = NPCToons.getNPCZone(toNpcId)
                hoodId = ZoneUtil.getCanonicalHoodId(npcZone)
                branchId = ZoneUtil.getCanonicalBranchZone(npcZone)
                if self.hoodId == hoodId and self.zoneId == branchId:
                    for blockIndex in xrange(dnaStore.getNumBlockTitles()):
                        blockNumber = dnaStore.getTitleBlockAt(blockIndex)
                        zone = dnaStore.getZoneFromBlockNumber(blockNumber)
                        branchZone = zone - zone % 100
                        finalZone = branchZone + 500 + blockNumber
                        buildingType = dnaStore.getBlockBuildingType(blockNumber)
                        if npcZone == finalZone:
                            self.putBuildingMarker(
                                dnaStore.getDoorPosHprFromBlockNumber(blockNumber).getPos(),
                                dnaStore.getDoorPosHprFromBlockNumber(blockNumber).getHpr(),
                                mapIndex=mapIndex,
                            )

        return
예제 #8
0
    def updateQuestInfo(self):
        for marker in self.buildingMarkers:
            marker.destroy()

        self.buildingMarkers = []
        dnaData = base.cr.playGame.dnaData
        for questIndex in self.av.questPage.quests.keys():
            questDesc = self.av.questPage.quests.get(questIndex)
            if questDesc is None:
                continue
            mapIndex = questIndex + 1
            questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc
            quest = Quests.getQuest(questId)
            fComplete = quest.getCompletionStatus(self.av,
                                                  questDesc) == Quests.COMPLETE
            if not fComplete:
                if quest.getType() == Quests.RecoverItemQuest:
                    if quest.getHolder() == Quests.AnyFish:
                        self.putBuildingMarker(self.fishingSpotInfo,
                                               mapIndex=mapIndex)
                    continue
                elif quest.getType(
                ) != Quests.DeliverGagQuest and quest.getType(
                ) != Quests.DeliverItemQuest and quest.getType(
                ) != Quests.VisitQuest and quest.getType(
                ) != Quests.TrackChoiceQuest:
                    continue
            if toNpcId == Quests.ToonHQ:
                self.putBuildingMarker(self.hqPosInfo, mapIndex=mapIndex)
            else:
                npcZone = NPCToons.getNPCZone(toNpcId)
                hoodId = ZoneUtil.getCanonicalHoodId(npcZone)
                branchId = ZoneUtil.getCanonicalBranchZone(npcZone)
                if self.hoodId == hoodId and self.zoneId == branchId:
                    for blockId, block in dnaData.getBlocks():
                        zone = block.zone
                        branchZone = zone - zone % 100
                        finalZone = branchZone + 500 + blockId
                        if npcZone == finalZone:
                            building = block.node
                            self.putBuildingMarker(Point3(building.getPos()),
                                                   building.getHpr(),
                                                   mapIndex=mapIndex)
예제 #9
0
    def updateQuestInfo(self):
        for marker in self.buildingMarkers:
            marker.destroy()

        self.buildingMarkers = []

        for (i, questDesc) in enumerate(self.av.quests):
            mapIndex = i + 1
            quest = Quests.getQuest(questDesc[0])
            toNpcId = questDesc[2]

            completed = quest.getCompletionStatus(self.av, questDesc) == Quests.COMPLETE
            if not completed:
                if quest.getType() == Quests.RecoverItemQuest:
                    if quest.getHolder() == Quests.AnyFish:
                        self.putBuildingMarker(self.fishingSpotInfo, mapIndex=mapIndex)
                    continue
                elif quest.getType() not in (
                    Quests.DeliverGagQuest, Quests.DeliverItemQuest,
                    Quests.VisitQuest, Quests.TrackChoiceQuest):
                    continue

            if toNpcId == Quests.ToonHQ:
                self.putBuildingMarker(self.hqPosInfo, mapIndex=mapIndex)
                continue

            npcZoneId = NPCToons.getNPCZone(toNpcId)
            hoodId = ZoneUtil.getCanonicalHoodId(npcZoneId)
            branchId = ZoneUtil.getCanonicalBranchZone(npcZoneId)

            if (self.hoodId != hoodId) or (self.zoneId != branchId):
                continue

            for blockIndex in xrange(base.cr.playGame.dnaStore.getNumBlockNumbers()):
                blockNumber = base.cr.playGame.dnaStore.getBlockNumberAt(blockIndex)
                zoneId = base.cr.playGame.dnaStore.getZoneFromBlockNumber(blockNumber)
                interiorZoneId = (zoneId - (zoneId%100)) + 500 + blockNumber
                if npcZoneId == interiorZoneId:
                    self.putBuildingMarker(
                        base.cr.playGame.dnaStore.getDoorPosHprFromBlockNumber(blockNumber).getPos(render),
                        base.cr.playGame.dnaStore.getDoorPosHprFromBlockNumber(blockNumber).getHpr(render),
                        mapIndex=mapIndex)
예제 #10
0
 def teleportToShop(self, npcId):
     npcZone = NPCToons.getNPCZone(npcId)
     npcHood = ZoneUtil.getCanonicalHoodId(npcZone)
     avZone = base.localAvatar.getZoneId()
     avHood = ZoneUtil.getCanonicalHoodId(avZone)
     avShard = base.localAvatar.defaultShard
     avPlace = base.cr.playGame.getPlace()
     hqZone = {2000:2520, 1000:1507, 3000:3508, 4000:4504, 5000:5502, 7000:7503, 9000:9505}
     def callback(flag):
         if flag:
             npcZone = None
     base.cr.buildingQueryMgr.d_isSuit(npcZone, callback)
     if avShard not in base.cr.activeDistrictMap:
         return
     if npcZone in [-1, 0, None]:
         return
     if not ZoneUtil.isInterior(npcZone):
         return
     if ZoneUtil.isHQ(npcZone):
         args = (avHood, hqZone[avHood], avShard, -1)
     else:
         args = (npcHood, npcZone, avShard, -1)
     avPlace.requestTeleport(*args)
예제 #11
0
    def update(self, questDesc):
        questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc
        quest = Quests.getQuest(questId)
        if quest == None:
            self.notify.warning('Tried to display poster for unknown quest %s' % questId)
            return
        if rewardId == Quests.NA:
            finalReward = Quests.getFinalRewardId(questId, fAll=1)
            transformedReward = Quests.transformReward(finalReward, base.localAvatar)
            reward = Quests.getReward(transformedReward)
        else:
            reward = Quests.getReward(rewardId)
        if reward and questId not in Quests.NoRewardTierZeroQuests:
            rewardString = reward.getPosterString()
        else:
            rewardString = ''
        self.rewardText['text'] = rewardString
        self.fitLabel(self.rewardText)
        if Quests.isQuestJustForFun(questId, rewardId):
            self.funQuest.show()
        else:
            self.funQuest.hide()
        if self._deleteCallback:
            self.showDeleteButton(questDesc)
        else:
            self.hideDeleteButton()
            
        fComplete = quest.getCompletionStatus(base.localAvatar, questDesc) == Quests.COMPLETE

        if Quests.isQuestJustForFun(questId, rewardId):
            if fComplete:
                self.funQuest.hide()
        
        if toNpcId == Quests.ToonHQ:
            toNpcName = TTLocalizer.QuestPosterHQOfficer
            toNpcBuildingName = TTLocalizer.QuestPosterHQBuildingName
            toNpcStreetName = TTLocalizer.QuestPosterHQStreetName
            toNpcLocationName = TTLocalizer.QuestPosterHQLocationName
            
        elif toNpcId == Quests.ToonTailor:
            toNpcName = TTLocalizer.QuestPosterTailor
            toNpcBuildingName = TTLocalizer.QuestPosterTailorBuildingName
            toNpcStreetName = TTLocalizer.QuestPosterTailorStreetName
            toNpcLocationName = TTLocalizer.QuestPosterTailorLocationName
            
        else:
            toNpcName = NPCToons.getNPCName(toNpcId)
            toNpcZone = NPCToons.getNPCZone(toNpcId)
            toNpcHoodId = ZoneUtil.getCanonicalHoodId(toNpcZone)
            toNpcLocationName = base.cr.hoodMgr.getFullnameFromId(toNpcHoodId)
            toNpcBuildingName = NPCToons.getBuildingTitle(toNpcZone)
            toNpcBranchId = ZoneUtil.getBranchZone(toNpcZone)
            toNpcStreetName = ZoneUtil.getStreetName(toNpcBranchId)
            
        lPos = Vec3(0, 0, 0.13)
        lIconGeom = None
        lIconGeomScale = 1
        rIconGeom = None
        rIconGeomScale = 1
        infoText = ''
        infoZ = TTLocalizer.QPinfoZ
        auxText = None
        auxTextPos = Vec3(0, 0, 0.12)
        headlineString = quest.getHeadlineString()
        objectiveStrings = quest.getObjectiveStrings()
        captions = map(lambda x: str(x).title(), quest.getObjectiveStrings())
        imageColor = Vec4(*self.colors['white'])
        if quest.getType() == Quests.DeliverGagQuest or quest.getType() == Quests.DeliverItemQuest:
            frameBgColor = 'red'
            
            if quest.getType() == Quests.DeliverGagQuest:
                invModel = loader.loadModel('phase_3.5/models/gui/inventory_icons')
                track, item = quest.getGagType()
                lIconGeom = invModel.find('**/' + AvPropsNew[track][item])
                invModel.removeNode()
                
            else:
                bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
                lIconGeom = bookModel.find('**/package')
                lIconGeomScale = 0.12
                bookModel.removeNode()
                
            if not fComplete:
                captions.append(toNpcName)
                auxText = TTLocalizer.QuestPosterAuxTo
                auxTextPos.setZ(0.12)
                lPos.setX(-0.18)
                infoText = TTLocalizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName)
                rIconGeom = self.createNpcToonHead(toNpcId)
                rIconGeomScale = IMAGE_SCALE_SMALL
                
        elif quest.getType() == Quests.RecoverItemQuest:
            frameBgColor = 'green'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/package')
            lIconGeomScale = 0.12
            bookModel.removeNode()
            
            if not fComplete:
                rIconGeomScale = IMAGE_SCALE_SMALL
                holder = quest.getHolder()
                holderType = quest.getHolderType()
                
                if holder == Quests.Any:
                    cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                    rIconGeom = cogIcons.find('**/cog')
                    cogIcons.removeNode()
                    lPos.setX(-0.18)
                    auxText = TTLocalizer.QuestPosterAuxFrom
                    
                elif holder == Quests.AnyFish:
                    headlineString = TTLocalizer.QuestPosterFishing
                    auxText = TTLocalizer.QuestPosterAuxFor
                    auxTextPos.setX(-0.18)
                    captions = captions[:1]
                    
                else:
                    if holderType == 'track':
                        cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                        if holder == 'c':
                            icon = cogIcons.find('**/CorpIcon')
                        elif holder == 's':
                            icon = cogIcons.find('**/SalesIcon')
                        elif holder == 'l':
                            icon = cogIcons.find('**/LegalIcon')
                        elif holder == 'm':
                            icon = cogIcons.find('**/MoneyIcon')
                        rIconGeom = icon.copyTo(hidden)
                        rIconGeom.setColor(Suit.Suit.medallionColors[holder])
                        rIconGeomScale = 0.12
                        cogIcons.removeNode()
                        
                    elif holderType == 'level':
                        cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                        rIconGeom = cogIcons.find('**/cog')
                        rIconGeomScale = IMAGE_SCALE_SMALL
                        cogIcons.removeNode()
                        
                    else:
                        rIconGeom = self.createSuitHead(holder)
                        
                    lPos.setX(-0.18)
                    auxText = TTLocalizer.QuestPosterAuxFrom
                    
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
                    
        elif quest.getType() == Quests.VisitQuest:
            frameBgColor = 'brown'
            captions[0] = '%s' % toNpcName
            lIconGeom = self.createNpcToonHead(toNpcId)
            lIconGeomScale = IMAGE_SCALE_SMALL
            
            if not fComplete:
                infoText = TTLocalizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName)
                
        elif quest.getType() == Quests.TrackChoiceQuest:
            frameBgColor = 'green'
            invModel = loader.loadModel('phase_3.5/models/gui/inventory_icons')
            track1, track2 = quest.getChoices()
            lIconGeom = invModel.find('**/' + AvPropsNew[track1][1])
            
            if not fComplete:
                auxText = TTLocalizer.QuestPosterAuxOr
                lPos.setX(-0.18)
                rIconGeom = invModel.find('**/' + AvPropsNew[track2][1])
                infoText = TTLocalizer.QuestPageNameAndDestination % (toNpcName,
                 toNpcBuildingName,
                 toNpcStreetName,
                 toNpcLocationName)
                infoZ = -0.02
                
            invModel.removeNode()
            
        elif quest.getType() == Quests.BuildingQuest:
            frameBgColor = 'blue'
            track = quest.getBuildingTrack()
            numFloors = quest.getNumFloors()
            
            if track == 'c':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_corp')
                
            elif track == 'l':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_legal')
                
            elif track == 'm':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_money')
                
            elif track == 's':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_sales')
                
            else:
                bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
                lIconGeom = bookModel.find('**/COG_building')
                bookModel.removeNode()
                
            if lIconGeom and track != Quests.Any:
                self.loadElevator(lIconGeom, numFloors)
                lIconGeom.setH(180)
                self.fitGeometry(lIconGeom, fFlip=0)
                lIconGeomScale = IMAGE_SCALE_SMALL
                
            else:
                lIconGeomScale = 0.13
                
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
                    
        # cogdo quest
        elif quest.getType() == Quests.CogdoQuest:
            frameBgColor = 'lightGreen'
            track = quest.getBuildingTrack()
            
            if track == 'c':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_corp')
                
            elif track == 'l':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_legal')
                    
            elif track == 'm':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_money')
                
            elif track == 's':
                lIconGeom = loader.loadModel('phase_4/models/modules/suit_landmark_sales')
                
            else:
                lIconGeom = loader.loadModel('phase_5/models/cogdominium/tt_m_ara_cbe_fieldOfficeMoverShaker')
                
            if lIconGeom and track != Quests.Any:
                lIconGeom.setH(180)
            
            else:
                lIconGeom.setH(180)
            
            self.fitGeometry(lIconGeom)
            lIconGeomScale = IMAGE_SCALE_SMALL
                            
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        
        elif quest.getType() == Quests.FactoryQuest:
            frameBgColor = 'blue'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/factoryIcon2')
            bookModel.removeNode()
            lIconGeomScale = 0.13
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        
        elif quest.getType() == Quests.MintQuest:
            frameBgColor = 'blue'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/CashBotMint')
            bookModel.removeNode()
            lIconGeomScale = 0.13
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        
        elif quest.getType() == Quests.ForemanQuest or quest.getType() == Quests.SupervisorQuest:
            frameBgColor = 'blue'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/skelecog5')
            bookModel.removeNode()
            lIconGeomScale = 0.13
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
                    
        elif quest.getType() == Quests.BossQuest:
            frameBgColor = 'blue'
            cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
            lIconGeom = cogIcons.find('**/cog')
            lIconGeomScale = IMAGE_SCALE_SMALL
            cogIcons.removeNode()
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
     
        elif quest.getType() == Quests.VPQuest:
            frameBgColor = 'blue'
            lIconGeom = loader.loadModel('phase_9/models/char/sellbotBoss-head-zero')
            lIconGeomPos = [0, 0, -0.055]
            lIconGeomHpr = [-90, 0, -90]
            lIconGeomScale = 0.015
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        
        elif quest.getType() == Quests.CFOQuest:
            frameBgColor = 'blue'
            lIconGeom = loader.loadModel('phase_10/models/char/cashbotBoss-head-zero')
            lIconGeomPos = [0, 0, -0.055]
            lIconGeomHpr = [90, 0, -90]
            lIconGeomScale = 0.015
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
                    
        elif quest.getType() == Quests.CJQuest:
            frameBgColor = 'blue'
            lIconGeom = loader.loadModel('phase_11/models/char/lawbotBoss-head-zero')
            lIconGeomPos = [0, 0, -0.055]
            lIconGeomHpr = [90, 0, -90]
            lIconGeomScale = 0.025
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
                    
        elif quest.getType() == Quests.CEOQuest:
            frameBgColor = 'blue'
            lIconGeom = loader.loadModel('phase_12/models/char/bossbotBoss-head-zero')
            lIconGeomPos = [0, 0, -0.065]
            lIconGeomHpr = [90, 0, -90]
            lIconGeomScale = 0.0125
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
        
        elif 0:#quest.getType() == Quests.FriendQuest:
            frameBgColor = 'brown'
            gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui')
            lIconGeom = gui.find('**/FriendsBox_Closed')
            lIconGeomScale = 0.45
            gui.removeNode()
            infoText = TTLocalizer.QuestPosterAnywhere
        
        elif quest.getType() == Quests.TrolleyQuest:
            frameBgColor = 'lightBlue'
            gui = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = gui.find('**/trolley')
            lIconGeomScale = 0.13
            gui.removeNode()
            infoText = TTLocalizer.QuestPosterPlayground
        
        elif quest.getType() == Quests.MailboxQuest:
            frameBgColor = 'lightBlue'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/package')
            lIconGeomScale = 0.12
            bookModel.removeNode()
            infoText = TTLocalizer.QuestPosterAtHome
        
        elif quest.getType() == Quests.PhoneQuest:
            frameBgColor = 'lightBlue'
            bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
            lIconGeom = bookModel.find('**/clarabelleCow')
            lIconGeomScale = 0.12
            bookModel.removeNode()
            infoText = TTLocalizer.QuestPosterOnPhone
            
        else:
            frameBgColor = 'blue'
            if quest.getType() == Quests.CogTrackQuest:
                dept = quest.getCogTrack()
                cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                lIconGeomScale = 0.13
                if dept == 'c':
                    icon = cogIcons.find('**/CorpIcon')
                elif dept == 's':
                    icon = cogIcons.find('**/SalesIcon')
                elif dept == 'l':
                    icon = cogIcons.find('**/LegalIcon')
                elif dept == 'm':
                    icon = cogIcons.find('**/MoneyIcon')
                lIconGeom = icon.copyTo(hidden)
                lIconGeom.setColor(Suit.Suit.medallionColors[dept])
                cogIcons.removeNode()
                
            elif quest.getType() == Quests.CogQuest:
                if quest.getCogType() != Quests.Any:
                    lIconGeom = self.createSuitHead(quest.getCogType())
                    lIconGeomScale = IMAGE_SCALE_SMALL
                else:
                    cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                    lIconGeom = cogIcons.find('**/cog')
                    lIconGeomScale = IMAGE_SCALE_SMALL
                    cogIcons.removeNode()
                    
            elif quest.getType() == Quests.CogLevelQuest:
                cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                lIconGeom = cogIcons.find('**/cog')
                lIconGeomScale = IMAGE_SCALE_SMALL
                cogIcons.removeNode()
                
            elif quest.getType() == Quests.SkelecogTrackQuest:
                dept = quest.getCogTrack()
                cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                lIconGeomScale = 0.13
                if dept == 'c':
                    icon = cogIcons.find('**/CorpIcon')
                elif dept == 's':
                    icon = cogIcons.find('**/SalesIcon')
                elif dept == 'l':
                    icon = cogIcons.find('**/LegalIcon')
                elif dept == 'm':
                    icon = cogIcons.find('**/MoneyIcon')
                lIconGeom = icon.copyTo(hidden)
                lIconGeom.setColor(Suit.Suit.medallionColors[dept])
                cogIcons.removeNode()
                
            elif quest.getType() == Quests.SkelecogQuest:
                cogIcons = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
                lIconGeom = cogIcons.find('**/skelecog5')
                lIconGeomScale = IMAGE_SCALE_SMALL
                cogIcons.removeNode()
                
            elif quest.getType() == Quests.SkelecogLevelQuest:
                cogIcons = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
                lIconGeom = cogIcons.find('**/skelecog5')
                lIconGeomScale = IMAGE_SCALE_SMALL
                cogIcons.removeNode()

            elif quest.getType() == Quests.SkeleReviveQuest:
                cogIcons = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
                lIconGeom = cogIcons.find('**/skelecog5')
                lIconGeomScale = IMAGE_SCALE_SMALL
                cogIcons.removeNode()
                
            if not fComplete:
                infoText = quest.getLocationName()
                if infoText == '':
                    infoText = TTLocalizer.QuestPosterAnywhere
                    
        if fComplete:
            textColor = (0, 0.3, 0, 1)
            imageColor = Vec4(*self.colors['lightGreen'])
            lPos.setX(-0.18)
            rIconGeom = self.createNpcToonHead(toNpcId)
            rIconGeomScale = IMAGE_SCALE_SMALL
            captions = captions[:1]
            captions.append(toNpcName)
            auxText = TTLocalizer.QuestPosterAuxReturnTo
            headlineString = TTLocalizer.QuestPosterComplete
            infoText = TTLocalizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName)
            if self.laffMeter != None:
                self.laffMeter.reparentTo(hidden)
                self.laffMeter.destroy()
                self.laffMeter = None
        else:
            textColor = self.normalTextColor
            
        self.show()
        self['image_color'] = imageColor
        self.headline['text_fg'] = textColor
        self.headline['text'] = headlineString
        self.lPictureFrame.show()
        self.lPictureFrame.setPos(lPos)
        self.lPictureFrame['text_scale'] = TEXT_SCALE
        if lPos[0] != 0:
            self.lPictureFrame['text_scale'] = 0.0325
        self.lPictureFrame['text'] = captions[0]
        self.lPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor])
        if len(captions) > 1:
            self.rPictureFrame.show()
            self.rPictureFrame['text'] = captions[1]
            self.rPictureFrame['text_scale'] = 0.0325
            self.rPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor])
        else:
            self.rPictureFrame.hide()
        self._deleteGeoms()
        
        self.lQuestIcon['geom'] = lIconGeom
        self.lQuestIcon['geom_pos'] = (0, 10, 0)
            
        if lIconGeom:
            try:
                self.lQuestIcon['geom_scale'] = lIconGeomScale
            except:
                pass
            try:
                self.lQuestIcon['geom_pos'] = Point3(lIconGeomPos[0], lIconGeomPos[1], lIconGeomPos[2])
            except:
                pass
            try:
                self.lQuestIcon['geom_hpr'] = Point3(lIconGeomHpr[0], lIconGeomHpr[1], lIconGeomHpr[2])
            except:
                pass
            
        if self.laffMeter != None:
            self.laffMeter.reparentTo(self.lQuestIcon)
            
        self.rQuestIcon['geom'] = rIconGeom
        self.rQuestIcon['geom_pos'] = (0, 10, 0)
        if rIconGeom:
            self.rQuestIcon['geom_scale'] = rIconGeomScale
            
        if auxText:
            self.auxText.show()
            self.auxText['text'] = auxText
            self.auxText.setPos(auxTextPos)
        else:
            self.auxText.hide()
        self.bind(DGG.WITHIN, self.mouseEnterPoster)
        self.bind(DGG.WITHOUT, self.mouseExitPoster)
        numQuestItems = quest.getNumQuestItems()
        if fComplete or numQuestItems <= 1:
            self.questProgress.hide()
            if not quest.getType() == Quests.TrackChoiceQuest:
                infoZ = -0.075
        else:
            self.questProgress.show()
            self.questProgress['value'] = toonProgress & pow(2, 16) - 1
            self.questProgress['range'] = numQuestItems
            self.questProgress['text'] = quest.getProgressString(base.localAvatar, questDesc)
        self.questInfo['text'] = infoText
        self.questInfo.setZ(infoZ)
        self.fitLabel(self.questInfo)
        return
예제 #12
0
 def update(self, questDesc):
     questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc
     quest = Quests.getQuest(questId)
     if quest == None:
         self.notify.warning(
             'Tried to display poster for unknown quest %s' % questId)
         return
     if rewardId == Quests.NA:
         finalReward = Quests.getFinalRewardId(questId, fAll=1)
         transformedReward = Quests.transformReward(finalReward,
                                                    base.localAvatar)
         reward = Quests.getReward(transformedReward)
     else:
         reward = Quests.getReward(rewardId)
     if reward and questId not in Quests.NoRewardTierZeroQuests:
         rewardString = reward.getPosterString()
     else:
         rewardString = ''
     self.rewardText['text'] = rewardString
     self.fitLabel(self.rewardText)
     if Quests.isQuestJustForFun(questId, rewardId):
         self.funQuest.show()
     else:
         self.funQuest.hide()
     if self._deleteCallback:
         self.showDeleteButton(questDesc)
     else:
         self.hideDeleteButton()
     fComplete = quest.getCompletionStatus(base.localAvatar,
                                           questDesc) == Quests.COMPLETE
     if toNpcId == Quests.ToonHQ:
         toNpcName = TTLocalizer.QuestPosterHQOfficer
         toNpcBuildingName = TTLocalizer.QuestPosterHQBuildingName
         toNpcStreetName = TTLocalizer.QuestPosterHQStreetName
         toNpcLocationName = TTLocalizer.QuestPosterHQLocationName
     elif toNpcId == Quests.ToonTailor:
         toNpcName = TTLocalizer.QuestPosterTailor
         toNpcBuildingName = TTLocalizer.QuestPosterTailorBuildingName
         toNpcStreetName = TTLocalizer.QuestPosterTailorStreetName
         toNpcLocationName = TTLocalizer.QuestPosterTailorLocationName
     else:
         toNpcName = NPCToons.getNPCName(toNpcId)
         toNpcZone = NPCToons.getNPCZone(toNpcId)
         toNpcHoodId = ZoneUtil.getCanonicalHoodId(toNpcZone)
         toNpcLocationName = base.cr.hoodMgr.getFullnameFromId(toNpcHoodId)
         toNpcBuildingName = NPCToons.getBuildingTitle(toNpcZone)
         toNpcBranchId = ZoneUtil.getBranchZone(toNpcZone)
         toNpcStreetName = ZoneUtil.getStreetName(toNpcBranchId)
     lPos = Vec3(0, 0, 0.13)
     lIconGeom = None
     lIconGeomScale = 1
     rIconGeom = None
     rIconGeomScale = 1
     infoText = ''
     infoZ = TTLocalizer.QPinfoZ
     auxText = None
     auxTextPos = Vec3(0, 0, 0.12)
     headlineString = quest.getHeadlineString()
     objectiveStrings = quest.getObjectiveStrings()
     captions = list(map(string.capwords, quest.getObjectiveStrings()))
     imageColor = Vec4(*self.colors['white'])
     if quest.getType() == Quests.DeliverGagQuest or quest.getType(
     ) == Quests.DeliverItemQuest:
         frameBgColor = 'red'
         if quest.getType() == Quests.DeliverGagQuest:
             invModel = loader.loadModel(
                 'phase_3.5/models/gui/inventory_icons')
             track, item = quest.getGagType()
             lIconGeom = invModel.find('**/' + AvPropsNew[track][item])
             invModel.removeNode()
         else:
             bookModel = loader.loadModel(
                 'phase_3.5/models/gui/stickerbook_gui')
             lIconGeom = bookModel.find('**/package')
             lIconGeomScale = 0.12
             bookModel.removeNode()
         if not fComplete:
             captions.append(toNpcName)
             auxText = TTLocalizer.QuestPosterAuxTo
             auxTextPos.setZ(0.12)
             lPos.setX(-0.18)
             infoText = TTLocalizer.QuestPageDestination % (
                 toNpcBuildingName, toNpcStreetName, toNpcLocationName)
             rIconGeom = self.createNpcToonHead(toNpcId)
             rIconGeomScale = IMAGE_SCALE_SMALL
     elif quest.getType() == Quests.RecoverItemQuest:
         frameBgColor = 'green'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         lIconGeom = bookModel.find('**/package')
         lIconGeomScale = 0.12
         bookModel.removeNode()
         if not fComplete:
             rIconGeomScale = IMAGE_SCALE_SMALL
             holder = quest.getHolder()
             holderType = quest.getHolderType()
             if holder == Quests.Any:
                 cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                 rIconGeom = cogIcons.find('**/cog')
                 cogIcons.removeNode()
                 lPos.setX(-0.18)
                 auxText = TTLocalizer.QuestPosterAuxFrom
             elif holder == Quests.AnyFish:
                 headlineString = TTLocalizer.QuestPosterFishing
                 auxText = TTLocalizer.QuestPosterAuxFor
                 auxTextPos.setX(-0.18)
                 captions = captions[:1]
             else:
                 if holderType == 'track':
                     cogIcons = loader.loadModel(
                         'phase_3/models/gui/cog_icons')
                     if holder == 'c':
                         icon = cogIcons.find('**/CorpIcon')
                     elif holder == 's':
                         icon = cogIcons.find('**/SalesIcon')
                     elif holder == 'l':
                         icon = cogIcons.find('**/LegalIcon')
                     elif holder == 'm':
                         icon = cogIcons.find('**/MoneyIcon')
                     rIconGeom = icon.copyTo(hidden)
                     rIconGeom.setColor(Suit.Suit.medallionColors[holder])
                     rIconGeomScale = 0.12
                     cogIcons.removeNode()
                 elif holderType == 'level':
                     cogIcons = loader.loadModel(
                         'phase_3/models/gui/cog_icons')
                     rIconGeom = cogIcons.find('**/cog')
                     rIconGeomScale = IMAGE_SCALE_SMALL
                     cogIcons.removeNode()
                 else:
                     rIconGeom = self.createSuitHead(holder)
                 lPos.setX(-0.18)
                 auxText = TTLocalizer.QuestPosterAuxFrom
             infoText = string.capwords(quest.getLocationName())
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.VisitQuest:
         frameBgColor = 'brown'
         captions[0] = '%s' % toNpcName
         lIconGeom = self.createNpcToonHead(toNpcId)
         lIconGeomScale = IMAGE_SCALE_SMALL
         if not fComplete:
             infoText = TTLocalizer.QuestPageDestination % (
                 toNpcBuildingName, toNpcStreetName, toNpcLocationName)
     elif quest.getType() == Quests.TrackChoiceQuest:
         frameBgColor = 'green'
         invModel = loader.loadModel('phase_3.5/models/gui/inventory_icons')
         track1, track2 = quest.getChoices()
         lIconGeom = invModel.find('**/' + AvPropsNew[track1][1])
         if not fComplete:
             auxText = TTLocalizer.QuestPosterAuxOr
             lPos.setX(-0.18)
             rIconGeom = invModel.find('**/' + AvPropsNew[track2][1])
             infoText = TTLocalizer.QuestPageNameAndDestination % (
                 toNpcName, toNpcBuildingName, toNpcStreetName,
                 toNpcLocationName)
             infoZ = -0.02
         invModel.removeNode()
     elif quest.getType() == Quests.BuildingQuest:
         frameBgColor = 'blue'
         track = quest.getBuildingTrack()
         numFloors = quest.getNumFloors()
         if track == 'c':
             lIconGeom = loader.loadModel(
                 'phase_4/models/modules/suit_landmark_corp')
         elif track == 'l':
             lIconGeom = loader.loadModel(
                 'phase_4/models/modules/suit_landmark_legal')
         elif track == 'm':
             lIconGeom = loader.loadModel(
                 'phase_4/models/modules/suit_landmark_money')
         elif track == 's':
             lIconGeom = loader.loadModel(
                 'phase_4/models/modules/suit_landmark_sales')
         else:
             bookModel = loader.loadModel(
                 'phase_3.5/models/gui/stickerbook_gui')
             lIconGeom = bookModel.find('**/COG_building')
             bookModel.removeNode()
         if lIconGeom and track != Quests.Any:
             self.loadElevator(lIconGeom, numFloors)
             lIconGeom.setH(180)
             self.fitGeometry(lIconGeom, fFlip=0)
             lIconGeomScale = IMAGE_SCALE_SMALL
         else:
             lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.BuildingNewbieQuest:
         frameBgColor = 'blue'
         track = quest.getBuildingTrack()
         numFloors = quest.getNumFloors()
         if track == 'c':
             rIconGeom = loader.loadModel(
                 'phase_4/models/modules/suit_landmark_corp')
         elif track == 'l':
             rIconGeom = loader.loadModel(
                 'phase_4/models/modules/suit_landmark_legal')
         elif track == 'm':
             rIconGeom = loader.loadModel(
                 'phase_4/models/modules/suit_landmark_money')
         elif track == 's':
             rIconGeom = loader.loadModel(
                 'phase_4/models/modules/suit_landmark_sales')
         else:
             bookModel = loader.loadModel(
                 'phase_3.5/models/gui/stickerbook_gui')
             rIconGeom = bookModel.find('**/COG_building')
             bookModel.removeNode()
         if rIconGeom and track != Quests.Any:
             self.loadElevator(rIconGeom, numFloors)
             rIconGeom.setH(180)
             self.fitGeometry(rIconGeom, fFlip=0)
             rIconGeomScale = IMAGE_SCALE_SMALL
         else:
             rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(
                 list(map(string.capwords, quest.getObjectiveStrings())))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.FactoryQuest:
         frameBgColor = 'blue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         lIconGeom = bookModel.find('**/factoryIcon2')
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.FactoryNewbieQuest:
         frameBgColor = 'blue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         rIconGeom = bookModel.find('**/factoryIcon2')
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(
                 list(map(string.capwords, quest.getObjectiveStrings())))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.MintQuest:
         frameBgColor = 'blue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         lIconGeom = bookModel.find('**/CashBotMint')
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.MintNewbieQuest:
         frameBgColor = 'blue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         rIconGeom = bookModel.find('**/CashBotMint')
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(
                 list(map(string.capwords, quest.getObjectiveStrings())))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.CogPartQuest:
         frameBgColor = 'green'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         lIconGeom = bookModel.find('**/CogArmIcon2')
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.CogPartNewbieQuest:
         frameBgColor = 'green'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         rIconGeom = bookModel.find('**/CogArmIcon2')
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(
                 list(map(string.capwords, quest.getObjectiveStrings())))
             auxText = TTLocalizer.QuestsCogPartQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.ForemanQuest or quest.getType(
     ) == Quests.SupervisorQuest:
         frameBgColor = 'blue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         lIconGeom = bookModel.find('**/skelecog5')
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.ForemanNewbieQuest or quest.getType(
     ) == Quests.SupervisorNewbieQuest:
         frameBgColor = 'blue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         rIconGeom = bookModel.find('**/skelecog5')
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(
                 list(map(string.capwords, quest.getObjectiveStrings())))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.VPQuest:
         frameBgColor = 'blue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         lIconGeom = bookModel.find('**/BossHead3Icon')
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.VPNewbieQuest:
         frameBgColor = 'blue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         rIconGeom = bookModel.find('**/BossHead3Icon')
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(
                 list(map(string.capwords, quest.getObjectiveStrings())))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.CFOQuest:
         frameBgColor = 'blue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         lIconGeom = bookModel.find('**/CashBotBossHeadIcon')
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.CFONewbieQuest:
         frameBgColor = 'blue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         rIconGeom = bookModel.find('**/CashBotBossHeadIcon')
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(
                 list(map(string.capwords, quest.getObjectiveStrings())))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.RescueQuest:
         frameBgColor = 'blue'
         lIconGeom = self.createNpcToonHead(2001)
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.RescueNewbieQuest:
         frameBgColor = 'blue'
         rIconGeom = self.createNpcToonHead(2001)
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(
                 list(map(string.capwords, quest.getObjectiveStrings())))
             auxText = TTLocalizer.QuestsRescueQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.FriendQuest:
         frameBgColor = 'brown'
         gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui')
         lIconGeom = gui.find('**/FriendsBox_Closed')
         lIconGeomScale = 0.45
         gui.removeNode()
         infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.FriendNewbieQuest:
         frameBgColor = 'brown'
         gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui')
         lIconGeom = gui.find('**/FriendsBox_Closed')
         lIconGeomScale = 0.45
         gui.removeNode()
         infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.TrolleyQuest:
         frameBgColor = 'lightBlue'
         gui = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
         lIconGeom = gui.find('**/trolley')
         lIconGeomScale = 0.13
         gui.removeNode()
         infoText = TTLocalizer.QuestPosterPlayground
     elif quest.getType() == Quests.MailboxQuest:
         frameBgColor = 'lightBlue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         lIconGeom = bookModel.find('**/package')
         lIconGeomScale = 0.12
         bookModel.removeNode()
         infoText = TTLocalizer.QuestPosterAtHome
     elif quest.getType() == Quests.PhoneQuest:
         frameBgColor = 'lightBlue'
         bookModel = loader.loadModel(
             'phase_3.5/models/gui/stickerbook_gui')
         lIconGeom = bookModel.find('**/clarabelleCow')
         lIconGeomScale = 0.12
         bookModel.removeNode()
         infoText = TTLocalizer.QuestPosterOnPhone
     elif quest.getType() == Quests.MinigameNewbieQuest:
         frameBgColor = 'lightBlue'
         gui = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
         rIconGeom = gui.find('**/trolley')
         rIconGeomScale = 0.13
         gui.removeNode()
         infoText = TTLocalizer.QuestPosterPlayground
         if not fComplete:
             captions = [
                 TTLocalizer.QuestsMinigameNewbieQuestCaption %
                 quest.getNewbieLevel()
             ]
             captions.append(
                 list(map(string.capwords, quest.getObjectiveStrings())))
             auxText = TTLocalizer.QuestsMinigameNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     else:
         frameBgColor = 'blue'
         if quest.getType() == Quests.CogTrackQuest:
             dept = quest.getCogTrack()
             cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
             lIconGeomScale = 0.13
             if dept == 'c':
                 icon = cogIcons.find('**/CorpIcon')
             elif dept == 's':
                 icon = cogIcons.find('**/SalesIcon')
             elif dept == 'l':
                 icon = cogIcons.find('**/LegalIcon')
             elif dept == 'm':
                 icon = cogIcons.find('**/MoneyIcon')
             lIconGeom = icon.copyTo(hidden)
             lIconGeom.setColor(Suit.Suit.medallionColors[dept])
             cogIcons.removeNode()
         elif quest.getType() == Quests.CogQuest:
             if quest.getCogType() != Quests.Any:
                 lIconGeom = self.createSuitHead(quest.getCogType())
                 lIconGeomScale = IMAGE_SCALE_SMALL
             else:
                 cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                 lIconGeom = cogIcons.find('**/cog')
                 lIconGeomScale = IMAGE_SCALE_SMALL
                 cogIcons.removeNode()
         elif quest.getType() == Quests.CogLevelQuest:
             cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
             lIconGeom = cogIcons.find('**/cog')
             lIconGeomScale = IMAGE_SCALE_SMALL
             cogIcons.removeNode()
         elif quest.getType() == Quests.CogNewbieQuest:
             if quest.getCogType() != Quests.Any:
                 rIconGeom = self.createSuitHead(quest.getCogType())
                 rIconGeomScale = IMAGE_SCALE_SMALL
             else:
                 cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
                 rIconGeom = cogIcons.find('**/cog')
                 rIconGeomScale = IMAGE_SCALE_SMALL
                 cogIcons.removeNode()
             if not fComplete:
                 headlineString = TTLocalizer.QuestsNewbieQuestHeadline
                 captions = [quest.getCaption()]
                 captions.append(
                     list(map(string.capwords,
                              quest.getObjectiveStrings())))
                 auxText = TTLocalizer.QuestsCogNewbieQuestAux
                 lPos.setX(-0.18)
                 self.laffMeter = self.createLaffMeter(
                     quest.getNewbieLevel())
                 self.laffMeter.setScale(0.04)
                 lIconGeom = None
             else:
                 lIconGeom = rIconGeom
                 rIconGeom = None
                 lIconGeomScale = rIconGeomScale
                 rIconGeomScale = 1
         elif quest.getType() == Quests.SkelecogTrackQuest:
             dept = quest.getCogTrack()
             cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
             lIconGeomScale = 0.13
             if dept == 'c':
                 icon = cogIcons.find('**/CorpIcon')
             elif dept == 's':
                 icon = cogIcons.find('**/SalesIcon')
             elif dept == 'l':
                 icon = cogIcons.find('**/LegalIcon')
             elif dept == 'm':
                 icon = cogIcons.find('**/MoneyIcon')
             lIconGeom = icon.copyTo(hidden)
             lIconGeom.setColor(Suit.Suit.medallionColors[dept])
             cogIcons.removeNode()
         elif quest.getType() == Quests.SkelecogQuest:
             cogIcons = loader.loadModel(
                 'phase_3.5/models/gui/stickerbook_gui')
             lIconGeom = cogIcons.find('**/skelecog5')
             lIconGeomScale = IMAGE_SCALE_SMALL
             cogIcons.removeNode()
         elif quest.getType() == Quests.SkelecogLevelQuest:
             cogIcons = loader.loadModel(
                 'phase_3.5/models/gui/stickerbook_gui')
             lIconGeom = cogIcons.find('**/skelecog5')
             lIconGeomScale = IMAGE_SCALE_SMALL
             cogIcons.removeNode()
         elif quest.getType() == Quests.SkelecogNewbieQuest:
             cogIcons = loader.loadModel(
                 'phase_3.5/models/gui/stickerbook_gui')
             rIconGeom = cogIcons.find('**/skelecog5')
             rIconGeomScale = IMAGE_SCALE_SMALL
             cogIcons.removeNode()
             if not fComplete:
                 headlineString = TTLocalizer.QuestsNewbieQuestHeadline
                 captions = [quest.getCaption()]
                 captions.append(
                     list(map(string.capwords,
                              quest.getObjectiveStrings())))
                 auxText = TTLocalizer.QuestsCogNewbieQuestAux
                 lPos.setX(-0.18)
                 self.laffMeter = self.createLaffMeter(
                     quest.getNewbieLevel())
                 self.laffMeter.setScale(0.04)
                 lIconGeom = None
             else:
                 lIconGeom = rIconGeom
                 rIconGeom = None
                 lIconGeomScale = rIconGeomScale
                 rIconGeomScale = 1
         elif quest.getType() == Quests.SkeleReviveQuest:
             cogIcons = loader.loadModel(
                 'phase_3.5/models/gui/stickerbook_gui')
             lIconGeom = cogIcons.find('**/skelecog5')
             lIconGeomScale = IMAGE_SCALE_SMALL
             cogIcons.removeNode()
         if not fComplete:
             infoText = string.capwords(quest.getLocationName())
             if infoText == '':
                 infoText = TTLocalizer.QuestPosterAnywhere
     if fComplete:
         textColor = (0, 0.3, 0, 1)
         imageColor = Vec4(*self.colors['lightGreen'])
         lPos.setX(-0.18)
         rIconGeom = self.createNpcToonHead(toNpcId)
         rIconGeomScale = IMAGE_SCALE_SMALL
         captions = captions[:1]
         captions.append(toNpcName)
         auxText = TTLocalizer.QuestPosterAuxReturnTo
         headlineString = TTLocalizer.QuestPosterComplete
         infoText = TTLocalizer.QuestPageDestination % (
             toNpcBuildingName, toNpcStreetName, toNpcLocationName)
         if self.laffMeter != None:
             self.laffMeter.reparentTo(hidden)
             self.laffMeter.destroy()
             self.laffMeter = None
     else:
         textColor = self.normalTextColor
     self.show()
     self['image_color'] = imageColor
     self.headline['text_fg'] = textColor
     self.headline['text'] = headlineString
     self.lPictureFrame.show()
     self.lPictureFrame.setPos(lPos)
     self.lPictureFrame['text_scale'] = TEXT_SCALE
     if lPos[0] != 0:
         self.lPictureFrame['text_scale'] = 0.0325
     self.lPictureFrame['text'] = captions[0]
     self.lPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor])
     if len(captions) > 1:
         self.rPictureFrame.show()
         self.rPictureFrame['text'] = captions[1]
         self.rPictureFrame['text_scale'] = 0.0325
         self.rPictureFrame['image_color'] = Vec4(
             *self.colors[frameBgColor])
     else:
         self.rPictureFrame.hide()
     self._deleteGeoms()
     self.lQuestIcon['geom'] = lIconGeom
     self.lQuestIcon['geom_pos'] = (0, 10, 0)
     if lIconGeom:
         self.lQuestIcon['geom_scale'] = lIconGeomScale
     if self.laffMeter != None:
         self.laffMeter.reparentTo(self.lQuestIcon)
     self.rQuestIcon['geom'] = rIconGeom
     self.rQuestIcon['geom_pos'] = (0, 10, 0)
     if rIconGeom:
         self.rQuestIcon['geom_scale'] = rIconGeomScale
     if auxText:
         self.auxText.show()
         self.auxText['text'] = auxText
         self.auxText.setPos(auxTextPos)
     else:
         self.auxText.hide()
     self.bind(DGG.WITHIN, self.mouseEnterPoster)
     self.bind(DGG.WITHOUT, self.mouseExitPoster)
     numQuestItems = quest.getNumQuestItems()
     if fComplete or numQuestItems <= 1:
         self.questProgress.hide()
         if not quest.getType() == Quests.TrackChoiceQuest:
             infoZ = -0.075
     else:
         self.questProgress.show()
         self.questProgress['value'] = toonProgress & pow(2, 16) - 1
         self.questProgress['range'] = numQuestItems
         self.questProgress['text'] = quest.getProgressString(
             base.localAvatar, questDesc)
     self.questInfo['text'] = infoText
     self.questInfo.setZ(infoZ)
     self.fitLabel(self.questInfo)
     return
 def update(self, questDesc):
     questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc
     quest = Quests.getQuest(questId)
     if quest == None:
         self.notify.warning("Tried to display poster for unknown quest %s" % questId)
         return
     if rewardId == Quests.NA:
         finalReward = Quests.getFinalRewardId(questId, fAll=1)
         transformedReward = Quests.transformReward(finalReward, base.localAvatar)
         reward = Quests.getReward(transformedReward)
     else:
         reward = Quests.getReward(rewardId)
     if reward and questId not in Quests.NoRewardTierZeroQuests:
         rewardString = reward.getPosterString()
     else:
         rewardString = ""
     self.rewardText["text"] = rewardString
     self.fitLabel(self.rewardText)
     if Quests.isQuestJustForFun(questId, rewardId):
         self.funQuest.show()
     else:
         self.funQuest.hide()
     if self._deleteCallback:
         self.showDeleteButton(questDesc)
     else:
         self.hideDeleteButton()
     fComplete = quest.getCompletionStatus(base.localAvatar, questDesc) == Quests.COMPLETE
     if toNpcId == Quests.ToonHQ:
         toNpcName = TTLocalizer.QuestPosterHQOfficer
         toNpcBuildingName = TTLocalizer.QuestPosterHQBuildingName
         toNpcStreetName = TTLocalizer.QuestPosterHQStreetName
         toNpcLocationName = TTLocalizer.QuestPosterHQLocationName
     elif toNpcId == Quests.ToonTailor:
         toNpcName = TTLocalizer.QuestPosterTailor
         toNpcBuildingName = TTLocalizer.QuestPosterTailorBuildingName
         toNpcStreetName = TTLocalizer.QuestPosterTailorStreetName
         toNpcLocationName = TTLocalizer.QuestPosterTailorLocationName
     else:
         toNpcName = NPCToons.getNPCName(toNpcId)
         toNpcZone = NPCToons.getNPCZone(toNpcId)
         toNpcHoodId = ZoneUtil.getCanonicalHoodId(toNpcZone)
         toNpcLocationName = base.cr.hoodMgr.getFullnameFromId(toNpcHoodId)
         toNpcBuildingName = NPCToons.getBuildingTitle(toNpcZone)
         toNpcBranchId = ZoneUtil.getBranchZone(toNpcZone)
         toNpcStreetName = ZoneUtil.getStreetName(toNpcBranchId)
     lPos = Vec3(0, 0, 0.13)
     lIconGeom = None
     lIconGeomScale = 1
     rIconGeom = None
     rIconGeomScale = 1
     infoText = ""
     infoZ = TTLocalizer.QPinfoZ
     auxText = None
     auxTextPos = Vec3(0, 0, 0.12)
     headlineString = quest.getHeadlineString()
     objectiveStrings = quest.getObjectiveStrings()
     captions = map(string.capwords, quest.getObjectiveStrings())
     imageColor = Vec4(*self.colors["white"])
     if quest.getType() == Quests.DeliverGagQuest or quest.getType() == Quests.DeliverItemQuest:
         frameBgColor = "red"
         if quest.getType() == Quests.DeliverGagQuest:
             invModel = loader.loadModel("phase_3.5/models/gui/inventory_icons")
             track, item = quest.getGagType()
             lIconGeom = invModel.find("**/" + AvPropsNew[track][item])
             invModel.removeNode()
         else:
             bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
             lIconGeom = bookModel.find("**/package")
             lIconGeomScale = 0.12
             bookModel.removeNode()
         if not fComplete:
             captions.append(toNpcName)
             auxText = TTLocalizer.QuestPosterAuxTo
             auxTextPos.setZ(0.12)
             lPos.setX(-0.18)
             infoText = TTLocalizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName)
             rIconGeom = self.createNpcToonHead(toNpcId)
             rIconGeomScale = IMAGE_SCALE_SMALL
     elif quest.getType() == Quests.RecoverItemQuest:
         frameBgColor = "green"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         lIconGeom = bookModel.find("**/package")
         lIconGeomScale = 0.12
         bookModel.removeNode()
         if not fComplete:
             rIconGeomScale = IMAGE_SCALE_SMALL
             holder = quest.getHolder()
             holderType = quest.getHolderType()
             if holder == Quests.Any:
                 cogIcons = loader.loadModel("phase_3/models/gui/cog_icons")
                 rIconGeom = cogIcons.find("**/cog")
                 cogIcons.removeNode()
                 lPos.setX(-0.18)
                 auxText = TTLocalizer.QuestPosterAuxFrom
             elif holder == Quests.AnyFish:
                 headlineString = TTLocalizer.QuestPosterFishing
                 auxText = TTLocalizer.QuestPosterAuxFor
                 auxTextPos.setX(-0.18)
                 captions = captions[:1]
             else:
                 if holderType == "track":
                     cogIcons = loader.loadModel("phase_3/models/gui/cog_icons")
                     if holder == "c":
                         icon = cogIcons.find("**/CorpIcon")
                     elif holder == "s":
                         icon = cogIcons.find("**/SalesIcon")
                     elif holder == "l":
                         icon = cogIcons.find("**/LegalIcon")
                     elif holder == "m":
                         icon = cogIcons.find("**/MoneyIcon")
                     rIconGeom = icon.copyTo(hidden)
                     rIconGeom.setColor(Suit.Suit.medallionColors[holder])
                     rIconGeomScale = 0.12
                     cogIcons.removeNode()
                 elif holderType == "level":
                     cogIcons = loader.loadModel("phase_3/models/gui/cog_icons")
                     rIconGeom = cogIcons.find("**/cog")
                     rIconGeomScale = IMAGE_SCALE_SMALL
                     cogIcons.removeNode()
                 else:
                     rIconGeom = self.createSuitHead(holder)
                 lPos.setX(-0.18)
                 auxText = TTLocalizer.QuestPosterAuxFrom
             infoText = string.capwords(quest.getLocationName())
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.VisitQuest:
         frameBgColor = "brown"
         captions[0] = "%s" % toNpcName
         lIconGeom = self.createNpcToonHead(toNpcId)
         lIconGeomScale = IMAGE_SCALE_SMALL
         if not fComplete:
             infoText = TTLocalizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName)
     elif quest.getType() == Quests.TrackChoiceQuest:
         frameBgColor = "green"
         invModel = loader.loadModel("phase_3.5/models/gui/inventory_icons")
         track1, track2 = quest.getChoices()
         lIconGeom = invModel.find("**/" + AvPropsNew[track1][1])
         if not fComplete:
             auxText = TTLocalizer.QuestPosterAuxOr
             lPos.setX(-0.18)
             rIconGeom = invModel.find("**/" + AvPropsNew[track2][1])
             infoText = TTLocalizer.QuestPageNameAndDestination % (
                 toNpcName,
                 toNpcBuildingName,
                 toNpcStreetName,
                 toNpcLocationName,
             )
             infoZ = -0.02
         invModel.removeNode()
     elif quest.getType() == Quests.BuildingQuest:
         frameBgColor = "blue"
         track = quest.getBuildingTrack()
         numFloors = quest.getNumFloors()
         if track == "c":
             lIconGeom = loader.loadModel("phase_4/models/modules/suit_landmark_corp")
         elif track == "l":
             lIconGeom = loader.loadModel("phase_4/models/modules/suit_landmark_legal")
         elif track == "m":
             lIconGeom = loader.loadModel("phase_4/models/modules/suit_landmark_money")
         elif track == "s":
             lIconGeom = loader.loadModel("phase_4/models/modules/suit_landmark_sales")
         else:
             bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
             lIconGeom = bookModel.find("**/COG_building")
             bookModel.removeNode()
         if lIconGeom and track != Quests.Any:
             self.loadElevator(lIconGeom, numFloors)
             lIconGeom.setH(180)
             self.fitGeometry(lIconGeom, fFlip=0)
             lIconGeomScale = IMAGE_SCALE_SMALL
         else:
             lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.BuildingNewbieQuest:
         frameBgColor = "blue"
         track = quest.getBuildingTrack()
         numFloors = quest.getNumFloors()
         if track == "c":
             rIconGeom = loader.loadModel("phase_4/models/modules/suit_landmark_corp")
         elif track == "l":
             rIconGeom = loader.loadModel("phase_4/models/modules/suit_landmark_legal")
         elif track == "m":
             rIconGeom = loader.loadModel("phase_4/models/modules/suit_landmark_money")
         elif track == "s":
             rIconGeom = loader.loadModel("phase_4/models/modules/suit_landmark_sales")
         else:
             bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
             rIconGeom = bookModel.find("**/COG_building")
             bookModel.removeNode()
         if rIconGeom and track != Quests.Any:
             self.loadElevator(rIconGeom, numFloors)
             rIconGeom.setH(180)
             self.fitGeometry(rIconGeom, fFlip=0)
             rIconGeomScale = IMAGE_SCALE_SMALL
         else:
             rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(map(string.capwords, quest.getObjectiveStrings()))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.FactoryQuest:
         frameBgColor = "blue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         lIconGeom = bookModel.find("**/factoryIcon2")
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.FactoryNewbieQuest:
         frameBgColor = "blue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         rIconGeom = bookModel.find("**/factoryIcon2")
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(map(string.capwords, quest.getObjectiveStrings()))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.MintQuest:
         frameBgColor = "blue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         lIconGeom = bookModel.find("**/CashBotMint")
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.MintNewbieQuest:
         frameBgColor = "blue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         rIconGeom = bookModel.find("**/CashBotMint")
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(map(string.capwords, quest.getObjectiveStrings()))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.CogPartQuest:
         frameBgColor = "green"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         lIconGeom = bookModel.find("**/CogArmIcon2")
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.CogPartNewbieQuest:
         frameBgColor = "green"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         rIconGeom = bookModel.find("**/CogArmIcon2")
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(map(string.capwords, quest.getObjectiveStrings()))
             auxText = TTLocalizer.QuestsCogPartQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.ForemanQuest or quest.getType() == Quests.SupervisorQuest:
         frameBgColor = "blue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         lIconGeom = bookModel.find("**/skelecog5")
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.ForemanNewbieQuest or quest.getType() == Quests.SupervisorNewbieQuest:
         frameBgColor = "blue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         rIconGeom = bookModel.find("**/skelecog5")
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(map(string.capwords, quest.getObjectiveStrings()))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.VPQuest:
         frameBgColor = "blue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         lIconGeom = bookModel.find("**/BossHead3Icon")
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.VPNewbieQuest:
         frameBgColor = "blue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         rIconGeom = bookModel.find("**/BossHead3Icon")
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(map(string.capwords, quest.getObjectiveStrings()))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.CFOQuest:
         frameBgColor = "blue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         lIconGeom = bookModel.find("**/CashBotBossHeadIcon")
         bookModel.removeNode()
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.CFONewbieQuest:
         frameBgColor = "blue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         rIconGeom = bookModel.find("**/CashBotBossHeadIcon")
         bookModel.removeNode()
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(map(string.capwords, quest.getObjectiveStrings()))
             auxText = TTLocalizer.QuestsCogNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.RescueQuest:
         frameBgColor = "blue"
         lIconGeom = self.createNpcToonHead(2001)
         lIconGeomScale = 0.13
         if not fComplete:
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.RescueNewbieQuest:
         frameBgColor = "blue"
         rIconGeom = self.createNpcToonHead(2001)
         rIconGeomScale = 0.13
         if not fComplete:
             headlineString = TTLocalizer.QuestsNewbieQuestHeadline
             captions = [quest.getCaption()]
             captions.append(map(string.capwords, quest.getObjectiveStrings()))
             auxText = TTLocalizer.QuestsRescueQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
             infoText = quest.getLocationName()
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     elif quest.getType() == Quests.FriendQuest:
         frameBgColor = "brown"
         gui = loader.loadModel("phase_3.5/models/gui/friendslist_gui")
         lIconGeom = gui.find("**/FriendsBox_Closed")
         lIconGeomScale = 0.45
         gui.removeNode()
         infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.FriendNewbieQuest:
         frameBgColor = "brown"
         gui = loader.loadModel("phase_3.5/models/gui/friendslist_gui")
         lIconGeom = gui.find("**/FriendsBox_Closed")
         lIconGeomScale = 0.45
         gui.removeNode()
         infoText = TTLocalizer.QuestPosterAnywhere
     elif quest.getType() == Quests.TrolleyQuest:
         frameBgColor = "lightBlue"
         gui = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         lIconGeom = gui.find("**/trolley")
         lIconGeomScale = 0.13
         gui.removeNode()
         infoText = TTLocalizer.QuestPosterPlayground
     elif quest.getType() == Quests.MailboxQuest:
         frameBgColor = "lightBlue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         lIconGeom = bookModel.find("**/package")
         lIconGeomScale = 0.12
         bookModel.removeNode()
         infoText = TTLocalizer.QuestPosterAtHome
     elif quest.getType() == Quests.PhoneQuest:
         frameBgColor = "lightBlue"
         bookModel = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         lIconGeom = bookModel.find("**/clarabelleCow")
         lIconGeomScale = 0.12
         bookModel.removeNode()
         infoText = TTLocalizer.QuestPosterOnPhone
     elif quest.getType() == Quests.MinigameNewbieQuest:
         frameBgColor = "lightBlue"
         gui = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
         rIconGeom = gui.find("**/trolley")
         rIconGeomScale = 0.13
         gui.removeNode()
         infoText = TTLocalizer.QuestPosterPlayground
         if not fComplete:
             captions = [TTLocalizer.QuestsMinigameNewbieQuestCaption % quest.getNewbieLevel()]
             captions.append(map(string.capwords, quest.getObjectiveStrings()))
             auxText = TTLocalizer.QuestsMinigameNewbieQuestAux
             lPos.setX(-0.18)
             self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
             self.laffMeter.setScale(0.04)
             lIconGeom = None
         else:
             lIconGeom = rIconGeom
             rIconGeom = None
             lIconGeomScale = rIconGeomScale
             rIconGeomScale = 1
     else:
         frameBgColor = "blue"
         if quest.getType() == Quests.CogTrackQuest:
             dept = quest.getCogTrack()
             cogIcons = loader.loadModel("phase_3/models/gui/cog_icons")
             lIconGeomScale = 0.13
             if dept == "c":
                 icon = cogIcons.find("**/CorpIcon")
             elif dept == "s":
                 icon = cogIcons.find("**/SalesIcon")
             elif dept == "l":
                 icon = cogIcons.find("**/LegalIcon")
             elif dept == "m":
                 icon = cogIcons.find("**/MoneyIcon")
             lIconGeom = icon.copyTo(hidden)
             lIconGeom.setColor(Suit.Suit.medallionColors[dept])
             cogIcons.removeNode()
         elif quest.getType() == Quests.CogQuest:
             if quest.getCogType() != Quests.Any:
                 lIconGeom = self.createSuitHead(quest.getCogType())
                 lIconGeomScale = IMAGE_SCALE_SMALL
             else:
                 cogIcons = loader.loadModel("phase_3/models/gui/cog_icons")
                 lIconGeom = cogIcons.find("**/cog")
                 lIconGeomScale = IMAGE_SCALE_SMALL
                 cogIcons.removeNode()
         elif quest.getType() == Quests.CogLevelQuest:
             cogIcons = loader.loadModel("phase_3/models/gui/cog_icons")
             lIconGeom = cogIcons.find("**/cog")
             lIconGeomScale = IMAGE_SCALE_SMALL
             cogIcons.removeNode()
         elif quest.getType() == Quests.CogNewbieQuest:
             if quest.getCogType() != Quests.Any:
                 rIconGeom = self.createSuitHead(quest.getCogType())
                 rIconGeomScale = IMAGE_SCALE_SMALL
             else:
                 cogIcons = loader.loadModel("phase_3/models/gui/cog_icons")
                 rIconGeom = cogIcons.find("**/cog")
                 rIconGeomScale = IMAGE_SCALE_SMALL
                 cogIcons.removeNode()
             if not fComplete:
                 headlineString = TTLocalizer.QuestsNewbieQuestHeadline
                 captions = [quest.getCaption()]
                 captions.append(map(string.capwords, quest.getObjectiveStrings()))
                 auxText = TTLocalizer.QuestsCogNewbieQuestAux
                 lPos.setX(-0.18)
                 self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
                 self.laffMeter.setScale(0.04)
                 lIconGeom = None
             else:
                 lIconGeom = rIconGeom
                 rIconGeom = None
                 lIconGeomScale = rIconGeomScale
                 rIconGeomScale = 1
         elif quest.getType() == Quests.SkelecogTrackQuest:
             dept = quest.getCogTrack()
             cogIcons = loader.loadModel("phase_3/models/gui/cog_icons")
             lIconGeomScale = 0.13
             if dept == "c":
                 icon = cogIcons.find("**/CorpIcon")
             elif dept == "s":
                 icon = cogIcons.find("**/SalesIcon")
             elif dept == "l":
                 icon = cogIcons.find("**/LegalIcon")
             elif dept == "m":
                 icon = cogIcons.find("**/MoneyIcon")
             lIconGeom = icon.copyTo(hidden)
             lIconGeom.setColor(Suit.Suit.medallionColors[dept])
             cogIcons.removeNode()
         elif quest.getType() == Quests.SkelecogQuest:
             cogIcons = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
             lIconGeom = cogIcons.find("**/skelecog5")
             lIconGeomScale = IMAGE_SCALE_SMALL
             cogIcons.removeNode()
         elif quest.getType() == Quests.SkelecogLevelQuest:
             cogIcons = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
             lIconGeom = cogIcons.find("**/skelecog5")
             lIconGeomScale = IMAGE_SCALE_SMALL
             cogIcons.removeNode()
         elif quest.getType() == Quests.SkelecogNewbieQuest:
             cogIcons = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
             rIconGeom = cogIcons.find("**/skelecog5")
             rIconGeomScale = IMAGE_SCALE_SMALL
             cogIcons.removeNode()
             if not fComplete:
                 headlineString = TTLocalizer.QuestsNewbieQuestHeadline
                 captions = [quest.getCaption()]
                 captions.append(map(string.capwords, quest.getObjectiveStrings()))
                 auxText = TTLocalizer.QuestsCogNewbieQuestAux
                 lPos.setX(-0.18)
                 self.laffMeter = self.createLaffMeter(quest.getNewbieLevel())
                 self.laffMeter.setScale(0.04)
                 lIconGeom = None
             else:
                 lIconGeom = rIconGeom
                 rIconGeom = None
                 lIconGeomScale = rIconGeomScale
                 rIconGeomScale = 1
         elif quest.getType() == Quests.SkeleReviveQuest:
             cogIcons = loader.loadModel("phase_3.5/models/gui/stickerbook_gui")
             lIconGeom = cogIcons.find("**/skelecog5")
             lIconGeomScale = IMAGE_SCALE_SMALL
             cogIcons.removeNode()
         if not fComplete:
             infoText = string.capwords(quest.getLocationName())
             if infoText == "":
                 infoText = TTLocalizer.QuestPosterAnywhere
     if fComplete:
         textColor = (0, 0.3, 0, 1)
         imageColor = Vec4(*self.colors["lightGreen"])
         lPos.setX(-0.18)
         rIconGeom = self.createNpcToonHead(toNpcId)
         rIconGeomScale = IMAGE_SCALE_SMALL
         captions = captions[:1]
         captions.append(toNpcName)
         auxText = TTLocalizer.QuestPosterAuxReturnTo
         headlineString = TTLocalizer.QuestPosterComplete
         infoText = TTLocalizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName)
         if self.laffMeter != None:
             self.laffMeter.reparentTo(hidden)
             self.laffMeter.destroy()
             self.laffMeter = None
     else:
         textColor = self.normalTextColor
     self.show()
     self["image_color"] = imageColor
     self.headline["text_fg"] = textColor
     self.headline["text"] = headlineString
     self.lPictureFrame.show()
     self.lPictureFrame.setPos(lPos)
     self.lPictureFrame["text_scale"] = TEXT_SCALE
     if lPos[0] != 0:
         self.lPictureFrame["text_scale"] = 0.0325
     self.lPictureFrame["text"] = captions[0]
     self.lPictureFrame["image_color"] = Vec4(*self.colors[frameBgColor])
     if len(captions) > 1:
         self.rPictureFrame.show()
         self.rPictureFrame["text"] = captions[1]
         self.rPictureFrame["text_scale"] = 0.0325
         self.rPictureFrame["image_color"] = Vec4(*self.colors[frameBgColor])
     else:
         self.rPictureFrame.hide()
     self._deleteGeoms()
     self.lQuestIcon["geom"] = lIconGeom
     self.lQuestIcon["geom_pos"] = (0, 10, 0)
     if lIconGeom:
         self.lQuestIcon["geom_scale"] = lIconGeomScale
     if self.laffMeter != None:
         self.laffMeter.reparentTo(self.lQuestIcon)
     self.rQuestIcon["geom"] = rIconGeom
     self.rQuestIcon["geom_pos"] = (0, 10, 0)
     if rIconGeom:
         self.rQuestIcon["geom_scale"] = rIconGeomScale
     if auxText:
         self.auxText.show()
         self.auxText["text"] = auxText
         self.auxText.setPos(auxTextPos)
     else:
         self.auxText.hide()
     self.bind(DGG.WITHIN, self.mouseEnterPoster)
     self.bind(DGG.WITHOUT, self.mouseExitPoster)
     numQuestItems = quest.getNumQuestItems()
     if fComplete or numQuestItems <= 1:
         self.questProgress.hide()
         if not quest.getType() == Quests.TrackChoiceQuest:
             infoZ = -0.075
     else:
         self.questProgress.show()
         self.questProgress["value"] = toonProgress & pow(2, 16) - 1
         self.questProgress["range"] = numQuestItems
         self.questProgress["text"] = quest.getProgressString(base.localAvatar, questDesc)
     self.questInfo["text"] = infoText
     self.questInfo.setZ(infoZ)
     self.fitLabel(self.questInfo)
     return