def getUpdateBrief(self): taskInfo = self.getTaskInfo(speech=False) locationText = QuestGlobals.getLocationText(self.area, verbose=False).replace('Any Street', '') if locationText[0].isspace(): locationText = locationText[1:] return '{0} {1} in {2}'.format(QuestGlobals.DEFEAT, taskInfo, locationText).replace('\n', ' ')
def __init__(self, itemName, itemIcon = QuestGlobals.getPackageIcon()): self.itemName = itemName self.itemIcon = itemIcon if False:#self.itemName in GagGlobals.gagIds.values(): invIcons = loader.loadModel('phase_3.5/models/gui/inventory_icons.bam') self.itemIcon = invIcons.find('**/%s' % GagGlobals.InventoryIconByName[self.itemName]) invIcons.removeNode()
def __init__(self, itemName, goal, area, recoverChance, itemIcon = QuestGlobals.getPackageIcon(), name = QuestGlobals.Any, level = None, levelRange = None, variant = None, dept = None): ItemObjective.__init__(self, itemName, itemIcon) CogObjective.__init__(self, name, goal, area, level, levelRange, variant, dept) # We're expecting that the recover chance be (0 <= n <= 100). if 0 <= recoverChance <= 100: self.recoverChance = recoverChance else: raise ValueError('RecoverItemObjective: \'recoverChance\' member must be 0 <= n <= 100. ' / + 'Instead received {0}.'.format(recoverChance))
def getProgressUpdateBrief(self): taskInfo = '' if self.minFloors != QuestGlobals.Any: taskInfo += "%s+ Story " % QuestGlobals.getNumName(self.minFloors) name = '%s Buildings' if self.dept == QuestGlobals.Any: subject = name % CIGlobals.Suit else: subject = name % self.dept.getName() if self.goal > 1: subject = CIGlobals.makePlural(subject) taskInfo += subject return ('{0} of {1} {2} {3}'.format(self.progress, self.goal, taskInfo, CIGlobals.makePastTense(self.Header)))
def showQuests(self): assert self is base.localAvatar.questManager positions = [(-0.45, 0.75, 0.3), (0.45, 0.75, 0.3), (-0.45, 0.75, -0.3), (0.45, 0.75, -0.3)] self.hideQuests() for i in range(4): quest = None if i < len(self.quests.values()): quest = self.quests.values()[i] poster = QuestGlobals.generatePoster(quest, parent=aspect2d) poster.setName('QPoster{0}'.format(i)) poster.setPos(positions[i]) poster.setScale(0.95) poster.setPythonTag('Data', poster) poster.show() self.acceptOnce(base.inputStore.ViewQuests + '-up', self.hideQuests)
def getTaskInfo(self, speech = False): taskInfo = ('A ' if not speech else 'a ') if self.goal == 1 else '%d ' % self.goal if self.minFloors != QuestGlobals.Any: taskInfo += "%s+ Story " % QuestGlobals.getNumName(self.minFloors) name = self.Name if not speech: name = '%s Building' if self.dept == QuestGlobals.Any: subject = name % CIGlobals.Suit else: subject = name % self.dept.getName() if self.goal > 1: subject = CIGlobals.makePlural(subject) taskInfo += subject return taskInfo
def __init__(self, quest, parent=aspect2d, **kw): self.quest = quest # Let's begin building the quest poster. bookModel = loader.loadModel( 'phase_3.5/models/gui/stickerbook_gui.bam') questCard = bookModel.find('**/questCard') optiondefs = (('relief', None, None), ('image', questCard, None), ('image_scale', (0.8, 1.0, 0.58), None), ('state', DGG.NORMAL, None), ('pos', self.spots[self.quest.getIndex()], None)) self.defineoptions(kw, optiondefs) DirectFrame.__init__(self, relief=None) self.initialiseoptions(QuestPoster) self._deleteCallback = None self.questFrame = DirectFrame(parent=self, relief=None) # Quest title text self.headline = DirectLabel(parent=self.questFrame, relief=None, text=self.quest.getName(), text_font=CIGlobals.getMinnieFont(), text_fg=QuestGlobals.TEXT_COLOR, text_scale=0.05, text_align=TextNode.ACenter, text_wordwrap=25.0, textMayChange=1, pos=(0, 0, 0.23)) # Quest information self.questInfo = DirectLabel(parent=self.questFrame, relief=None, text='', text_font=CIGlobals.getToonFont(), text_fg=QuestGlobals.TEXT_COLOR, text_scale=0.04, text_align=TextNode.ACenter, text_wordwrap=TEXT_WORDWRAP, textMayChange=1, pos=(QuestGlobals.DEFAULT_INFO_POS)) self.questInfo.hide() self.questInfo02 = DirectLabel(parent=self.questFrame, relief=None, text='', text_font=CIGlobals.getToonFont(), text_fg=QuestGlobals.TEXT_COLOR, text_scale=0.04, text_align=TextNode.ACenter, text_wordwrap=TEXT_WORDWRAP, textMayChange=1, pos=(QuestGlobals.DEFAULT_INFO2_POS)) self.questInfo02.hide() self.locationInfo = DirectLabel(parent=self.questFrame, relief=None, text='N/A', text_font=CIGlobals.getToonFont(), text_fg=QuestGlobals.TEXT_COLOR, text_scale=TEXT_SCALE, text_align=TextNode.ACenter, text_wordwrap=TEXT_WORDWRAP, textMayChange=1, pos=(0, 0, -0.115)) self.locationInfo.hide() # C'mon Brian this one is obvious self.rewardText = DirectLabel(parent=self.questFrame, relief=None, text='', text_fg=QuestGlobals.REWARD_RED, text_scale=0.0425, text_align=TextNode.ALeft, text_wordwrap=17.0, textMayChange=1, pos=(-0.36, 0, -0.26)) self.rewardText.hide() self.lPictureFrame = DirectFrame( parent=self.questFrame, relief=None, image=bookModel.find('**/questPictureFrame'), image_scale=QuestGlobals.IMAGE_SCALE_SMALL, text='', text_pos=(0, -0.11), text_fg=QuestGlobals.TEXT_COLOR, text_scale=TEXT_SCALE, text_align=TextNode.ACenter, text_wordwrap=11.0, pos=(QuestGlobals.DEFAULT_LEFT_PICTURE_POS), textMayChange=1) self.lPictureFrame.hide() self.rPictureFrame = DirectFrame( parent=self.questFrame, relief=None, image=bookModel.find('**/questPictureFrame'), image_scale=QuestGlobals.IMAGE_SCALE_SMALL, text='', text_pos=(0, -0.11), text_fg=QuestGlobals.TEXT_COLOR, text_scale=TEXT_SCALE, text_align=TextNode.ACenter, text_wordwrap=11.0, textMayChange=1, pos=(QuestGlobals.DEFAULT_RIGHT_PICTURE_POS)) self.rPictureFrame['image_color'] = Vec4(*QuestGlobals.GREEN) self.rPictureFrame.hide() self.lQuestIcon = DirectFrame(parent=self.lPictureFrame, relief=None, text=' ', text_font=CIGlobals.getSuitFont(), text_pos=(0, -0.03), text_fg=QuestGlobals.TEXT_COLOR, text_scale=0.13, text_align=TextNode.ACenter, text_wordwrap=13.0, textMayChange=1) self.lQuestIcon.setColorOff(-1) self.rQuestIcon = DirectFrame(parent=self.rPictureFrame, relief=None, text=' ', text_font=CIGlobals.getSuitFont(), text_pos=(0, -0.03), text_fg=QuestGlobals.TEXT_COLOR, text_scale=0.13, text_align=TextNode.ACenter, text_wordwrap=13.0, textMayChange=1) self.rQuestIcon.setColorOff(-1) head = SuitBank.PennyPincher.getHead().generate() head.setDepthTest(True) head.setDepthWrite(True) head.setScale(0.25) for part in head.getChildren(): part.setDepthTest(True) part.setDepthWrite(True) self.fitGeometry(head, fFlip=1) self.rQuestIcon['geom'] = head self.rQuestIcon['geom_scale'] = QuestGlobals.IMAGE_SCALE_SMALL self.rQuestIcon['geom_pos'] = Point3(0, 10, -0.05) self.rQuestIcon['geom_hpr'] = Point3(180, 0, 0) self.rQuestIcon.initialiseoptions(DirectFrame) self.auxText = DirectLabel(parent=self.questFrame, relief=None, text='Recover', text_font=CIGlobals.getToonFont(), text_scale=QuestGlobals.QPauxText, text_fg=QuestGlobals.TEXT_COLOR, text_align=TextNode.ACenter, pos=(QuestGlobals.DEFAULT_AUX_POS), textMayChange=1) self.auxText.hide() self.middleText = DirectLabel(parent=self.questFrame, relief=None, text='from:', text_font=CIGlobals.getToonFont(), text_scale=QuestGlobals.QPauxText, text_fg=QuestGlobals.TEXT_COLOR, text_align=TextNode.ACenter, pos=(QuestGlobals.DEFAULT_MIDDLE_POS), textMayChange=1) self.middleText.hide() self.questProgress = DirectWaitBar( parent=self.questFrame, relief=DGG.SUNKEN, frameSize=(-0.95, 0.95, -0.1, 0.12), borderWidth=(0.025, 0.025), scale=0.2, frameColor=(0.945, 0.875, 0.706, 1.0), barColor=(0.5, 0.7, 0.5, 1), text='0/0', text_font=CIGlobals.getToonFont(), text_scale=0.19, text_fg=(0.05, 0.14, 0.4, 1), text_align=TextNode.ACenter, text_pos=(0, -0.05), #-0.02 pos=(0, 0, -0.2425)) self.questProgress.hide() rewardFrameGeom = loader.loadModel( 'phase_4/models/gui/gag_shop_purchase_gui.bam') self.rewardFrame = DirectFrame( parent=self.questFrame, relief=None, geom=rewardFrameGeom.find('**/Goofys_Sign'), geom_scale=(0.615, 0, 0.4), pos=(-0.01, 0, -0.25)) jellybeanJar = QuestGlobals.getFilmIcon() self.lRewardFrame = DirectFrame( parent=self.rewardFrame, relief=None, geom=jellybeanJar, geom_scale=QuestGlobals.TP_ACCESS_SCALE, pos=(QuestGlobals.LEFT_TP_ACCESS_POS)) self.lRewardInfo = DirectFrame( parent=self.questFrame, relief=None, geom=rewardFrameGeom.find('**/Char_Pnl'), geom_scale=(0.15, 0, 0.1275), text='#1', text_font=CIGlobals.getToonFont(), text_scale=0.04, text_fg=(0, 0, 0, 1), text_align=TextNode.ACenter, text_pos=(0, -0.01), pos=(-0.285, 0, -0.255)) self.lRewardInfo.setBin('gui-popup', 40) self.rRewardFrame = DirectFrame(parent=self.rewardFrame, relief=None, geom=QuestGlobals.getJBIcon(), geom_scale=QuestGlobals.JB_JAR_SCALE, pos=QuestGlobals.RIGHT_JB_JAR_POS) self.rRewardInfo = DirectFrame( parent=self.questFrame, relief=None, geom=rewardFrameGeom.find('**/Char_Pnl'), geom_scale=(0.15, 0, 0.1275), text='25', text_font=CIGlobals.getToonFont(), text_scale=0.04, text_fg=(0, 0, 0, 1), text_align=TextNode.ACenter, text_pos=(0, -0.01), pos=(0.2725, 0, -0.255)) self.rRewardInfo.setBin('gui-popup', 40) rewardFrameGeom.removeNode() # This is the rotated text on the side. self.sideInfo = DirectLabel(parent=self.questFrame, relief=None, text=QuestGlobals.JUST_FOR_FUN, text_fg=(0.0, 0.439, 1.0, 1.0), text_shadow=(0, 0, 0, 1), pos=(-0.2825, 0, 0.2), scale=0.03) self.sideInfo.setR(-30) self.sideInfo.hide() bookModel.removeNode() self.laffMeter = None return
def update(self): objective = self.quest.getCurrentObjective() objective.setupQuestPoster() # Let's setup the picture frames and info. self.questInfo.setPos(self.quest.getInfoPos()) self.questInfo['text'] = self.quest.getInfoText() self.questInfo02.setPos(self.quest.getInfo02Pos()) self.questInfo02['text'] = self.quest.getInfo02Text() self.lPictureFrame.setPos(self.quest.getLeftPicturePos()) self.rPictureFrame.setPos(self.quest.getRightPicturePos()) self.lQuestIcon['geom'] = self.quest.getLeftIconGeom() if isinstance(objective, VisitNPCObjective) or isinstance( objective, DefeatObjective): if objective.getDidEditLeft(): head = self.quest.getLeftIconGeom() icon = self.lQuestIcon scale = self.quest.getLeftIconScale() else: head = self.quest.getRightIconGeom() icon = self.rQuestIcon scale = self.quest.getRightIconScale() isHead = True if type(head) == ToonHead else head.getName() == ( '%sHead' % CIGlobals.Suit) if isHead: head.setDepthWrite(1) head.setDepthTest(1) self.fitGeometry(head, fFlip=1) else: icon.setScale(scale) if isinstance(objective, VisitNPCObjective) and icon == self.rQuestIcon: icon.setHpr(180, 0, 0) icon.setPos(icon.getX(), icon.getY(), icon.getZ() + 0.05) elif isinstance(objective, CogObjective): if icon == self.lQuestIcon: if objective.cog != QuestGlobals.Any: icon.setScale(QuestGlobals.IMAGE_SCALE_SMALL) icon.setPos(icon.getX(), icon.getY(), icon.getZ() - 0.04) else: head.setScale(self.quest.getLeftIconScale()) else: if objective.cog != QuestGlobals.Any: head.setScale(1.2) else: icon.setScale(self.quest.getRightIconScale()) icon['geom'] = head icon['geom_scale'] = QuestGlobals.IMAGE_SCALE_SMALL #self.lQuestIcon['geom_hpr'] = (180, 0, 0) #self.lQuestIcon['geom_pos'] = (0, 10, -0.04) else: self.lQuestIcon['geom'] = self.quest.getLeftIconGeom() self.lQuestIcon['geom_scale'] = self.quest.getLeftIconScale() #self.rQuestIcon['geom'] = self.quest.getRightIconGeom() #self.rQuestIcon['geom_scale'] = self.quest.getRightIconScale() if self.questInfo02['text'] == '': self.rPictureFrame.hide() self.questInfo02.hide() else: self.rPictureFrame.show() self.questInfo02.show() self.middleText['text'] = self.quest.getMiddleText() if not self.middleText['text'] == '': self.middleText.show() self.questInfo.show() self.lPictureFrame.show() # Let's set the location text. self.locationInfo['text'] = self.quest.getLocationText() self.locationInfo['text_pos'] = (0, self.quest.getLocationY()) self.locationInfo.show() # Let's set the progress bar up. if self.quest.currentObjective.HasProgress: self.questProgress['text'] = self.quest.getProgressText() if len(self.questProgress['text'] ) > 0 and not objective.isComplete(): self.questProgress.show() self.questProgress['range'] = objective.goal self.questProgress['value'] = objective.getProgress() & pow( 2, 16) - 1 else: self.questProgress.hide() # Let's setup the aux text. self.auxText.setPos(self.quest.getAuxPos()) self.auxText['text'] = self.quest.getAuxText() self.auxText.show() maxHP = base.localAvatar.getMaxHealth() # Let's setup the rewards. for i in xrange(0, len(self.quest.getRewards())): reward = self.quest.getRewards()[i] frame = self.lRewardFrame if (i == 0) else self.rRewardFrame info = self.lRewardInfo if (i == 0) else self.rRewardInfo rType = reward.getType() if (rType == RewardType.JELLYBEANS): frame['pos'] = QuestGlobals.LEFT_JB_JAR_POS if ( i == 0) else QuestGlobals.RIGHT_JB_JAR_POS frame['geom'] = QuestGlobals.getJBIcon() frame['geom_scale'] = QuestGlobals.JB_JAR_SCALE info['text'] = str(reward.getModifier()) elif (rType == RewardType.TELEPORT_ACCESS or rType == RewardType.GAG_FRAME): frame['pos'] = QuestGlobals.LEFT_TP_ACCESS_POS if ( i == 0) else QuestGlobals.RIGHT_TP_ACCESS_POS frame['geom'] = QuestGlobals.getTPAccessIcon() if ( rType == RewardType.TELEPORT_ACCESS ) else QuestGlobals.getFilmIcon() frame['geom_scale'] = QuestGlobals.TP_ACCESS_SCALE info['text'] = 'N/A' if ( rType == RewardType.TELEPORT_ACCESS ) else '#%s' % (str(reward.getModifier())) elif (rType == RewardType.LAFF_POINTS): frame.initialiseoptions(DirectFrame) r, g, b, _ = base.localAvatar.getHeadColor() pos = QuestGlobals.LEFT_LAFF_METER_POS if ( i == 0) else QuestGlobals.RIGHT_LAFF_METER_POS # Create the laff meter with the new health. hp = maxHP + reward.getModifier() laffMeter = LaffOMeter() laffMeter.generate(r, g, b, base.localAvatar.getAnimal(), maxHP=hp, initialHP=hp) # Let's position the laff meter. frame['geom'] = laffMeter frame['geom_scale'] = QuestGlobals.LAFF_METER_SCALE frame.setPos(pos) info['text'] = '+%s' % (str(reward.getModifier())) laffMeter.destroy() laffMeter = None # Hide or show the other reward depending on if there's 2 rewards. if (len(self.quest.getRewards()) == 1): self.rRewardFrame.hide() self.rRewardInfo.hide() else: self.rRewardFrame.show() self.rRewardInfo.show() if objective.finished(): self.setColor(Vec4(*QuestGlobals.LIGHT_GREEN)) self.sideInfo['text'] = 'Completed!' self.sideInfo.show() self.questInfo.initialiseoptions(DirectLabel) self.questInfo02.initialiseoptions(DirectLabel) self.locationInfo.initialiseoptions(DirectLabel) self.lPictureFrame.initialiseoptions(DirectFrame) self.rPictureFrame.initialiseoptions(DirectFrame) self.lQuestIcon.initialiseoptions(DirectFrame) self.rQuestIcon.initialiseoptions(DirectFrame) self.auxText.initialiseoptions(DirectLabel) self.middleText.initialiseoptions(DirectLabel) #self.lRewardFrame.initialiseoptions(DirectFrame) #self.rRewardFrame.initialiseoptions(DirectFrame) self.sideInfo.initialiseoptions(DirectLabel) self.lPictureFrame['image_color'] = self.quest.getPictureFrameColor() self.rPictureFrame['image_color'] = self.quest.getPictureFrameColor()
def __init__(self, itemName, goal, npcId, itemIcon = QuestGlobals.getPackageIcon(), showAsComplete = 0): ItemObjective.__init__(self, itemName, itemIcon) VisitNPCObjective.__init__(self, npcId, goal, showAsComplete = showAsComplete)
def getTaskInfo(self, speech=False): if self.npcZone != 0: locationText = QuestGlobals.getLocationText(self.area, verbose=False) return '{0} {1} at {2}'.format(QuestGlobals.VISIT, NPCGlobals.NPCToonNames[self.npcId], locationText) else: return '{0} a {1}'.format(QuestGlobals.VISIT, NPCGlobals.lHQOfficerM)
def makeQuestNotes(self, quests = None): notes = [] if not quests: quests = self.quests.values() for quest in quests: objective = quest.currentObjective note = QuestNote.QuestNote(quest.index) isDefeatObjective = objective.type in (Quests.DefeatCog, Quests.DefeatCogDept, Quests.DefeatCogInvasion, Quests.DefeatCogTournament, Quests.DefeatCogLevel) heading = None if isDefeatObjective: heading = Quests.DefeatText elif objective.type in [Quests.VisitNPC, Quests.VisitHQOfficer]: heading = Quests.VisitText note.setHeading(heading) taskInfo = None if isDefeatObjective: if objective.goal > 1: taskInfo = '%d ' % objective.goal else: taskInfo = 'a ' if objective.type == Quests.DefeatCog: if objective.subject == Quests.Any: taskInfo += CIGlobals.Suits elif objective.goal > 1: taskInfo += QuestGlobals.makePlural(CIGlobals.SuitNames[objective.subject]) else: taskInfo += CIGlobals.SuitNames[objective.subject] elif objective.type in (Quests.DefeatCogInvasion, Quests.DefeatCogTournament, Quests.DefeatCogDept): if objective.goal > 1: if objective.type == Quests.DefeatCogDept: taskInfo += QuestGlobals.AbbrToDept[objective.subject] else: taskInfo += QuestGlobals.makePlural(objective.subject) elif objective.type == Quests.DefeatCogDept: taskInfo += QuestGlobals.makeSingular(QuestGlobals.AbbrToDept[objective.subject]) else: taskInfo += objective.subject elif objective.type == Quests.DefeatCogLevel: if objective.goal > 1: taskInfo += 'Level %d+ %s' % (objective.minCogLevel, CIGlobals.Suits) else: taskInfo += 'Level %d+ %s' % (objective.minCogLevel, CIGlobals.Suit) if objective.area == Quests.Any: taskInfo += '\nAnywhere' else: taskInfo += '\nin ' + ZoneUtil.getHoodId(objective.area) elif objective.type == Quests.VisitNPC: nameOfNPC = CIGlobals.NPCToonNames[objective.npcId] placeOfNPC = CIGlobals.zone2TitleDict[objective.npcZone][0] taskInfo = nameOfNPC + '\nat ' + placeOfNPC elif objective.type == Quests.VisitHQOfficer: taskInfo = 'an HQ Officer\nat a Toon HQ' note.setTaskInfo(taskInfo) progress = '' if isDefeatObjective: if not objective.isComplete(): if isDefeatObjective: progress = '%d of %d ' % (objective.progress, objective.goal) + QuestGlobals.makePastTense(Quests.DefeatText) note.setProgress(progress) else: note.setCompleted(1) elif objective.type == Quests.VisitNPC: streetZone = ZoneUtil.getBranchZone(objective.npcZone) if streetZone % 1000 >= 100: streetName = CIGlobals.BranchZone2StreetName[streetZone] else: streetName = 'the Playground' hoodName = ZoneUtil.getHoodId(streetZone, 1) progress = 'on %s\nin %s' % (streetName, hoodName) note.setProgress(progress) elif objective.type == Quests.VisitHQOfficer: progress = 'Any Street\nAny Playground' note.setProgress(progress) reward = '' if quest.rewardType == Quests.RewardJellybeans: reward = 'For %d jellybeans' elif quest.rewardType == Quests.RewardHealth: reward = 'For a %d point Laff boost' elif quest.rewardType == Quests.RewardAccess: reward = 'For access to %s' elif quest.rewardType == Quests.RewardNone: reward = 'For no reward' if '%s' in reward or '%d' in reward: note.setReward(reward % quest.rewardValue) else: note.setReward(reward) notes.append(note) return notes
def makeQuestNotes(self, quests = None): notes = [] if not quests: quests = self.quests.values() for quest in quests: objective = quest.currentObjective note = QuestNote.QuestNote(quest.index) isDefeatObjective = objective.type in (Quests.DefeatCog, Quests.DefeatCogDept, Quests.DefeatCogInvasion, Quests.DefeatCogTournament, Quests.DefeatCogLevel) heading = None if isDefeatObjective: heading = Quests.DefeatText elif objective.type in [Quests.VisitNPC, Quests.VisitHQOfficer]: heading = Quests.VisitText note.setHeading(heading) taskInfo = None if isDefeatObjective: if objective.goal > 1: taskInfo = "%d " % objective.goal else: taskInfo = "a " if objective.type == Quests.DefeatCog: if objective.subject == Quests.Any: taskInfo += CIGlobals.Suits else: if objective.goal > 1: taskInfo += QuestGlobals.makePlural(CIGlobals.SuitNames[objective.subject]) else: taskInfo += CIGlobals.SuitNames[objective.subject] elif objective.type in (Quests.DefeatCogInvasion, Quests.DefeatCogTournament, Quests.DefeatCogDept): if objective.goal > 1: if objective.type == Quests.DefeatCogDept: taskInfo += QuestGlobals.AbbrToDept[objective.subject] elif objective.type == Quests.DefeatCogInvasion: taskInfo += QuestGlobals.QuestSubjects[1] elif objective.type == Quests.DefeatCogTournament: taskInfo += QuestGlobals.QuestSubjects[6] else: if objective.type == Quests.DefeatCogDept: taskInfo += QuestGlobals.makeSingular(QuestGlobals.AbbrToDept[objective.subject]) elif objective.type == Quests.DefeatCogInvasion: taskInfo += QuestGlobals.makeSingular(QuestGlobals.QuestSubjects[1]) elif objective.type == Quests.DefeatCogTournament: taskInfo += QuestGlobals.makeSingular(QuestGlobals.QuestSubjects[6]) elif objective.type == Quests.DefeatCogLevel: if objective.goal > 1: taskInfo += "Level %d+ %s" % (objective.minCogLevel, CIGlobals.Suits) else: taskInfo += "Level %d+ %s" % (objective.minCogLevel, CIGlobals.Suit) if objective.area == Quests.Any: taskInfo += "\nAnywhere" else: taskInfo += "\nin " + ZoneUtil.getHoodId(objective.area) elif objective.type == Quests.VisitNPC: nameOfNPC = CIGlobals.NPCToonNames[objective.npcId] placeOfNPC = CIGlobals.zone2TitleDict[objective.npcZone][0] taskInfo = nameOfNPC + "\nat " + placeOfNPC elif objective.type == Quests.VisitHQOfficer: taskInfo = "an HQ Officer\nat a Toon HQ" note.setTaskInfo(taskInfo) progress = "" if isDefeatObjective: if not objective.isComplete(): if isDefeatObjective: progress = "%d of %d " % (objective.progress, objective.goal) + QuestGlobals.makePastTense(Quests.DefeatText) note.setProgress(progress) else: note.setCompleted(1) elif objective.type == Quests.VisitNPC: streetZone = ZoneUtil.getBranchZone(objective.npcZone) if streetZone % 1000 >= 100: streetName = CIGlobals.BranchZone2StreetName[streetZone] else: streetName = "the Playground" hoodName = ZoneUtil.getHoodId(streetZone, 1) progress = "on %s\nin %s" % (streetName, hoodName) note.setProgress(progress) elif objective.type == Quests.VisitHQOfficer: progress = "Any Street\nAny Playground" note.setProgress(progress) reward = "" if quest.rewardType == Quests.RewardJellybeans: reward = "For %d jellybeans" elif quest.rewardType == Quests.RewardHealth: reward = "For a %d point Laff boost" elif quest.rewardType == Quests.RewardAccess: reward = "For access to %s" elif quest.rewardType == Quests.RewardNone: reward = "For no reward" if '%s' in reward or '%d' in reward: note.setReward(reward % quest.rewardValue) else: note.setReward(reward) notes.append(note) return notes