def setFromAvatar(self, av): rewardIds = [] for q in av.quests: questId, fromNpcId, toNpcId, rewardId, toonProgress = q if rewardId == Quests.NA: rewardId = Quests.getFinalRewardId(questId, fAll=1) rewardIds.append(rewardId) self.notify.debug('Ignoring rewards: %s' % rewardIds) self.setRewardIndex(av.rewardTier, rewardIds, av.rewardHistory) fishHp = int(len(av.fishCollection) / FishGlobals.FISH_PER_BONUS) self.notify.debug('Adding %s hp for fish collection' % fishHp) self.maxHp += fishHp flowerHp = int(len(av.flowerCollection) / GardenGlobals.FLOWERS_PER_BONUS) self.notify.debug('Adding %s hp for fish collection' % flowerHp) self.maxHp += flowerHp HQdepts = (ToontownGlobals.cogHQZoneId2deptIndex(ToontownGlobals.SellbotHQ), ToontownGlobals.cogHQZoneId2deptIndex(ToontownGlobals.LawbotHQ), ToontownGlobals.cogHQZoneId2deptIndex(ToontownGlobals.CashbotHQ)) levels = av.getCogLevels() cogTypes = av.getCogTypes() suitHp = 0 for dept in HQdepts: suitHp += levels[dept] self.notify.debug('Adding %s hp for cog suits' % suitHp) self.maxHp += suitHp kartingHp = int(av.kartingTrophies.count(1) / RaceGlobals.TrophiesPerCup) self.notify.debug('Adding %s hp for karting trophies' % kartingHp) self.maxHp += kartingHp golfHp = int(av.golfTrophies.count(True) / GolfGlobals.TrophiesPerCup) self.notify.debug('Adding %s hp for golf trophies' % golfHp) self.maxHp += golfHp
def assignQuest(self, avId, npcId, questId, rewardId, toNpcId, startingQuest=1): self.notify.info( "assignQuest: avId: %s npcId: %s questId: %s rewardId: %s toNpcId: %s startingQuest: %s" % (avId, npcId, questId, rewardId, toNpcId, startingQuest)) # assign quest to avatar # A quest is a list with (questId, npcId, toNpcId, rewardId, progress) av = self.air.doId2do.get(avId) if av: if startingQuest: # Since the first parts or multipart quests have NA for their # rewardIds, we need to get the final reward of this quest by searching # down the chain. If this questId is not the start of a multipart # quest, finalRewardId will come back None, and addQuest will handle it if rewardId == Quests.NA: finalRewardId = Quests.getFinalRewardId(questId) else: # Do not count the end of multipart quests, even though they # have a valid rewardId. That rewardId would have been counted # when the initial quest was given out if not Quests.isStartingQuest(questId): finalRewardId = None else: finalRewardId = rewardId # If this was not handed out as a starting quest, make sure you do not # count the reward twice else: finalRewardId = None # 0 for initial progress initialProgress = 0 # To make it easy for testing purposes. # This should never be on in production if self.QuestCheat: # Quest is already compelte initialProgress = 1000 # Clothing quests must be handled by the Tailor. if ((rewardId == Quests.NA) or (Quests.getRewardClass(rewardId) != Quests.ClothingTicketReward)): # Visit npc is the HQ toNpcId = Quests.ToonHQ if Quests.isLoopingFinalTier(av.getRewardTier()): # Do not record the history if this is the final looping tier recordHistory = 0 else: recordHistory = 1 av.addQuest((questId, npcId, toNpcId, rewardId, initialProgress), finalRewardId, recordHistory) # if this was a requested quest, clear it if self.NextQuestDict.get(avId) == questId: del self.NextQuestDict[avId] else: self.notify.warning("assignQuest: avatar not found: avId: %s" % (avId)) return
def requestInteract(self, toonId, npc): toon = self.air.doId2do.get(toonId) if not toon: return for index, quest in enumerate(self.__toonQuestsList2Quests(toon.quests)): questId, fromNpcId, toNpcId, rewardId, toonProgress = toon.quests[index] isComplete = quest.getCompletionStatus(toon, toon.quests[index], npc) if isComplete != Quests.COMPLETE: continue if toonId in self.air.tutorialManager.avId2fsm.keys(): self.air.tutorialManager.avId2fsm[toonId].demand('Tunnel') if isinstance(quest, Quests.DeliverGagQuest): track, level = quest.getGagType() toon.inventory.setItem(track, level, toon.inventory.numItem(track, level) - quest.getNumGags()) toon.b_setInventory(toon.inventory.makeNetString()) nextQuest = Quests.getNextQuest(questId, npc, toon) if nextQuest == (Quests.NA, Quests.NA): if isinstance(quest, Quests.TrackChoiceQuest): npc.presentTrackChoice(toonId, questId, quest.getChoices()) return rewardId = Quests.getAvatarRewardId(toon, questId) npc.completeQuest(toonId, questId, rewardId) self.completeQuest(toon, questId) self.giveReward(toon, rewardId) return self.completeQuest(toon, questId) nextQuestId = nextQuest[0] nextRewardId = Quests.getFinalRewardId(questId, 1) nextToNpcId = nextQuest[1] self.npcGiveQuest(npc, toon, nextQuestId, nextRewardId, nextToNpcId) return if len(self.__toonQuestsList2Quests(toon.quests)) >= toon.getQuestCarryLimit(): self.notify.debug('Rejecting toonId %d because their quest inventory is full.' % toonId) npc.rejectAvatar(toonId) return if toonId in self.air.tutorialManager.avId2fsm.keys(): if toon.getRewardHistory()[0] == 0: self.npcGiveQuest(npc, toon, 101, Quests.findFinalRewardId(101)[0], Quests.getQuestToNpcId(101), storeReward=True) self.air.tutorialManager.avId2fsm[toonId].demand('Battle') return tier = toon.getRewardHistory()[0] if Quests.avatarHasAllRequiredRewards(toon, tier): if not Quests.avatarWorkingOnRequiredRewards(toon): if tier != Quests.LOOPING_FINAL_TIER: tier += 1 toon.b_setRewardHistory(tier, []) else: self.notify.debug('Rejecting toonId %d because they are still working on their current tier.' % toonId) npc.rejectAvatarTierNotDone(toonId) return suitableQuests = Quests.chooseBestQuests(tier, npc, toon) if not suitableQuests: self.notify.debug('Rejecting toonId %d because there are no quests available!' % toonId) npc.rejectAvatar(toonId) return npc.presentQuestChoice(toonId, suitableQuests)
def setFromAvatar(self, av): rewardIds = [] for q in av.quests: questId, fromNpcId, toNpcId, rewardId, toonProgress = q if rewardId == Quests.NA: rewardId = Quests.getFinalRewardId(questId, fAll=1) rewardIds.append(rewardId) self.notify.debug('Ignoring rewards: %s' % rewardIds) self.setRewardIndex(av.rewardTier, rewardIds, av.rewardHistory)
def setFromAvatar(self, av): rewardIds = [] for q in av.quests: (questId, fromNpcId, toNpcId, rewardId, toonProgress) = q if rewardId == Quests.NA: rewardId = Quests.getFinalRewardId(questId, fAll = 1) rewardIds.append(rewardId) self.notify.debug('Ignoring rewards: %s' % rewardIds) self.setRewardIndex(av.rewardTier, rewardIds, av.rewardHistory)
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
def update(self, questDesc): questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc quest = Quests.getQuest(questId) self.teleportButton['command'] = self.teleportToShop self.teleportButton['extraArgs'] = [toNpcId] 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() if self.laffMeter: self.laffMeter.destroy() fComplete = quest.getCompletionStatus(base.localAvatar, questDesc) == Quests.COMPLETE if Quests.isQuestJustForFun(questId, rewardId): if fComplete: self.funQuest.hide() self.teleportButton.show() else: self.teleportButton.hide() if toNpcId == Quests.ToonHQ: self.teleportButton.show() self.teleportButton.setPos(0.285, 0, -0.15) toNpcName = TTLocalizer.QuestPosterHQOfficer toNpcBuildingName = TTLocalizer.QuestPosterHQBuildingName toNpcStreetName = TTLocalizer.QuestPosterHQStreetName toNpcLocationName = TTLocalizer.QuestPosterHQLocationName elif toNpcId == Quests.ToonTailor: self.teleportButton.show() self.teleportButton.setPos(0.285, 0, -0.15) toNpcName = TTLocalizer.QuestPosterTailor toNpcBuildingName = TTLocalizer.QuestPosterTailorBuildingName toNpcStreetName = TTLocalizer.QuestPosterTailorStreetName toNpcLocationName = TTLocalizer.QuestPosterTailorLocationName else: self.teleportButton.show() self.teleportButton.setPos(0.285, 0, -0.15) 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 isinstance(quest, Quests.TexturedQuest) and quest.hasFrame(): self.teleportButton.hide() frame = quest.getFrame() frameBgColor = frame[1] lIconGeom = frame[0] lIconGeomScale = 0.13 if not fComplete: infoText = quest.getLocationName() if infoText == '': infoText = TTLocalizer.QuestPosterAnywhere elif quest.getType() == Quests.DeliverGagQuest or quest.getType( ) == Quests.DeliverItemQuest: frameBgColor = 'red' if fComplete: self.teleportButton.show() self.teleportButton.setPos(0.175, 0, -0.125) 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 self.teleportButton.setPos(0.285, 0, -0.15) 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 in SuitDNA.suitDeptModelPaths: icon = cogIcons.find( SuitDNA.suitDeptModelPaths[holder]) 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 else: self.teleportButton.show() elif quest.getType() == Quests.VisitQuest: self.teleportButton.show() 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' filmstrip = loader.loadModel('phase_3.5/models/gui/filmstrip') lIconGeom = DirectFrame(parent=self, relief=None, image=filmstrip, image_scale=.5) self.question = DirectLabel(parent=lIconGeom, relief=None, pos=(0, 0, 0), text='?', text_scale=0.2, text_pos=(0, -0.04), text_fg=(0.72, 0.72, 0.72, 1)) lIconGeom['image_color'] = Vec4(0.7, 0.7, 0.7, 1) self.question['text_fg'] = Vec4(0.6, 0.6, 0.6, 1) rIconGeom = None filmstrip.removeNode() elif quest.getType() == Quests.BuildingQuest: self.teleportButton.hide() 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.FactoryQuest: self.teleportButton.hide() 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: self.teleportButton.hide() 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.CogPartQuest: self.teleportButton.hide() 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.ForemanQuest or quest.getType( ) == Quests.SupervisorQuest: self.teleportButton.hide() 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.RescueQuest: self.teleportButton.hide() frameBgColor = 'blue' lIconGeom = self.createNpcToonHead( random.choice(NPCToons.HQnpcFriends.keys())) lIconGeomScale = 0.13 infoText = quest.getLocationName().strip() elif quest.getType() == Quests.FriendQuest: self.teleportButton.hide() 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: self.teleportButton.hide() 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: self.teleportButton.hide() 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: self.teleportButton.hide() 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: self.teleportButton.hide() frameBgColor = 'blue' if quest.getType() == Quests.CogTrackQuest: dept = quest.getCogTrack() cogIcons = loader.loadModel('phase_3/models/gui/cog_icons') lIconGeomScale = 0.13 if dept in SuitDNA.suitDeptModelPaths: icon = cogIcons.find(SuitDNA.suitDeptModelPaths[dept]) 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 in SuitDNA.suitDeptModelPaths: icon = cogIcons.find(SuitDNA.suitDeptModelPaths[dept]) 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: self.teleportButton.show() 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 is not 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 if quest.getType() != Quests.TrackChoiceQuest: 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]) else: self.lPictureFrame['text'] = 'Track Choice' self.lPictureFrame['image_color'] = Vec4( *self.colors[frameBgColor]) if len(captions) > 1 and quest.getType() != Quests.TrackChoiceQuest: 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) if not Quests.QuestDict[questId][0] >= 11: self.teleportButton.hide() return
def update(self, questDesc): questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc quest = Quests.getQuest(questId) if rewardId == Quests.NA: finalReward = Quests.getFinalRewardId(questId, fAll=1) transformedReward = Quests.transformReward(finalReward, toonbase.localToon) reward = Quests.getReward(transformedReward) else: reward = Quests.getReward(rewardId) if reward: rewardString = reward.getPosterString() else: rewardString = '' self.rewardText['text'] = rewardString self.fitLabel(self.rewardText) questEntry = Quests.QuestDict.get(questId) if questEntry: tier = questEntry[0] fOptional = Quests.isRewardOptional(tier, rewardId) else: fOptional = 0 if fOptional: self.funQuest.show() else: self.funQuest.hide() fComplete = quest.getCompletionStatus(toonbase.localToon, questDesc) == Quests.COMPLETE fromNpcName = NPCToons.getNPCName(fromNpcId) npcZone = NPCToons.getNPCZone(fromNpcId) hoodId = ZoneUtil.getHoodId(npcZone) branchId = ZoneUtil.getBranchZone(npcZone) if fromNpcId == Quests.ToonHQ: locationName = Localizer.QuestPosterHQLocationName buildingName = Localizer.QuestPosterHQBuildingName streetName = Localizer.QuestPosterHQStreetName else: if fromNpcId == Quests.ToonTailor: locationName = Localizer.QuestPosterTailorLocationName buildingName = Localizer.QuestPosterTailorBuildingName streetName = Localizer.QuestPosterTailorStreetName else: locationName = toonbase.tcr.hoodMgr.getFullnameFromId(hoodId) buildingName = NPCToons.getBuildingTitle(npcZone) streetName = ZoneUtil.getStreetName(branchId) if toNpcId == Quests.ToonHQ: toNpcName = Localizer.QuestPosterHQOfficer toNpcBuildingName = Localizer.QuestPosterHQBuildingName toNpcStreetName = Localizer.QuestPosterHQStreetName toNpcLocationName = Localizer.QuestPosterHQLocationName else: if toNpcId == Quests.ToonTailor: toNpcName = Localizer.QuestPosterTailor toNpcBuildingName = Localizer.QuestPosterTailorBuildingName toNpcStreetName = Localizer.QuestPosterTailorStreetName toNpcLocationName = Localizer.QuestPosterTailorLocationName else: toNpcName = NPCToons.getNPCName(toNpcId) toNpcZone = NPCToons.getNPCZone(toNpcId) toNpcHoodId = ZoneUtil.getHoodId(toNpcZone) toNpcLocationName = toonbase.tcr.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 = -0.0625 auxText = None auxTextPos = Vec3(0, 0, 0.12) headlineString = quest.getHeadlineString() 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.loadModelOnce( 'phase_3.5/models/gui/inventory_icons') track, item = quest.getGagType() lIconGeom = invModel.find('**/' + AvPropsNew[track][item]) invModel.removeNode() else: bookModel = loader.loadModelOnce( 'phase_3.5/models/gui/stickerbook_gui') lIconGeom = bookModel.find('**/package') lIconGeomScale = 0.12 bookModel.removeNode() if not fComplete: captions.append(toNpcName) auxText = Localizer.QuestPosterAuxTo auxTextPos.setZ(0.12) lPos.setX(-0.18) infoText = Localizer.QuestPageDestination % ( toNpcBuildingName, toNpcStreetName, toNpcLocationName) rIconGeom = self.createNpcToonHead(toNpcId) rIconGeomScale = IMAGE_SCALE_SMALL else: if quest.getType() == Quests.RecoverItemQuest: frameBgColor = 'green' bookModel = loader.loadModelOnce( '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.loadModelOnce( 'phase_3/models/gui/cog_icons') rIconGeom = cogIcons.find('**/cog') cogIcons.removeNode() lPos.setX(-0.18) auxText = Localizer.QuestPosterAuxFrom else: if holder == Quests.AnyFish: headlineString = 'GO FISHING' auxText = Localizer.QuestPosterAuxFor auxTextPos.setX(-0.18) captions = captions[:1] else: if holderType == 'track': cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons') if holder == 'c': icon = cogIcons.find('**/CorpIcon') else: if holder == 's': icon = cogIcons.find('**/SalesIcon') else: if holder == 'l': icon = cogIcons.find( '**/LegalIcon') else: if holder == 'm': icon = cogIcons.find( '**/MoneyIcon') rIconGeom = icon.copyTo(hidden) rIconGeom.setColor( Suit.Suit.medallionColors[holder]) rIconGeomScale = 0.12 cogIcons.removeNode() else: if holderType == 'level': cogIcons = loader.loadModelOnce( '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 = Localizer.QuestPosterAuxFrom infoText = string.capwords(quest.getLocationName()) if infoText == '': infoText = Localizer.QuestPosterAnywhere else: if quest.getType() == Quests.VisitQuest: frameBgColor = 'brown' captions[0] = '%s' % toNpcName lIconGeom = self.createNpcToonHead(toNpcId) lIconGeomScale = IMAGE_SCALE_SMALL if not fComplete: infoText = Localizer.QuestPageDestination % ( toNpcBuildingName, toNpcStreetName, toNpcLocationName) else: if quest.getType() == Quests.TrackChoiceQuest: frameBgColor = 'green' invModel = loader.loadModelOnce( 'phase_3.5/models/gui/inventory_icons') track1, track2 = quest.getChoices() lIconGeom = invModel.find('**/' + AvPropsNew[track1][1]) if not fComplete: auxText = Localizer.QuestPosterAuxOr lPos.setX(-0.18) rIconGeom = invModel.find('**/' + AvPropsNew[track2][1]) infoText = Localizer.QuestPageNameAndDestination % ( toNpcName, toNpcBuildingName, toNpcStreetName, toNpcLocationName) infoZ = -0.02 invModel.removeNode() else: if quest.getType() == Quests.BuildingQuest: frameBgColor = 'blue' track = quest.getBuildingTrack() numFloors = quest.getNumFloors() if track == 'c': lIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_corp' ) else: if track == 'l': lIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_legal' ) else: if track == 'm': lIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_money' ) else: if track == 's': lIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_sales' ) else: bookModel = loader.loadModelCopy( 'phase_3.5/models/gui/stickerbook_gui' ) lIconGeom = bookModel.find( '**/COG_building') bookModel.removeNode() if lIconGeom and track != Quests.Any: self.loadElevator(lIconGeom, numFloors) self.fitGeometry(lIconGeom, fFlip=1) lIconGeomScale = IMAGE_SCALE_SMALL else: lIconGeomScale = 0.13 if not fComplete: infoText = quest.getLocationName() if infoText == '': infoText = Localizer.QuestPosterAnywhere else: if quest.getType() == Quests.BuildingNewbieQuest: frameBgColor = 'blue' track = quest.getBuildingTrack() numFloors = quest.getNumFloors() if track == 'c': rIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_corp' ) else: if track == 'l': rIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_legal' ) else: if track == 'm': rIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_money' ) else: if track == 's': rIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_sales' ) else: bookModel = loader.loadModelCopy( 'phase_3.5/models/gui/stickerbook_gui' ) rIconGeom = bookModel.find( '**/COG_building') bookModel.removeNode() if rIconGeom and track != Quests.Any: self.loadElevator(rIconGeom, numFloors) self.fitGeometry(rIconGeom, fFlip=1) rIconGeomScale = IMAGE_SCALE_SMALL else: rIconGeomScale = 0.13 if not fComplete: headlineString = Localizer.QuestsNewbieQuestHeadline captions = [ Localizer.QuestsCogNewbieQuestCaption % quest.getNewbieLevel() ] captions.append( map(string.capwords, quest.getObjectiveStrings())) auxText = Localizer.QuestsCogNewbieQuestAux lPos.setX(-0.18) self.laffMeter = self.createLaffMeter( quest.getNewbieLevel()) self.laffMeter.setScale(0.04) lIconGeom = None infoText = quest.getLocationName() if infoText == '': infoText = Localizer.QuestPosterAnywhere else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale else: if quest.getType() == Quests.FriendQuest: frameBgColor = 'brown' gui = loader.loadModelOnce( 'phase_3.5/models/gui/friendslist_gui') lIconGeom = gui.find( '**/FriendsBox_Closed') lIconGeomScale = 0.45 gui.removeNode() infoText = Localizer.QuestPosterAnywhere else: if quest.getType( ) == Quests.FriendNewbieQuest: frameBgColor = 'brown' gui = loader.loadModelOnce( 'phase_3.5/models/gui/friendslist_gui' ) lIconGeom = gui.find( '**/FriendsBox_Closed') lIconGeomScale = 0.45 gui.removeNode() infoText = Localizer.QuestPosterAnywhere else: if quest.getType( ) == Quests.TrolleyQuest: frameBgColor = 'lightBlue' gui = loader.loadModelOnce( 'phase_3.5/models/gui/stickerbook_gui' ) lIconGeom = gui.find('**/trolley') lIconGeomScale = 0.13 gui.removeNode() infoText = Localizer.QuestPosterPlayground else: if quest.getType( ) == Quests.MinigameNewbieQuest: frameBgColor = 'lightBlue' gui = loader.loadModelOnce( 'phase_3.5/models/gui/stickerbook_gui' ) rIconGeom = gui.find( '**/trolley') rIconGeomScale = 0.13 gui.removeNode() infoText = Localizer.QuestPosterPlayground if not fComplete: captions = [ Localizer. QuestsMinigameNewbieQuestCaption % quest.getNewbieLevel() ] captions.append( map( string.capwords, quest. getObjectiveStrings( ))) auxText = Localizer.QuestsMinigameNewbieQuestAux lPos.setX(-0.18) self.laffMeter = self.createLaffMeter( quest.getNewbieLevel()) self.laffMeter.setScale( 0.04) lIconGeom = None else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale else: frameBgColor = 'blue' if quest.getType( ) == Quests.CogTrackQuest: dept = quest.getCogTrack() cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons' ) lIconGeomScale = 0.13 if dept == 'c': icon = cogIcons.find( '**/CorpIcon') else: if dept == 's': icon = cogIcons.find( '**/SalesIcon') else: if dept == 'l': icon = cogIcons.find( '**/LegalIcon' ) else: if dept == 'm': icon = cogIcons.find( '**/MoneyIcon' ) lIconGeom = icon.copyTo( hidden) lIconGeom.setColor( Suit.Suit. medallionColors[dept]) cogIcons.removeNode() else: if quest.getType( ) == Quests.CogQuest: if quest.getCogType( ) != Quests.Any: lIconGeom = self.createSuitHead( quest. getCogType()) lIconGeomScale = IMAGE_SCALE_SMALL else: cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons' ) lIconGeom = cogIcons.find( '**/cog') lIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode( ) else: if quest.getType( ) == Quests.CogLevelQuest: cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons' ) lIconGeom = cogIcons.find( '**/cog') lIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode( ) else: if quest.getType( ) == Quests.CogNewbieQuest: if quest.getCogType( ) != Quests.Any: rIconGeom = self.createSuitHead( quest. getCogType( )) rIconGeomScale = IMAGE_SCALE_SMALL else: cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons' ) rIconGeom = cogIcons.find( '**/cog' ) rIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode( ) if not fComplete: headlineString = Localizer.QuestsNewbieQuestHeadline captions = [ Localizer . QuestsCogNewbieQuestCaption % quest. getNewbieLevel( ) ] captions.append( map( string . capwords, quest . getObjectiveStrings( ))) auxText = Localizer.QuestsCogNewbieQuestAux lPos.setX( -0.18) self.laffMeter = self.createLaffMeter( quest. getNewbieLevel( )) self.laffMeter.setScale( 0.04) lIconGeom = None else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale if not fComplete: infoText = string.capwords( quest.getLocationName( )) if infoText == '': infoText = Localizer.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 = Localizer.QuestPosterAuxReturnTo headlineString = 'COMPLETE' infoText = Localizer.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'] = captions[0] self.lPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor]) if len(captions) > 1: self.rPictureFrame.show() self.rPictureFrame['text'] = captions[1] self.rPictureFrame['image_color'] = Vec4( *self.colors[frameBgColor]) else: self.rPictureFrame.hide() 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 self.questInfo['text'] = infoText self.questInfo.setZ(infoZ) self.fitLabel(self.questInfo) if auxText: self.auxText.show() self.auxText['text'] = auxText self.auxText.setPos(auxTextPos) else: self.auxText.hide() self.bind(WITHIN, self.mouseEnterPoster) self.bind(WITHOUT, self.mouseExitPoster) numQuestItems = quest.getNumQuestItems() if fComplete or numQuestItems <= 1: self.questProgress.hide() else: self.questProgress.show() self.questProgress['value'] = toonProgress self.questProgress['range'] = numQuestItems self.questProgress['text'] = quest.getProgressString( toonbase.localToon, questDesc) return
def requestInteract(self, toonId, npc): toon = self.air.doId2do.get(toonId) if not toon: # TODO: Flag suspicious. They shouldn't have got this far. return # Check if the toon has any quests to turn in. for index, quest in enumerate(self.__toonQuestsList2Quests(toon.quests)): questId, fromNpcId, toNpcId, rewardId, toonProgress = toon.quests[index] isComplete = quest.getCompletionStatus(toon, toon.quests[index], npc) if isComplete != Quests.COMPLETE: # This quest isn't complete, skip. continue # If we're in the Toontorial, move to the next step. if toonId in self.air.tutorialManager.avId2fsm.keys(): self.air.tutorialManager.avId2fsm[toonId].demand('Tunnel') # Take away gags if it's a DeliverGagQuest. if isinstance(quest, Quests.DeliverGagQuest): track, level = quest.getGagType() toon.inventory.setItem(track, level, toon.inventory.numItem(track, level) - quest.getNumGags()) toon.b_setInventory(toon.inventory.makeNetString()) # Check if the ToonTask has more quests to complete. nextQuest = Quests.getNextQuest(questId, npc, toon) if nextQuest == (Quests.NA, Quests.NA): # No more quests in the current ToonTask! if isinstance(quest, Quests.TrackChoiceQuest): # TrackTrainingRewards are a little different, as we now # have to display the gag track selection menu. npc.presentTrackChoice(toonId, questId, quest.getChoices()) return # This function is pretty weird... not sure why it's even here... # But I'll include it just in case... (TMS says: "idk about this # one, maybe a single quest can have different rewards?") rewardId = Quests.getAvatarRewardId(toon, questId) npc.completeQuest(toonId, questId, rewardId) self.completeQuest(toon, questId) self.giveReward(toon, rewardId) return else: # We have another quest to go, sigh. self.completeQuest(toon, questId) nextQuestId = nextQuest[0] nextRewardId = Quests.getFinalRewardId(questId, 1) nextToNpcId = nextQuest[1] self.npcGiveQuest(npc, toon, nextQuestId, nextRewardId, nextToNpcId) return # We had no quests to hand in, maybe they want to take out a new ToonTask? if len(self.__toonQuestsList2Quests(toon.quests)) >= toon.getQuestCarryLimit(): # Nope, they already have the maximum amount of concurring quests they # can carry. Reject them. self.notify.debug("Rejecting toonId %d because their quest inventory is full." % toonId) npc.rejectAvatar(toonId) return # Are we in the Toontorial? if toonId in self.air.tutorialManager.avId2fsm.keys(): # Are we speaking to Tom? if toon.getRewardHistory()[0] == 0: self.npcGiveQuest(npc, toon, 101, Quests.findFinalRewardId(101)[0], Quests.getQuestToNpcId(101), storeReward=True) # FIXME please, i have no idea if this is correct self.air.tutorialManager.avId2fsm[toonId].demand('Battle') return # Are they eligible for a tier upgrade? tier = toon.getRewardHistory()[0] if Quests.avatarHasAllRequiredRewards(toon, tier): # They have all the rewards needed for the next tier. if not Quests.avatarWorkingOnRequiredRewards(toon): # Check to make sure they are not on the LOOPING_FINAL_TIER if tier != Quests.LOOPING_FINAL_TIER: tier += 1 # Set the tier toon.b_setRewardHistory(tier, []) else: # They're eligible for a tier upgrade, but haven't finished all # of their required ToonTasks yet. self.notify.debug("Rejecting toonId %d because they are still working on their current tier." % toonId) npc.rejectAvatarTierNotDone(toonId) return # Time to give them a list of "suitable" tasks! suitableQuests = Quests.chooseBestQuests(tier, npc, toon) if not suitableQuests: # Uh oh! There's no suitable quests for them at the moment... reject. self.notify.debug("Rejecting toonId %d because there are no quests available!" % toonId) npc.rejectAvatar(toonId) return # Tell the NPC to select some quests from the generated list. npc.presentQuestChoice(toonId, suitableQuests) return
def update(self, questDesc): questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc quest = Quests.getQuest(questId) self.teleportButton['command'] = self.teleportToShop self.teleportButton['extraArgs'] = [toNpcId] 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() if self.laffMeter: self.laffMeter.destroy() fComplete = quest.getCompletionStatus(base.localAvatar, questDesc) == Quests.COMPLETE if Quests.isQuestJustForFun(questId, rewardId): if fComplete: self.funQuest.hide() self.teleportButton.show() else: self.teleportButton.hide() if toNpcId == Quests.ToonHQ: self.teleportButton.show() self.teleportButton.setPos(0.285, 0, -0.15) toNpcName = TTLocalizer.QuestPosterHQOfficer toNpcBuildingName = TTLocalizer.QuestPosterHQBuildingName toNpcStreetName = TTLocalizer.QuestPosterHQStreetName toNpcLocationName = TTLocalizer.QuestPosterHQLocationName elif toNpcId == Quests.ToonTailor: self.teleportButton.show() self.teleportButton.setPos(0.285, 0, -0.15) toNpcName = TTLocalizer.QuestPosterTailor toNpcBuildingName = TTLocalizer.QuestPosterTailorBuildingName toNpcStreetName = TTLocalizer.QuestPosterTailorStreetName toNpcLocationName = TTLocalizer.QuestPosterTailorLocationName else: self.teleportButton.show() self.teleportButton.setPos(0.285, 0, -0.15) 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 isinstance(quest, Quests.TexturedQuest) and quest.hasFrame(): self.teleportButton.hide() frame = quest.getFrame() frameBgColor = frame[1] lIconGeom = frame[0] lIconGeomScale = 0.13 if not fComplete: infoText = quest.getLocationName() if infoText == '': infoText = TTLocalizer.QuestPosterAnywhere elif quest.getType() == Quests.DeliverGagQuest or quest.getType() == Quests.DeliverItemQuest: frameBgColor = 'red' if fComplete: self.teleportButton.show() self.teleportButton.setPos(0.175, 0, -0.125) 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 self.teleportButton.setPos(0.285, 0, -0.15) 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 in SuitDNA.suitDeptModelPaths: icon = cogIcons.find(SuitDNA.suitDeptModelPaths[holder]) 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 else: self.teleportButton.show() elif quest.getType() == Quests.VisitQuest: self.teleportButton.show() 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' filmstrip = loader.loadModel('phase_3.5/models/gui/filmstrip') lIconGeom = DirectFrame(parent=self, relief=None, image=filmstrip, image_scale=.5) self.question = DirectLabel(parent=lIconGeom, relief=None, pos=(0, 0, 0), text='?', text_scale=0.2, text_pos=(0, -0.04), text_fg=(0.72, 0.72, 0.72, 1)) lIconGeom['image_color'] = Vec4(0.7, 0.7, 0.7, 1) self.question['text_fg'] = Vec4(0.6, 0.6, 0.6, 1) rIconGeom = None filmstrip.removeNode() elif quest.getType() == Quests.BuildingQuest: self.teleportButton.hide() 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.FactoryQuest: self.teleportButton.hide() 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: self.teleportButton.hide() 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.CogPartQuest: self.teleportButton.hide() 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.ForemanQuest or quest.getType() == Quests.SupervisorQuest: self.teleportButton.hide() 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.RescueQuest: self.teleportButton.hide() frameBgColor = 'blue' lIconGeom = self.createNpcToonHead(random.choice(NPCToons.HQnpcFriends.keys())) lIconGeomScale = 0.13 infoText = quest.getLocationName().strip() elif quest.getType() == Quests.FriendQuest: self.teleportButton.hide() 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: self.teleportButton.hide() 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: self.teleportButton.hide() 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: self.teleportButton.hide() 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: self.teleportButton.hide() frameBgColor = 'blue' if quest.getType() == Quests.CogTrackQuest: dept = quest.getCogTrack() cogIcons = loader.loadModel('phase_3/models/gui/cog_icons') lIconGeomScale = 0.13 if dept in SuitDNA.suitDeptModelPaths: icon = cogIcons.find(SuitDNA.suitDeptModelPaths[dept]) 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 in SuitDNA.suitDeptModelPaths: icon = cogIcons.find(SuitDNA.suitDeptModelPaths[dept]) 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: self.teleportButton.show() 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 is not 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 if quest.getType() != Quests.TrackChoiceQuest: 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]) else: self.lPictureFrame['text'] = 'Track Choice' self.lPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor]) if len(captions) > 1 and quest.getType() != Quests.TrackChoiceQuest: 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) if not Quests.QuestDict[questId][0] >= 11: self.teleportButton.hide() return
def setFromAvatar(self, av): # Set the rewards to indicate what the avatar would have after # applying all rewards up to but not including the current # reward index, and not including any currently active quests. # Get the list of current reward ID's. rewardIds = [] for q in av.quests: questId, fromNpcId, toNpcId, rewardId, toonProgress = q if rewardId == Quests.NA: rewardId = Quests.getFinalRewardId(questId, fAll=1) rewardIds.append(rewardId) self.notify.debug("Ignoring rewards: %s" % (rewardIds)) self.setRewardIndex(av.rewardTier, rewardIds, av.rewardHistory) # add maxHp for fishCollection fishHp = int(len(av.fishCollection) / FishGlobals.FISH_PER_BONUS) self.notify.debug("Adding %s hp for fish collection" % (fishHp)) self.maxHp += fishHp # add maxHp for flowerCollection flowerHp = int( len(av.flowerCollection) / GardenGlobals.FLOWERS_PER_BONUS) self.notify.debug("Adding %s hp for fish collection" % (flowerHp)) self.maxHp += flowerHp # add maxHp for HQ cog suit HQdepts = ( # add depts as the HQs are released ToontownGlobals.cogHQZoneId2deptIndex(ToontownGlobals.SellbotHQ), #ToontownGlobals.cogHQZoneId2deptIndex(ToontownGlobals.BossbotHQ), ToontownGlobals.cogHQZoneId2deptIndex(ToontownGlobals.LawbotHQ), ToontownGlobals.cogHQZoneId2deptIndex(ToontownGlobals.CashbotHQ), ) levels = av.getCogLevels() cogTypes = av.getCogTypes() suitHp = 0 for dept in HQdepts: level = levels[dept] type = cogTypes[dept] if type >= (SuitDNA.suitsPerDept - 1): # add 1 HP for every milestone level they've hit for milestoneLevel in ToontownGlobals.CogSuitHPLevels: if level >= milestoneLevel: suitHp += 1 else: break self.notify.debug("Adding %s hp for cog suits" % (suitHp)) self.maxHp += suitHp # add maxHp for karting trophies kartingHp = int( av.kartingTrophies.count(1) / RaceGlobals.TrophiesPerCup) self.notify.debug("Adding %s hp for karting trophies" % (kartingHp)) self.maxHp += kartingHp # add maxHp for golf trophies golfHp = int(av.golfTrophies.count(True) / GolfGlobals.TrophiesPerCup) self.notify.debug("Adding %s hp for golf trophies" % (golfHp)) self.maxHp += golfHp
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
def requestInteract(self, toonId, npc): toon = self.air.doId2do.get(toonId) if not toon: # TODO: Flag suspicious. They shouldn't have got this far. return # Check if the toon has any quests to turn in. for index, quest in enumerate(self.__toonQuestsList2Quests(toon.quests)): questId, fromNpcId, toNpcId, rewardId, toonProgress = toon.quests[index] isComplete = quest.getCompletionStatus(toon, toon.quests[index], npc) if isComplete != Quests.COMPLETE: # This quest isn't complete, skip. continue # If we're in the Toontorial, move to the next step. if toonId in self.air.tutorialManager.avId2fsm.keys(): self.air.tutorialManager.avId2fsm[toonId].demand('Tunnel') # Take away gags if it's a DeliverGagQuest. if isinstance(quest, Quests.DeliverGagQuest): track, level = quest.getGagType() toon.inventory.setItem(track, level, toon.inventory.numItem(track, level) - quest.getNumGags()) toon.b_setInventory(toon.inventory.makeNetString()) # Check if the ToonTask has more quests to complete. nextQuest = Quests.getNextQuest(questId, npc, toon) if nextQuest == (Quests.NA, Quests.NA): # No more quests in the current ToonTask! if isinstance(quest, Quests.TrackChoiceQuest): # TrackTrainingRewards are a little different, as we now # have to display the gag track selection menu. npc.presentTrackChoice(toonId, questId, quest.getChoices()) return # This function is pretty weird... not sure why it's even here... # But I'll include it just in case... (TMS says: "idk about this # one, maybe a single quest can have different rewards?") rewardId = Quests.getAvatarRewardId(toon, questId) npc.completeQuest(toonId, questId, rewardId) self.completeQuest(toon, questId) self.giveReward(toon, rewardId) return else: # We have another quest to go, sigh. self.completeQuest(toon, questId) nextQuestId = nextQuest[0] nextRewardId = Quests.getFinalRewardId(questId, 1) nextToNpcId = nextQuest[1] self.npcGiveQuest(npc, toon, nextQuestId, nextRewardId, nextToNpcId) return # We had no quests to hand in, maybe they want to take out a new ToonTask? if len(self.__toonQuestsList2Quests(toon.quests)) >= toon.getQuestCarryLimit(): # Nope, they already have the maximum amount of concurring quests they # can carry. Reject them. self.notify.debug("Rejecting toonId %d because their quest inventory is full." % toonId) npc.rejectAvatar(toonId) return # Are we in the Toontorial? if toonId in self.air.tutorialManager.avId2fsm.keys(): # Are we speaking to Tom? if toon.getRewardHistory()[0] == 0: self.npcGiveQuest(npc, toon, 101, Quests.findFinalRewardId(101)[0], Quests.getQuestToNpcId(101), storeReward=True) # FIXME please, i have no idea if this is correct self.air.tutorialManager.avId2fsm[toonId].demand('Battle') return # Are they eligible for a tier upgrade? tier = toon.getRewardHistory()[0] if Quests.avatarHasAllRequiredRewards(toon, tier): # They have all the rewards needed for the next tier. if not Quests.avatarWorkingOnRequiredRewards(toon): # Check to make sure they are not on the LOOPING_FINAL_TIER if tier != Quests.LOOPING_FINAL_TIER: tier += 1 # Set the tier toon.b_setRewardHistory(tier, []) else: # They're eligible for a tier upgrade, but haven't finished all # of their required ToonTasks yet. self.notify.debug("Rejecting toonId %d because they are still working on their current tier." % toonId) npc.rejectAvatarTierNotDone(toonId) return # Time to give them a list of "suitable" tasks! suitableQuests = Quests.chooseBestQuests(tier, npc, toon) if not suitableQuests: # Uh oh! There's no suitable quests for them at the moment... reject. self.notify.debug("Rejecting toonId %d because there are no quests available!" % toonId) npc.rejectAvatar(toonId) return # Tell the NPC to select some quests from the generated list. npc.presentQuestChoice(toonId, suitableQuests) return
def update(self, questDesc): (questId, fromNpcId, toNpcId, rewardId, toonProgress) = questDesc quest = Quests.getQuest(questId) if rewardId == Quests.NA: finalReward = Quests.getFinalRewardId(questId, fAll = 1) transformedReward = Quests.transformReward(finalReward, toonbase.localToon) reward = Quests.getReward(transformedReward) else: reward = Quests.getReward(rewardId) if reward: rewardString = reward.getPosterString() else: rewardString = '' self.rewardText['text'] = rewardString self.fitLabel(self.rewardText) questEntry = Quests.QuestDict.get(questId) if questEntry: tier = questEntry[0] fOptional = Quests.isRewardOptional(tier, rewardId) else: fOptional = 0 if fOptional: self.funQuest.show() else: self.funQuest.hide() fComplete = quest.getCompletionStatus(toonbase.localToon, questDesc) == Quests.COMPLETE fromNpcName = NPCToons.getNPCName(fromNpcId) npcZone = NPCToons.getNPCZone(fromNpcId) hoodId = ZoneUtil.getHoodId(npcZone) branchId = ZoneUtil.getBranchZone(npcZone) if fromNpcId == Quests.ToonHQ: locationName = Localizer.QuestPosterHQLocationName buildingName = Localizer.QuestPosterHQBuildingName streetName = Localizer.QuestPosterHQStreetName elif fromNpcId == Quests.ToonTailor: locationName = Localizer.QuestPosterTailorLocationName buildingName = Localizer.QuestPosterTailorBuildingName streetName = Localizer.QuestPosterTailorStreetName else: locationName = toonbase.tcr.hoodMgr.getFullnameFromId(hoodId) buildingName = NPCToons.getBuildingTitle(npcZone) streetName = ZoneUtil.getStreetName(branchId) if toNpcId == Quests.ToonHQ: toNpcName = Localizer.QuestPosterHQOfficer toNpcBuildingName = Localizer.QuestPosterHQBuildingName toNpcStreetName = Localizer.QuestPosterHQStreetName toNpcLocationName = Localizer.QuestPosterHQLocationName elif toNpcId == Quests.ToonTailor: toNpcName = Localizer.QuestPosterTailor toNpcBuildingName = Localizer.QuestPosterTailorBuildingName toNpcStreetName = Localizer.QuestPosterTailorStreetName toNpcLocationName = Localizer.QuestPosterTailorLocationName else: toNpcName = NPCToons.getNPCName(toNpcId) toNpcZone = NPCToons.getNPCZone(toNpcId) toNpcHoodId = ZoneUtil.getHoodId(toNpcZone) toNpcLocationName = toonbase.tcr.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 = -0.0625 auxText = None auxTextPos = Vec3(0, 0, 0.12) headlineString = quest.getHeadlineString() 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.loadModelOnce('phase_3.5/models/gui/inventory_icons') (track, item) = quest.getGagType() lIconGeom = invModel.find('**/' + AvPropsNew[track][item]) invModel.removeNode() else: bookModel = loader.loadModelOnce('phase_3.5/models/gui/stickerbook_gui') lIconGeom = bookModel.find('**/package') lIconGeomScale = 0.12 bookModel.removeNode() if not fComplete: captions.append(toNpcName) auxText = Localizer.QuestPosterAuxTo auxTextPos.setZ(0.12) lPos.setX(-0.17999999999999999) infoText = Localizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName) rIconGeom = self.createNpcToonHead(toNpcId) rIconGeomScale = IMAGE_SCALE_SMALL elif quest.getType() == Quests.RecoverItemQuest: frameBgColor = 'green' bookModel = loader.loadModelOnce('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.loadModelOnce('phase_3/models/gui/cog_icons') rIconGeom = cogIcons.find('**/cog') cogIcons.removeNode() lPos.setX(-0.17999999999999999) auxText = Localizer.QuestPosterAuxFrom elif holder == Quests.AnyFish: headlineString = 'GO FISHING' auxText = Localizer.QuestPosterAuxFor auxTextPos.setX(-0.17999999999999999) captions = captions[:1] elif holderType == 'track': cogIcons = loader.loadModelOnce('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.loadModelOnce('phase_3/models/gui/cog_icons') rIconGeom = cogIcons.find('**/cog') rIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode() else: rIconGeom = self.createSuitHead(holder) lPos.setX(-0.17999999999999999) auxText = Localizer.QuestPosterAuxFrom infoText = string.capwords(quest.getLocationName()) if infoText == '': infoText = Localizer.QuestPosterAnywhere elif quest.getType() == Quests.VisitQuest: frameBgColor = 'brown' captions[0] = '%s' % toNpcName lIconGeom = self.createNpcToonHead(toNpcId) lIconGeomScale = IMAGE_SCALE_SMALL if not fComplete: infoText = Localizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName) elif quest.getType() == Quests.TrackChoiceQuest: frameBgColor = 'green' invModel = loader.loadModelOnce('phase_3.5/models/gui/inventory_icons') (track1, track2) = quest.getChoices() lIconGeom = invModel.find('**/' + AvPropsNew[track1][1]) if not fComplete: auxText = Localizer.QuestPosterAuxOr lPos.setX(-0.17999999999999999) rIconGeom = invModel.find('**/' + AvPropsNew[track2][1]) infoText = Localizer.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.loadModelCopy('phase_5/models/modules/suit_landmark_corp') elif track == 'l': lIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_legal') elif track == 'm': lIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_money') elif track == 's': lIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_sales') else: bookModel = loader.loadModelCopy('phase_3.5/models/gui/stickerbook_gui') lIconGeom = bookModel.find('**/COG_building') bookModel.removeNode() if lIconGeom and track != Quests.Any: self.loadElevator(lIconGeom, numFloors) self.fitGeometry(lIconGeom, fFlip = 1) lIconGeomScale = IMAGE_SCALE_SMALL else: lIconGeomScale = 0.13 if not fComplete: infoText = quest.getLocationName() if infoText == '': infoText = Localizer.QuestPosterAnywhere elif quest.getType() == Quests.BuildingNewbieQuest: frameBgColor = 'blue' track = quest.getBuildingTrack() numFloors = quest.getNumFloors() if track == 'c': rIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_corp') elif track == 'l': rIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_legal') elif track == 'm': rIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_money') elif track == 's': rIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_sales') else: bookModel = loader.loadModelCopy('phase_3.5/models/gui/stickerbook_gui') rIconGeom = bookModel.find('**/COG_building') bookModel.removeNode() if rIconGeom and track != Quests.Any: self.loadElevator(rIconGeom, numFloors) self.fitGeometry(rIconGeom, fFlip = 1) rIconGeomScale = IMAGE_SCALE_SMALL else: rIconGeomScale = 0.13 if not fComplete: headlineString = Localizer.QuestsNewbieQuestHeadline captions = [ Localizer.QuestsCogNewbieQuestCaption % quest.getNewbieLevel()] captions.append(map(string.capwords, quest.getObjectiveStrings())) auxText = Localizer.QuestsCogNewbieQuestAux lPos.setX(-0.17999999999999999) self.laffMeter = self.createLaffMeter(quest.getNewbieLevel()) self.laffMeter.setScale(0.040000000000000001) lIconGeom = None infoText = quest.getLocationName() if infoText == '': infoText = Localizer.QuestPosterAnywhere else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale elif quest.getType() == Quests.FriendQuest: frameBgColor = 'brown' gui = loader.loadModelOnce('phase_3.5/models/gui/friendslist_gui') lIconGeom = gui.find('**/FriendsBox_Closed') lIconGeomScale = 0.45000000000000001 gui.removeNode() infoText = Localizer.QuestPosterAnywhere elif quest.getType() == Quests.FriendNewbieQuest: frameBgColor = 'brown' gui = loader.loadModelOnce('phase_3.5/models/gui/friendslist_gui') lIconGeom = gui.find('**/FriendsBox_Closed') lIconGeomScale = 0.45000000000000001 gui.removeNode() infoText = Localizer.QuestPosterAnywhere elif quest.getType() == Quests.TrolleyQuest: frameBgColor = 'lightBlue' gui = loader.loadModelOnce('phase_3.5/models/gui/stickerbook_gui') lIconGeom = gui.find('**/trolley') lIconGeomScale = 0.13 gui.removeNode() infoText = Localizer.QuestPosterPlayground elif quest.getType() == Quests.MinigameNewbieQuest: frameBgColor = 'lightBlue' gui = loader.loadModelOnce('phase_3.5/models/gui/stickerbook_gui') rIconGeom = gui.find('**/trolley') rIconGeomScale = 0.13 gui.removeNode() infoText = Localizer.QuestPosterPlayground if not fComplete: captions = [ Localizer.QuestsMinigameNewbieQuestCaption % quest.getNewbieLevel()] captions.append(map(string.capwords, quest.getObjectiveStrings())) auxText = Localizer.QuestsMinigameNewbieQuestAux lPos.setX(-0.17999999999999999) self.laffMeter = self.createLaffMeter(quest.getNewbieLevel()) self.laffMeter.setScale(0.040000000000000001) lIconGeom = None else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale else: frameBgColor = 'blue' if quest.getType() == Quests.CogTrackQuest: dept = quest.getCogTrack() cogIcons = loader.loadModelOnce('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.loadModelOnce('phase_3/models/gui/cog_icons') lIconGeom = cogIcons.find('**/cog') lIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode() elif quest.getType() == Quests.CogLevelQuest: cogIcons = loader.loadModelOnce('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.loadModelOnce('phase_3/models/gui/cog_icons') rIconGeom = cogIcons.find('**/cog') rIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode() if not fComplete: headlineString = Localizer.QuestsNewbieQuestHeadline captions = [ Localizer.QuestsCogNewbieQuestCaption % quest.getNewbieLevel()] captions.append(map(string.capwords, quest.getObjectiveStrings())) auxText = Localizer.QuestsCogNewbieQuestAux lPos.setX(-0.17999999999999999) self.laffMeter = self.createLaffMeter(quest.getNewbieLevel()) self.laffMeter.setScale(0.040000000000000001) lIconGeom = None else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale if not fComplete: infoText = string.capwords(quest.getLocationName()) if infoText == '': infoText = Localizer.QuestPosterAnywhere if fComplete: textColor = (0, 0.29999999999999999, 0, 1) imageColor = Vec4(*self.colors['lightGreen']) lPos.setX(-0.17999999999999999) rIconGeom = self.createNpcToonHead(toNpcId) rIconGeomScale = IMAGE_SCALE_SMALL captions = captions[:1] captions.append(toNpcName) auxText = Localizer.QuestPosterAuxReturnTo headlineString = 'COMPLETE' infoText = Localizer.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'] = captions[0] self.lPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor]) if len(captions) > 1: self.rPictureFrame.show() self.rPictureFrame['text'] = captions[1] self.rPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor]) else: self.rPictureFrame.hide() 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 self.questInfo['text'] = infoText self.questInfo.setZ(infoZ) self.fitLabel(self.questInfo) if auxText: self.auxText.show() self.auxText['text'] = auxText self.auxText.setPos(auxTextPos) else: self.auxText.hide() self.bind(WITHIN, self.mouseEnterPoster) self.bind(WITHOUT, self.mouseExitPoster) numQuestItems = quest.getNumQuestItems() if fComplete or numQuestItems <= 1: self.questProgress.hide() else: self.questProgress.show() self.questProgress['value'] = toonProgress self.questProgress['range'] = numQuestItems self.questProgress['text'] = quest.getProgressString(toonbase.localToon, questDesc)
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