def _getBonuses(self, svrEvents, bonuses = None): bonuses = bonuses or self.event.getBonuses() result, simpleBonusesList, customizationsList = [], [], [] for b in bonuses: if b.isShowInGUI(): if b.getName() == 'dossier': for record in b.getRecords(): if record[0] != ACHIEVEMENT_BLOCK.RARE: result.append(formatters.packAchieveElement(RECORD_DB_IDS[record])) elif b.getName() == 'customizations': customizationsList.extend(b.getList()) else: flist = b.formattedList() if flist: simpleBonusesList.extend(flist) label = ', '.join(simpleBonusesList) fullLabel = None if len(simpleBonusesList) > self.SIMPLE_BONUSES_MAX_ITEMS: label = ', '.join(simpleBonusesList[:self.SIMPLE_BONUSES_MAX_ITEMS]) + '..' fullLabel = ', '.join(simpleBonusesList) result.append(formatters.packTextBlock(label, fullLabel=fullLabel)) if len(customizationsList): result.append(formatters.packCustomizations(customizationsList)) parents = [ qID for _, qIDs in self.event.getParents().iteritems() for qID in qIDs ] for qID, q in self._getEventsByIDs(parents, svrEvents or {}).iteritems(): result.append(formatters.packTextBlock(i18n.makeString('#quests:bonuses/item/task', q.getUserName()), questID=qID)) if len(result): return formatters.todict(result) else: return []
def _getBonuses(self, svrEvents, bonuses=None, useIconFormat=False): bonuses = bonuses or self.event.getBonuses() result, simpleBonusesList, customizationsList, vehiclesList, iconBonusesList = ( [], [], [], [], []) for b in bonuses: if b.isShowInGUI(): if b.getName() == 'dossier': for achieve in b.getAchievements(): result.append( formatters.packAchieveElementByItem(achieve)) elif b.getName() == 'customizations': customizationsList.extend(b.getList()) elif b.getName() == 'vehicles': flist = b.formattedList() if flist: vehiclesList.extend(flist) elif b.hasIconFormat() and useIconFormat: iconBonusesList.extend(b.getList()) else: flist = b.formattedList() if flist: simpleBonusesList.extend(flist) if len(customizationsList): result.append(formatters.packCustomizations(customizationsList)) if len(iconBonusesList): result.append(formatters.packIconAwardBonusBlock(iconBonusesList)) if len(vehiclesList) > 0: vehiclesLbl, _ = self._joinUpToMax(vehiclesList) result.append( formatters.packVehiclesBonusBlock(vehiclesLbl, str(self.event.getID()))) if len(simpleBonusesList) > 0: result.append(formatters.packSimpleBonusesBlock(simpleBonusesList)) parents = [ qID for _, qIDs in self.event.getParents().iteritems() for qID in qIDs ] for qID, q in self._getEventsByIDs(parents, svrEvents or {}).iteritems(): result.append( formatters.packTextBlock(i18n.makeString( '#quests:bonuses/item/task', q.getUserName()), questID=qID)) if len(result): return formatters.todict(result) return formatters.todict([ formatters.packTextBlock( text_styles.alert('#quests:bonuses/notAvailable')) ])
def _packConditions(self, svrEvents): subBlocks = [] bonus = self.event.bonusCond battlesLeft, battlesCount, inrow = None, None, False battles = bonus.getConditions().find('battles') if battles is not None: battlesCount = battles._getTotalValue() if not self.event.isCompleted() and bonus.getGroupByValue() is None: progress = battles.getProgressPerGroup() if None in progress: curProg, totalProg, _, _ = progress[None] battlesLeft = totalProg - curProg bonusFmtConds = bonus.format(svrEvents, event=self.event) if len(bonusFmtConds): subBlocks.extend(formatters.indexing(bonusFmtConds)) postBattleFmtConds = self.event.postBattleCond.format(svrEvents, event=self.event) if len(postBattleFmtConds): if len(bonusFmtConds): subBlocks.append(formatters.packSeparator(label=i18n.makeString('#quests:details/conditions/postBattle/separator'))) subBlocks.extend(formatters.indexing(postBattleFmtConds)) if bonus.isDaily(): resetHourOffset = (time_utils.ONE_DAY - self._getDailyProgressResetTimeOffset()) / 3600 if resetHourOffset >= 0: subBlocks.append(formatters.packTextBlock(label=formatters.formatYellow('#quests:details/conditions/postBattle/dailyReset') % {'time': time.strftime(i18n.makeString('#quests:details/conditions/postBattle/dailyReset/timeFmt'), time_utils.getTimeStructInLocal(time_utils.getTimeTodayForUTC(hour=resetHourOffset)))})) result = [] if len(subBlocks) or battlesCount: if not self.event.isGuiDisabled(): result.append(formatters.packConditionsBlock(battlesCount, battlesLeft, bonus.isInRow(), conditions=subBlocks)) else: result.append(formatters.packConditionsBlock(conditions=subBlocks)) if bonus.getGroupByValue() is not None and not self.event.isGuiDisabled(): progressesFmt = bonus.formatGroupByProgresses(svrEvents, self.event) if len(progressesFmt): result.append(formatters.packTopLevelContainer(i18n.makeString('#quests:details/conditions/groupBy/%s' % bonus.getGroupByValue()), subBlocks=progressesFmt, isResizable=len(progressesFmt) > 5)) return result
def _packConditions(self, svrEvents): result = super(_MotiveQuestInfo, self)._packConditions(svrEvents) descr = self.event.getDescription() if descr: result.append( formatters.packTextBlock(formatters.formatGray(descr))) return result
def format(self, svrEvents, event=None): conds = self.getConditions() if conds.isEmpty(): subBlocks = [ formatters.packTextBlock( i18n.makeString( '#quests:details/requirements/vehicle/any')) ] else: subBlocks = conds._formatSubBlocks(svrEvents, event) title, note = i18n.makeString( '#quests:details/tasks/requirements/vehicleLabel'), '' if conds: vehDescr = conds.find('vehicleDescr') if vehDescr is not None: note = makeHtmlString( 'html_templates:lobby/quests', 'vehicleDescrLabel', { 'count': len(self.getSuitableVehicles()), 'total': len(vehDescr.getVehiclesList()) }) if len(subBlocks): return formatters.packTopLevelContainer(title=title, note=note, subBlocks=subBlocks) else: return
def __getBonuses(self, chapter, useIconFormat=False): if not chapter.isBonusReceived(g_itemsCache.items.stats.tutorialsCompleted): result = [] iconResult = [] output = [] bonus = chapter.getBonus() if bonus is not None: for n, v in bonus.getValues().iteritems(): b = getTutorialBonusObj(n, v) if b is not None: if b.hasIconFormat() and useIconFormat: iconResult.extend(b.getList()) else: flist = b.formattedList() if flist: result.extend(flist) if len(result): output.append(formatters.packSimpleBonusesBlock(result)) if len(iconResult): output.append(formatters.packIconAwardBonusBlock(iconResult)) return formatters.todict(output) else: return formatters.todict([formatters.packTextBlock("#quests:beginnerQuests/details/noAward")]) return
def __getBonuses(self, chapter, useIconFormat = False): if not chapter.isBonusReceived(g_itemsCache.items.stats.tutorialsCompleted): result = [] iconResult = [] output = [] bonus = chapter.getBonus() if bonus is not None: for n, v in bonus.getValues().iteritems(): b = getTutorialBonusObj(n, v) if b is not None: if b.hasIconFormat() and useIconFormat: iconResult.extend(b.getList()) else: flist = b.formattedList() if flist: result.extend(flist) if len(result): output.append(formatters.packSimpleBonusesBlock(result)) if len(iconResult): output.append(formatters.packIconAwardBonusBlock(iconResult)) return formatters.todict(output) else: return formatters.todict([formatters.packTextBlock('#quests:beginnerQuests/details/noAward')]) return
def _getConditions(self, svrEvents): subBlocks = [] bonus = self.event.bonusCond battlesLeft, battlesCount, inrow = None, None, False battles = bonus.getConditions().find('battles') if battles is not None: battlesCount = battles._getTotalValue() if not self.event.isCompleted() and bonus.getGroupByValue() is None: progress = battles.getProgressPerGroup() if None in progress: curProg, totalProg, _, _ = progress[None] battlesLeft = totalProg - curProg bonusFmtConds = bonus.format(svrEvents, event=self.event) if len(bonusFmtConds): subBlocks.extend(formatters.indexing(bonusFmtConds)) postBattleFmtConds = self.event.postBattleCond.format(svrEvents, event=self.event) if len(postBattleFmtConds): if len(bonusFmtConds): subBlocks.append(formatters.packSeparator(label=i18n.makeString('#quests:details/conditions/postBattle/separator'))) subBlocks.extend(formatters.indexing(postBattleFmtConds)) if bonus.isDaily(): resetHourOffset = (time_utils.ONE_DAY - self._getDailyProgressResetTimeOffset()) / 3600 if resetHourOffset >= 0: subBlocks.append(formatters.packTextBlock(label=formatters.formatYellow('#quests:details/conditions/postBattle/dailyReset') % {'time': time.strftime(i18n.makeString('#quests:details/conditions/postBattle/dailyReset/timeFmt'), time_utils.getTimeStructInLocal(time_utils.getTimeTodayForUTC(hour=resetHourOffset)))})) result = [] if len(subBlocks) or battlesCount: if not self.event.isGuiDisabled(): result.append(formatters.packConditionsBlock(battlesCount, battlesLeft, bonus.isInRow(), conditions=subBlocks)) else: result.append(formatters.packConditionsBlock(conditions=subBlocks)) if bonus.getGroupByValue() is not None and not self.event.isGuiDisabled(): progressesFmt = bonus.formatGroupByProgresses(svrEvents, self.event) if len(progressesFmt): result.append(formatters.packTopLevelContainer(i18n.makeString('#quests:details/conditions/groupBy/%s' % bonus.getGroupByValue()), subBlocks=progressesFmt, isResizable=len(progressesFmt) > 5)) return formatters.todict(result)
def _format(self, condition, event): result = [] if not event.isGuiDisabled(): key = 'survive' if condition.getValue() else 'notSurvive' result.append( formatters.packTextBlock( i18n.makeString('#quests:details/conditions/%s' % key))) return result
def _getBonuses(self, svrEvents, bonuses=None): bonuses = bonuses or self.event.getBonuses() result = OldStyleBonusesFormatter( self.event).getFormattedBonuses(bonuses) return formatters.todict(result) if result else formatters.todict([ formatters.packTextBlock( text_styles.alert('#quests:bonuses/notAvailable')) ])
def getBattlePassQuestInfo(progress): postBattleR = R.strings.battle_pass_2020.reward.postBattle if progress.state == BattlePassState.BASE: questName = backport.text(postBattleR.title.base(), level=progress.level) else: questName = backport.text(postBattleR.title.post(), level=progress.level) progressDesc = backport.text(postBattleR.progress()) progressDiffTooltip = backport.text(postBattleR.progress.tooltip(), points=progress.pointsBattleDiff) questInfo = { 'status': 'done' if progress.isDone else '', 'questID': BattlePassConsts.FAKE_QUEST_ID, 'rendererType': QUESTS_ALIASES.RENDERER_TYPE_QUEST, 'eventType': EVENT_TYPE.BATTLE_QUEST, 'maxProgrVal': progress.pointsTotal, 'tooltip': TOOLTIPS.QUESTS_RENDERER_LABEL, 'description': questName, 'currentProgrVal': progress.pointsNew, 'tasksCount': -1, 'progrBarType': 'current' if not progress.isDone else '', 'linkTooltip': TOOLTIPS.QUESTS_LINKBTN_BATTLEPASS } progressList = [] if not progress.isDone: progressList = [{ 'description': progressDesc, 'maxProgrVal': progress.pointsTotal, 'progressDiff': '+ {}'.format(progress.pointsDiff), 'progressDiffTooltip': progressDiffTooltip, 'currentProgrVal': progress.pointsNew, 'progrBarType': 'current' }] awards = [] if progress.isDone: awardsList = QuestsBonusComposer( BattlePassTextBonusesPacker()).getPreformattedBonuses( progress.awards) if awardsList: awards = [award.getDict() for award in awardsList] else: awards = [ formatters.packTextBlock( text_styles.alert( backport.text(R.strings.quests.bonuses.notAvailable())) ).getDict() ] info = { 'awards': awards, 'questInfo': questInfo, 'questType': EVENT_TYPE.BATTLE_QUEST, 'progressList': progressList, 'questState': { 'statusState': 'done' if progress.isDone else 'inProgress' } } return info
def _getTopConditions(self, svrEvents): result = [] preBattleFmt = self.event.preBattleCond.format(svrEvents, self.event) if preBattleFmt is not None: result.extend(preBattleFmt) descr = self.event.getDescription() if descr: result.append(formatters.packTextBlock(formatters.formatGray(descr))) return formatters.todict(result)
def _getBonuses(self, svrEvents, bonuses = None): bonuses = bonuses or self.event.getBonuses() result, simpleBonusesList, customizationsList, vehiclesList = ([], [], [], []) for b in bonuses: if b.isShowInGUI(): flist = [] if b.getName() == 'dossier': for record in b.getRecords(): if record[0] != ACHIEVEMENT_BLOCK.RARE: result.append(formatters.packAchieveElement(RECORD_DB_IDS[record])) elif b.getName() == 'customizations': customizationsList.extend(b.getList()) elif b.getName() == 'vehicles': flist = b.formattedList() if flist: vehiclesList.extend(flist) else: flist = b.formattedList() if flist: simpleBonusesList.extend(flist) label = ', '.join(simpleBonusesList) fullLabel = None if len(simpleBonusesList) > self.SIMPLE_BONUSES_MAX_ITEMS: label = ', '.join(simpleBonusesList[:self.SIMPLE_BONUSES_MAX_ITEMS]) + '..' fullLabel = ', '.join(simpleBonusesList) result.append(formatters.packTextBlock(label, fullLabel=fullLabel)) vehiclesLbl = ', '.join(vehiclesList) if len(vehiclesList) > self.SIMPLE_BONUSES_MAX_ITEMS: vehiclesLbl = ', '.join(vehiclesList[:self.SIMPLE_BONUSES_MAX_ITEMS]) + '..' result.append(formatters.packVehiclesBonusBlock(vehiclesLbl, str(self.event.getID()))) if len(customizationsList): result.append(formatters.packCustomizations(customizationsList)) parents = [ qID for _, qIDs in self.event.getParents().iteritems() for qID in qIDs ] for qID, q in self._getEventsByIDs(parents, svrEvents or {}).iteritems(): result.append(formatters.packTextBlock(i18n.makeString('#quests:bonuses/item/task', q.getUserName()), questID=qID)) if len(result): return formatters.todict(result) return []
def _getBonuses(self, svrEvents, bonuses = None, useIconFormat = False): bonuses = bonuses or self.event.getBonuses() result, simpleBonusesList, customizationsList, vehiclesList, iconBonusesList = ([], [], [], [], []) for b in bonuses: if b.isShowInGUI(): if b.getName() == 'dossier': for record in b.getRecords(): if record[0] != ACHIEVEMENT_BLOCK.RARE: result.append(formatters.packAchieveElement(RECORD_DB_IDS[record])) elif b.getName() == 'customizations': customizationsList.extend(b.getList()) elif b.getName() == 'vehicles': flist = b.formattedList() if flist: vehiclesList.extend(flist) elif b.hasIconFormat() and useIconFormat: iconBonusesList.extend(b.getList()) else: flist = b.formattedList() if flist: simpleBonusesList.extend(flist) if len(customizationsList): result.append(formatters.packCustomizations(customizationsList)) if len(iconBonusesList): result.append(formatters.packIconAwardBonusBlock(iconBonusesList)) if len(vehiclesList) > 0: vehiclesLbl, _ = self._joinUpToMax(vehiclesList) result.append(formatters.packVehiclesBonusBlock(vehiclesLbl, str(self.event.getID()))) if len(simpleBonusesList) > 0: result.append(formatters.packSimpleBonusesBlock(simpleBonusesList)) parents = [ qID for _, qIDs in self.event.getParents().iteritems() for qID in qIDs ] for qID, q in self._getEventsByIDs(parents, svrEvents or {}).iteritems(): result.append(formatters.packTextBlock(i18n.makeString('#quests:bonuses/item/task', q.getUserName()), questID=qID)) if len(result): return formatters.todict(result) return formatters.todict([formatters.packTextBlock(text_styles.alert('#quests:bonuses/notAvailable'))])
def _format(self, condition, event): if event.isGuiDisabled(): return [] label, relation, relationI18nType, value = getResultsData(condition) return [ formatters.packTextBlock(label, value=value, relation=relation, relationI18nType=relationI18nType) ]
def _getBonuses(self, svrEvents, bonuses = None): bonuses = bonuses or self.event.getBonuses() result = [] for b in bonuses: if b.isShowInGUI(): result.append(b.format()) if len(result): return formatters.todict([formatters.packTextBlock(', '.join(result))]) return []
def _getBonuses(self, svrEvents, bonuses = None, useIconFormat = False): bonuses = bonuses or self.event.getBonuses() result = [] for b in bonuses: if b.isShowInGUI(): result.append(b.format()) if len(result): return formatters.todict([formatters.packTextBlock(', '.join(result))]) return []
def getDetails(self, svrEvents): infoList = [] conditions = [ formatters.todict(formatters.packQuestDetailsSeparator( 0, 0, 5, 10)) ] conditions.extend(self._getTopConditions(svrEvents)) conditions.append( formatters.todict(formatters.packQuestDetailsSeparator( 0, 0, 10, 5))) conditions.extend(self._getConditions(svrEvents)) conditionsContainer = formatters.todict( formatters.packMotiveContainer( title=i18n.makeString('#quests:quests/conditions'), subBlocks=conditions)) infoList.append(conditionsContainer) requirementContainer = formatters.todict( formatters.packTopLevelContainer( title=i18n.makeString('#quests:quests/requirements'), subBlocks=[ formatters.packTextBlock( formatters.formatGray(self.event.getRequirementsStr())) ])) infoList.append(requirementContainer) infoList.append( formatters.todict(formatters.packQuestDetailsSeparator(0, 0, 5, 0))) tpsContainer = formatters.todict( formatters.packTopLevelContainer(title=i18n.makeString( '#quests:QuestTaskDetailsView/description'), subBlocks=[ formatters.packTextBlock( formatters.formatGray( self.event.getTips())) ])) infoList.append(tpsContainer) return { 'image': RES_ICONS.MAPS_ICONS_HANGARTUTORIAL_GOALSQUEST, 'title': text_styles.highTitle(self.event.getUserName()), 'infoList': infoList, 'awards': self._getBonuses(svrEvents, useIconFormat=False) }
def _packConditions(self, svrEvents): subBlocks = [] bonus = self.event.bonusCond battlesLeft, battlesCount, inrow = None, None, False battles = bonus.getConditions().find('battles') if battles is not None: battlesCount = battles.getTotalValue() if not self.event.isCompleted( ) and bonus.getGroupByValue() is None: progress = battles.getProgressPerGroup() if None in progress: curProg, totalProg, _, _ = progress[None] battlesLeft = totalProg - curProg bonusFmtConds = bonusCondFormatter.format(bonus, self.event) if len(bonusFmtConds): subBlocks.extend(formatters.indexing(bonusFmtConds)) postBattleFmtConds = postBattleConditionFormatter.format( self.event.postBattleCond, self.event) if len(postBattleFmtConds): if len(bonusFmtConds): subBlocks.append( formatters.packSeparator(label=i18n.makeString( '#quests:details/conditions/postBattle/separator'))) subBlocks.extend(formatters.indexing(postBattleFmtConds)) resetLabel = self._getDailyResetStatus( '#quests:details/conditions/postBattle/dailyReset', formatters.formatYellow) if resetLabel: subBlocks.append(formatters.packTextBlock(label=resetLabel)) result = [] if len(subBlocks) or battlesCount: if not self.event.isGuiDisabled(): result.append( formatters.packConditionsBlock(battlesCount, battlesLeft, bonus.isInRow(), conditions=subBlocks)) else: result.append( formatters.packConditionsBlock(conditions=subBlocks)) if bonus.getGroupByValue( ) is not None and not self.event.isGuiDisabled(): progressesFmt = bonusCondFormatter.formatGroupByProgresses( bonus, self.event) if len(progressesFmt): result.append( formatters.packTopLevelContainer( i18n.makeString( '#quests:details/conditions/groupBy/%s' % bonus.getGroupByValue()), subBlocks=progressesFmt, isResizable=len(progressesFmt) > 5)) return result
def _getBonuses(self, svrEvents, bonuses=None): bonuses = bonuses or self.event.getBonuses() result = OldStyleBonusesFormatter( self.event).getFormattedBonuses(bonuses) if result: return [award.getDict() for award in result] return [ formatters.packTextBlock( text_styles.alert( backport.text( R.strings.quests.bonuses.notAvailable()))).getDict() ]
def __getBonuses(self, chapter): result = [] bonus = chapter.getBonus() if bonus is not None: for n, v in bonus.getValues().iteritems(): b = getTutorialBonusObj(n, v) if b is not None: result.append(b.format()) if len(result): return formatters.todict([formatters.packTextBlock(', '.join(result))]) return []
def _formatData(cls, condition, event, current=None, total=None): if condition.isAnyVehicleAcceptable(): if not event.isGuiDisabled(): return formatters.packTextBlock(i18n.makeString( '%s/all' % cls._getLabelKey(condition)), value=condition.relationValue, relation=condition.relation) elif 'types' not in condition.data: if not event.isGuiDisabled(): if current is not None and total is not None: return formatters.packTextCondition(getFiltersLabel( cls._getLabelKey(condition), condition), current=current, total=total) else: return formatters.packTextBlock( getFiltersLabel(cls._getLabelKey(condition), condition), value=condition.relationValue, relation=condition.relation) else: subBlocks = [] titleKey = cls._getLabelKey(condition) if condition.isNegative(): titleKey = '%s/not' % titleKey subBlocks.append(cls._formatVehsTable(condition, event)) if len(subBlocks): if event.isCompleted(): current, total = (None, None) return formatters.packContainer(i18n.makeString(titleKey), isResizable=True, isOpened=True, subBlocks=subBlocks, value=condition.relationValue, relation=condition.relation, current=current, total=total) return
def _handlerFreeXPToTManXPRate(self, value): default = g_itemsCache.items.shop.defaults.freeXPToTManXPRate if default <= 0: return (formatters.packTextBlock( i18n.makeString( QUESTS. DETAILS_MODIFIERS_ECONOMICS_AVAILABLE_FREEXPTOTMANXPRATE), makeHtmlString( 'html_templates:lobby/quests/actions', _DT.MULTIPLIER, {'value': BigWorld.wg_getIntegralFormat(value)})), ACTION_MODIFIER_TYPE.AVAILABILITY) else: return self.__pack('freeXPToTManXPRate', value, default, _DT.PERCENT)
def format(self, svrEvents, event = None): conds = self.getConditions() if conds.isEmpty(): subBlocks = [formatters.packTextBlock(i18n.makeString('#quests:details/requirements/vehicle/any'))] else: subBlocks = conds._formatSubBlocks(svrEvents, event) title, note = i18n.makeString('#quests:details/tasks/requirements/vehicleLabel'), '' if conds: vehDescr = conds.find('vehicleDescr') if vehDescr is not None: note = makeHtmlString('html_templates:lobby/quests', 'vehicleDescrLabel', {'count': len(self.getSuitableVehicles()), 'total': len(vehDescr.getVehiclesList())}) if len(subBlocks): return formatters.packTopLevelContainer(title=title, note=note, subBlocks=subBlocks) else: return
def _format(self, condition, event): results = [] if not event.isGuiDisabled(): isAllAlive = condition.isAllAlive() if isAllAlive is not None: key = 'alive' if isAllAlive else 'alive/not' results.append( formatters.packTextBlock( i18n.makeString( '#quests:details/conditions/results/unit/%s' % key))) resultsFormatter = _BattleResultsFormatter() for c in condition.getResults(): results.extend(resultsFormatter.format(c, event)) return results
def _format(self, condition, event): result = [] if not event.isGuiDisabled(): camos = [] for camo in condition.getCamos2ids(): camoI18key = '#quests:details/conditions/clanKills/camo/%s' % str( camo) if i18n.doesTextExist(camoI18key): camos.append(i18n.makeString(camoI18key)) i18nKey = '#quests:details/conditions/clanKills' if condition.isNegative(): i18nKey = '%s/not' % i18nKey if len(camos): result = [ formatters.packTextBlock( i18n.makeString(i18nKey, camos=', '.join(camos))) ] return result
def makeUnavailableBlockData(): return formatters.packTextBlock( text_styles.alert( backport.text(R.strings.quests.bonuses.notAvailable())))
def _handlerFreeXPToTManXPRate(self, value): default = g_itemsCache.items.shop.defaults.freeXPToTManXPRate if default <= 0: return (formatters.packTextBlock(i18n.makeString(QUESTS.DETAILS_MODIFIERS_ECONOMICS_AVAILABLE_FREEXPTOTMANXPRATE), makeHtmlString('html_templates:lobby/quests/actions', _DT.MULTIPLIER, {'value': BigWorld.wg_getIntegralFormat(value)})), ACTION_MODIFIER_TYPE.AVAILABILITY) else: return self.__pack('freeXPToTManXPRate', value, default, _DT.PERCENT)
def getBattlePassQuestInfo(progress): postBattleR = R.strings.battle_pass.reward.postBattle chapterName = backport.text( R.strings.battle_pass.chapter.name.num(progress.chapter)()) questName = backport.text(postBattleR.title(), level=progress.level, chapter=chapterName) progressDesc = backport.text(postBattleR.progress()) progressDiffTooltip = backport.text(postBattleR.progress.tooltip(), points=progress.pointsBattleDiff) questInfo = { 'status': MISSIONS_STATES.COMPLETED if progress.isDone else MISSIONS_STATES.IN_PROGRESS, 'questID': BattlePassConsts.FAKE_QUEST_ID, 'rendererType': QUESTS_ALIASES.RENDERER_TYPE_QUEST, 'eventType': EVENT_TYPE.BATTLE_QUEST, 'maxProgrVal': progress.pointsTotal, 'tooltip': TOOLTIPS.QUESTS_RENDERER_LABEL, 'description': questName, 'currentProgrVal': progress.pointsNew, 'tasksCount': -1, 'progrBarType': formatters.PROGRESS_BAR_TYPE.SIMPLE if not progress.isDone else formatters.PROGRESS_BAR_TYPE.NONE, 'linkTooltip': TOOLTIPS.QUESTS_LINKBTN_BATTLEPASS } progressList = [] if not progress.isDone: progressList = [{ 'description': progressDesc, 'maxProgrVal': progress.pointsTotal, 'progressDiff': '+ {}'.format(progress.pointsDiff), 'progressDiffTooltip': progressDiffTooltip, 'currentProgrVal': progress.pointsNew, 'progrBarType': formatters.PROGRESS_BAR_TYPE.SIMPLE }] awards = [] if progress.isDone: awardsList = QuestsBonusComposer( BattlePassTextBonusesPacker()).getPreformattedBonuses( progress.awards) if awardsList: awards = [award.getDict() for award in awardsList] else: awards = [ formatters.packTextBlock( text_styles.alert( backport.text(R.strings.quests.bonuses.notAvailable())) ).getDict() ] info = { 'awards': awards, 'questInfo': questInfo, 'questType': EVENT_TYPE.BATTLE_QUEST, 'progressList': progressList, 'questState': { 'statusState': MISSIONS_STATES.COMPLETED if progress.isDone else MISSIONS_STATES.IN_PROGRESS }, 'linkBtnTooltip': '' if progress.isEnabled else backport.text( R.strings.battle_pass.progression.error()), 'linkBtnEnabled': progress.isEnabled } return info
def getDetails(self, svrEvents): infoList = [] conditions = [formatters.todict(formatters.packQuestDetailsSeparator(0, 0, 5, 10))] conditions.extend(self._getTopConditions(svrEvents)) conditions.append(formatters.todict(formatters.packQuestDetailsSeparator(0, 0, 10, 5))) conditions.extend(self._getConditions(svrEvents)) conditionsContainer = formatters.todict(formatters.packMotiveContainer(title=i18n.makeString('#quests:quests/conditions'), subBlocks=conditions)) infoList.append(conditionsContainer) requirementContainer = formatters.todict(formatters.packTopLevelContainer(title=i18n.makeString('#quests:quests/requirements'), subBlocks=[formatters.packTextBlock(formatters.formatGray(self.event.getRequirementsStr()))])) infoList.append(requirementContainer) infoList.append(formatters.todict(formatters.packQuestDetailsSeparator(0, 0, 5, 0))) tpsContainer = formatters.todict(formatters.packTopLevelContainer(title=i18n.makeString('#quests:QuestTaskDetailsView/description'), subBlocks=[formatters.packTextBlock(formatters.formatGray(self.event.getTips()))])) infoList.append(tpsContainer) return {'image': RES_ICONS.MAPS_ICONS_HANGARTUTORIAL_GOALSQUEST, 'title': text_styles.highTitle(self.event.getUserName()), 'infoList': infoList, 'awards': self._getBonuses(svrEvents, useIconFormat=False)}
def _packConditions(self, svrEvents): result = super(_MotiveQuestInfo, self)._packConditions(svrEvents) descr = self.event.getDescription() if descr: result.append(formatters.packTextBlock(formatters.formatGray(descr))) return result