def showMission(eventID, eventType=None):
    eventsCache = dependency.instance(IEventsCache)
    quests = eventsCache.getQuests()
    quest = quests.get(eventID)
    if quest is None:
        prefix = events_helpers.getMarathonPrefix(eventID)
        if prefix is not None:
            showMissionsMarathon(marathonPrefix=prefix)
    if eventType is not None and eventType == constants.EVENT_TYPE.PERSONAL_MISSION:
        showPersonalMission(eventID)
    elif quest is not None:
        if events_helpers.isMarathon(quest.getGroupID()):
            groups = eventsCache.getGroups()
            group = groups.get(quest.getGroupID())
            groupContent = group.getGroupContent(quests)
            mainQuest = group.getMainQuest(groupContent)
            if mainQuest and quest.getID() != mainQuest.getID():
                showMissionsGrouped(missionID=quest.getID(),
                                    groupID=group.getID(),
                                    anchor=group.getID())
            else:
                showMissionsGrouped(anchor=group.getID())
        elif events_helpers.isLinkedSet(quest.getGroupID()):
            showMissionsLinkedSet()
        else:
            showMissionsCategories(missionID=quest.getID(),
                                   groupID=quest.getGroupID(),
                                   anchor=quest.getGroupID())
    return
예제 #2
0
    def _substituteBonuses(self, mainQuest=None):
        if not self.event.isCompensationPossible():
            return self.event.getBonuses()
        else:
            if mainQuest is None:
                mainQuest = first(self.eventsCache.getQuests(lambda q: isMarathon(q.getID()) and q.getGroupID() == self.event.getGroupID()).values())
            if mainQuest:
                bonuses = self.event.getBonuses()
                toCompensate = []
                for token in mainQuest.accountReqs.getTokens():
                    if token.isAvailable():
                        toCompensate.append(token.getID())

                if not toCompensate:
                    return bonuses
                resultBonus = []
                for bonus in bonuses:
                    if bonus.getName() == 'battleToken':
                        tokenID = first(bonus.getTokens())
                        if tokenID in toCompensate:
                            compensation = self.eventsCache.getCompensation(tokenID)
                            if compensation:
                                resultBonus.extend(compensation)
                                continue
                    resultBonus.append(bonus)

                return resultBonus
            return self.event.getBonuses()
            return
def getGroupTypeByID(groupID):
    if groupID in (DEFAULTS_GROUPS.UNGROUPED_QUESTS,
                   DEFAULTS_GROUPS.MOTIVE_QUESTS):
        return groupID
    if events_helpers.isMarathon(groupID):
        return DEFAULTS_GROUPS.MARATHON_QUESTS
    if events_helpers.isPremium(groupID):
        return DEFAULTS_GROUPS.PREMIUM_QUESTS
    return DEFAULTS_GROUPS.LINKEDSET_QUESTS if events_helpers.isLinkedSet(
        groupID) else DEFAULTS_GROUPS.REGULAR_GROUPED_QUESTS
예제 #4
0
    def getMainQuest(self, events):
        if not self.isMarathon():
            LOG_ERROR('Trying to find main quest in non-marathon group', self.getID())
            return None
        else:
            for quest in events:
                if isMarathon(quest.getID()):
                    return quest

            LOG_ERROR('There is no main token quest in the marathon', self.getID())
            return None
 def userFilterFunc(q):
     if q.getType() == EVENT_TYPE.MOTIVE_QUEST and not q.isAvailable().isValid:
         return False
     if q.getType() == EVENT_TYPE.TOKEN_QUEST and isMarathon(q.getID()):
         return False
     if isLinkedSet(q.getGroupID()) and not q.isAvailable().isValid:
         return False
     if isPremium(q.getGroupID()) and not q.isAvailable().isValid:
         return False
     if self.__eventProgression.isActive() and isDailyEpic(q.getGroupID()):
         activeQuests = self.__eventProgression.getActiveQuestIDs()
         if q.getID() not in activeQuests:
             return False
     return False if isRankedSeasonOff and (isRankedDaily(q.getGroupID()) or isRankedPlatform(q.getGroupID())) else filterFunc(q)
