コード例 #1
0
 def hasQuestOffersForLocalAvatar(self):
     av = localAvatar
     inventory = av.getInventory()
     selfId = self.getQuestGiverId()
     if inventory:
         numInProgress = 0
         for quest in inventory.getQuestList():
             questType = self.QuestIconDontCare
             if quest.tasks is None:
                 self.notify.warning('quest %s: does not contain a dna; potential for crash.' % quest.getQuestId())
                 return False
             
             for (task, taskState) in zip(quest.tasks, quest.taskStates):
                 if isinstance(task, QuestTaskDNA.VisitTaskDNA):
                     if task.npcId == selfId:
                         questStatus = self.QuestIconComplete
                         return (questType, questStatus)
                     
                 task.npcId == selfId
             
             if quest.canBeReturnedTo(selfId):
                 isComplete = False
                 if quest.isComplete():
                     container = localAvatar.questStatus.getContainer(quest.getQuestId())
                     if container and container.parent and container.parent.isChoice():
                         isComplete = True
                         for q in container.parent.getContainers():
                             if q.quest and not q.quest.isComplete():
                                 isComplete = False
                                 continue
                         
                     else:
                         isComplete = True
                 
                 if isComplete:
                     questStatus = self.QuestIconComplete
                     return (questType, questStatus)
                 else:
                     numInProgress += 1
         
     else:
         self.notify.warning('avatar does not have inventory yet')
         return False
     offerDict = { }
     fromQuests = []
     prereqExcludes = base.config.GetString('exclude-prereq-quests', '')
     for (questId, questDNA) in QuestDB.QuestDict.items():
         if prereqExcludes and questId in prereqExcludes:
             continue
         
         passed = True
         for prereq in questDNA.prereqs:
             if not prereq.giverCanGive(selfId):
                 passed = False
                 break
             
             if not prereq.avIsReady(localAvatar):
                 passed = False
                 break
             
             if questDNA.minLevel > localAvatar.level:
                 passed = False
                 break
             
             if not base.cr.questDependency.checkDependency(questId, localAvatar.getQuestLadderHistory(), 1):
                 passed = False
                 break
             
             boolWeapLvlCheck = (questDNA.weapLvlType != None) & (questDNA.minWeapLevel > 0)
             if boolWeapLvlCheck & (questDNA.minWeapLevel > getLevelFromTotalReputation(questDNA.weapLvlType, inventory.getReputation(questDNA.weapLvlType))[0]):
                 passed = False
                 break
             
             if questDNA.getAcquireOnce():
                 history = localAvatar.getQuestLadderHistory()
                 questLadderId = base.cr.questDynMap.findQuestLadderInt(questId)
                 containsLadderId = history.count(questLadderId)
                 if containsLadderId:
                     passed = False
                     break
                 
             
             if questDNA.getHoliday() is not None:
                 holidayId = questDNA.getHoliday()
                 if base.cr.newsManager and not base.cr.newsManager.getHoliday(holidayId):
                     passed = False
                     break
                 
             not base.cr.newsManager.getHoliday(holidayId)
         
         if questDNA.prereqs and passed:
             fromQuests.append(questDNA)
             continue
     
     if len(fromQuests):
         inventory = av.getInventory()
         if inventory:
             questsLeft = []
             questList = inventory.getQuestList()
             for questDNA in fromQuests:
                 questId = questDNA.questId
                 if not av.questStatus.hasLadderQuestId(questId):
                     continue
                     if _[1] not in [ x.questId for x in questList ]:
                         questsLeft.append(questDNA)
                         continue
                 []
             
             fromQuests = questsLeft
         
     
     if fromQuests:
         questType = self.QuestIconWork
         for quest in fromQuests:
             if QuestLadderDB.getFamePath(quest.questId):
                 questType = self.QuestIconStory
                 break
                 continue
         
         questStatus = self.QuestIconNew
         return (questType, questStatus)
     
     if numInProgress:
         questStatus = self.QuestIconProgress
         return (questType, questStatus)
     
     return False
    def hasQuestOffersForLocalAvatar(self):
        av = localAvatar
        inventory = av.getInventory()
        selfId = self.getQuestGiverId()
        if inventory:
            numInProgress = 0
            for quest in inventory.getQuestList():
                questType = self.QuestIconDontCare
                if quest.tasks is None:
                    self.notify.warning('quest %s: does not contain a dna; potential for crash.' % quest.getQuestId())
                    return False

                for (task, taskState) in zip(quest.tasks, quest.taskStates):
                    if isinstance(task, QuestTaskDNA.VisitTaskDNA):
                        if task.npcId == selfId:
                            questStatus = self.QuestIconComplete
                            return (questType, questStatus)

                    task.npcId == selfId

                if quest.canBeReturnedTo(selfId):
                    isComplete = False
                    if quest.isComplete():
                        container = localAvatar.questStatus.getContainer(quest.getQuestId())
                        if container and container.parent and container.parent.isChoice():
                            isComplete = True
                            for q in container.parent.getContainers():
                                if q.quest and not q.quest.isComplete():
                                    isComplete = False
                                    continue

                        else:
                            isComplete = True

                    if isComplete:
                        questStatus = self.QuestIconComplete
                        return (questType, questStatus)
                    else:
                        numInProgress += 1

        else:
            self.notify.warning('avatar does not have inventory yet')
            return False
        offerDict = { }
        fromQuests = []
        prereqExcludes = base.config.GetString('exclude-prereq-quests', '')
        for (questId, questDNA) in QuestDB.QuestDict.items():
            if prereqExcludes and questId in prereqExcludes:
                continue

            passed = True
            for prereq in questDNA.prereqs:
                if not prereq.giverCanGive(selfId):
                    passed = False
                    break

                if not prereq.avIsReady(localAvatar):
                    passed = False
                    break

                if questDNA.minLevel > localAvatar.level:
                    passed = False
                    break

                if not base.cr.questDependency.checkDependency(questId, localAvatar.getQuestLadderHistory(), 1):
                    passed = False
                    break

                boolWeapLvlCheck = (questDNA.weapLvlType != None) & (questDNA.minWeapLevel > 0)
                if boolWeapLvlCheck & (questDNA.minWeapLevel > getLevelFromTotalReputation(questDNA.weapLvlType, inventory.getReputation(questDNA.weapLvlType))[0]):
                    passed = False
                    break

                if questDNA.getAcquireOnce():
                    history = localAvatar.getQuestLadderHistory()
                    questLadderId = base.cr.questDynMap.findQuestLadderInt(questId)
                    containsLadderId = history.count(questLadderId)
                    if containsLadderId:
                        passed = False
                        break


                if questDNA.getHoliday() is not None:
                    holidayId = questDNA.getHoliday()
                    if base.cr.newsManager and not base.cr.newsManager.getHoliday(holidayId):
                        passed = False
                        break

                not base.cr.newsManager.getHoliday(holidayId)

            if questDNA.prereqs and passed:
                fromQuests.append(questDNA)
                continue

        if len(fromQuests):
            inventory = av.getInventory()
            if inventory:
                questsLeft = []
                questList = inventory.getQuestList()
                for questDNA in fromQuests:
                    questId = questDNA.questId
                    if not av.questStatus.hasLadderQuestId(questId):
                        continue
                        if _[1] not in [ x.questId for x in questList ]:
                            questsLeft.append(questDNA)
                            continue
                    []

                fromQuests = questsLeft


        if fromQuests:
            questType = self.QuestIconWork
            for quest in fromQuests:
                if QuestLadderDB.getFamePath(quest.questId):
                    questType = self.QuestIconStory
                    break
                    continue

            questStatus = self.QuestIconNew
            return (questType, questStatus)

        if numInProgress:
            questStatus = self.QuestIconProgress
            return (questType, questStatus)

        return False
