示例#1
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)
示例#2
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)