예제 #6
0
def showMission(eventID, eventType=None):
    from gui.impl.lobby.missions.daily_quests_view import DailyTabs
    if eventType == constants.EVENT_TYPE.C11N_PROGRESSION:
        itemIntCD, vehicleIntCD = parseEventID(eventID)
        service = dependency.instance(ICustomizationService)
        vehicle = service.getItemByCD(vehicleIntCD)
        service.showCustomization(vehicle.invID,
                                  lambda: showProgressiveItemsView(itemIntCD))
        return
    else:
        eventsCache = dependency.instance(IEventsCache)
        quests = eventsCache.getQuests()
        quest = quests.get(eventID)
        if eventID == BattlePassConsts.FAKE_QUEST_ID:
            hideWebBrowserOverlay()
            showMissionsBattlePass()
            return
        if quest is None:
            prefix = events_helpers.getMarathonPrefix(eventID)
            if prefix is not None:
                return showMissionsMarathon(marathonPrefix=prefix)
        if eventType is not None and eventType == constants.EVENT_TYPE.PERSONAL_MISSION:
            showPersonalMission(eventID)
        elif quest is not None:
            if events_helpers.isMarathon(quest.getGroupID()):
                groups = eventsCache.getGroups()
                group = groups.get(quest.getGroupID())
                groupContent = group.getGroupContent(quests)
                mainQuest = group.getMainQuest(groupContent)
                if mainQuest and quest.getID() != mainQuest.getID():
                    showMissionsGrouped(missionID=quest.getID(),
                                        groupID=group.getID(),
                                        anchor=group.getID())
                else:
                    showMissionsGrouped(anchor=group.getID())
            elif events_helpers.isLinkedSet(quest.getGroupID()):
                showMissionsLinkedSet()
            elif events_helpers.isDailyQuest(quest.getID()):
                showDailyQuests(subTab=DailyTabs.QUESTS)
            elif events_helpers.isPremium(quest.getID()):
                showDailyQuests(subTab=DailyTabs.PREMIUM_MISSIONS)
            else:
                showMissionsCategories(missionID=quest.getID(),
                                       groupID=quest.getGroupID(),
                                       anchor=quest.getGroupID())
        return
예제 #7
0
 def userFilterFunc(q):
     qGroup = q.getGroupID()
     qIsValid = q.isAvailable().isValid
     qID = q.getID()
     if q.getType() == EVENT_TYPE.MOTIVE_QUEST and not qIsValid:
         return False
     if q.getType() == EVENT_TYPE.TOKEN_QUEST and isMarathon(qID):
         return False
     if isLinkedSet(qGroup) or isPremium(qGroup) and not qIsValid:
         return False
     if not isEpicBattleEnabled and isDailyEpic(qGroup):
         return False
     if isBattleRoyale(qGroup):
         quests = self.__battleRoyaleController.getQuests()
         if qID not in quests:
             return False
     if isMapsTraining(qGroup):
         return q.shouldBeShown()
     return False if isRankedSeasonOff and (
         isRankedDaily(qGroup)
         or isRankedPlatform(qGroup)) else filterFunc(q)
 def __invalidateCompensations(self):
     self.__compensations.clear()
     for q in self.getHiddenQuests(lambda q: isMarathon(q.getGroupID())).itervalues():
         self.__compensations.update(q.getCompensation())
 def userFilterFunc(q):
     if q.getType() == EVENT_TYPE.MOTIVE_QUEST and not q.isAvailable().isValid:
         return False
     if q.getType() == EVENT_TYPE.TOKEN_QUEST and isMarathon(q.getID()):
         return False
     return False if isLinkedSet(q.getGroupID()) and not q.isAvailable().isValid else filterFunc(q)
 def isCompensationPossible(self):
     return events_helpers.isMarathon(self.getGroupID()) and bool(
         self.getBonuses('tokens'))
 def isMarathon(self):
     return events_helpers.isMarathon(self.getID())
예제 #12
0
 def _getBackGround(self, status):
     if status == MISSIONS_STATES.COMPLETED:
         return BG_STATES.COMPLETED
     return BG_STATES.MARATHON if isMarathon(self.event.getGroupID()) else BG_STATES.DEFAULT
예제 #13
0
 def isMarathon(self):
     return isMarathon(self.getID())