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
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
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)
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
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())
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
def isMarathon(self): return isMarathon(self.getID())