コード例 #3
0
 def hasQuestOffers(self):
     AvailableQuests = []
     inventory = localAvatar.getInventory()
     prereqExcludes = base.config.GetString('exclude-prereq-quests', '')
     for (questId, questDNA) in QuestDB.QuestDict.items():
         if len(prereqExcludes):
             if questId in prereqExcludes:
                 continue
             
         
         prereqs = questDNA.getPrereqs()
         passed = True
         for prereq in prereqs:
             if not prereq.giverCanGive(self.getUniqueId()):
                 passed = False
                 break
             
             if not prereq.avIsReady(localAvatar):
                 passed = False
                 break
             
             if questDNA.minLevel > localAvatar.level:
                 passed = False
                 break
             
             if not base.cr.questDependency.checkDependency(questId, localAvatar.getQuestLadderHistory(), 1):
                 passed = False
                 break
             
             boolWeapLvlCheck = (questDNA.weapLvlType != None) & (questDNA.minWeapLevel > 0)
             if boolWeapLvlCheck & (questDNA.minWeapLevel > getLevelFromTotalReputation(questDNA.weapLvlType, inventory.getReputation(questDNA.weapLvlType))[0]):
                 passed = False
                 break
             
             if questDNA.getVelvetRoped() and not Freebooter.getPaidStatus(localAvatar.getDoId()):
                 passed = False
                 break
             
             if questDNA.getAcquireOnce():
                 history = localAvatar.getQuestLadderHistory()
                 questLadderId = base.cr.questDynMap.findQuestLadderInt(questId)
                 containsLadderId = history.count(questLadderId)
                 if containsLadderId:
                     passed = False
                     break
                 
             
             if questDNA.getHoliday() is not None:
                 holidayId = questDNA.getHoliday()
                 if base.cr.newsManager and not base.cr.newsManager.getHoliday(holidayId):
                     passed = False
                     break
                 
             not base.cr.newsManager.getHoliday(holidayId)
         
         if prereqs and passed:
             AvailableQuests.append(questDNA)
             continue
     
     if len(AvailableQuests):
         inventory = localAvatar.getInventory()
         if inventory:
             toRemove = []
             questList = inventory.getQuestList()
             for questDNA in AvailableQuests:
                 questId = questDNA.getQuestId()
                 found = False
                 for quest in questList:
                     if questId == quest.getQuestId() or localAvatar.questStatus.hasLadderQuestId(questId):
                         found = True
                         continue
                 
                 if found:
                     toRemove.append(questDNA)
                     continue
             
             for questDNA in toRemove:
                 AvailableQuests.remove(questDNA)
             
         
     
     for quest in localAvatar.getQuests():
         if quest and quest.getTimeLimit() and quest.canBeReturnedTo(self.getQuestGiverId()):
             return True
             continue
     
     return len(AvailableQuests) > 0
    def hasQuestOffers(self):
        AvailableQuests = []
        inventory = localAvatar.getInventory()
        prereqExcludes = base.config.GetString('exclude-prereq-quests', '')
        for (questId, questDNA) in QuestDB.QuestDict.items():
            if len(prereqExcludes):
                if questId in prereqExcludes:
                    continue


            prereqs = questDNA.getPrereqs()
            passed = True
            for prereq in prereqs:
                if not prereq.giverCanGive(self.getUniqueId()):
                    passed = False
                    break

                if not prereq.avIsReady(localAvatar):
                    passed = False
                    break

                if questDNA.minLevel > localAvatar.level:
                    passed = False
                    break

                if not base.cr.questDependency.checkDependency(questId, localAvatar.getQuestLadderHistory(), 1):
                    passed = False
                    break

                boolWeapLvlCheck = (questDNA.weapLvlType != None) & (questDNA.minWeapLevel > 0)
                if boolWeapLvlCheck & (questDNA.minWeapLevel > getLevelFromTotalReputation(questDNA.weapLvlType, inventory.getReputation(questDNA.weapLvlType))[0]):
                    passed = False
                    break

                if questDNA.getVelvetRoped() and not Freebooter.getPaidStatus(localAvatar.getDoId()):
                    passed = False
                    break

                if questDNA.getAcquireOnce():
                    history = localAvatar.getQuestLadderHistory()
                    questLadderId = base.cr.questDynMap.findQuestLadderInt(questId)
                    containsLadderId = history.count(questLadderId)
                    if containsLadderId:
                        passed = False
                        break


                if questDNA.getHoliday() is not None:
                    holidayId = questDNA.getHoliday()
                    if base.cr.newsManager and not base.cr.newsManager.getHoliday(holidayId):
                        passed = False
                        break

                not base.cr.newsManager.getHoliday(holidayId)

            if prereqs and passed:
                AvailableQuests.append(questDNA)
                continue

        if len(AvailableQuests):
            inventory = localAvatar.getInventory()
            if inventory:
                toRemove = []
                questList = inventory.getQuestList()
                for questDNA in AvailableQuests:
                    questId = questDNA.getQuestId()
                    found = False
                    for quest in questList:
                        if questId == quest.getQuestId() or localAvatar.questStatus.hasLadderQuestId(questId):
                            found = True
                            continue

                    if found:
                        toRemove.append(questDNA)
                        continue

                for questDNA in toRemove:
                    AvailableQuests.remove(questDNA)



        for quest in localAvatar.getQuests():
            if quest and quest.getTimeLimit() and quest.canBeReturnedTo(self.getQuestGiverId()):
                return True
                continue

        return len(AvailableQuests) > 0