def __updateTankmanDossierImpl(dossierDescr, results):
    if not bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_TOTAL):
        return
    dossierDescr['total']['battlesCount'] += 1
    if not bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_15X15):
        return
    for recordDBID in results['achievements']:
        __processArenaAchievement(dossierDescr, recordDBID)
Exemple #2
0
def _updateTankmanDossierImpl(descr, results):
    if not bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_TOTAL_VALUES):
        return
    descr['battlesCount'] += 1
    if not bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_RND_VALUES):
        return
    for achieveIdx in results['achievements']:
        arena_achievements.updateDossierRecord(descr, achieveIdx)
def __updateTankmanDossierImpl(dossierDescr, results):
    if not bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_TOTAL):
        return
    dossierDescr['total']['battlesCount'] += 1
    if not bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_15X15):
        return
    for recordDBID in results['achievements']:
        __processArenaAchievement(dossierDescr, recordDBID)
Exemple #4
0
def __updateVehicleDossierImpl(vehTypeCompDescr, dossierDescr, results):
    bonusCaps = BONUS_CAPS.get(results['bonusType'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_7X7):
        _updatePerBattleSeries(dossierDescr['achievements7x7'],
                               'tacticalBreakthroughSeries',
                               results['winnerTeam'] == results['team'])
    if not bool(bonusCaps & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_15X15):
        return
    achievements = dossierDescr['achievements']
    if achievements['markOfMastery'] < results['markOfMastery']:
        achievements['markOfMastery'] = results['markOfMastery']
    damageRating = int(results['damageRating'] * 100)
    achievements['damageRating'] = damageRating
    achievements['movingAvgDamage'] = results['movingAvgDamage']
    if achievements['marksOnGun'] < results['marksOnGun']:
        achievements['marksOnGun'] = results['marksOnGun']
    if results['winnerTeam'] == results['team'] and results['aimerSeries'] > 0:
        dossierDescr['singleAchievements']['aimer'] = 1
        if achievements['maxAimerSeries'] < results['aimerSeries']:
            achievements['maxAimerSeries'] = results['aimerSeries']
    isSPG = isVehicleSPG(vehTypeCompDescr)
    _updatePerBattleSeries(
        achievements, 'invincibleSeries', results['deathCount'] == 0
        and results['damageReceived'] == 0 and not isSPG)
    _updatePerBattleSeries(achievements, 'diehardSeries',
                           results['deathCount'] == 0 and not isSPG)
    _updateInBattleSeries(achievements, 'sniper', results)
    _updateInBattleSeries(achievements, 'killing', results)
    _updateInBattleSeries(achievements, 'piercing', results)
def __updateVehicleDossierImpl(vehTypeCompDescr, dossierDescr, results):
    bonusCaps = BONUS_CAPS.get(results["bonusType"])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_7X7):
        _updatePerBattleSeries(
            dossierDescr["achievements7x7"], "tacticalBreakthroughSeries", results["winnerTeam"] == results["team"]
        )
    if not bool(bonusCaps & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_15X15):
        return
    achievements = dossierDescr["achievements"]
    if achievements["markOfMastery"] < results["markOfMastery"]:
        achievements["markOfMastery"] = results["markOfMastery"]
    damageRating = int(results["damageRating"] * 100)
    achievements["damageRating"] = damageRating
    achievements["movingAvgDamage"] = results["movingAvgDamage"]
    if achievements["marksOnGun"] < results["marksOnGun"]:
        achievements["marksOnGun"] = results["marksOnGun"]
    if results["winnerTeam"] == results["team"] and results["aimerSeries"] > 0:
        if achievements["maxAimerSeries"] < results["aimerSeries"]:
            achievements["maxAimerSeries"] = results["aimerSeries"]
    isSPG = isVehicleSPG(vehTypeCompDescr)
    _updatePerBattleSeries(
        achievements, "invincibleSeries", results["deathCount"] == 0 and results["damageReceived"] == 0 and not isSPG
    )
    _updatePerBattleSeries(achievements, "diehardSeries", results["deathCount"] == 0 and not isSPG)
    _updateInBattleSeries(achievements, "sniper", results)
    _updateInBattleSeries(achievements, "killing", results)
    _updateInBattleSeries(achievements, "piercing", results)
Exemple #6
0
def hasRespawns(arenBonusType = None):
    if arenBonusType is None:
        arenBonusType = getArenaBonusType()
    if arenBonusType is not None:
        return caps.get(arenBonusType) & caps.RESPAWN > 0
    else:
        return False
Exemple #7
0
def initAttackManager(arena):
    global _g_instance
    visual = caps.get(arena.bonusType) & caps.GAS_ATTACK_MECHANICS > 0 and arena.arenaType.gameplayName in ('fallout', 'fallout2', 'fallout3') and getattr(arena.arenaType, 'gasAttackVisual', None)
    if not visual is not None:
        raise AssertionError('Gas attack visual should be defined for arena bonus type: %d' % arena.bonusType)
        _g_instance = GasAttackManager(visual)
    return
Exemple #8
0
def hasRage(arenBonusType = None):
    if arenBonusType is None:
        arenBonusType = getArenaBonusType()
    if arenBonusType is not None:
        return caps.get(arenBonusType) & caps.RAGE_MECHANICS > 0
    else:
        return False
Exemple #9
0
def hasGasAttack(arenBonusType = None):
    if arenBonusType is None:
        arenBonusType = getArenaBonusType()
    if arenBonusType is not None:
        return caps.get(arenBonusType) & caps.GAS_ATTACK_MECHANICS > 0 and getIsMultiteam()
    else:
        return False
def updateRated7x7Dossier(dossierDescr, battleResults, dossierXP):
    bonusCaps = BONUS_CAPS.get(battleResults["bonusType"])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
        __updateAggregatedValues(
            dossierDescr.expand("rated7x7"), dossierDescr.expand("rated7x7"), battleResults, dossierXP, frags8p=0
        )
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXRATED7X7):
        __updateMaxValues(dossierDescr.expand("maxRated7x7"), battleResults, dossierXP)
Exemple #11
0
def initAttackManager(arena):
    global _g_instance
    if caps.get(arena.bonusType) & caps.GAS_ATTACK_MECHANICS > 0 and arena.arenaType.gameplayName in ('fallout', 'fallout2', 'fallout3'):
        visual = getattr(arena.arenaType, 'gasAttackVisual', None)
        if visual is None:
            LOG_DEBUG('Gas attack visual should be defined for arena bonus type: %d' % arena.bonusType)
        _g_instance = GasAttackManager(visual)
    return
Exemple #12
0
def hasRepairPoints(arenaType = None, arenBonusType = None):
    if arenaType is None:
        arenaType = getArenaType()
    if arenBonusType is None:
        arenBonusType = getArenaBonusType()
    if arenaType is not None and arenBonusType is not None:
        return caps.get(arenBonusType) & caps.REPAIR_MECHANICS > 0 and arenaType.repairPoints
    return False
Exemple #13
0
def hasResourcePoints(arenaType = None, arenBonusType = None):
    if arenaType is None:
        arenaType = getArenaType()
    if arenBonusType is None:
        arenBonusType = getArenaBonusType()
    if arenaType is not None and arenBonusType is not None:
        return caps.get(arenBonusType) & caps.RESOURCE_POINTS > 0 and arenaType.resourcePoints
    return False
Exemple #14
0
def hasFlags(arenaType = None, arenBonusType = None):
    if arenaType is None:
        arenaType = getArenaType()
    if arenBonusType is None:
        arenBonusType = getArenaBonusType()
    if arenaType is not None and arenBonusType is not None:
        return caps.get(arenBonusType) & caps.FLAG_MECHANICS > 0 and arenaType.flagSpawnPoints
    return False
def __updateDossierCommonPart(dossierType, dossierDescr, results, dossierXP):
    bonusCaps = BONUS_CAPS.get(results['bonusType'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_TOTAL):
        __updateTotalValues(dossierDescr, results)
    frags8p = 0
    maxValuesChanged = []
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_KILL_LIST):
        frags8p = __processKillList(dossierDescr, results['killList'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_15X15):
        __updateAggregatedValues(dossierDescr.expand('a15x15'), dossierDescr.expand('a15x15_2'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_7X7):
        __updateAggregatedValues(dossierDescr.expand('a7x7'), dossierDescr.expand('a7x7'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
        __updateAggregatedValues(dossierDescr.expand('rated7x7'), dossierDescr.expand('rated7x7'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_COMPANY):
        __updateBaseStatistics(dossierDescr.expand('company'), dossierDescr.expand('company2'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_CLAN):
        __updateBaseStatistics(dossierDescr.expand('clan'), dossierDescr.expand('clan2'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_FALLOUT):
        __updateAggregatedValues(dossierDescr.expand('fallout'), dossierDescr.expand('fallout'), results, dossierXP, frags8p)
        for record in ('winPoints', 'flagCapture', 'soloFlagCapture', 'resourceAbsorbed', 'deathCount'):
            dossierDescr['fallout'][record] += results[record]

        if dossierType == DOSSIER_TYPE.ACCOUNT:
            for record in ('avatarDamageDealt', 'avatarKills'):
                dossierDescr['fallout'][record] += results[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
        if dossierDescr.isBlockInLayout('globalMapCommon'):
            __updateAggregatedValues(dossierDescr.expand('globalMapCommon'), dossierDescr.expand('globalMapCommon'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_SORTIE):
        __updateAggregatedValues(dossierDescr.expand('fortSorties'), dossierDescr.expand('fortSorties'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_FORT_BATTLE):
        if results['winnerTeam'] == 0:
            winnerTeam = results['fortBuilding']['buildTeam']
        else:
            winnerTeam = results['winnerTeam']
        __updateAggregatedValues(dossierDescr.expand('fortBattles'), dossierDescr.expand('fortBattles'), results, dossierXP, frags8p, winnerTeam)
    if bool(bonusCaps & (BONUS_CAPS.DOSSIER_ACHIEVEMENTS | BONUS_CAPS.DOSSIER_ACHIEVEMENTS_FALLOUT)):
        for recordDBID in results['achievements']:
            __processArenaAchievement(dossierDescr, recordDBID)

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX15X15):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('max15x15'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX7X7):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('max7x7'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXRATED7X7):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxRated7x7'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXSORTIE):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxFortSorties'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFORTBATTLE):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxFortBattles'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
        if dossierDescr.isBlockInLayout('maxGlobalMapCommon'):
            maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxGlobalMapCommon'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFALLOUT):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxFallout'), results, dossierXP)
    return (maxValuesChanged, frags8p)
def __updateMaxValuesWithAvatar(block, results):
    bonusCaps = BONUS_CAPS.get(results["bonusType"])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFALLOUT):
        kills = len(results["killList"]) + results["avatarKills"]
        if kills > 0 and kills >= block["maxFragsWithAvatar"]:
            block["maxFragsWithAvatar"] = kills
        damageDealt = results["damageDealt"] + results["avatarDamageDealt"]
        if damageDealt > 0 and damageDealt >= block["maxDamageWithAvatar"]:
            block["maxDamageWithAvatar"] = damageDealt
def __updateMaxValuesWithAvatar(block, results):
    bonusCaps = BONUS_CAPS.get(results['bonusType'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFALLOUT):
        kills = len(results['killList']) + results['avatarKills']
        if kills > 0 and kills >= block['maxFragsWithAvatar']:
            block['maxFragsWithAvatar'] = kills
        damageDealt = results['damageDealt'] + results['avatarDamageDealt']
        if damageDealt > 0 and damageDealt >= block['maxDamageWithAvatar']:
            block['maxDamageWithAvatar'] = damageDealt
def __updateMaxValuesWithAvatar(block, results):
    bonusCaps = BONUS_CAPS.get(results['bonusType'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFALLOUT):
        kills = len(results['killList']) + results['avatarKills']
        if kills > 0 and kills >= block['maxFragsWithAvatar']:
            block['maxFragsWithAvatar'] = kills
        damageDealt = results['damageDealt'] + results['avatarDamageDealt']
        if damageDealt > 0 and damageDealt >= block['maxDamageWithAvatar']:
            block['maxDamageWithAvatar'] = damageDealt
Exemple #19
0
 def _assembleBonusCapsComponents(componentSystem):
     from arena_components.assembler_helper import ARENA_BONUS_TYPE_CAP_COMPONENTS
     for name, (
             bonusFlag,
             componentClass) in ARENA_BONUS_TYPE_CAP_COMPONENTS.iteritems():
         isBonusTypeCapActive = ARENA_BONUS_TYPE_CAPS.get(
             componentSystem.bonusType) & bonusFlag
         if isBonusTypeCapActive:
             ClientArenaComponentAssembler._addArenaComponent(
                 componentSystem, name, componentClass)
Exemple #20
0
def __updateAccountDossierCuts(dossierDescr, results, dossierXP,
                               vehTypeCompDescr, vehDossierDescr):
    if not vehDossierDescr is not None:
        raise AssertionError
        bonusCaps = BONUS_CAPS.get(results['bonusType'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_15X15):
            a15x15Cut = dossierDescr['a15x15Cut']
            vehA15x15 = vehDossierDescr['a15x15']
            a15x15Cut[vehTypeCompDescr] = (
                vehA15x15['battlesCount'], vehA15x15['wins'],
                vehDossierDescr['achievements']['markOfMastery'],
                vehA15x15['xp'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_7X7):
            a7x7Cut = dossierDescr['a7x7Cut']
            vehA7x7 = vehDossierDescr['a7x7']
            a7x7Cut[vehTypeCompDescr] = (vehA7x7['battlesCount'],
                                         vehA7x7['wins'], vehA7x7['xp'],
                                         vehA7x7['originalXP'],
                                         vehA7x7['damageDealt'],
                                         vehA7x7['damageAssistedRadio'],
                                         vehA7x7['damageAssistedTrack'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_SORTIE):
            sortieCut = dossierDescr['fortSortiesCut']
            vehSortie = vehDossierDescr['fortSorties']
            sortieCut[vehTypeCompDescr] = (vehSortie['battlesCount'],
                                           vehSortie['wins'], vehSortie['xp'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_FORT_BATTLE):
            battleCut = dossierDescr['fortBattlesCut']
            vehBattles = vehDossierDescr['fortBattles']
            battleCut[vehTypeCompDescr] = (vehBattles['battlesCount'],
                                           vehBattles['wins'],
                                           vehBattles['xp'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
            rated7x7Cut = dossierDescr['rated7x7Cut']
            vehRated7x7 = vehDossierDescr['rated7x7']
            rated7x7Cut[vehTypeCompDescr] = (
                vehRated7x7['battlesCount'], vehRated7x7['wins'],
                vehRated7x7['xp'], vehRated7x7['originalXP'],
                vehRated7x7['damageDealt'], vehRated7x7['damageAssistedRadio'],
                vehRated7x7['damageAssistedTrack'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
            globalMapCommonCut = dossierDescr['globalMapCommonCut']
            vehGlobalMapCommon = vehDossierDescr['globalMapCommon']
            globalMapCommonCut[vehTypeCompDescr] = (
                vehGlobalMapCommon['battlesCount'], vehGlobalMapCommon['wins'],
                vehGlobalMapCommon['xp'])
        falloutAccountDossierCut = bool(bonusCaps & BONUS_CAPS.DOSSIER_FALLOUT
                                        ) and dossierDescr['falloutCut']
        falloutVehicleDossier = vehDossierDescr['fallout']
        falloutAccountDossierCut[vehTypeCompDescr] = (
            falloutVehicleDossier['battlesCount'],
            falloutVehicleDossier['wins'], falloutVehicleDossier['xp'],
            falloutVehicleDossier['winPoints'])
    return
Exemple #21
0
def _updateVehicleDossierImpl(vehTypeCompDescr, descr, results):
    if not bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_RND_VALUES):
        return
    if descr['markOfMastery'] < results['markOfMastery']:
        descr['markOfMastery'] = results['markOfMastery']
    tags = utils.vehicleTypeByCompactDescr(vehTypeCompDescr)['tags']
    _updatePerBattleSeries(descr, 'invincibleSeries', results['killerID'] == 0 and results['damageReceived'] == 0 and 'SPG' not in tags)
    _updatePerBattleSeries(descr, 'diehardSeries', results['killerID'] == 0 and 'SPG' not in tags)
    _updateInBattleSeries(descr, 'sniper', results)
    _updateInBattleSeries(descr, 'killing', results)
    _updateInBattleSeries(descr, 'piercing', results)
def __updateDossierCommonPart(dossierType, dossierDescr, results, dossierXP, winnerTeam):
    bonusCaps = BONUS_CAPS.get(results['bonusType'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_TOTAL):
        __updateTotalValues(dossierDescr, results)
    frags8p = 0
    maxValuesChanged = []
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_KILL_LIST):
        frags8p = __processKillList(dossierDescr, results['killList'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_15X15):
        __updateAggregatedValues(dossierDescr.expand('a15x15'), dossierDescr.expand('a15x15_2'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_7X7):
        __updateAggregatedValues(dossierDescr.expand('a7x7'), dossierDescr.expand('a7x7'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
        __updateAggregatedValues(dossierDescr.expand('rated7x7'), dossierDescr.expand('rated7x7'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_COMPANY):
        __updateBaseStatistics(dossierDescr.expand('company'), dossierDescr.expand('company2'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_CLAN):
        __updateBaseStatistics(dossierDescr.expand('clan'), dossierDescr.expand('clan2'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_FALLOUT):
        __updateAggregatedValues(dossierDescr.expand('fallout'), dossierDescr.expand('fallout'), results, dossierXP, frags8p)
        for record in ('winPoints', 'flagCapture', 'soloFlagCapture', 'resourceAbsorbed', 'deathCount'):
            dossierDescr['fallout'][record] += results[record]

        if dossierType == DOSSIER_TYPE.ACCOUNT:
            for record in ('avatarDamageDealt', 'avatarKills'):
                dossierDescr['fallout'][record] += results[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
        if dossierDescr.isBlockInLayout('globalMapCommon'):
            __updateAggregatedValues(dossierDescr.expand('globalMapCommon'), dossierDescr.expand('globalMapCommon'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_SORTIE):
        __updateAggregatedValues(dossierDescr.expand('fortSorties'), dossierDescr.expand('fortSorties'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_FORT_BATTLE):
        __updateAggregatedValues(dossierDescr.expand('fortBattles'), dossierDescr.expand('fortBattles'), results, dossierXP, frags8p, winnerTeam)
    if bool(bonusCaps & (BONUS_CAPS.DOSSIER_ACHIEVEMENTS | BONUS_CAPS.DOSSIER_ACHIEVEMENTS_FALLOUT)):
        for recordDBID in results['achievements']:
            __processArenaAchievement(dossierDescr, recordDBID)

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX15X15):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('max15x15'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX7X7):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('max7x7'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXRATED7X7):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxRated7x7'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXSORTIE):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxFortSorties'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFORTBATTLE):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxFortBattles'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
        if dossierDescr.isBlockInLayout('maxGlobalMapCommon'):
            maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxGlobalMapCommon'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFALLOUT):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxFallout'), results, dossierXP)
    return (maxValuesChanged, frags8p)
Exemple #23
0
def updateRated7x7Dossier(dossierDescr, battleResults, dossierXP):
    bonusCaps = BONUS_CAPS.get(battleResults['bonusType'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
        __updateAggregatedValues(dossierDescr.expand('rated7x7'),
                                 dossierDescr.expand('rated7x7'),
                                 battleResults,
                                 dossierXP,
                                 frags8p=0)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXRATED7X7):
        __updateMaxValues(dossierDescr.expand('maxRated7x7'), battleResults,
                          dossierXP)
def __updateDossierCommonPart(dossierDescr, results, dossierXP):
    bonusCaps = BONUS_CAPS.get(results['bonusType'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_TOTAL):
        __updateTotalValues(dossierDescr, results)
    frags8p = 0
    maxValuesChanged = []
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_KILL_LIST):
        frags8p = __processKillList(dossierDescr, results['killList'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_15X15):
        __updateAggregatedValues(dossierDescr.expand('a15x15'), dossierDescr.expand('a15x15_2'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_7X7):
        __updateAggregatedValues(dossierDescr.expand('a7x7'), dossierDescr.expand('a7x7'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
        __updateAggregatedValues(dossierDescr.expand('rated7x7'), dossierDescr.expand('rated7x7'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_COMPANY):
        __updateBaseStatistics(dossierDescr.expand('company'), dossierDescr.expand('company2'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_CLAN):
        __updateBaseStatistics(dossierDescr.expand('clan'), dossierDescr.expand('clan2'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
        if dossierDescr.isBlockInLayout('globalMapCommon'):
            __updateAggregatedValues(dossierDescr.expand('globalMapCommon'), dossierDescr.expand('globalMapCommon'), results, dossierXP, frags8p)
        if dossierDescr.isBlockInLayout('maxGlobalMapCommon'):
            maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxGlobalMapCommon'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_HISTORICAL):
        __updateAggregatedValues(dossierDescr.expand('historical'), dossierDescr.expand('historical'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_SORTIE):
        __updateAggregatedValues(dossierDescr.expand('fortSorties'), dossierDescr.expand('fortSorties'), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_FORT_BATTLE):
        if results['winnerTeam'] == 0:
            winnerTeam = results['fortBuilding']['buildTeam']
        else:
            winnerTeam = results['winnerTeam']
        __updateAggregatedValues(dossierDescr.expand('fortBattles'), dossierDescr.expand('fortBattles'), results, dossierXP, frags8p, winnerTeam)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_ACHIEVEMENTS):
        for recordDBID in results['achievements']:
            __processArenaAchievement(dossierDescr, recordDBID)

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX15X15):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('max15x15'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX7X7):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('max7x7'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXRATED7X7):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxRated7x7'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXHISTORICAL):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxHistorical'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXSORTIE):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxFortSorties'), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFORTBATTLE):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand('maxFortBattles'), results, dossierXP)
    return (maxValuesChanged, frags8p)
def __updateVehicleDossierImpl(vehTypeCompDescr, dossierDescr, results):
    if bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_7X7):
        _updatePerBattleSeries(dossierDescr['achievements7x7'], 'tacticalBreakthroughSeries', results['winnerTeam'] == results['team'])
    if not bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_15X15):
        return
    achievements = dossierDescr['achievements']
    if achievements['markOfMastery'] < results['markOfMastery']:
        achievements['markOfMastery'] = results['markOfMastery']
    damageRating = int(results['damageRating'] * 100)
    achievements['damageRating'] = damageRating
    achievements['movingAvgDamage'] = results['movingAvgDamage']
    if achievements['marksOnGun'] < results['marksOnGun']:
        achievements['marksOnGun'] = results['marksOnGun']
    if results['winnerTeam'] == results['team'] and results['aimerSeries'] > 0:
        dossierDescr['singleAchievements']['aimer'] = 1
        if achievements['maxAimerSeries'] < results['aimerSeries']:
            achievements['maxAimerSeries'] = results['aimerSeries']
    isSPG = isVehicleSPG(vehTypeCompDescr)
    _updatePerBattleSeries(achievements, 'invincibleSeries', results['killerID'] == 0 and results['damageReceived'] == 0 and not isSPG)
    _updatePerBattleSeries(achievements, 'diehardSeries', results['killerID'] == 0 and not isSPG)
    _updateInBattleSeries(achievements, 'sniper', results)
    _updateInBattleSeries(achievements, 'killing', results)
    _updateInBattleSeries(achievements, 'piercing', results)
def __updateAccountDossierCuts(dossierDescr, results, dossierXP, vehTypeCompDescr, vehDossierDescr):
    if not vehDossierDescr is not None:
        raise AssertionError
        bonusCaps = BONUS_CAPS.get(results['bonusType'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_15X15):
            a15x15Cut = dossierDescr['a15x15Cut']
            vehA15x15 = vehDossierDescr['a15x15']
            a15x15Cut[vehTypeCompDescr] = (vehA15x15['battlesCount'],
             vehA15x15['wins'],
             vehDossierDescr['achievements']['markOfMastery'],
             vehA15x15['xp'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_7X7):
            a7x7Cut = dossierDescr['a7x7Cut']
            vehA7x7 = vehDossierDescr['a7x7']
            a7x7Cut[vehTypeCompDescr] = (vehA7x7['battlesCount'],
             vehA7x7['wins'],
             vehA7x7['xp'],
             vehA7x7['originalXP'],
             vehA7x7['damageDealt'],
             vehA7x7['damageAssistedRadio'],
             vehA7x7['damageAssistedTrack'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_SORTIE):
            sortieCut = dossierDescr['fortSortiesCut']
            vehSortie = vehDossierDescr['fortSorties']
            sortieCut[vehTypeCompDescr] = (vehSortie['battlesCount'], vehSortie['wins'], vehSortie['xp'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_FORT_BATTLE):
            battleCut = dossierDescr['fortBattlesCut']
            vehBattles = vehDossierDescr['fortBattles']
            battleCut[vehTypeCompDescr] = (vehBattles['battlesCount'], vehBattles['wins'], vehBattles['xp'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
            rated7x7Cut = dossierDescr['rated7x7Cut']
            vehRated7x7 = vehDossierDescr['rated7x7']
            rated7x7Cut[vehTypeCompDescr] = (vehRated7x7['battlesCount'],
             vehRated7x7['wins'],
             vehRated7x7['xp'],
             vehRated7x7['originalXP'],
             vehRated7x7['damageDealt'],
             vehRated7x7['damageAssistedRadio'],
             vehRated7x7['damageAssistedTrack'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
            globalMapCommonCut = dossierDescr['globalMapCommonCut']
            vehGlobalMapCommon = vehDossierDescr['globalMapCommon']
            globalMapCommonCut[vehTypeCompDescr] = (vehGlobalMapCommon['battlesCount'], vehGlobalMapCommon['wins'], vehGlobalMapCommon['xp'])
        falloutAccountDossierCut = bool(bonusCaps & BONUS_CAPS.DOSSIER_FALLOUT) and dossierDescr['falloutCut']
        falloutVehicleDossier = vehDossierDescr['fallout']
        falloutAccountDossierCut[vehTypeCompDescr] = (falloutVehicleDossier['battlesCount'],
         falloutVehicleDossier['wins'],
         falloutVehicleDossier['xp'],
         falloutVehicleDossier['winPoints'])
    return
def updateClubDossier(dossierDescr, battleResults, geometryID, teamInDefence):
    bonusCaps = BONUS_CAPS.get(battleResults["bonusType"])
    if not bool(bonusCaps & BONUS_CAPS.DOSSIER_CLUB):
        return
    block = dossierDescr["total"]
    block["lastBattleTime"] = int(time.time())
    block = dossierDescr.expand("clubBattles")
    block["battlesCount"] += 1
    team = battleResults["team"]
    winnerTeam = battleResults["winnerTeam"]
    if team == winnerTeam:
        block["wins"] += 1
    else:
        if winnerTeam == 0:
            LOG_ERROR(
                "[EXCEPTION] updateClubDossier(dossierDescr, battleResults, geometryID): draw is not allowed for cybersport rated battles."
            )
        block["losses"] += 1
    for record in (
        "killedVehicles",
        "lostVehicles",
        "damageDealt",
        "damageReceived",
        "capturePoints",
        "droppedCapturePoints",
    ):
        block[record] += battleResults["club"][record]

    isInAttack = team != teamInDefence
    if isInAttack:
        block["battlesCountInAttack"] += 1
        block["damageDealtInAttack"] += battleResults["club"]["damageDealt"]
    else:
        block["damageDealtInDefence"] += battleResults["club"]["damageDealt"]
    block = dossierDescr["vehicles"]
    for typeCompDescr, xp in battleResults["club"]["vehicles"]:
        battlesCount, experience = block.get(typeCompDescr, (0, 0))
        block[typeCompDescr] = (battlesCount + 1, experience + xp)

    block = dossierDescr["maps"]
    battlesCount, wins = block.get(geometryID, (0, 0))
    block[geometryID] = (battlesCount + 1, wins + 1 if team == winnerTeam else 0)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_RATED7X7):
        for recordDBID in battleResults["club"]["achievements"]:
            __processArenaAchievement(dossierDescr, recordDBID)

        _updatePerBattleSeries(dossierDescr["achievementsRated7x7"], "victoryMarchSeries", team == winnerTeam)
Exemple #28
0
def updateClubDossier(dossierDescr, battleResults, geometryID, teamInDefence):
    bonusCaps = BONUS_CAPS.get(battleResults['bonusType'])
    if not bool(bonusCaps & BONUS_CAPS.DOSSIER_CLUB):
        return
    block = dossierDescr['total']
    block['lastBattleTime'] = int(time.time())
    block = dossierDescr.expand('clubBattles')
    block['battlesCount'] += 1
    team = battleResults['team']
    winnerTeam = battleResults['winnerTeam']
    if team == winnerTeam:
        block['wins'] += 1
    else:
        if winnerTeam == 0:
            LOG_ERROR(
                '[EXCEPTION] updateClubDossier(dossierDescr, battleResults, geometryID): draw is not allowed for cybersport rated battles.'
            )
        block['losses'] += 1
    for record in ('killedVehicles', 'lostVehicles', 'damageDealt',
                   'damageReceived', 'capturePoints', 'droppedCapturePoints'):
        block[record] += battleResults['club'][record]

    isInAttack = team != teamInDefence
    if isInAttack:
        block['battlesCountInAttack'] += 1
        block['damageDealtInAttack'] += battleResults['club']['damageDealt']
    else:
        block['damageDealtInDefence'] += battleResults['club']['damageDealt']
    block = dossierDescr['vehicles']
    for typeCompDescr, xp in battleResults['club']['vehicles']:
        battlesCount, experience = block.get(typeCompDescr, (0, 0))
        block[typeCompDescr] = (battlesCount + 1, experience + xp)

    block = dossierDescr['maps']
    battlesCount, wins = block.get(geometryID, (0, 0))
    block[geometryID] = (battlesCount + 1,
                         wins + 1 if team == winnerTeam else 0)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_RATED7X7):
        for recordDBID in battleResults['club']['achievements']:
            __processArenaAchievement(dossierDescr, recordDBID)

        _updatePerBattleSeries(dossierDescr['achievementsRated7x7'],
                               'victoryMarchSeries', team == winnerTeam)
def __updateMaxValues(block, results, dossierXP):
    maxValuesChanged = []
    bonusCaps = BONUS_CAPS.get(results["bonusType"])
    if dossierXP != 0 and dossierXP >= block["maxXP"]:
        block["maxXP"] = dossierXP
        maxValuesChanged.append("maxXPVehicle")
    kills = len(results["killList"])
    if kills > 0 and kills >= block["maxFrags"]:
        block["maxFrags"] = kills
        maxValuesChanged.append("maxFragsVehicle")
    damageDealt = results["damageDealt"]
    if damageDealt > 0 and damageDealt >= block["maxDamage"]:
        block["maxDamage"] = damageDealt
        maxValuesChanged.append("maxDamageVehicle")
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFALLOUT):
        winPoints = results["winPoints"]
        if winPoints > 0 and winPoints >= block["maxWinPoints"]:
            block["maxWinPoints"] = winPoints
        maxValuesChanged.append("maxWinPointsVehicle")
    return maxValuesChanged
def __updateMaxValues(block, results, dossierXP):
    maxValuesChanged = []
    bonusCaps = BONUS_CAPS.get(results['bonusType'])
    if dossierXP != 0 and dossierXP >= block['maxXP']:
        block['maxXP'] = dossierXP
        maxValuesChanged.append('maxXPVehicle')
    kills = len(results['killList'])
    if kills > 0 and kills >= block['maxFrags']:
        block['maxFrags'] = kills
        maxValuesChanged.append('maxFragsVehicle')
    damageDealt = results['damageDealt']
    if damageDealt > 0 and damageDealt >= block['maxDamage']:
        block['maxDamage'] = damageDealt
        maxValuesChanged.append('maxDamageVehicle')
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFALLOUT):
        winPoints = results['winPoints']
        if winPoints > 0 and winPoints >= block['maxWinPoints']:
            block['maxWinPoints'] = winPoints
        maxValuesChanged.append('maxWinPointsVehicle')
    return maxValuesChanged
def __updateMaxValues(block, results, dossierXP):
    maxValuesChanged = []
    bonusCaps = BONUS_CAPS.get(results['bonusType'])
    if dossierXP != 0 and dossierXP >= block['maxXP']:
        block['maxXP'] = dossierXP
        maxValuesChanged.append('maxXPVehicle')
    kills = len(results['killList'])
    if kills > 0 and kills >= block['maxFrags']:
        block['maxFrags'] = kills
        maxValuesChanged.append('maxFragsVehicle')
    damageDealt = results['damageDealt']
    if damageDealt > 0 and damageDealt >= block['maxDamage']:
        block['maxDamage'] = damageDealt
        maxValuesChanged.append('maxDamageVehicle')
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFALLOUT):
        winPoints = results['winPoints']
        if winPoints > 0 and winPoints >= block['maxWinPoints']:
            block['maxWinPoints'] = winPoints
        maxValuesChanged.append('maxWinPointsVehicle')
    return maxValuesChanged
def updateClubDossier(dossierDescr, battleResults, geometryID, teamInDefence):
    bonusCaps = BONUS_CAPS.get(battleResults['bonusType'])
    if not bool(bonusCaps & BONUS_CAPS.DOSSIER_CLUB):
        return
    block = dossierDescr['total']
    block['lastBattleTime'] = int(time.time())
    block = dossierDescr.expand('clubBattles')
    block['battlesCount'] += 1
    team = battleResults['team']
    winnerTeam = battleResults['winnerTeam']
    if team == winnerTeam:
        block['wins'] += 1
    else:
        if winnerTeam == 0:
            LOG_ERROR('[EXCEPTION] updateClubDossier(dossierDescr, battleResults, geometryID): draw is not allowed for cybersport rated battles.')
        block['losses'] += 1
    for record in ('killedVehicles', 'lostVehicles', 'damageDealt', 'damageReceived', 'capturePoints', 'droppedCapturePoints'):
        block[record] += battleResults['club'][record]

    isInAttack = team != teamInDefence
    if isInAttack:
        block['battlesCountInAttack'] += 1
        block['damageDealtInAttack'] += battleResults['club']['damageDealt']
    else:
        block['damageDealtInDefence'] += battleResults['club']['damageDealt']
    block = dossierDescr['vehicles']
    for typeCompDescr, xp in battleResults['club']['vehicles']:
        battlesCount, experience = block.get(typeCompDescr, (0, 0))
        block[typeCompDescr] = (battlesCount + 1, experience + xp)

    block = dossierDescr['maps']
    battlesCount, wins = block.get(geometryID, (0, 0))
    block[geometryID] = (battlesCount + 1, wins + 1 if team == winnerTeam else 0)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_RATED7X7):
        for recordDBID in battleResults['club']['achievements']:
            __processArenaAchievement(dossierDescr, recordDBID)

        _updatePerBattleSeries(dossierDescr['achievementsRated7x7'], 'victoryMarchSeries', team == winnerTeam)
Exemple #33
0
def _updateAccountDossierImpl(descr, results, vehTypeCompDescr, vehDossierDescr, isMaxFragsGained, isMaxXPGained):
    if not vehDossierDescr is not None:
        raise AssertionError
        vehDossiersCut = dict(descr['vehDossiersCut'])
        battlesCount, wins, _, _ = vehDossiersCut.get(vehTypeCompDescr, (0, 0, 0, 0))
        if results['winnerTeam'] == results['team']:
            wins += 1
        vehDossiersCut[vehTypeCompDescr] = (battlesCount + 1,
         wins,
         vehDossierDescr['markOfMastery'],
         vehDossierDescr['xp'])
        descr['vehDossiersCut'] = vehDossiersCut
        return bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_RND_VALUES) or None
    else:
        series = ('maxInvincibleSeries', 'maxDiehardSeries', 'maxSniperSeries', 'maxKillingSeries', 'maxPiercingSeries')
        for recordName in series:
            if vehDossierDescr[recordName] > descr[recordName]:
                descr[recordName] = vehDossierDescr[recordName]

        if isMaxXPGained:
            descr['maxXPVehicle'] = vehTypeCompDescr
        if isMaxFragsGained:
            descr['maxFragsVehicle'] = vehTypeCompDescr
        return
Exemple #34
0
def hasRage(arenBonusType = None):
    if arenBonusType is None:
        arenBonusType = getArenaBonusType()
    if arenBonusType is not None:
        return caps.get(arenBonusType) & caps.RAGE_MECHANICS > 0
    return False
def updateAccountDossier(dossierDescr, battleResults, dossierXP, vehDossiers, maxVehResults):
    bonusCaps = BONUS_CAPS.get(battleResults['bonusType'])
    maxValuesChanged, frags8p = __updateDossierCommonPart(DOSSIER_TYPE.ACCOUNT, dossierDescr, battleResults, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_15X15):
        _updatePerBattleSeries(dossierDescr['achievements'], 'reliableComradeSeries', battleResults['tdamageDealt'] == 0 and not battleResults['tdestroyedModules'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_7X7):
        __updateCapturePointsWithBaseCapture(dossierDescr, battleResults)
        __updateDefencePoints(dossierDescr, battleResults)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_SORTIE):
        fortResource = battleResults['fortResource']
        for blockName in ('fortMisc', 'fortMiscInClan'):
            miscBlock = dossierDescr[blockName]
            miscBlock['fortResourceInSorties'] += fortResource
            if fortResource > miscBlock['maxFortResourceInSorties']:
                miscBlock['maxFortResourceInSorties'] = fortResource

        dossierDescr['fortSortiesInClan']['fortResource'] += battleResults['personalFortResource']
        __updateAggregatedValues(dossierDescr.expand('fortSortiesInClan'), dossierDescr.expand('fortSortiesInClan'), battleResults, dossierXP, frags8p)
        if battleResults['division']:
            divisionNumber = getattr(SORTIE_DIVISION, battleResults['division'])
            fortSortiesInClanBlock = dossierDescr['fortSortiesInClan']
            divisionLowerCase = SORTIE_DIVISION_NAMES[divisionNumber].lower()
            sortiesCombatsVar = '%sBattlesCount' % divisionLowerCase
            fortSortiesInClanBlock[sortiesCombatsVar] += 1
            if battleResults['team'] == battleResults['winnerTeam']:
                sortiesCombatsWinsVar = '%sWins' % divisionLowerCase
                fortSortiesInClanBlock[sortiesCombatsWinsVar] += 1
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_FORT_BATTLE):
        __updateAggregatedValues(dossierDescr.expand('fortBattlesInClan'), dossierDescr.expand('fortBattlesInClan'), battleResults, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
        clubDBID = battleResults['club'].get('clubDBID', 0)
        achievementsRated7x7 = dossierDescr['achievementsRated7x7']
        if clubDBID != achievementsRated7x7['victoryMarchClubDBID']:
            achievementsRated7x7['victoryMarchClubDBID'] = clubDBID
            achievementsRated7x7['victoryMarchSeries'] = 0
        _updatePerBattleSeries(dossierDescr['achievementsRated7x7'], 'victoryMarchSeries', battleResults['winnerTeam'] == battleResults['team'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
        division = battleResults['division']
        if division in GLOBAL_MAP_DIVISION._ORDER:
            if division == GLOBAL_MAP_DIVISION.MIDDLE:
                blockName = 'globalMapMiddle'
                blockNameMax = 'maxGlobalMapMiddle'
            elif division == GLOBAL_MAP_DIVISION.CHAMPION:
                blockName = 'globalMapChampion'
                blockNameMax = 'maxGlobalMapChampion'
            elif division == GLOBAL_MAP_DIVISION.ABSOLUTE:
                blockName = 'globalMapAbsolute'
                blockNameMax = 'maxGlobalMapAbsolute'
            else:
                raise False or AssertionError
            __updateAggregatedValues(dossierDescr.expand(blockName), dossierDescr.expand(blockName), battleResults, dossierXP, frags8p)
            for record in __updateMaxValues(dossierDescr.expand(blockNameMax), battleResults, dossierXP):
                dossierDescr[blockNameMax][record] = maxVehResults[record]

            for record in maxValuesChanged:
                dossierDescr[blockNameMax][record] = maxVehResults[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX15X15):
        for record in maxValuesChanged:
            dossierDescr['max15x15'][record] = maxVehResults[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX7X7):
        for record in maxValuesChanged:
            dossierDescr['max7x7'][record] = maxVehResults[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXRATED7X7):
        for record in maxValuesChanged:
            dossierDescr['maxRated7x7'][record] = maxVehResults[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFALLOUT):
        __updateMaxValuesWithAvatar(dossierDescr['maxFallout'], battleResults)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXSORTIE):
        for record in __updateMaxValues(dossierDescr.expand('maxFortSortiesInClan'), battleResults, dossierXP):
            dossierDescr['maxFortSortiesInClan'][record] = maxVehResults[record]

        for record in maxValuesChanged:
            dossierDescr['maxFortSorties'][record] = maxVehResults[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFORTBATTLE):
        for record in __updateMaxValues(dossierDescr.expand('maxFortBattlesInClan'), battleResults, dossierXP):
            dossierDescr['maxFortBattlesInClan'][record] = maxVehResults[record]

        for record in maxValuesChanged:
            dossierDescr['maxFortBattles'][record] = maxVehResults[record]

    for vehTypeCompDescr, (_, vehDossierDescr) in vehDossiers.iteritems():
        __updateAccountDossierCuts(dossierDescr, battleResults, dossierXP, vehTypeCompDescr, vehDossierDescr)
 def _assembleBonusCapsComponents(componentSystem):
     from arena_components.assembler_helper import ARENA_BONUS_TYPE_CAP_COMPONENTS
     for name, (bonusFlag, componentClass) in ARENA_BONUS_TYPE_CAP_COMPONENTS.iteritems():
         isBonusTypeCapActive = ARENA_BONUS_TYPE_CAPS.get(componentSystem.bonusType) & bonusFlag
         if isBonusTypeCapActive:
             ClientArenaComponentAssembler._addArenaComponent(componentSystem, name, componentClass)
def __updateAccountDossierCuts(dossierDescr, results, dossierXP, vehTypeCompDescr, vehDossierDescr):
    if not vehDossierDescr is not None:
        raise AssertionError
        bonusCaps = BONUS_CAPS.get(results["bonusType"])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_15X15):
            a15x15Cut = dossierDescr["a15x15Cut"]
            vehA15x15 = vehDossierDescr["a15x15"]
            a15x15Cut[vehTypeCompDescr] = (
                vehA15x15["battlesCount"],
                vehA15x15["wins"],
                vehDossierDescr["achievements"]["markOfMastery"],
                vehA15x15["xp"],
            )
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_7X7):
            a7x7Cut = dossierDescr["a7x7Cut"]
            vehA7x7 = vehDossierDescr["a7x7"]
            a7x7Cut[vehTypeCompDescr] = (
                vehA7x7["battlesCount"],
                vehA7x7["wins"],
                vehA7x7["xp"],
                vehA7x7["originalXP"],
                vehA7x7["damageDealt"],
                vehA7x7["damageAssistedRadio"],
                vehA7x7["damageAssistedTrack"],
            )
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_SORTIE):
            sortieCut = dossierDescr["fortSortiesCut"]
            vehSortie = vehDossierDescr["fortSorties"]
            sortieCut[vehTypeCompDescr] = (vehSortie["battlesCount"], vehSortie["wins"], vehSortie["xp"])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_FORT_BATTLE):
            battleCut = dossierDescr["fortBattlesCut"]
            vehBattles = vehDossierDescr["fortBattles"]
            battleCut[vehTypeCompDescr] = (vehBattles["battlesCount"], vehBattles["wins"], vehBattles["xp"])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
            rated7x7Cut = dossierDescr["rated7x7Cut"]
            vehRated7x7 = vehDossierDescr["rated7x7"]
            rated7x7Cut[vehTypeCompDescr] = (
                vehRated7x7["battlesCount"],
                vehRated7x7["wins"],
                vehRated7x7["xp"],
                vehRated7x7["originalXP"],
                vehRated7x7["damageDealt"],
                vehRated7x7["damageAssistedRadio"],
                vehRated7x7["damageAssistedTrack"],
            )
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
            globalMapCommonCut = dossierDescr["globalMapCommonCut"]
            vehGlobalMapCommon = vehDossierDescr["globalMapCommon"]
            globalMapCommonCut[vehTypeCompDescr] = (
                vehGlobalMapCommon["battlesCount"],
                vehGlobalMapCommon["wins"],
                vehGlobalMapCommon["xp"],
            )
        falloutAccountDossierCut = bool(bonusCaps & BONUS_CAPS.DOSSIER_FALLOUT) and dossierDescr["falloutCut"]
        falloutVehicleDossier = vehDossierDescr["fallout"]
        falloutAccountDossierCut[vehTypeCompDescr] = (
            falloutVehicleDossier["battlesCount"],
            falloutVehicleDossier["wins"],
            falloutVehicleDossier["xp"],
            falloutVehicleDossier["winPoints"],
        )
    return
def __updateDossierCommonPart(dossierType, dossierDescr, results, dossierXP, winnerTeam):
    bonusCaps = BONUS_CAPS.get(results["bonusType"])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_TOTAL):
        __updateTotalValues(dossierDescr, results)
    frags8p = 0
    maxValuesChanged = []
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_KILL_LIST):
        frags8p = __processKillList(dossierDescr, results["killList"])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_15X15):
        __updateAggregatedValues(
            dossierDescr.expand("a15x15"), dossierDescr.expand("a15x15_2"), results, dossierXP, frags8p
        )
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_7X7):
        __updateAggregatedValues(dossierDescr.expand("a7x7"), dossierDescr.expand("a7x7"), results, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
        __updateAggregatedValues(
            dossierDescr.expand("rated7x7"), dossierDescr.expand("rated7x7"), results, dossierXP, frags8p
        )
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_COMPANY):
        __updateBaseStatistics(dossierDescr.expand("company"), dossierDescr.expand("company2"), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_CLAN):
        __updateBaseStatistics(dossierDescr.expand("clan"), dossierDescr.expand("clan2"), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_FALLOUT):
        __updateAggregatedValues(
            dossierDescr.expand("fallout"), dossierDescr.expand("fallout"), results, dossierXP, frags8p
        )
        for record in ("winPoints", "flagCapture", "soloFlagCapture", "resourceAbsorbed", "deathCount"):
            dossierDescr["fallout"][record] += results[record]

        if dossierType == DOSSIER_TYPE.ACCOUNT:
            for record in ("avatarDamageDealt", "avatarKills"):
                dossierDescr["fallout"][record] += results[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
        if dossierDescr.isBlockInLayout("globalMapCommon"):
            __updateAggregatedValues(
                dossierDescr.expand("globalMapCommon"),
                dossierDescr.expand("globalMapCommon"),
                results,
                dossierXP,
                frags8p,
            )
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_SORTIE):
        __updateAggregatedValues(
            dossierDescr.expand("fortSorties"), dossierDescr.expand("fortSorties"), results, dossierXP, frags8p
        )
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_FORT_BATTLE):
        __updateAggregatedValues(
            dossierDescr.expand("fortBattles"),
            dossierDescr.expand("fortBattles"),
            results,
            dossierXP,
            frags8p,
            winnerTeam,
        )
    if bool(bonusCaps & (BONUS_CAPS.DOSSIER_ACHIEVEMENTS | BONUS_CAPS.DOSSIER_ACHIEVEMENTS_FALLOUT)):
        for recordDBID in results["achievements"]:
            __processArenaAchievement(dossierDescr, recordDBID)

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX15X15):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand("max15x15"), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX7X7):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand("max7x7"), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXRATED7X7):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand("maxRated7x7"), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXSORTIE):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand("maxFortSorties"), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFORTBATTLE):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand("maxFortBattles"), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
        if dossierDescr.isBlockInLayout("maxGlobalMapCommon"):
            maxValuesChanged = __updateMaxValues(dossierDescr.expand("maxGlobalMapCommon"), results, dossierXP)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFALLOUT):
        maxValuesChanged = __updateMaxValues(dossierDescr.expand("maxFallout"), results, dossierXP)
    return (maxValuesChanged, frags8p)
def __updateAccountDossierImpl(dossierDescr, results, dossierXP, vehTypeCompDescr, vehDossierDescr, maxValuesChanged, frags8p):
    if not vehDossierDescr is not None:
        raise AssertionError
        bonusCaps = BONUS_CAPS.get(results['bonusType'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_15X15):
            a15x15Cut = dossierDescr['a15x15Cut']
            vehA15x15 = vehDossierDescr['a15x15']
            a15x15Cut[vehTypeCompDescr] = (vehA15x15['battlesCount'],
             vehA15x15['wins'],
             vehDossierDescr['achievements']['markOfMastery'],
             vehA15x15['xp'])
            _updatePerBattleSeries(dossierDescr['achievements'], 'reliableComradeSeries', results['tdamageDealt'] == 0 and not results['tdestroyedModules'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_7X7):
            a7x7Cut = dossierDescr['a7x7Cut']
            vehA7x7 = vehDossierDescr['a7x7']
            a7x7Cut[vehTypeCompDescr] = (vehA7x7['battlesCount'],
             vehA7x7['wins'],
             vehA7x7['xp'],
             vehA7x7['originalXP'],
             vehA7x7['damageDealt'],
             vehA7x7['damageAssistedRadio'],
             vehA7x7['damageAssistedTrack'])
            __updateCapturePointsWithBaseCapture(dossierDescr, results)
            __updateDefencePoints(dossierDescr, results)
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_HISTORICAL):
            historicalCut = dossierDescr['historicalCut']
            vehHistorical = vehDossierDescr['historical']
            historicalCut[vehTypeCompDescr] = (vehHistorical['battlesCount'], vehHistorical['wins'], vehHistorical['xp'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_SORTIE):
            sortieCut = dossierDescr['fortSortiesCut']
            vehSortie = vehDossierDescr['fortSorties']
            sortieCut[vehTypeCompDescr] = (vehSortie['battlesCount'], vehSortie['wins'], vehSortie['xp'])
            fortResource = results['fortResource']
            for blockName in ('fortMisc', 'fortMiscInClan'):
                miscBlock = dossierDescr[blockName]
                miscBlock['fortResourceInSorties'] += fortResource
                if fortResource > miscBlock['maxFortResourceInSorties']:
                    miscBlock['maxFortResourceInSorties'] = fortResource

        if bool(bonusCaps & BONUS_CAPS.DOSSIER_FORT_BATTLE):
            battleCut = dossierDescr['fortBattlesCut']
            vehBattles = vehDossierDescr['fortBattles']
            battleCut[vehTypeCompDescr] = (vehBattles['battlesCount'], vehBattles['wins'], vehBattles['xp'])
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_SORTIE):
            __updateAggregatedValues(dossierDescr.expand('fortSortiesInClan'), dossierDescr.expand('fortSortiesInClan'), results, dossierXP, frags8p)
        if bool(bonusCaps & BONUS_CAPS.DOSSIER_FORT_BATTLE):
            __updateAggregatedValues(dossierDescr.expand('fortBattlesInClan'), dossierDescr.expand('fortBattlesInClan'), results, dossierXP, frags8p)
        bool(bonusCaps & BONUS_CAPS.DOSSIER_ACHIEVEMENTS) and __updateAccountRecords(bonusCaps, dossierDescr, vehDossierDescr)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX15X15):
        for record in maxValuesChanged:
            dossierDescr['max15x15'][record] = vehTypeCompDescr

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX7X7):
        for record in maxValuesChanged:
            dossierDescr['max7x7'][record] = vehTypeCompDescr

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXHISTORICAL):
        for record in maxValuesChanged:
            dossierDescr['maxHistorical'][record] = vehTypeCompDescr

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXSORTIE):
        for record in __updateMaxValues(dossierDescr.expand('maxFortSortiesInClan'), results, dossierXP):
            dossierDescr['maxFortSortiesInClan'][record] = vehTypeCompDescr

        for record in maxValuesChanged:
            dossierDescr['maxFortSorties'][record] = vehTypeCompDescr

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFORTBATTLE):
        for record in __updateMaxValues(dossierDescr.expand('maxFortBattlesInClan'), results, dossierXP):
            dossierDescr['maxFortBattlesInClan'][record] = vehTypeCompDescr

        for record in maxValuesChanged:
            dossierDescr['maxFortBattles'][record] = vehTypeCompDescr

    return
Exemple #40
0
def hasRespawns(arenBonusType = None):
    if arenBonusType is None:
        arenBonusType = getArenaBonusType()
    if arenBonusType is not None:
        return caps.get(arenBonusType) & caps.RESPAWN > 0
    return False
Exemple #41
0
def _updateDossierCommonPart(descr, results, originalXP, dossierXP):
    if not bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_TOTAL_VALUES):
        return (True, False, False)
    descr.expand()
    descr['battleLifeTime'] += results['lifeTime']
    descr['lastBattleTime'] = int(time.time())
    descr['originalXP'] += originalXP
    descr['damageAssistedTrack'] += results['damageAssistedTrack']
    descr['damageAssistedRadio'] += results['damageAssistedRadio']
    descr['mileage'] += results['mileage']
    descr['shotsReceived'] += results['shotsReceived']
    descr['noDamageShotsReceived'] += results['noDamageShotsReceived']
    descr['piercedReceived'] += results['piercedReceived']
    descr['heHitsReceived'] += results['heHitsReceived']
    descr['he_hits'] += results['he_hits']
    descr['pierced'] += results['pierced']
    _updateDossierRecordsWithBonusTypePrefix(descr, '', results, dossierXP)
    if bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_COMPANY_VALUES):
        _updateDossierRecordsWithBonusTypePrefix(descr, 'company/', results, dossierXP)
    if bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_CLAN_VALUES):
        _updateDossierRecordsWithBonusTypePrefix(descr, 'clan/', results, dossierXP)
    if results['killerID'] == 0 and results['winnerTeam'] == results['team']:
        descr['winAndSurvived'] += 1
    kill_list = results['kill_list']
    if kill_list:
        vehTypeFrags = dict(descr['vehTypeFrags'])
        vehicles8p = dossiers.g_cache['vehicles8+']
        beastVehicles = dossiers.g_cache['beastVehicles']
        sinaiVehicles = dossiers.g_cache['sinaiVehicles']
        pattonVehicles = dossiers.g_cache['pattonVehicles']
        frags8p = fragsBeast = fragsSinai = fragsPatton = 0
        for _, vtcd, _ in kill_list:
            frags = vehTypeFrags.get(vtcd, 0)
            vehTypeFrags[vtcd] = min(frags + 1, 60001)
            if vtcd in vehicles8p:
                frags8p += 1
            if vtcd in beastVehicles:
                fragsBeast += 1
            if vtcd in sinaiVehicles:
                fragsSinai += 1
            if vtcd in pattonVehicles:
                fragsPatton += 1

        descr['vehTypeFrags'] = vehTypeFrags
        if frags8p != 0:
            descr['frags8p'] += frags8p
        if fragsBeast != 0:
            descr['fragsBeast'] += fragsBeast
        if fragsSinai != 0:
            descr['fragsSinai'] += fragsSinai
        if fragsPatton != 0:
            descr['fragsPatton'] += fragsPatton
    if not bool(BONUS_CAPS.get(results['bonusType']) & BONUS_CAPS.DOSSIER_RND_VALUES):
        return (False, False, False)
    isMaxXPGained = False
    if dossierXP != 0 and dossierXP >= descr['maxXP']:
        isMaxXPGained = True
        descr['maxXP'] = dossierXP
    for achieveIdx in results['achievements']:
        arena_achievements.updateDossierRecord(descr, achieveIdx)

    isMaxFragsGained = False
    if kill_list and len(kill_list) >= descr['maxFrags']:
        descr['maxFrags'] = len(kill_list)
        isMaxFragsGained = True
    descr['treesCut'] += results['destroyedObjects'].get(DESTR_CODES_BY_TAGS['tree'], 0)
    return (False, isMaxFragsGained, isMaxXPGained)
def updateAccountDossier(dossierDescr, battleResults, dossierXP, vehDossiers, maxVehResults, winnerTeam):
    bonusCaps = BONUS_CAPS.get(battleResults['bonusType'])
    maxValuesChanged, frags8p = __updateDossierCommonPart(DOSSIER_TYPE.ACCOUNT, dossierDescr, battleResults, dossierXP, winnerTeam)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_ACHIEVEMENTS):
        for vehTypeCompDescr, (_, vehDossierDescr) in vehDossiers.iteritems():
            __updateAccountRecords(bonusCaps, dossierDescr, vehDossierDescr)

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_ACHIEVEMENTS_15X15):
        _updatePerBattleSeries(dossierDescr['achievements'], 'reliableComradeSeries', battleResults['tdamageDealt'] == 0 and not battleResults['tdestroyedModules'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_7X7):
        __updateCapturePointsWithBaseCapture(dossierDescr, battleResults)
        __updateDefencePoints(dossierDescr, battleResults)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_SORTIE):
        fortResource = battleResults['fortResource']
        for blockName in ('fortMisc', 'fortMiscInClan'):
            miscBlock = dossierDescr[blockName]
            miscBlock['fortResourceInSorties'] += fortResource
            if fortResource > miscBlock['maxFortResourceInSorties']:
                miscBlock['maxFortResourceInSorties'] = fortResource

        dossierDescr['fortSortiesInClan']['fortResource'] += battleResults['personalFortResource']
        __updateAggregatedValues(dossierDescr.expand('fortSortiesInClan'), dossierDescr.expand('fortSortiesInClan'), battleResults, dossierXP, frags8p)
        if battleResults['division']:
            divisionNumber = getattr(SORTIE_DIVISION, battleResults['division'])
            fortSortiesInClanBlock = dossierDescr['fortSortiesInClan']
            divisionLowerCase = SORTIE_DIVISION_NAMES[divisionNumber].lower()
            sortiesCombatsVar = '%sBattlesCount' % divisionLowerCase
            fortSortiesInClanBlock[sortiesCombatsVar] += 1
            if battleResults['team'] == battleResults['winnerTeam']:
                sortiesCombatsWinsVar = '%sWins' % divisionLowerCase
                fortSortiesInClanBlock[sortiesCombatsWinsVar] += 1
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_FORT_BATTLE):
        __updateAggregatedValues(dossierDescr.expand('fortBattlesInClan'), dossierDescr.expand('fortBattlesInClan'), battleResults, dossierXP, frags8p)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
        clubDBID = battleResults['club'].get('clubDBID', 0)
        achievementsRated7x7 = dossierDescr['achievementsRated7x7']
        if clubDBID != achievementsRated7x7['victoryMarchClubDBID']:
            achievementsRated7x7['victoryMarchClubDBID'] = clubDBID
            achievementsRated7x7['victoryMarchSeries'] = 0
        _updatePerBattleSeries(dossierDescr['achievementsRated7x7'], 'victoryMarchSeries', battleResults['winnerTeam'] == battleResults['team'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_GLOBAL_MAP):
        division = battleResults['division']
        if division in GLOBAL_MAP_DIVISION._ORDER:
            if division == GLOBAL_MAP_DIVISION.MIDDLE:
                blockName = 'globalMapMiddle'
                blockNameMax = 'maxGlobalMapMiddle'
            elif division == GLOBAL_MAP_DIVISION.CHAMPION:
                blockName = 'globalMapChampion'
                blockNameMax = 'maxGlobalMapChampion'
            elif division == GLOBAL_MAP_DIVISION.ABSOLUTE:
                blockName = 'globalMapAbsolute'
                blockNameMax = 'maxGlobalMapAbsolute'
            else:
                raise False or AssertionError
            __updateAggregatedValues(dossierDescr.expand(blockName), dossierDescr.expand(blockName), battleResults, dossierXP, frags8p)
            for record in __updateMaxValues(dossierDescr.expand(blockNameMax), battleResults, dossierXP):
                dossierDescr[blockNameMax][record] = maxVehResults[record]

            for record in maxValuesChanged:
                dossierDescr[blockNameMax][record] = maxVehResults[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX15X15):
        for record in maxValuesChanged:
            dossierDescr['max15x15'][record] = maxVehResults[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAX7X7):
        for record in maxValuesChanged:
            dossierDescr['max7x7'][record] = maxVehResults[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXRATED7X7):
        for record in maxValuesChanged:
            dossierDescr['maxRated7x7'][record] = maxVehResults[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFALLOUT):
        __updateMaxValuesWithAvatar(dossierDescr['maxFallout'], battleResults)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXSORTIE):
        for record in __updateMaxValues(dossierDescr.expand('maxFortSortiesInClan'), battleResults, dossierXP):
            dossierDescr['maxFortSortiesInClan'][record] = maxVehResults[record]

        for record in maxValuesChanged:
            dossierDescr['maxFortSorties'][record] = maxVehResults[record]

    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXFORTBATTLE):
        for record in __updateMaxValues(dossierDescr.expand('maxFortBattlesInClan'), battleResults, dossierXP):
            dossierDescr['maxFortBattlesInClan'][record] = maxVehResults[record]

        for record in maxValuesChanged:
            dossierDescr['maxFortBattles'][record] = maxVehResults[record]

    for vehTypeCompDescr, (_, vehDossierDescr) in vehDossiers.iteritems():
        __updateAccountDossierCuts(dossierDescr, battleResults, dossierXP, vehTypeCompDescr, vehDossierDescr)
def updateRated7x7Dossier(dossierDescr, battleResults, dossierXP, vehTypeCompDescr, vehDossierDescr):
    bonusCaps = BONUS_CAPS.get(battleResults['bonusType'])
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_RATED7X7):
        __updateAggregatedValues(dossierDescr.expand('rated7x7'), dossierDescr.expand('rated7x7'), battleResults, dossierXP, frags8p=0)
    if bool(bonusCaps & BONUS_CAPS.DOSSIER_MAXRATED7X7):
        __updateMaxValues(dossierDescr.expand('maxRated7x7'), battleResults, dossierXP)