// ==UserScript==
// @author Elf__X
// @name WoTExtendedStat
// @namespace http://forum.worldoftanks.ru/index.php?/topic/717208-
// @version 0.9.15.12
// @description Adds some usable fields for MMO game World of Tanks user's page
// @match http://worldoftanks.ru/*/accounts/*
// @match http://worldoftanks.eu/*/accounts/*
// @match http://worldoftanks.com/*/accounts/*
// @match http://worldoftanks.asia/*/accounts/*
// @match http://worldoftanks.kr/*/accounts/*
// @include http://worldoftanks.ru/*/accounts/*
// @include http://worldoftanks.eu/*/accounts/*
// @include http://worldoftanks.com/*/accounts/*
// @include http://worldoftanks.asia/*/accounts/*
// @include http://worldoftanks.kr/*/accounts/*
// @require http://code.jquery.com/jquery-1.11.1.min.js
// @connect wnefficiency.net
// @connect armor.kiev.ua
// @connect noobmeter.com
// @connect wot-noobs.ru
// @connect bitbucket.org
// @connect worldoftanks.ru
// @connect worldoftanks.eu
// @connect worldoftanks.com
// @connect worldoftanks.asia
// @connect worldoftanks.kr
// @grant GM_xmlhttpRequest
// ==/UserScript==
//try {
if (typeof String.prototype.endsWith !== 'function') {
String.prototype.endsWith = function (suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
}
if (typeof String.prototype.startsWith != 'function') {
String.prototype.startsWith = function (str) {
return this.indexOf(str) == 0;
};
}
if (typeof String.prototype.capitalize != 'function') {
String.prototype.capitalize = function () {
return this.charAt(0).toUpperCase() + this.slice(1);
}
}
//Общие переменные
var wesGeneral,
wesAccount,
wesSettings,
wesApiKey,
wesScriptVersion = '0.9.15.12',
stTypeKeys = ['clan', 'company', 'stronghold_skirmish', 'stronghold_defense', 'team'],
stStatKeys = ['battles', 'wins', 'damage_dealt', 'spotted', 'frags', 'capture_points', 'dropped_capture_points'];
//Локализация
String.toLocaleString({
'en': {
'confirmDelete': 'Are you sure you want to delete the saved statistics of this player?',
'scriptVersion': " <a href='http://forum.worldoftanks.ru/index.php?/topic/717208-' " +
"target='_blank'>Script</a> version " + wesScriptVersion,
'scriptName': 'WOT extended statistic script',
'localStorageIsFull': 'The localStorage is crowded. Deleting the saved data of one of the players, ' +
'or reduce the amount saved in the settings.',
'settings': 'Script settings',
'settingsText': 'Extended statistic script settings',
'error': 'Error',
'errorText': 'An error has occurred',
'save': 'Save',
'general': 'General',
'blocks': 'Blocks',
'players': 'Players',
'lsSize': 'In localStorage occupied',
'saveCount': 'Save count',
'graphs': 'Graphs',
'date': 'Date',
'battles': 'Battles',
'dntshow': "Don't show",
'player': "Player",
'me': "Me",
'saveStat': "Save statistic",
'delStat': "Delete statistic",
'lastBattle': "Last Battle:",
'lastUpdate': "Last Update:",
'maxDamage': 'Max. damage',
'maxFrags': 'Max. frags',
'maxXp': 'Max. Xp',
'treesCut': 'Trees Cut',
'wins': "Wins",
'saved': "Saved",
'showBlock': 'Show block',
'hideBlock': 'Hide block',
'deleteBlock': 'Delete block',
'blockEfRat': 'Eff. ratings',
'blockNewBat': 'New battles',
'blockCompStat': 'Compare stats',
'blockClan': 'Clans history',
'blockPers': 'Personal',
'blockSpeed': 'Speedometers',
'blockAchiev': 'Achievements',
'blockCommon': 'Common',
'blockDiagr': 'Diargams',
'blockRat': 'Ratings',
'blockVeh': 'Vehicles',
'blockHall': 'Hall of fame',
'efficiency': 'Efficiency',
'rEffXvm': 'Eff. rating xwm',
'rWn6Xvm': 'WN6 Rating xwm',
'rWn8Xvm': 'WN8 Rating xwm',
'rNagXvm': 'PR rating xvm',
'rNoobrating': 'Wot-noobs rating',
'rBattles': 'Battles',
'rExp': 'Exp. per battle',
'rDamage': 'Damage per battle',
'rFrag': 'Frags per battle',
'rSpot': 'Spotted per battle',
'rDeff': 'Deffs per battle',
'rCap': 'Caps per battle',
'rEff': 'Eff. rating',
'rWn6': 'WN6 Rating',
'rWn8': 'WN8 Rating',
'rNag': 'PR rating',
'rArmor': 'Eff. rating of BS',
'rKwg': 'Personal rating',
'rBatteDay': 'Battles per day',
'rMedLvl': 'Average level of tanks',
'rWin': 'Win %',
'rLoose': 'Defeat %',
'rSurv': 'Survived %',
'rHit': 'Hit ratio',
'globalMap': 'Clan battles',
'rota': 'Company battles',
'rGWin': 'Win',
'sWaitText': 'Please wait.',
'about': 'About',
'nWin': 'Win',
'new': 'New',
'hsaved': 'Saved',
'current': 'Current',
'historic': 'Historical battles',
'other': 'Other',
'graph': 'Graphs',
'rating': 'Ratings',
'statFrom': 'Statistic from',
'language': 'Language',
'donate': 'Please, give some money to support the author',
'noNewBattles': 'No new battles',
'medals': 'Medals'
},
'ru': {
'confirmDelete': 'Вы действительно хотите удалить сохраненную статистику данного игрока?',
'scriptVersion': "Версия <a href='http://forum.worldoftanks.ru/index.php?/topic/717208-' " +
"target='_blank'>скрипта </a> " + wesScriptVersion,
'scriptName': 'Скрипт расширенной статистики WOT',
'localStorageIsFull': 'Локальное хранилище переполнено. Пожалуйста, удалите сохраненные данные одного ' +
'из игроков, или уменьшите количество сохранений в настройках.',
'settings': 'Настройки скрипта',
'settingsText': 'Настройки скрипта расширенной статистики',
'error': 'Ошибка',
'errorText': 'Произошла ошибка:',
'save': 'Сохранить',
'general': 'Общие',
'blocks': 'Блоки',
'players': 'Игроки',
'lsSize': 'В локальном хранилище занято',
'saveCount': 'Количество сохранений',
'graphs': 'Графики',
'date': 'Дата',
'battles': 'Бои',
'dntshow': 'Не отображать',
'player': "Игрок",
'me': "Я",
'saveStat': "Сохранить статистику",
'delStat': "Удалить статистику",
'lastBattle': "Был в бою:",
'lastUpdate': "Обновлено:",
'maxDamage': 'Макс. урон',
'maxFrags': 'Макс. фрагов',
'maxXp': 'Макс. опыт',
'treesCut': 'Повалено деревьев',
'wins': "Победы",
'saved': "Сохранено",
'showBlock': 'Показать блок',
'hideBlock': 'Скрыть блок',
'deleteBlock': 'Удалить блок',
'blockEfRat': 'Рейтинги эффективности',
'blockNewBat': 'Новые бои',
'blockCompStat': 'Сравнение статистики',
'blockClan': 'История кланов',
'blockPers': 'Личные данные',
'blockSpeed': 'Спидометры',
'blockAchiev': 'Достижения',
'blockCommon': 'Общее',
'blockDiagr': 'Диаграммы',
'blockRat': 'Рейтинги',
'blockVeh': 'Техника',
'blockHall': 'Аллея славы',
'efficiency': 'Эффективность',
'rEffXvm': 'Эффективность xvm',
'rWn6Xvm': 'WN6 Рейтинг xvm',
'rWn8Xvm': 'WN8 Рейтинг xwm',
'rNagXvm': 'Рейтинг нагиба xvm',
'rNoobrating': 'Нубо-Рейтинг',
'rBattles': 'Боев',
'rExp': 'Опыт за бой',
'rDamage': 'Повреждений за бой',
'rFrag': 'Фрагов за бой',
'rSpot': 'Обнаружено за бой',
'rDeff': 'Очков защиты за бой',
'rCap': 'Очков захвата за бой',
'rEff': 'Эффективность',
'rWn6': 'WN6 Рейтинг',
'rWn8': 'WN8 Рейтинг',
'rNag': 'Рейтинг нагиба',
'rArmor': 'Эффективность БС',
'rKwg': 'Личный рейтинг',
'rBatteDay': 'Боев в день',
'rMedLvl': 'Средний уровень танков',
'rWin': '% побед',
'rLoose': '% поражений',
'rSurv': '% выживания',
'rHit': '% попадания',
'globalMap': 'Глобальная карта',
'rota': 'Ротные бои',
'rGWin': 'Побед',
'sWaitText': 'Пожалуйста подождите.',
'about': 'О скрипте',
'nWin': 'Побед',
'new': 'Новые',
'hsaved': 'Сохр. данные',
'current': 'Тек. данные',
'historic': 'Исторические бои',
'other': 'Прочее',
'graph': 'Графики',
'rating': 'Рейтинги',
'statFrom': 'Статистика с',
'language': 'Язык',
'donate': 'Поддержать автора скрипта',
'noNewBattles': 'Нет новых боев',
'medals': 'Медали'
}
});
String.defaultLocale = 'en';
var _ = function (str) {
return str.toLocaleString();
};
//Тут общие методы и функции которые нужны на нескольких страницах сайта
wesGeneral = {
apiKey: {
'ru': '895d3dafdd87af03e1e515befcd83882',
'en': 'd0a293dc77667c9328783d489c8cef73',
'com': '16924c431c705523aae25b6f638c54dd',
'': ''
},
defaultSettings: {
locale: window.location.host.endsWith(".ru") ? 'ru' : 'en',
version: 0,
blocks: {
'efRat': 0,
'newBat': 0,
'compStat': 0,
'compStat1': 0,
'pers': 0,
'speed': 0,
'hall': 0,
'achiev': 0,
'common': 0,
'diagr': 0,
'rat': 0,
'veh': 0
},
myID: 0,
graphs: 1,
scount: 7,
ncount: 2, // Кол-во символов для округления
players: {}
},
styles: {
'default': '\
.wes-progressbar {background-color: black; border-radius: 4px; padding: 2px;}\
.wes-progressbar > div {width: 0%; height: 4px; border-radius: 2px;}\
.wes-settings {display: none; z-index: 1005; width: 800px; height: 500px; max-height: 100%; margin: auto;\
overflow: auto; position: fixed; top: 50px; left: 0; bottom: 0; right: 0; }\
.wes-error {display: none; z-index: 1005; width: 500px; height: 500px; max-height: 100%; margin: auto;\
overflow: auto; position: fixed; top: 50px; left: 0; bottom: 0; right: 0;}\
.wes-wait {display: none; background: rgb(31, 31, 31); z-index: 1006; width: 500px; height: 300px; margin: auto;\
overflow: auto; position: fixed; top: 50px; left: 0; bottom: 0; right: 0; text-align: center;}\
.wes-title {color: #ffffff; border-radius: 2px 2px 0 0; font-family: "WarHeliosCondCBold",arial,sans-serif;\
background: url("/static/3.20.0.2/portal/js/plugins/jquery-ui/css/images/bg-popup-title.jpg") no-repeat scroll 50% 0 #313134;\
font-size: 21px; height: 49px;}\
.wes-title-span {display: inline-block; padding: 12px 38px 0 19px;}\
.wes-overlay {display: none; position: fixed; top: 0; left: 0; height: 100%; width: 100%; z-index: 1004;\
background-color: rgba(0,0,0,0.5);}\
.wes-close-titlebar {right: 8px; position: absolute; top: 50%; width: 33px; margin: -242px 0 0 0;\
height: 32px;}\
.wes-close-titlebar > span {background: url(/static/3.20.0.2/common/img/btn-popup-close.png) 0 0 no-repeat !important;\
width: 33px !important; height: 33px !important; display: block; text-indent: -99999px; overflow: hidden;\
background-repeat: no-repeat;}\
.wes-error-text {background: rgb(31, 31, 31); height: 450px; margin-top: 15px;}\
.wes-error-icon {display: block; width: 450px !important; height: 43px !important; text-indent: 42px;\
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAWgSURBVFiFrZdLiGRXGcd/331U1a1Hv2p6uoZ+6PRkxEeiSQghTnAhtgSF6Co4WlkZXIhkk42CBnQnuHLjRlEClooPGBGUgewUJApxYJoZodsZOulM9XR3dXdVz626t+6953NRt7qru6sfM5MDH/f1nfP/ne+c851zRVV52FITyQDTQAVoAatV1eZDNwTIWQBqIi6wIHAVeFltu5QtFoNsoWDiMJTQ9zNJEIgF/zLwa+BaVfX+hwJQE3lF4KelSqVwfn6+ODY3Z2VHRqDbxXS7iG0j2SzGGFqrq2yurLQ37txRjaKfK/yoqrrzSAA1kUsWXCtOTX10/oUXil6pRLy+TtxooO12Wlt6V1XEdbEnJnDKZbRQ4N6NG8Hq4mKkxrxeVX3roQBqIp8XkWuXr1wpnJuft8O7d4k3NpC+oMi+eL/021FF8nmyFy8SWxY3r1/3u63WLxTeqKqaUwFqIl+0MplrTy4s5L1cjuDWLTAGRHoAwyAGxFGl36ZbqeDMzfHft9/2m/X6X76h+vXDANYh8Y+JyJ+eWljI54whuHkTkmRI3OTE536konqd8PZtPrGwUPDGx1+uiXzvWICaiC3wt8svvljIuS7h8vJwsdNgDhXTbBIuLfGpl14qOJ73Zk3ks0MBgG+OTU+fL8/OWsGtW/tvT1umadhPKsnmJmxucvn55z0LfnYEoCaSF5EfX3zuuWK4vNwb89NED4sPQOgQqO7KCmMzM5KfmHiiJvLVAwDAKxOzs27GcYgbjaNCx4mf9O7wszFEKyt85Omnixa8eQDAglcnZ2dL0dra8eIDs3toBPbcjofo3r9P6cIFsO2naiITAFZNJGNEPjcyM0O8uXliIwoYVTT1OWKpz4H7weckQX2fsQsXIuBL/QjMZDwvsgDT7R5b2QyAHfE5DHQMBEDUajFSLheATwI4wHQml0tMEPScRJC00qeXlnjcsvjssySt1j54EODk81jwRD8C01nPs5J2e4/WDI73Y5bDkYiDANfzAOb6AO2429XDoTplIZ4dIG2zP3ewLEwUAbShNwQfdDsdsO29IdAeOu9eurSX6WQw452U/QbmyeB175vjED54gMLdPYAwDN3E94maTcRxENsG296/tyxUdR/ilOE5Ip4uV9NuI80mHd83Cv8DcKqqa78R8f2tLc9EEWZnyPnBsnoHD9ftQbnuvvUhB1dIf1dMEkwQoEFA0ulAHOPOzLDz3ntt4J/9CAD8sbW19a3R0VE78f2jAMagxkBv7E7u/QnfJJcjBkLfF+DvkGZChdr21lZbRkdRyzq6xs9gJrWTfNypKZrr67HAn6uqyR5AVfUfcRgutppN45TLjyR+mg/ZLFIqsVGvdxV+0I/K3nas8J2N9fUOIyOQy31ovVZARchMT7NZr4eaJG9VVe8eAaiq/sfE8e/W6vUHztQUOM5j93ov9JUKfhjqdqPR0oGd8ABAGoVvt9vt243t7dCZmgLXffRepz13zp8ncl3W7t3rrMNXqqqNQc0DAK+CU4PXtlqttfs7O4E9OYl43iP1GsfBrVToiOjq++8H76p+/w2oi0hhUPPAqVh6e/TEDMx8F35yLpN5cnJ0NOcYQ9xqoWdYhlgWTqmEVSyyvbubbLdanT/AD/8K7wANYFNVN44DGAUmgLIF5dfha8/A1YLnOWP5vOuIYMIQjaJeXkiP61gW4jjYuRzquvidjm7t7kYfGLP4S/jVci/tNoAtYFVV20MBUogR4BwwDoxPQuU1uPpx+IJt21Y+k3GyjmPZloWVpmijSpwk7Ha73SSK7A3VO7+H374Dt4EdYDsFuDcoPhQghbCAElAGRoGSBcUvw2eegSvjMOdBOQulGMIObO/CxhLcuA7/XuuJ+fT+nDeAhqoOSbFn+DlNYTKAB+RSy6bm0pubERAOWBvoqOqpk+b/JDuHWUtrBlIAAAAASUVORK5CYII=") 0 0 no-repeat !important;\
overflow: hidden; margin-left: 30px;}\
#wes-error-text {height: 350px; overflow: auto; padding-left: 25px; width: 90%;}\
.wes-colored-button {background-position: 0 0; display: inline-block; height: 30px; margin-right: 35px;\
background: url(/static/3.20.0.2/common/css/scss/form_elements/buttons/img/btn-bg.png) 0 -60px no-repeat;}\
.wes-button-right {background-position: 100% 0; \
background: url(/static/3.20.0.2/common/css/scss/form_elements/buttons/img/btn-bg.png) no-repeat 100% -60px;}\
.wes-button-right input {background: none; border: medium none; color: #fff; cursor: pointer; float: left;\
font: bold 13px Arial,"Helvetica CY",Helvetica,sans-serif; height: 31px; padding: 0 22px 1px; \
text-align: center;}\
.wes-tabs {padding-left: 10px; padding-top: 7px; width: 775px;} \
.wes-tabs span { padding: 5px; border: 1px solid #aaa; line-height: 28px; cursor: pointer; \
position: relative; bottom: 1px; z-index: 1007; background: rgb(31, 31, 31);}\
.wes-tab-content {display: block; border: 1px solid #aaa; height: 370px; z-index: 1006; \
margin: 3px 10px 7px 10px; overflow: auto; background: rgb(31, 31, 31);}\
.wes-tab-content > div {margin: 10px; height: 90%; text-align: center; font-size: 12pt;}\
.wes-active-tab {border-bottom: 1px solid rgb(31, 31, 31) !important;}\
.wes-setting-half {width: 33%; text-align: center; float:left; padding-top: 20px;}\
.wes-s-expander {clear: both; text-align: right;margin-bottom: 15px;}\
.wes-s-expander a.b-vertical-arrow__open {margin-bottom: 0;}\
.wes-s-expander.wes-s-expander__extra {margin-top: 20px;}\
.wes-h-header {display: inline-block; width: 33%; text-align: right;}\
.wes-h-header:first-child {width: 66%; text-align: left;}\
.t-profile th.wes-r-header {cursor: pointer;cursor: hand;}\
.t-profile th.wes-r-header__active {background-color: rgba(0, 0, 0, 0.5);color: #fefefe;text-shadow: 0 0 13px rgba(255, 255, 255, 0.13);}\
.wes-sb-new {position: relative;}\
.pluso-box {z-index: 2000 !important;}\
span.wes-s-newcounter {vertical-align: super; font-size: 0.8em;}\
.us-ratings {width: 109%; text-align: center;}\
.us-ratings td {border: 1px solid #212123; padding: 3px 5px;}\
.us-ratings-head {background-color: rgba(0, 0, 0, 0.5);}'
},
defaultValues: {
'wn8': '{"1":{"dmg":511.21,"def":1.06,"frag":1.04,"spot":1.46,"wRate":55.71},"17":{"dmg":544.32,"def":0.96,"frag":1.12,"spot":1.33,"wRate":55.45},"33":{"dmg":600.51,"def":1.17,"frag":1.26,"spot":1.59,"wRate":55.62},"49":{"dmg":1059.93,"def":0.89,"frag":0.87,"spot":1.69,"wRate":51.18},"81":{"dmg":232.98,"def":1.16,"frag":1.83,"spot":0.91,"wRate":58.3},"113":{"dmg":204.01,"def":0.97,"frag":1.55,"spot":0.81,"wRate":59.05},"257":{"dmg":577.37,"def":1.16,"frag":1.12,"spot":0.58,"wRate":54.46},"273":{"dmg":914.41,"def":1.17,"frag":1.03,"spot":0.08,"wRate":52.18},"289":{"dmg":249.1,"def":1.26,"frag":1.03,"spot":2.34,"wRate":56.56},"305":{"dmg":626.29,"def":0.63,"frag":0.57,"spot":2.29,"wRate":50.2},"321":{"dmg":285.38,"def":1.47,"frag":1.2,"spot":0.8,"wRate":57.96},"337":{"dmg":257.67,"def":1.17,"frag":1.5,"spot":0.92,"wRate":57.43},"353":{"dmg":231.07,"def":1.35,"frag":1.39,"spot":1.18,"wRate":57.43},"369":{"dmg":242.99,"def":1.56,"frag":1.32,"spot":1.43,"wRate":58.5},"513":{"dmg":1065.87,"def":0.78,"frag":1,"spot":1.05,"wRate":53.68},"529":{"dmg":1092.65,"def":0.98,"frag":0.96,"spot":1,"wRate":53.06},"545":{"dmg":196.48,"def":1.12,"frag":1.53,"spot":1.86,"wRate":57.13},"561":{"dmg":1056.54,"def":0.91,"frag":0.88,"spot":1.7,"wRate":50.94},"577":{"dmg":197.72,"def":1.49,"frag":1.45,"spot":1.15,"wRate":56.83},"593":{"dmg":251.27,"def":1.48,"frag":1.41,"spot":2.12,"wRate":58.86},"609":{"dmg":198.09,"def":1.57,"frag":1.58,"spot":1.08,"wRate":57.36},"625":{"dmg":313.45,"def":1.5,"frag":1.08,"spot":1.15,"wRate":58.63},"769":{"dmg":208.34,"def":0.98,"frag":0.81,"spot":2,"wRate":54.05},"785":{"dmg":261.29,"def":1.69,"frag":1.52,"spot":1.65,"wRate":58.69},"801":{"dmg":824.92,"def":0.85,"frag":1,"spot":1.07,"wRate":53.75},"817":{"dmg":1318.19,"def":0.76,"frag":0.99,"spot":1.33,"wRate":52.38},"833":{"dmg":244.88,"def":1.53,"frag":1.54,"spot":0.13,"wRate":57.79},"849":{"dmg":494.79,"def":1.64,"frag":1.27,"spot":0.86,"wRate":57.68},"865":{"dmg":257.68,"def":1.4,"frag":1.5,"spot":1.53,"wRate":58.56},"881":{"dmg":397.16,"def":1.31,"frag":1.05,"spot":1.19,"wRate":56.9},"1025":{"dmg":251.4,"def":1.29,"frag":1.43,"spot":1.93,"wRate":58.11},"1041":{"dmg":587.5,"def":1.26,"frag":1.13,"spot":0.76,"wRate":53.93},"1057":{"dmg":595.6,"def":1.05,"frag":1.24,"spot":1.51,"wRate":56.91},"1073":{"dmg":946.6,"def":0.94,"frag":0.94,"spot":1.51,"wRate":53.98},"1089":{"dmg":326.95,"def":1.27,"frag":0.99,"spot":1.03,"wRate":54.04},"1105":{"dmg":732.15,"def":0.95,"frag":1.05,"spot":2,"wRate":54.69},"1121":{"dmg":914.22,"def":1,"frag":0.89,"spot":1.04,"wRate":50.9},"1137":{"dmg":513.5,"def":1.03,"frag":0.91,"spot":1.51,"wRate":53.88},"1297":{"dmg":900.4,"def":1.13,"frag":0.87,"spot":1.25,"wRate":53.22},"1313":{"dmg":698.18,"def":1.02,"frag":0.99,"spot":1.49,"wRate":55.22},"1329":{"dmg":244.08,"def":1.56,"frag":1.85,"spot":1.26,"wRate":57.64},"1345":{"dmg":235.06,"def":1.98,"frag":1.39,"spot":1.21,"wRate":58.59},"1361":{"dmg":289.16,"def":1.35,"frag":1.14,"spot":1.79,"wRate":57.27},"1377":{"dmg":484.73,"def":0.99,"frag":0.92,"spot":1.21,"wRate":53.75},"1393":{"dmg":769.67,"def":1.03,"frag":0.99,"spot":1.51,"wRate":53.07},"1537":{"dmg":418.75,"def":0.97,"frag":1.09,"spot":1.29,"wRate":56.75},"1553":{"dmg":729.44,"def":1.11,"frag":1.02,"spot":0.77,"wRate":52.51},"1569":{"dmg":971.2,"def":1.01,"frag":0.95,"spot":1.65,"wRate":54.57},"1585":{"dmg":1011.45,"def":0.84,"frag":0.8,"spot":1.57,"wRate":50.34},"1601":{"dmg":226.85,"def":2.02,"frag":1.34,"spot":0.97,"wRate":57.26},"1617":{"dmg":358.25,"def":0.92,"frag":0.96,"spot":0.9,"wRate":53.53},"1633":{"dmg":367.67,"def":1.04,"frag":0.99,"spot":1.24,"wRate":55.59},"1649":{"dmg":1007.57,"def":0.94,"frag":0.97,"spot":1.28,"wRate":53.17},"1793":{"dmg":1197.46,"def":0.78,"frag":0.93,"spot":0.05,"wRate":52.01},"1809":{"dmg":444.65,"def":1.12,"frag":1.38,"spot":0.62,"wRate":56.09},"1825":{"dmg":251.59,"def":1.45,"frag":1.47,"spot":2.41,"wRate":59.08},"1841":{"dmg":1421.28,"def":0.69,"frag":0.88,"spot":1.43,"wRate":50.32},"1889":{"dmg":735.95,"def":1.04,"frag":0.96,"spot":1.09,"wRate":51.83},"1905":{"dmg":1114.15,"def":0.85,"frag":0.82,"spot":1.1,"wRate":50.72},"2049":{"dmg":299.25,"def":0.94,"frag":0.82,"spot":2.17,"wRate":55.96},"2065":{"dmg":249.58,"def":1.55,"frag":1.46,"spot":1.81,"wRate":58.25},"2081":{"dmg":252.88,"def":1.78,"frag":1.47,"spot":0.32,"wRate":57.01},"2097":{"dmg":1603.37,"def":0.63,"frag":0.89,"spot":1.26,"wRate":51.37},"2113":{"dmg":717.22,"def":1.6,"frag":1.4,"spot":0.12,"wRate":55.96},"2129":{"dmg":436.2,"def":1.03,"frag":0.91,"spot":1.72,"wRate":54.54},"2145":{"dmg":347.64,"def":1.32,"frag":1.39,"spot":1.21,"wRate":58.63},"2161":{"dmg":1804.9,"def":0.86,"frag":1.14,"spot":1.17,"wRate":52.66},"2305":{"dmg":1020.49,"def":0.78,"frag":1.02,"spot":0.53,"wRate":52.7},"2321":{"dmg":762.91,"def":1.02,"frag":1.01,"spot":1.15,"wRate":53.91},"2353":{"dmg":265.96,"def":1.4,"frag":1.57,"spot":1.35,"wRate":59.26},"2369":{"dmg":434.32,"def":1.64,"frag":1.73,"spot":1.23,"wRate":58.97},"2385":{"dmg":287.3,"def":1.15,"frag":1.13,"spot":0.95,"wRate":56.63},"2401":{"dmg":306.28,"def":1.36,"frag":1.25,"spot":1.65,"wRate":57.97},"2417":{"dmg":2119.58,"def":0.85,"frag":1.23,"spot":1.38,"wRate":50.39},"2561":{"dmg":734.12,"def":0.93,"frag":0.98,"spot":1.41,"wRate":54.8},"2577":{"dmg":645.63,"def":1.04,"frag":1.02,"spot":1.2,"wRate":53.75},"2593":{"dmg":1741.94,"def":0.62,"frag":0.98,"spot":0.72,"wRate":50.74},"2625":{"dmg":787.38,"def":0.79,"frag":0.9,"spot":0.92,"wRate":52.19},"2657":{"dmg":1151.44,"def":0.98,"frag":0.85,"spot":1.24,"wRate":51.05},"2817":{"dmg":855.53,"def":0.74,"frag":1.09,"spot":1.11,"wRate":54.17},"2833":{"dmg":372.32,"def":1.44,"frag":1.2,"spot":0.17,"wRate":56.55},"2849":{"dmg":1280.24,"def":0.69,"frag":0.82,"spot":0.83,"wRate":50.95},"2865":{"dmg":1273.22,"def":0.78,"frag":0.89,"spot":1.13,"wRate":52.26},"2881":{"dmg":225.92,"def":0.96,"frag":0.66,"spot":0.75,"wRate":52.79},"2897":{"dmg":611.27,"def":1.24,"frag":1.1,"spot":0.87,"wRate":54.76},"2913":{"dmg":416.67,"def":1.25,"frag":1.15,"spot":1.74,"wRate":57.48},"3073":{"dmg":253.74,"def":1.02,"frag":1.02,"spot":1.32,"wRate":55.64},"3089":{"dmg":252,"def":1.5,"frag":1.86,"spot":1.96,"wRate":59.11},"3105":{"dmg":327.52,"def":0.84,"frag":0.93,"spot":0.84,"wRate":54.22},"3121":{"dmg":329,"def":1.01,"frag":0.88,"spot":2.22,"wRate":54.97},"3137":{"dmg":1375.67,"def":0.93,"frag":1.07,"spot":0.96,"wRate":51.14},"3153":{"dmg":983.52,"def":1.11,"frag":0.89,"spot":0.85,"wRate":53.92},"3169":{"dmg":225.13,"def":1.4,"frag":1.27,"spot":1.23,"wRate":56.79},"3329":{"dmg":241.91,"def":1.51,"frag":1.85,"spot":1.28,"wRate":58.96},"3345":{"dmg":350.18,"def":1.41,"frag":1.45,"spot":1.42,"wRate":59.28},"3361":{"dmg":623.57,"def":1.13,"frag":1.16,"spot":1.15,"wRate":55.26},"3377":{"dmg":688.39,"def":0.62,"frag":0.6,"spot":2.25,"wRate":50.9},"3393":{"dmg":418.61,"def":1.48,"frag":1.26,"spot":0.16,"wRate":58.16},"3409":{"dmg":234.83,"def":1.31,"frag":0.91,"spot":0.14,"wRate":53.87},"3425":{"dmg":1557.06,"def":0.8,"frag":0.93,"spot":1.17,"wRate":50.36},"3585":{"dmg":852.84,"def":1.04,"frag":1.17,"spot":0.79,"wRate":54.65},"3601":{"dmg":326.16,"def":1.62,"frag":1.96,"spot":1.01,"wRate":59.88},"3617":{"dmg":463.35,"def":1.53,"frag":1.11,"spot":0.16,"wRate":55.35},"3633":{"dmg":1113.73,"def":0.8,"frag":1.03,"spot":1.11,"wRate":53.78},"3649":{"dmg":1869.91,"def":0.86,"frag":1.16,"spot":1.79,"wRate":48.73},"3665":{"dmg":806.94,"def":1.08,"frag":1.03,"spot":1.07,"wRate":53.13},"3681":{"dmg":1898.81,"def":0.81,"frag":1.03,"spot":1.39,"wRate":49.05},"3841":{"dmg":233.52,"def":1.32,"frag":1.44,"spot":0.11,"wRate":56.78},"3857":{"dmg":1068.76,"def":0.97,"frag":1.01,"spot":0.73,"wRate":52.61},"3873":{"dmg":1210.85,"def":0.97,"frag":1.06,"spot":1.11,"wRate":54.76},"3889":{"dmg":786.26,"def":0.58,"frag":0.58,"spot":2.38,"wRate":49.97},"3905":{"dmg":1610.8,"def":0.78,"frag":0.98,"spot":0.88,"wRate":49.66},"3921":{"dmg":1184.95,"def":0.89,"frag":0.78,"spot":1.08,"wRate":51.53},"3937":{"dmg":1864.25,"def":0.48,"frag":0.9,"spot":0.83,"wRate":50.42},"4097":{"dmg":1346.67,"def":0.66,"frag":0.92,"spot":0.03,"wRate":51.69},"4113":{"dmg":860.38,"def":0.97,"frag":0.92,"spot":1.54,"wRate":52.19},"4129":{"dmg":798.29,"def":1.35,"frag":1.07,"spot":0.09,"wRate":53.44},"4145":{"dmg":1762.87,"def":0.66,"frag":0.93,"spot":1.33,"wRate":48.14},"4161":{"dmg":597.94,"def":1.89,"frag":1.1,"spot":0.1,"wRate":52.9},"4193":{"dmg":1535.07,"def":0.54,"frag":0.85,"spot":0.64,"wRate":52.46},"4353":{"dmg":1011.77,"def":0.81,"frag":0.81,"spot":1.55,"wRate":52.6},"4369":{"dmg":328.24,"def":0.94,"frag":0.96,"spot":1.89,"wRate":56.07},"4385":{"dmg":1270.33,"def":0.88,"frag":0.89,"spot":1.19,"wRate":52.6},"4401":{"dmg":352.17,"def":1.41,"frag":1.42,"spot":1.27,"wRate":59.21},"4417":{"dmg":487.15,"def":0.89,"frag":1,"spot":1.23,"wRate":53.5},"4433":{"dmg":1604.13,"def":0.69,"frag":0.87,"spot":1.02,"wRate":50.86},"4449":{"dmg":378.51,"def":1.07,"frag":1.06,"spot":0.73,"wRate":53.91},"4609":{"dmg":269.68,"def":1.63,"frag":1.57,"spot":1.19,"wRate":59.05},"4625":{"dmg":432.25,"def":1.62,"frag":1.05,"spot":0.15,"wRate":55.13},"4641":{"dmg":384.14,"def":1.44,"frag":0.97,"spot":0.12,"wRate":53.8},"4657":{"dmg":494.15,"def":1.08,"frag":1.03,"spot":1.45,"wRate":53.77},"4673":{"dmg":961.32,"def":1.42,"frag":1.09,"spot":0.09,"wRate":53.15},"4689":{"dmg":740.41,"def":1.07,"frag":0.94,"spot":0.74,"wRate":53.03},"4705":{"dmg":345.7,"def":0.89,"frag":1.17,"spot":0.84,"wRate":56.3},"4865":{"dmg":619.79,"def":1.53,"frag":1.22,"spot":0.1,"wRate":55.75},"4881":{"dmg":271.37,"def":1.03,"frag":1.14,"spot":1.73,"wRate":57.43},"4897":{"dmg":302.61,"def":1.11,"frag":1.34,"spot":1.46,"wRate":57.22},"4913":{"dmg":433.93,"def":0.57,"frag":0.59,"spot":2.39,"wRate":51.55},"4929":{"dmg":840.62,"def":0.59,"frag":0.7,"spot":2.22,"wRate":50.73},"4945":{"dmg":325.57,"def":1.2,"frag":0.83,"spot":0.8,"wRate":54.54},"4961":{"dmg":1390.21,"def":0.73,"frag":0.94,"spot":0.86,"wRate":54.53},"5121":{"dmg":291.76,"def":1.43,"frag":1.71,"spot":0.42,"wRate":58.53},"5137":{"dmg":1227.7,"def":0.83,"frag":0.84,"spot":0.96,"wRate":51.04},"5153":{"dmg":260.36,"def":0.84,"frag":0.74,"spot":2.26,"wRate":55.44},"5169":{"dmg":687.24,"def":0.96,"frag":0.95,"spot":1.53,"wRate":52.85},"5185":{"dmg":613.95,"def":0.62,"frag":0.62,"spot":1.96,"wRate":51.12},"5201":{"dmg":308.33,"def":1.53,"frag":1.76,"spot":1.41,"wRate":59.41},"5217":{"dmg":1235.09,"def":0.78,"frag":1.08,"spot":1.07,"wRate":56.45},"5377":{"dmg":1339.67,"def":0.77,"frag":0.94,"spot":1.05,"wRate":52.37},"5393":{"dmg":365.9,"def":0.62,"frag":0.58,"spot":2.34,"wRate":52.96},"5409":{"dmg":421.86,"def":0.97,"frag":0.9,"spot":2.05,"wRate":55.37},"5425":{"dmg":1771.78,"def":0.63,"frag":0.86,"spot":1.32,"wRate":48.35},"5457":{"dmg":909.31,"def":1.04,"frag":0.97,"spot":1.69,"wRate":52.99},"5473":{"dmg":961.79,"def":0.75,"frag":1.2,"spot":0.9,"wRate":55.51},"5633":{"dmg":1016.01,"def":1.25,"frag":1.1,"spot":0.08,"wRate":53.76},"5649":{"dmg":640.53,"def":1.4,"frag":1.09,"spot":0.11,"wRate":53.4},"5665":{"dmg":251.53,"def":1.38,"frag":1.42,"spot":1.59,"wRate":58.15},"5697":{"dmg":1421.89,"def":0.79,"frag":0.96,"spot":1.3,"wRate":49.46},"5713":{"dmg":1561.71,"def":0.82,"frag":0.9,"spot":1.2,"wRate":50.94},"5729":{"dmg":837.47,"def":0.93,"frag":1.51,"spot":1.28,"wRate":56.4},"5889":{"dmg":1107.99,"def":0.79,"frag":1.02,"spot":0.83,"wRate":54.38},"5905":{"dmg":368.71,"def":1.48,"frag":1.13,"spot":0.14,"wRate":54.99},"5921":{"dmg":1124.96,"def":0.98,"frag":0.85,"spot":1.48,"wRate":52.02},"5953":{"dmg":214.75,"def":1.36,"frag":0.94,"spot":0.93,"wRate":57.2},"5969":{"dmg":1114.04,"def":0.87,"frag":0.79,"spot":1.26,"wRate":52.64},"5985":{"dmg":265.52,"def":1.19,"frag":1.61,"spot":1.23,"wRate":58.13},"6145":{"dmg":1898.6,"def":0.69,"frag":0.92,"spot":1.11,"wRate":49.61},"6161":{"dmg":339.51,"def":1,"frag":0.84,"spot":2.49,"wRate":56.62},"6177":{"dmg":288.84,"def":1.48,"frag":1.91,"spot":1.16,"wRate":57.44},"6209":{"dmg":1991.45,"def":0.78,"frag":1.07,"spot":0.99,"wRate":48.08},"6225":{"dmg":1913.65,"def":0.68,"frag":0.92,"spot":1.12,"wRate":48.71},"6401":{"dmg":398.05,"def":1.56,"frag":1.58,"spot":0.87,"wRate":58},"6417":{"dmg":413.68,"def":0.87,"frag":0.84,"spot":1.53,"wRate":53},"6433":{"dmg":345.82,"def":1.21,"frag":1.44,"spot":1.15,"wRate":57.3},"6465":{"dmg":526.59,"def":0.61,"frag":0.63,"spot":1.84,"wRate":52.02},"6481":{"dmg":351.25,"def":1.05,"frag":0.98,"spot":1.79,"wRate":56.7},"6657":{"dmg":872.72,"def":0.98,"frag":0.92,"spot":1.51,"wRate":54.23},"6673":{"dmg":398.69,"def":1.39,"frag":1.4,"spot":0.94,"wRate":58.89},"6721":{"dmg":629.89,"def":0.97,"frag":1.14,"spot":0.88,"wRate":54.02},"6913":{"dmg":564.02,"def":1.42,"frag":1.49,"spot":0.96,"wRate":58.41},"6929":{"dmg":1775.7,"def":0.61,"frag":0.86,"spot":0.86,"wRate":49.65},"6945":{"dmg":604.12,"def":1.31,"frag":1.19,"spot":1,"wRate":55.61},"6977":{"dmg":993.17,"def":0.9,"frag":0.84,"spot":0.94,"wRate":51.66},"6993":{"dmg":299.39,"def":1.02,"frag":1.32,"spot":0.96,"wRate":56.45},"7169":{"dmg":1794.19,"def":0.59,"frag":0.87,"spot":1.22,"wRate":49.14},"7185":{"dmg":685.21,"def":0.84,"frag":0.9,"spot":1.24,"wRate":53.01},"7201":{"dmg":834.35,"def":1.07,"frag":1.06,"spot":0.9,"wRate":54.82},"7233":{"dmg":1132.9,"def":1.22,"frag":0.94,"spot":0.07,"wRate":51.78},"7249":{"dmg":1874.93,"def":0.72,"frag":0.96,"spot":1.36,"wRate":50.17},"7425":{"dmg":1514.89,"def":0.77,"frag":1.12,"spot":0.54,"wRate":51.46},"7441":{"dmg":1561.36,"def":0.64,"frag":0.87,"spot":0.93,"wRate":51.35},"7457":{"dmg":1412.4,"def":0.8,"frag":0.97,"spot":0.05,"wRate":52.03},"7489":{"dmg":1324.46,"def":1.04,"frag":0.93,"spot":0.06,"wRate":50.83},"7505":{"dmg":344.99,"def":1.09,"frag":1.38,"spot":1.77,"wRate":58.87},"7681":{"dmg":427.1,"def":1.81,"frag":1.33,"spot":0.15,"wRate":54.94},"7697":{"dmg":1461.46,"def":0.94,"frag":1.05,"spot":0.6,"wRate":50.96},"7713":{"dmg":567.52,"def":1.5,"frag":1.48,"spot":1.1,"wRate":58.96},"7745":{"dmg":326.57,"def":1.69,"frag":1.95,"spot":0.76,"wRate":59.96},"7761":{"dmg":296.43,"def":1.32,"frag":1.69,"spot":1.99,"wRate":60.28},"7937":{"dmg":1416.7,"def":0.78,"frag":0.92,"spot":1.64,"wRate":51.19},"7953":{"dmg":1803.93,"def":0.8,"frag":1.04,"spot":0.63,"wRate":50.47},"7969":{"dmg":1157.11,"def":0.99,"frag":0.98,"spot":0.06,"wRate":52.57},"8017":{"dmg":367.96,"def":1.59,"frag":1.58,"spot":0.77,"wRate":57.88},"8193":{"dmg":1988.33,"def":0.81,"frag":1.18,"spot":0.65,"wRate":51.96},"8209":{"dmg":276.46,"def":0.98,"frag":0.76,"spot":1.85,"wRate":54.9},"8225":{"dmg":1352.42,"def":0.92,"frag":0.97,"spot":0.49,"wRate":51.22},"8257":{"dmg":357.41,"def":1.62,"frag":1.4,"spot":0.94,"wRate":59.02},"8273":{"dmg":282.41,"def":1.42,"frag":1.69,"spot":1.14,"wRate":58.03},"8449":{"dmg":1560.03,"def":0.69,"frag":0.92,"spot":0.03,"wRate":50.31},"8465":{"dmg":1079.15,"def":0.87,"frag":0.8,"spot":1.27,"wRate":52.13},"8481":{"dmg":1702.96,"def":0.6,"frag":0.86,"spot":0.04,"wRate":49.11},"8529":{"dmg":1388.37,"def":1.17,"frag":1,"spot":0.64,"wRate":52.62},"8705":{"dmg":1792.43,"def":0.74,"frag":0.96,"spot":0.04,"wRate":49.55},"8721":{"dmg":1473.02,"def":0.61,"frag":0.86,"spot":0.04,"wRate":49.3},"8737":{"dmg":1760.06,"def":0.68,"frag":1.04,"spot":0.46,"wRate":52.2},"8785":{"dmg":549.87,"def":1.58,"frag":1.11,"spot":0.76,"wRate":56.98},"8961":{"dmg":788.67,"def":0.91,"frag":0.85,"spot":1.47,"wRate":53.86},"8977":{"dmg":1179.13,"def":0.95,"frag":1,"spot":0.05,"wRate":51.68},"8993":{"dmg":1486.2,"def":0.75,"frag":0.91,"spot":1.46,"wRate":50.79},"9041":{"dmg":448.8,"def":1.37,"frag":1.23,"spot":1.27,"wRate":57.18},"9217":{"dmg":1403.32,"def":0.82,"frag":1.08,"spot":1.15,"wRate":53.63},"9233":{"dmg":1701.21,"def":0.55,"frag":0.89,"spot":0.04,"wRate":48.82},"9249":{"dmg":1062.78,"def":1.05,"frag":1.02,"spot":0.78,"wRate":53.42},"9297":{"dmg":2113.51,"def":0.53,"frag":1.1,"spot":0.55,"wRate":48.38},"9473":{"dmg":240.17,"def":0.66,"frag":0.62,"spot":2.54,"wRate":54.74},"9489":{"dmg":1931.54,"def":0.52,"frag":0.93,"spot":0.99,"wRate":49.73},"9505":{"dmg":1534.64,"def":0.67,"frag":0.85,"spot":1.08,"wRate":50.5},"9553":{"dmg":788.29,"def":1.36,"frag":1.04,"spot":0.67,"wRate":55.87},"9745":{"dmg":1566.14,"def":0.7,"frag":0.89,"spot":1.02,"wRate":51.05},"9761":{"dmg":456.21,"def":0.71,"frag":0.68,"spot":2.65,"wRate":54.61},"9793":{"dmg":384.76,"def":1.04,"frag":1.11,"spot":0.53,"wRate":55.04},"9809":{"dmg":677.77,"def":0.98,"frag":0.84,"spot":0.42,"wRate":51.48},"9985":{"dmg":1225.21,"def":0.94,"frag":0.95,"spot":0.87,"wRate":50.94},"10001":{"dmg":497.77,"def":0.56,"frag":0.6,"spot":2.34,"wRate":52.55},"10017":{"dmg":709.74,"def":1.05,"frag":0.98,"spot":1.19,"wRate":53.96},"10049":{"dmg":676.29,"def":1.35,"frag":1.3,"spot":0.79,"wRate":55.03},"10065":{"dmg":1190.78,"def":1.3,"frag":1.11,"spot":0.67,"wRate":56.19},"10241":{"dmg":1027.09,"def":1.11,"frag":1.01,"spot":0.82,"wRate":53.54},"10257":{"dmg":1528.52,"def":0.75,"frag":0.91,"spot":1.34,"wRate":50.48},"10273":{"dmg":473,"def":1.46,"frag":1.24,"spot":1.38,"wRate":57.91},"10497":{"dmg":862.17,"def":0.7,"frag":1.09,"spot":0.73,"wRate":54.5},"10513":{"dmg":1216.9,"def":0.84,"frag":0.86,"spot":1.19,"wRate":51.33},"10529":{"dmg":654.97,"def":1.41,"frag":1.3,"spot":1.63,"wRate":56.69},"10577":{"dmg":194.78,"def":1.21,"frag":1.3,"spot":0.23,"wRate":56.31},"10753":{"dmg":1645.19,"def":0.7,"frag":0.92,"spot":0.92,"wRate":52.72},"10769":{"dmg":1080.19,"def":1.01,"frag":0.93,"spot":0.95,"wRate":53.51},"10785":{"dmg":1888.88,"def":0.69,"frag":0.91,"spot":1.27,"wRate":48.75},"10817":{"dmg":951.66,"def":0.95,"frag":0.85,"spot":0.67,"wRate":51.47},"10833":{"dmg":331.15,"def":1.59,"frag":0.86,"spot":0.1,"wRate":52.84},"11009":{"dmg":1179.34,"def":0.73,"frag":0.81,"spot":0.81,"wRate":52.5},"11025":{"dmg":1016.32,"def":0.89,"frag":0.97,"spot":0.49,"wRate":49.87},"11041":{"dmg":969.7,"def":1.04,"frag":0.9,"spot":0.95,"wRate":52.63},"11073":{"dmg":1580.26,"def":0.84,"frag":0.93,"spot":0.94,"wRate":50.26},"11089":{"dmg":622.07,"def":1.51,"frag":1.15,"spot":0.11,"wRate":55.52},"11265":{"dmg":832.77,"def":0.82,"frag":1.04,"spot":0.91,"wRate":55.06},"11281":{"dmg":539.26,"def":1.47,"frag":1.4,"spot":0.9,"wRate":57.54},"11297":{"dmg":1379.16,"def":0.93,"frag":0.97,"spot":0.5,"wRate":51.3},"11345":{"dmg":917.59,"def":1.4,"frag":0.86,"spot":0.07,"wRate":51.5},"11521":{"dmg":1520.74,"def":0.66,"frag":0.86,"spot":1.14,"wRate":50.72},"11537":{"dmg":1487.92,"def":0.91,"frag":1.08,"spot":0.77,"wRate":51.31},"11553":{"dmg":850.23,"def":1.14,"frag":1.09,"spot":1.39,"wRate":54.38},"11585":{"dmg":709.44,"def":0.95,"frag":0.89,"spot":0.63,"wRate":50.86},"11601":{"dmg":1532.96,"def":0.71,"frag":0.9,"spot":0.03,"wRate":50.73},"11777":{"dmg":614.49,"def":1.08,"frag":1.15,"spot":0.84,"wRate":54.41},"11793":{"dmg":898.29,"def":1.15,"frag":1.11,"spot":0.62,"wRate":51.39},"11809":{"dmg":941.13,"def":1.28,"frag":1.1,"spot":1.74,"wRate":52.97},"11841":{"dmg":1760.24,"def":1.07,"frag":1.04,"spot":0.07,"wRate":49.98},"11857":{"dmg":776.46,"def":1.8,"frag":1,"spot":0.17,"wRate":53.78},"12033":{"dmg":1521.63,"def":0.83,"frag":0.96,"spot":0.83,"wRate":49.95},"12049":{"dmg":2092.41,"def":0.5,"frag":1.04,"spot":0.64,"wRate":49.36},"12097":{"dmg":1270.6,"def":0.91,"frag":0.91,"spot":0.78,"wRate":49.89},"12113":{"dmg":1197.01,"def":0.76,"frag":0.86,"spot":0.03,"wRate":50.8},"12289":{"dmg":678.69,"def":0.98,"frag":1,"spot":1.92,"wRate":54.07},"12305":{"dmg":1857.67,"def":0.73,"frag":0.94,"spot":1.38,"wRate":48.52},"12369":{"dmg":1895.91,"def":0.77,"frag":0.89,"spot":0.03,"wRate":50.98},"12545":{"dmg":933.04,"def":0.81,"frag":0.96,"spot":1.66,"wRate":53.35},"12561":{"dmg":238.12,"def":1.09,"frag":1.07,"spot":2.86,"wRate":55.76},"12577":{"dmg":553.07,"def":1.07,"frag":1.13,"spot":1.88,"wRate":56.94},"12817":{"dmg":184.55,"def":1.12,"frag":1.14,"spot":1.97,"wRate":56.56},"12881":{"dmg":558.52,"def":1.01,"frag":1.13,"spot":1.47,"wRate":56.49},"13073":{"dmg":270.46,"def":1.26,"frag":1,"spot":1.67,"wRate":58.44},"13089":{"dmg":2095.69,"def":0.57,"frag":1.01,"spot":0.81,"wRate":48.96},"13121":{"dmg":325.09,"def":1.44,"frag":1.26,"spot":1.09,"wRate":58.74},"13137":{"dmg":1691.6,"def":0.89,"frag":1.02,"spot":0.6,"wRate":50.44},"13313":{"dmg":1234.31,"def":0.91,"frag":0.98,"spot":1.35,"wRate":52.46},"13329":{"dmg":413.44,"def":1.18,"frag":1.18,"spot":1.03,"wRate":56.54},"13345":{"dmg":1149.19,"def":0.98,"frag":0.87,"spot":1.02,"wRate":51.54},"13393":{"dmg":621.19,"def":1.47,"frag":1.12,"spot":0.54,"wRate":54.56},"13569":{"dmg":2159.69,"def":0.7,"frag":1.08,"spot":0.8,"wRate":48.71},"13585":{"dmg":379.1,"def":1.16,"frag":1.11,"spot":1.62,"wRate":57.29},"13825":{"dmg":1770.76,"def":0.75,"frag":0.97,"spot":1.5,"wRate":48.56},"13841":{"dmg":1134.78,"def":0.95,"frag":0.83,"spot":1.21,"wRate":50.4},"13857":{"dmg":2214.02,"def":0.56,"frag":1.07,"spot":0.75,"wRate":51.04},"13889":{"dmg":2217.84,"def":0.7,"frag":1.17,"spot":0.86,"wRate":49.16},"13905":{"dmg":2052.2,"def":0.53,"frag":1.04,"spot":0.48,"wRate":47.26},"14097":{"dmg":717.8,"def":1.06,"frag":0.98,"spot":1.6,"wRate":54.17},"14113":{"dmg":1771.8,"def":0.7,"frag":0.92,"spot":1.42,"wRate":48.15},"14145":{"dmg":481.96,"def":0.77,"frag":0.68,"spot":2.43,"wRate":53.84},"14161":{"dmg":932.64,"def":1.21,"frag":0.93,"spot":0.92,"wRate":51.21},"14337":{"dmg":2095.36,"def":0.74,"frag":1.07,"spot":0.95,"wRate":50.18},"14353":{"dmg":673.84,"def":0.62,"frag":0.61,"spot":1.97,"wRate":51.02},"14401":{"dmg":1474.08,"def":0.9,"frag":0.9,"spot":0.04,"wRate":50.05},"14417":{"dmg":826.84,"def":1.25,"frag":1.05,"spot":0.94,"wRate":52.86},"14609":{"dmg":1841.88,"def":0.9,"frag":0.98,"spot":1.46,"wRate":47.86},"14625":{"dmg":1209.15,"def":0.99,"frag":0.97,"spot":1.31,"wRate":51.97},"14657":{"dmg":397.33,"def":1.44,"frag":1,"spot":0.11,"wRate":54.01},"14673":{"dmg":1464.99,"def":1.12,"frag":1.08,"spot":0.83,"wRate":52.32},"14865":{"dmg":1446.73,"def":0.84,"frag":0.86,"spot":1.28,"wRate":49.44},"14881":{"dmg":2067.63,"def":0.66,"frag":1.09,"spot":0.87,"wRate":48.77},"14913":{"dmg":400.29,"def":1.09,"frag":0.98,"spot":0.93,"wRate":55.39},"15105":{"dmg":323.79,"def":1.55,"frag":1.34,"spot":1.39,"wRate":57.65},"15121":{"dmg":157.11,"def":0.89,"frag":1.09,"spot":0.18,"wRate":53.57},"15137":{"dmg":480.16,"def":0.58,"frag":0.55,"spot":2.12,"wRate":52.61},"15169":{"dmg":215.47,"def":2.05,"frag":1.29,"spot":0.86,"wRate":58},"15185":{"dmg":1913.65,"def":0.68,"frag":0.92,"spot":1.12,"wRate":48.71},"15361":{"dmg":249.15,"def":1.73,"frag":1.45,"spot":1.37,"wRate":60.05},"15377":{"dmg":1198.98,"def":0.61,"frag":0.82,"spot":0.04,"wRate":50.11},"15393":{"dmg":1661.32,"def":0.78,"frag":1.1,"spot":1.01,"wRate":51.35},"15425":{"dmg":1854.8,"def":0.9,"frag":0.98,"spot":1.36,"wRate":48.47},"15441":{"dmg":1184.95,"def":0.89,"frag":0.78,"spot":1.08,"wRate":51.53},"15617":{"dmg":1988.35,"def":0.97,"frag":1.17,"spot":1.52,"wRate":51.95},"15633":{"dmg":438.98,"def":1.54,"frag":1.11,"spot":0.1,"wRate":55.31},"15649":{"dmg":716.35,"def":0.63,"frag":0.66,"spot":2.29,"wRate":51.7},"15681":{"dmg":1565.11,"def":0.82,"frag":0.95,"spot":1.32,"wRate":50.11},"15873":{"dmg":366.27,"def":1.29,"frag":1.04,"spot":1.5,"wRate":57.37},"15889":{"dmg":721.04,"def":0.99,"frag":0.95,"spot":1.38,"wRate":51.94},"15905":{"dmg":1821.91,"def":0.81,"frag":0.95,"spot":1.3,"wRate":48.56},"15937":{"dmg":235.06,"def":1.98,"frag":1.39,"spot":1.21,"wRate":58.59},"16129":{"dmg":982.98,"def":0.78,"frag":0.86,"spot":0.05,"wRate":51.95},"16145":{"dmg":615.04,"def":1.03,"frag":1.11,"spot":0.71,"wRate":52.5},"16161":{"dmg":1588.82,"def":0.79,"frag":0.92,"spot":0.04,"wRate":51.26},"16385":{"dmg":543.52,"def":1.09,"frag":0.95,"spot":0.09,"wRate":52.88},"16401":{"dmg":1840.85,"def":0.89,"frag":1.08,"spot":0.6,"wRate":50.49},"16417":{"dmg":795.97,"def":1.14,"frag":0.97,"spot":0.07,"wRate":53},"16641":{"dmg":427.11,"def":0.63,"frag":0.54,"spot":2.61,"wRate":52.59},"16657":{"dmg":1617.19,"def":1.02,"frag":1.19,"spot":0.54,"wRate":51.6},"16673":{"dmg":630.77,"def":0.82,"frag":0.71,"spot":2.25,"wRate":54.05},"16897":{"dmg":1873.31,"def":0.84,"frag":1.04,"spot":1.54,"wRate":49.19},"16913":{"dmg":2275.67,"def":0.75,"frag":1.33,"spot":0.49,"wRate":49.09},"17153":{"dmg":1817.73,"def":0.79,"frag":1.05,"spot":1.52,"wRate":50.23},"17169":{"dmg":312.16,"def":1.01,"frag":1.36,"spot":1.31,"wRate":58.51},"17425":{"dmg":427.76,"def":0.93,"frag":1.1,"spot":1.35,"wRate":56.78},"17665":{"dmg":1534.38,"def":0.83,"frag":1.02,"spot":1.45,"wRate":53.12},"17937":{"dmg":465.28,"def":1.18,"frag":1.34,"spot":0.84,"wRate":56.76},"17953":{"dmg":848.42,"def":0.8,"frag":0.81,"spot":2.46,"wRate":52.9},"18177":{"dmg":999.92,"def":0.68,"frag":0.73,"spot":2.22,"wRate":52.37},"18193":{"dmg":544.32,"def":0.96,"frag":1.12,"spot":1.33,"wRate":55.45},"18209":{"dmg":911.07,"def":0.57,"frag":0.62,"spot":1.87,"wRate":50.86},"18433":{"dmg":813.2,"def":0.82,"frag":0.76,"spot":2.56,"wRate":53.95},"18449":{"dmg":926.37,"def":0.67,"frag":0.68,"spot":2.29,"wRate":51.13},"18465":{"dmg":255.35,"def":1.64,"frag":0.91,"spot":0.1,"wRate":55.71},"18689":{"dmg":692.22,"def":1.06,"frag":1.3,"spot":1.34,"wRate":57.66},"18721":{"dmg":383.63,"def":1.19,"frag":0.95,"spot":0.13,"wRate":54.48},"18961":{"dmg":902.72,"def":0.75,"frag":0.78,"spot":1.89,"wRate":52.39},"19217":{"dmg":2275.67,"def":0.75,"frag":1.33,"spot":0.49,"wRate":49.09},"50689":{"dmg":2095.69,"def":0.57,"frag":1.01,"spot":0.81,"wRate":48.96},"50945":{"dmg":249.15,"def":1.73,"frag":1.45,"spot":1.37,"wRate":60.05},"50961":{"dmg":926.37,"def":0.67,"frag":0.68,"spot":2.29,"wRate":51.13},"51201":{"dmg":693.27,"def":1.3,"frag":1.43,"spot":1.41,"wRate":59.7},"51457":{"dmg":582.79,"def":1.38,"frag":1.31,"spot":1.19,"wRate":57.51},"51473":{"dmg":473.49,"def":0.78,"frag":0.68,"spot":1.57,"wRate":49.86},"51489":{"dmg":191.01,"def":0.96,"frag":1.06,"spot":2.55,"wRate":55.4},"51553":{"dmg":545.15,"def":1.1,"frag":1,"spot":1.13,"wRate":53.37},"51569":{"dmg":774.4,"def":0.84,"frag":1,"spot":1.42,"wRate":51.89},"51713":{"dmg":611.11,"def":1.3,"frag":1.22,"spot":1.22,"wRate":54.83},"51729":{"dmg":383.7,"def":2.32,"frag":1.95,"spot":1.66,"wRate":66.14},"51745":{"dmg":549.03,"def":1.13,"frag":1.16,"spot":1.51,"wRate":57.4},"51809":{"dmg":306.28,"def":1.36,"frag":1.25,"spot":1.65,"wRate":57.97},"51985":{"dmg":381.63,"def":1.62,"frag":1.61,"spot":1.5,"wRate":60.42},"52001":{"dmg":277.13,"def":1.33,"frag":1.12,"spot":2.65,"wRate":57.29},"52065":{"dmg":1166.66,"def":0.98,"frag":0.89,"spot":1.15,"wRate":50.69},"52225":{"dmg":355.63,"def":1.4,"frag":1.57,"spot":2.16,"wRate":57.95},"52241":{"dmg":535.42,"def":1.78,"frag":1.76,"spot":1.73,"wRate":60.82},"52257":{"dmg":445.44,"def":1.02,"frag":0.99,"spot":1.5,"wRate":53.99},"52321":{"dmg":832.49,"def":0.87,"frag":1.03,"spot":1.06,"wRate":54.12},"52481":{"dmg":431.56,"def":1.73,"frag":1.46,"spot":1.63,"wRate":57.68},"52497":{"dmg":343.02,"def":2.78,"frag":2.05,"spot":1.75,"wRate":56.35},"52513":{"dmg":1133.63,"def":0.82,"frag":0.86,"spot":1.15,"wRate":47.99},"52561":{"dmg":1748.14,"def":0.89,"frag":1.03,"spot":0.6,"wRate":51.7},"52737":{"dmg":230.42,"def":1.28,"frag":0.98,"spot":1.72,"wRate":53.42},"52769":{"dmg":277.13,"def":1.33,"frag":1.12,"spot":2.65,"wRate":57.29},"52817":{"dmg":416.67,"def":1.25,"frag":1.15,"spot":1.74,"wRate":57.48},"52993":{"dmg":288.58,"def":0.66,"frag":0.88,"spot":2.68,"wRate":53.31},"53249":{"dmg":1265.86,"def":0.88,"frag":0.99,"spot":1.08,"wRate":52.52},"53505":{"dmg":369.01,"def":1.69,"frag":1.68,"spot":1.78,"wRate":57.83},"53537":{"dmg":182.92,"def":0.89,"frag":1.01,"spot":1.56,"wRate":55.84},"53585":{"dmg":575.8,"def":1.51,"frag":1.2,"spot":0.84,"wRate":55.87},"53761":{"dmg":640.29,"def":1.4,"frag":1.34,"spot":0.89,"wRate":53.96},"53793":{"dmg":1142.92,"def":0.97,"frag":0.9,"spot":1.33,"wRate":53.42},"53841":{"dmg":862.59,"def":1.24,"frag":1.09,"spot":0.6,"wRate":52.83},"54017":{"dmg":693.27,"def":1.3,"frag":1.43,"spot":1.41,"wRate":59.7},"54033":{"dmg":473.49,"def":0.78,"frag":0.68,"spot":1.57,"wRate":49.86},"54097":{"dmg":1040.76,"def":1.21,"frag":1.04,"spot":0.77,"wRate":53.58},"54273":{"dmg":456.96,"def":1.62,"frag":2.15,"spot":1.01,"wRate":60.42},"54289":{"dmg":1241.5,"def":0.83,"frag":0.81,"spot":0.85,"wRate":50.08},"54353":{"dmg":635.75,"def":1.25,"frag":1.34,"spot":1.64,"wRate":56.69},"54529":{"dmg":267.5,"def":1.42,"frag":1.52,"spot":1.49,"wRate":58},"54545":{"dmg":569.96,"def":1.17,"frag":1.11,"spot":1.64,"wRate":55.53},"54609":{"dmg":288.88,"def":1.48,"frag":1.1,"spot":0.13,"wRate":55.36},"54785":{"dmg":882.34,"def":0.8,"frag":1.17,"spot":0.62,"wRate":54.83},"54801":{"dmg":263.73,"def":1.39,"frag":1.12,"spot":2.89,"wRate":59.12},"54865":{"dmg":187.09,"def":1.09,"frag":1.23,"spot":1.55,"wRate":55.94},"55057":{"dmg":588.01,"def":1.42,"frag":1.2,"spot":1.31,"wRate":53.54},"55073":{"dmg":173.77,"def":0.96,"frag":1.13,"spot":1.61,"wRate":56.76},"55121":{"dmg":1063.31,"def":1.06,"frag":1,"spot":1.17,"wRate":55.15},"55297":{"dmg":1143.08,"def":0.9,"frag":1.21,"spot":0.83,"wRate":54.51},"55313":{"dmg":1262.93,"def":1.06,"frag":0.92,"spot":0.76,"wRate":50.15},"55569":{"dmg":1045.28,"def":1.6,"frag":1.28,"spot":1.52,"wRate":51.3},"55633":{"dmg":1248.25,"def":0.96,"frag":0.88,"spot":1.05,"wRate":51.92},"55841":{"dmg":1816.67,"def":0.75,"frag":0.94,"spot":1.09,"wRate":48.85},"55889":{"dmg":859.33,"def":1.09,"frag":1.24,"spot":2.31,"wRate":57.46},"56097":{"dmg":717.98,"def":1.01,"frag":0.98,"spot":1.37,"wRate":54.45},"56145":{"dmg":806.94,"def":1.08,"frag":1.03,"spot":1.07,"wRate":53.13},"56353":{"dmg":1090.9,"def":1.27,"frag":1,"spot":0.78,"wRate":51.43},"56577":{"dmg":281.18,"def":1.42,"frag":1.25,"spot":1.36,"wRate":56.35},"56609":{"dmg":1117.47,"def":0.88,"frag":1.03,"spot":0.83,"wRate":54.49},"56833":{"dmg":1253.57,"def":0.83,"frag":1.2,"spot":1.19,"wRate":56.95},"56865":{"dmg":1771.8,"def":0.7,"frag":0.92,"spot":1.42,"wRate":48.15},"57089":{"dmg":788.67,"def":0.91,"frag":0.85,"spot":1.47,"wRate":53.86},"57105":{"dmg":854.09,"def":1.03,"frag":1.09,"spot":0.75,"wRate":52.29},"57121":{"dmg":1242.69,"def":0.93,"frag":0.91,"spot":1.31,"wRate":53.57},"57361":{"dmg":714.75,"def":1.15,"frag":0.92,"spot":1.06,"wRate":51.98},"57377":{"dmg":1220.02,"def":1.04,"frag":0.92,"spot":1.52,"wRate":50.97},"57617":{"dmg":863.49,"def":1.12,"frag":0.91,"spot":1.28,"wRate":52.21},"57633":{"dmg":716.35,"def":0.63,"frag":0.66,"spot":2.29,"wRate":51.7},"58113":{"dmg":723.55,"def":0.93,"frag":1,"spot":1.28,"wRate":56.04},"58369":{"dmg":2084.91,"def":0.74,"frag":1.02,"spot":1.42,"wRate":51.61},"58625":{"dmg":997.34,"def":0.78,"frag":0.78,"spot":0.71,"wRate":50.77},"58641":{"dmg":1972.39,"def":0.53,"frag":0.94,"spot":1.1,"wRate":50.48},"58881":{"dmg":1410.89,"def":0.75,"frag":1.01,"spot":1.11,"wRate":56.44},"59137":{"dmg":1253.57,"def":0.83,"frag":1.2,"spot":1.19,"wRate":56.95},"59393":{"dmg":872.73,"def":1.01,"frag":1.15,"spot":1.59,"wRate":56.8},"59649":{"dmg":1166.52,"def":0.89,"frag":1.22,"spot":0.66,"wRate":54.79},"59665":{"dmg":309.61,"def":1.09,"frag":1.29,"spot":1.47,"wRate":58.28},"59905":{"dmg":1176.25,"def":0.84,"frag":0.91,"spot":1.21,"wRate":52.72},"60161":{"dmg":832.49,"def":0.87,"frag":1.03,"spot":1.06,"wRate":54.12},"60177":{"dmg":1167.77,"def":0.94,"frag":0.87,"spot":1.13,"wRate":50.47},"60417":{"dmg":1390.42,"def":0.68,"frag":0.97,"spot":0.98,"wRate":54.5},"60433":{"dmg":201.57,"def":1.3,"frag":1.11,"spot":1.88,"wRate":57.79},"60673":{"dmg":1988.35,"def":0.97,"frag":1.17,"spot":1.52,"wRate":51.95},"60689":{"dmg":555.26,"def":1.46,"frag":1.15,"spot":0.69,"wRate":52.78},"60929":{"dmg":237.26,"def":0.78,"frag":0.95,"spot":1.88,"wRate":54.45},"60945":{"dmg":1617.78,"def":0.92,"frag":1.08,"spot":1.37,"wRate":52.23},"61185":{"dmg":1888.88,"def":0.69,"frag":0.91,"spot":1.27,"wRate":48.75},"61441":{"dmg":563.84,"def":1.16,"frag":1.43,"spot":1.2,"wRate":58.65},"61457":{"dmg":413.68,"def":0.87,"frag":0.84,"spot":1.53,"wRate":53},"61697":{"dmg":2294.69,"def":0.91,"frag":1.29,"spot":1.66,"wRate":58.27},"61713":{"dmg":1045.28,"def":1.6,"frag":1.28,"spot":1.52,"wRate":51.3},"61953":{"dmg":1011.77,"def":0.81,"frag":0.81,"spot":1.55,"wRate":52.6},"61969":{"dmg":1166.73,"def":1.28,"frag":0.94,"spot":0.94,"wRate":49.41},"62209":{"dmg":1225.21,"def":0.94,"frag":0.95,"spot":0.87,"wRate":50.94},"62225":{"dmg":1080.19,"def":1.01,"frag":0.93,"spot":0.95,"wRate":53.51},"62481":{"dmg":1617.19,"def":1.02,"frag":1.19,"spot":0.54,"wRate":51.6},"62529":{"dmg":1421.89,"def":0.79,"frag":0.96,"spot":1.3,"wRate":49.46},"62721":{"dmg":1410.89,"def":0.75,"frag":1.01,"spot":1.11,"wRate":56.44},"62737":{"dmg":1265.86,"def":0.88,"frag":0.99,"spot":1.08,"wRate":52.52},"62785":{"dmg":1184.95,"def":0.89,"frag":0.78,"spot":1.08,"wRate":51.53},"62977":{"dmg":1011.77,"def":0.81,"frag":0.81,"spot":1.55,"wRate":52.6},"62993":{"dmg":1080.19,"def":1.01,"frag":0.93,"spot":0.95,"wRate":53.51},"63041":{"dmg":1302.41,"def":0.85,"frag":0.93,"spot":0.85,"wRate":50.47},"63233":{"dmg":1179.34,"def":0.73,"frag":0.81,"spot":0.81,"wRate":52.5},"63249":{"dmg":484.73,"def":0.99,"frag":0.92,"spot":1.21,"wRate":53.75},"63297":{"dmg":693.2,"def":0.76,"frag":0.67,"spot":1.97,"wRate":50.71},"63505":{"dmg":231.11,"def":1.23,"frag":0.82,"spot":1.08,"wRate":59.82},"63537":{"dmg":1762.87,"def":0.66,"frag":0.93,"spot":1.33,"wRate":48.14},"63553":{"dmg":1220.02,"def":1.04,"frag":0.92,"spot":1.52,"wRate":50.97},"63761":{"dmg":1220.02,"def":1.04,"frag":0.92,"spot":1.52,"wRate":50.97},"63793":{"dmg":1105.73,"def":0.89,"frag":0.86,"spot":1.27,"wRate":50.76},"63809":{"dmg":693.2,"def":0.76,"frag":0.67,"spot":1.97,"wRate":50.71},"64017":{"dmg":926.37,"def":0.67,"frag":0.68,"spot":2.29,"wRate":51.13},"64049":{"dmg":1159.15,"def":0.77,"frag":0.93,"spot":1.45,"wRate":50.16},"64065":{"dmg":1254.74,"def":1.05,"frag":0.95,"spot":1.46,"wRate":50.46},"64273":{"dmg":1262.45,"def":1,"frag":0.93,"spot":1.38,"wRate":52.8},"64561":{"dmg":1219.52,"def":0.7,"frag":0.89,"spot":1.31,"wRate":51.45},"64817":{"dmg":584.05,"def":0.76,"frag":0.67,"spot":2.39,"wRate":52.2}}',
'bs' : '{"cv":8770.36,"cm":6378.85,"c1":4182.23,"c2":2811.21,"c3":2024.96,"d3":1289.15,"d2":797.98,"d1":253.94,"dm":0.03}',
'pr' : '{"1":550,"33":550,"49":1350,"81":100,"113":120,"257":550,"273":750,"289":350,"305":700,"321":350,"337":135,"353":200,"369":200,"513":1000,"529":1000,"545":120,"577":120,"593":175,"609":120,"625":350,"769":350,"785":200,"801":750,"817":1400,"833":200,"849":300,"865":200,"881":450,"1025":200,"1041":550,"1057":550,"1073":1050,"1089":450,"1105":750,"1121":1000,"1137":550,"1297":1000,"1313":750,"1329":125,"1345":200,"1361":200,"1377":550,"1393":750,"1537":450,"1553":750,"1569":1000,"1585":1350,"1601":200,"1617":450,"1633":450,"1649":1000,"1793":1000,"1809":450,"1825":200,"1841":1900,"1889":750,"1905":1400,"2049":450,"2065":200,"2081":170,"2097":2000,"2113":550,"2129":350,"2145":350,"2161":2000,"2305":1000,"2321":750,"2353":200,"2369":350,"2385":150,"2401":350,"2417":2300,"2561":750,"2577":550,"2593":2000,"2625":750,"2657":1400,"2817":800,"2833":350,"2849":1400,"2865":1600,"2881":450,"2897":525,"2913":450,"3073":350,"3089":120,"3105":450,"3121":250,"3137":1400,"3153":1300,"3169":200,"3329":120,"3345":350,"3361":550,"3377":725,"3393":350,"3409":250,"3425":2000,"3585":750,"3601":200,"3617":350,"3633":1300,"3649":2300,"3665":750,"3681":2300,"3841":200,"3857":1000,"3873":1000,"3889":900,"3905":2000,"3921":1500,"3937":2800,"4097":1400,"4113":1000,"4129":550,"4145":2200,"4161":550,"4193":2050,"4353":1400,"4369":450,"4385":1400,"4401":250,"4417":550,"4433":2000,"4449":430,"4609":200,"4625":450,"4641":450,"4657":500,"4673":750,"4689":800,"4705":250,"4865":450,"4881":350,"4897":350,"4913":350,"4929":1400,"4945":260,"4961":1700,"5121":200,"5137":1400,"5153":450,"5169":750,"5185":1000,"5201":145,"5217":1550,"5377":1400,"5393":550,"5409":550,"5425":2200,"5457":1000,"5473":970,"5633":750,"5649":550,"5665":200,"5697":2000,"5713":1900,"5729":700,"5889":1000,"5905":350,"5921":1400,"5953":350,"5969":1400,"5985":175,"6145":2300,"6161":450,"6177":200,"6209":2450,"6225":2300,"6401":350,"6417":550,"6433":400,"6465":750,"6481":220,"6657":1000,"6673":350,"6721":550,"6913":450,"6929":2300,"6945":550,"6977":1000,"6993":175,"7169":2300,"7185":750,"7201":750,"7233":1000,"7249":2300,"7425":1400,"7441":1000,"7457":1400,"7489":1400,"7505":165,"7681":350,"7697":1400,"7713":450,"7745":200,"7761":200,"7937":2000,"7953":2000,"7969":1000,"8017":300,"8193":2400,"8209":450,"8225":1400,"8257":350,"8273":180,"8449":2000,"8465":1400,"8481":2300,"8529":1850,"8705":2300,"8721":2000,"8737":2000,"8785":600,"8961":1000,"8977":1000,"8993":2000,"9041":350,"9217":1400,"9233":2300,"9249":1000,"9297":2500,"9473":450,"9489":2300,"9505":2000,"9553":950,"9745":2000,"9761":550,"9793":450,"9809":825,"9985":1400,"10001":750,"10017":750,"10049":550,"10065":1500,"10241":1000,"10257":2000,"10273":450,"10497":750,"10513":1400,"10529":550,"10577":200,"10753":2000,"10769":1000,"10785":2300,"10817":1000,"10833":400,"11009":1400,"11025":1000,"11041":1000,"11073":2000,"11089":750,"11265":750,"11281":450,"11297":1400,"11345":1500,"11521":2000,"11537":1400,"11553":750,"11585":750,"11601":1900,"11777":550,"11793":750,"11809":1000,"11841":2300,"11857":1200,"12033":2000,"12049":2300,"12097":1400,"12113":1750,"12289":750,"12305":2300,"12369":2200,"12545":1000,"12561":350,"12577":550,"12817":200,"12881":550,"13073":350,"13089":2300,"13121":350,"13137":2200,"13313":1400,"13329":450,"13345":1400,"13393":550,"13569":2300,"13585":450,"13825":2300,"13841":1400,"13857":2300,"13889":2300,"13905":2650,"14097":750,"14113":2300,"14145":550,"14161":1300,"14337":2300,"14353":1000,"14401":2000,"14417":850,"14609":2300,"14625":1400,"14657":450,"14673":1800,"14865":2000,"14881":2300,"14913":450,"15105":350,"15121":200,"15137":750,"15169":200,"15361":200,"15377":1400,"15393":2000,"15425":2200,"15441":1300,"15617":2300,"15633":450,"15649":1000,"15681":2000,"15873":450,"15889":750,"15905":2300,"15937":200,"16129":1000,"16145":550,"16161":2000,"16385":550,"16401":2000,"16417":750,"16641":750,"16657":1400,"16673":750,"16897":2300,"16913":2300,"17153":2300,"17169":350,"17425":450,"17665":2000,"17937":400,"17953":1000,"18177":900,"18193":550,"18209":1400,"18433":725,"18449":900,"18465":400,"18689":550,"18721":500,"18961":700,"19217":2300,"50193":1400,"50945":200,"50961":1000,"51201":550,"51457":550,"51473":550,"51489":200,"51553":550,"51569":700,"51713":550,"51729":350,"51745":550,"51985":350,"52065":1400,"52225":350,"52241":450,"52257":550,"52321":800,"52481":450,"52497":200,"52513":1400,"52561":2250,"52737":350,"52769":350,"52817":450,"52993":450,"53249":1400,"53505":350,"53537":200,"53585":575,"53761":550,"53793":1400,"53841":875,"54017":550,"54033":550,"54097":1200,"54273":350,"54289":1400,"54353":550,"54529":200,"54545":550,"54609":500,"54785":750,"54801":350,"54865":150,"55057":550,"55073":200,"55121":1300,"55297":1000,"55313":1400,"55569":1000,"55633":1300,"55841":2300,"55889":750,"56097":625,"56145":750,"56353":1300,"56577":350,"56609":1500,"56833":1000,"56865":2300,"57105":750,"57361":750,"57617":1000,"57633":1000,"58113":775,"58369":2500,"58625":1550,"58641":2300,"58881":1400,"59137":1300,"59393":775,"59649":1350,"59665":220,"59905":1350,"60161":750,"60177":1350,"60417":1400,"60433":175,"60689":700,"60929":150,"60945":1900,"61185":2300,"61441":450,"61457":550,"61697":2300,"61713":1000,"61953":1400,"61969":1800,"62209":1400,"62481":1400,"62737":1400,"62785":1400,"62977":1250,"63041":1400,"63249":550,"63297":725,"63505":230,"63553":1350,"63761":1400,"63793":1350,"63809":700,"64049":1300,"64065":1400,"64273":1300,"64561":1400,"64817":450}'
},
showError: function (erText) {
$('.wes-overlay').show();
$('#wes-error-text').html(erText);
$('#wes-error').show();
},
getServ: function () {
if (document.location.host.endsWith(".ru"))
return 'ru';
else if (document.location.host.endsWith(".eu"))
return 'eu';
else if (document.location.host.endsWith(".com"))
return "com";
else
return '';
},
getApiKey: function () {
return this.apiKey[this.getServ()];
},
lzw_encode: function (s) {
var dict = {}, data = (s + "").split(""), out = [], currChar, phrase = data[0], code = 256, i;
for (i = 1; i < data.length; i++) {
currChar = data[i];
if (dict[phrase + currChar] != null) {
phrase += currChar;
}
else {
out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
dict[phrase + currChar] = code;
code++;
phrase = currChar;
}
}
out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
for (i = 0; i < out.length; i++) {
out[i] = String.fromCharCode(out[i]);
}
return out.join("");
},
lzw_decode: function (s) {
var dict = {}, data = (s + "").split(""), currChar = data[0], oldPhrase = currChar, out = [currChar],
code = 256, phrase, i;
for (i = 1; i < data.length; i++) {
var currCode = data[i].charCodeAt(0);
if (currCode < 256) {
phrase = data[i];
}
else {
phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar);
}
out.push(phrase);
currChar = phrase.charAt(0);
dict[code] = oldPhrase + currChar;
code++;
oldPhrase = phrase;
}
return out.join("");
},
newLSData: {
'wes-wn8': {
'get': function () {
$.get("http://www.wnefficiency.net/exp/expected_tank_values_latest.json", this.set, "json");
},
'set': function (resp) {
var wn8Data = {}, i;
for (i = 0; i < resp['data'].length; i++) {
if (!wn8Data[resp['data'][i].IDNum]) {
wn8Data[resp['data'][i].IDNum] = {
'dmg': resp['data'][i].expDamage,
'def': resp['data'][i].expDef,
'frag': resp['data'][i].expFrag,
'spot': resp['data'][i].expSpot,
'wRate': resp['data'][i].expWinRate
};
}
}
wesGeneral.setLSData('wes-wn8', wn8Data, (new Date().getTime() + 86400000));
}
},
'wes-bs': {
'get': function () {
$.get("http://armor.kiev.ua/wot/api.php", this.set, "json");
},
'set': function (resp) {
wesGeneral.setLSData('wes-bs', resp['classRatings'], (new Date().getTime() + 86400000));
}
},
'wes-tanks': {
'get': function () {
$.get("http://api." + document.location.host + "/wot/encyclopedia/vehicles/",
{
'application_id': wesApiKey,
'fields': 'tier, is_premium, tag'
}, this.set, "json");
},
'set': function (resp) {
var tanksArr = [], allTanks = {}, key, i, oKeys;
if (resp.status == "ok") {
oKeys = Object.keys(resp.data);
for (i = 0; i < oKeys.length; i++) {
key = oKeys[i];
allTanks[key] = {'l': resp.data[key]["tier"]};
if (resp.data[key]["is_premium"]) allTanks[key]['p'] = 1;
allTanks[key]['tag'] = resp.data[key]['tag'];
tanksArr.push(key)
}
}
wesGeneral.setLSData('wes-tanks', allTanks, (new Date().getTime() + 86400000));
}
},
'wes-pr': {
'get': function () {
$.get("http://www.noobmeter.com/tankListJson/elfx_133054", this.set, "json");
},
'set': function (resp) {
var tanksArr = wesGeneral.getLSData('wes-tanks'), i, prData = {}, tName;
for (i = 0; i < resp.length; i++) {
tName = resp[i]['id'];
for (var tank in tanksArr) {
if (typeof(tanksArr[tank]) !== 'undefined' && tName === tanksArr[tank]['tag']) {
prData[tank] = resp[i]['nominalDamage'];
}
}
}
wesGeneral.setLSData('wes-pr', prData, (new Date().getTime() + 86400000));
}
}
},
getLSData: function (name, onRemoveFunction) {
var stVal = localStorage.getItem(name);
onRemoveFunction = onRemoveFunction || false;
if (stVal) {
if (name !== 'wesSettings') {
stVal = decodeURIComponent(escape(this.lzw_decode(stVal)));
}
stVal = JSON.parse(stVal);
if (parseInt(stVal['expireDate']) >= new Date().getTime()) {
return stVal['data'];
} else {
if (onRemoveFunction) {
onRemoveFunction();
}
else if (this.newLSData[name]){
this.newLSData[name].get();
}
return stVal['data'];
}
} else {
if (this.newLSData[name]) {
this.newLSData[name].get();
}
return null;
}
},
setLSData: function (name, value, expire) {
expire = expire || new Date(2100, 0, 1).getTime();
var stVal = JSON.stringify({
'expireDate': expire,
'data': value
});
if (name !== 'wesSettings') {
stVal = this.lzw_encode(unescape(encodeURIComponent(stVal)));
}
try {
localStorage.setItem(name, stVal);
} catch (e) {
if (e == QUOTA_EXCEEDED_ERR) {
this.showError(_('localStorageIsFull'));
}
}
},
deleteLSData: function (name) {
localStorage.removeItem(name);
},
setStyles: function () {
var styleEl = document.createElement("style");
styleEl.innerHTML = this.styles['default'];
document.head.appendChild(styleEl);
},
setScripts: function () {
var cnScr = document.createElement("script");
cnScr.innerHTML = '(function() { if (window.pluso)if (typeof window.pluso.start == "function") return; ' +
'if (window.ifpluso==undefined) { window.ifpluso = 1; ' +
'var d = document, s = d.createElement("script"), g = "getElementsByTagName"; ' +
's.type = "text/javascript"; s.charset="UTF-8"; s.async = true; s.src = ("https:" == ' +
'window.location.protocol ? "https" : "http") + "://share.pluso.ru/pluso-like.js"; ' +
'var h=d[g]("body")[0]; h.appendChild(s);}})();';
document.head.appendChild(cnScr);
},
createProgressBar: function (pId, color) {
var pDiv1 = document.createElement("div"),
pDiv2 = document.createElement("div");
color = color || 'green';
pDiv2.style.backgroundColor = color;
pDiv1.setAttribute("id", "wes-" + pId);
pDiv1.setAttribute("class", "wes-progressbar");
pDiv1.appendChild(pDiv2);
return pDiv1;
},
updateProgressBar: function (pId, curCount, allCount) {
$('#wes-' + pId + ' > div').width(String(Math.round(curCount / allCount * 100)) + '%');
},
calculateCurrentLocalStorageSize: function () {
var size = 0, i;
for (i = 0; i < localStorage.length; i++)
size += (localStorage[localStorage.key(i)].length * 2) / 1024;
return Math.round(size);
},
createSettingsWindow: function () {
var settingsDiv = document.createElement("div"),
overlayDiv = document.createElement("div"), sHtml, key;
settingsDiv.setAttribute("id", "wes-settings");
settingsDiv.setAttribute("class", "wes-settings");
overlayDiv.setAttribute("class", "wes-overlay");
sHtml = '<div class="wes-title">' +
'<span class="wes-title-span">' + _('settingsText') + '</span>' +
'<a href="#" class="wes-close-titlebar" id="wes-close-settings"><span>close</span></a>' +
'<div class="wes-error-text"><div class="wes-tabs">' +
'<span class="wes-active-tab" tabId="1">' + _('general') + '</span>' +
'<span tabId="2">' + _('blocks') + '</span>' +
'<span tabId="3">' + _('players') + '</span>' +
'<span tabId="4">' + _('about') + '</span></div>' +
'<div id="wes-tab-content-1" class="wes-tab-content"><div>' +
'<p id="wes-ls-size-text">' + _('lsSize') + ' 0%</p>' +
'<div class="wes-progressbar" id="wes-ls-size"><div style="background-color: orange;"></div></div>' +
'<div class="wes-setting-half">' + _('saveCount') +
': <input style="width: 40px;" type="number" id="wes-settings-save-count" value="7" min="1" max="100" step="1"></div>' +
'<div class="wes-setting-half">' + _('graphs') + ': <select id="wes-settings-graphs">' +
'<option value="0">' + _('dntshow') + '</option>' +
'<option value="1">' + _('battles') + '</option>' +
'<option value="2">' + _('date') + '</option></select></div>' +
'<div class="wes-setting-half">' + _('language') + ': <select id="wes-settings-lang">' +
'<option value="ru">Русский</option>' +
'<option value="en">English</option></select></div>' +
'</div></div>' +
'<div id="wes-tab-content-2" class="wes-tab-content" style="display: none;"><div><table>';
for (key in wesSettings.blocks) {
sHtml += '<tr><td style="width: 70%;">' + _('block' + key.capitalize()) + ':</td><td><select style="margin-top: 2px;" id="wes-settings-block-' + key + '">' +
'<option value="0">' + _('showBlock') + '</option>' +
'<option value="1">' + _('hideBlock') + '</option>' +
'<option value="2">' + _('deleteBlock') + '</option>' +
'</select></td></tr>'
}
sHtml += '</table></div></div>' +
'<div id="wes-tab-content-3" class="wes-tab-content" style="display: none;"><div></div></div>' +
'<div id="wes-tab-content-4" class="wes-tab-content" style="display: none;"><div><div style="clear:both"></div>' +
'<div data-description="' + _("scriptName") + '" data-title="' + _("scriptName") + '" ' +
'data-url="http://forum.worldoftanks.ru/index.php?/topic/717208-" class="pluso" data-background="none;" ' +
'data-options="medium,square,line,horizontal,counter,sepcounter=1,theme=14" ' +
'data-services="vkontakte,odnoklassniki,facebook,twitter,google,livejournal,moimir"></div>' +
'<p>' + _('scriptVersion') + '<br></p>' +
'<p>' + _('donate') + ': </p><p>' +
'<span style="color: green;">WebMoney:</span><br>'
+ ' WMR: R135164502303<br>'
+ ' WMZ: Z127526962810<br>'
+ ' WME: E419926987074<br><br>'
+ '<span style="color: green;">Yandex:</span><br>'
+ ' 41001870448136<br></p>' +
'</div></div>' +
'<fieldset><div>' +
'<span class="wes-colored-button" style="margin-left: 320px;"><span class="wes-button-right">' +
'<input type="button" value="' + _('save') + '" id="wes-settings-save"></span></span>' +
'</div></fieldset></div>' +
'</div>';
settingsDiv.innerHTML = sHtml;
document.body.appendChild(settingsDiv);
document.body.appendChild(overlayDiv);
},
createErrorWindow: function () {
var errorDiv = document.createElement("div");
errorDiv.setAttribute("id", "wes-error");
errorDiv.setAttribute("class", "wes-error");
errorDiv.innerHTML = '<div class="wes-title">' +
'<span class="wes-title-span">' + _('error') + '</span>' +
'<a href="#" class="wes-close-titlebar" id="wes-close-error"><span>close</span></a>' +
'<div class="wes-error-text"><div style="height:20px;"></div>' +
'<span class="wes-error-icon">' + _('errorText') + '</span>' +
'<div id="wes-error-text"></div><fieldset><div>' +
'<span class="wes-colored-button" style="margin-left: 222px;"><span class="wes-button-right">' +
'<input type="button" value="OK" id="wes-error-close"></span></span>' +
'</div></fieldset></div>' +
'</div>';
document.body.appendChild(errorDiv);
},
createWaitWindow: function () {
var waitDiv = document.createElement("div");
waitDiv.setAttribute("id", "wes-wait");
waitDiv.setAttribute("class", 'wes-wait');
waitDiv.innerHTML = '<img src="/static/3.26.0.2/common/css/scss/content/spinners/img/death-wheel.gif"><br><span></span>';
document.body.appendChild(waitDiv);
},
showWait: function (wText) {
$('.wes-overlay').show();
$('#wes-wait > span').html(wText);
$('#wes-wait').show();
},
hideWait: function () {
$('.wes-overlay').hide();
$('#wes-wait').hide();
},
getCookie: function (check_name) {
var a_all_cookies = document.cookie.split(';'), a_temp_cookie = '', cookie_name = '', cookie_value = '';
for (var i = 0; i < a_all_cookies.length; i++) {
a_temp_cookie = a_all_cookies[i].split('=');
cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
if (cookie_name == check_name) {
if (a_temp_cookie.length > 1) {
cookie_value = unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''));
}
return cookie_value;
}
}
return null;
},
toFl: function (s) {
var a = ("" + s).split("(")[0];
a = a.indexOf(">") > 0 ? a.substr(0, a.indexOf(">")) : a;
return (parseFloat(a.replace(/[\D\.]/g, "")));
},
getUserLastStat: function (uId) {
var stat = this.getLSData('wes_' + uId);
if (stat) return stat[stat.length - 1]; else return null;
},
formattedDate: function (ndate, isoFormat) {
isoFormat = isoFormat || false;
var day, month, year, hour, minutes, seconds;
day = String(ndate.getDate());
if (day.length == 1) day = '0' + day;
month = String(ndate.getMonth() + 1);
if (month.length == 1) month = '0' + month;
year = String(ndate.getFullYear());
hour = String(ndate.getHours());
if (hour.length == 1) hour = '0' + hour;
minutes = String(ndate.getMinutes());
if (minutes.length == 1) minutes = '0' + minutes;
seconds = String(ndate.getSeconds());
if (seconds.length == 1) seconds = '0' + seconds;
if (isoFormat)
return year + '-' + month + '-' + day + 'T' + hour + ':' + minutes + ':' + seconds;
else
return day + '.' + month + '.' + year + ' ' + hour + ':' + minutes + ':' + seconds;
},
migrateToNewVersion: {
'v1': function () {
var steps = {
step1: function () {
var locFuncs = {
'setAllTanksInfo': function (resp) {
var tanksArr = [], allTanks = {}, key, i, oKeys;
if (resp.status == "ok") {
oKeys = Object.keys(resp.data);
for (i = 0; i < oKeys.length; i++) {
key = oKeys[i];
allTanks[key] = {'l': resp.data[key]["tier"]};
if (resp.data[key]["is_premium"]) allTanks[key]['p'] = 1;
allTanks[key]['tag'] = resp.data[key]["tag"];
tanksArr.push(key)
}
}
wesGeneral.setLSData('wes-tanks', allTanks, (new Date().getTime() + 86400000));
}
};
wesGeneral.setLSData('wes-wn8', JSON.parse(wesGeneral.defaultValues['wn8']), (new Date().getTime() + 86400000));
wesGeneral.setLSData('wes-bs', JSON.parse(wesGeneral.defaultValues['bs']), (new Date().getTime() + 86400000));
$.when($.get("http://api." + document.location.host + "/wot/encyclopedia/vehicles/",
{
'fields': "is_premium, tier, name, tank_id, tag, nation",
'language': 'ru',
'application_id': wesApiKey
}
, locFuncs.setAllTanksInfo, "json")
).done (function() {
wesGeneral.setLSData('wes-pr', JSON.parse(wesGeneral.defaultValues['pr']), (new Date().getTime() + 86400000));
steps.step2();
wesGeneral.hideWait();
$('#wes-wait').trigger('wesGeneralReady');
});
},
step2: function () {
var oldSettings = wesGeneral.getCookie('usSettings'), bsVals, i, key, pId, j,
tanksArr = wesGeneral.getLSData('wes-tankId');
if (oldSettings) {
var setArr = oldSettings.split("|"),
blSetArr = setArr[0].split("/"), bKey;
for (i = 0; i < blSetArr.length; i++) {
bsVals = blSetArr[i].split(';');
if (wesGeneral.toFl(bsVals[2]) === 1)
bKey = 2;
else if (wesGeneral.toFl(bsVals[1]) === 1)
bKey = 1;
else
bKey = 0;
if (bsVals[0] in wesSettings.blocks) wesSettings.blocks[bsVals[0]] = bKey;
}
bsVals = setArr[1].split(';');
if (wesGeneral.toFl(bsVals[0]) === 1)
wesSettings.myID = parseInt(bsVals[1].match(/\/(\d+)/)[1]);
if (setArr.length > 2) {
if (setArr[2] === 'no') wesSettings.graphs = 0;
else if (setArr[2] === 'date') wesSettings.graphs = 2;
}
if (setArr.length > 3) {
var us_strs = setArr[3].split("/");
for (i = 0; i < us_strs.length; i++) {
var us_vals = us_strs[i].split(";");
if (us_vals.length > 1) {
wesSettings.players[us_vals[0]] = us_vals[1];
}
}
}
}
for (i = 0; i < localStorage.length; i++) {
key = localStorage.key(i);
if (key.startsWith('daystat')) {
pId = parseInt(key.split('_')[1]);
if (!wesSettings.players[pId])
wesSettings.players[pId] = _("player") + ' ' + String(pId);
}
}
//localStorage.removeItem("flot");
//localStorage.removeItem("flot_time");
//localStorage.removeItem("AllTanksArr");
//localStorage.removeItem("UsBsRangs");
//localStorage.removeItem("UsStatData");
//localStorage.removeItem("UsUnOfStat");
//localStorage.removeItem("WN8Data");
//localStorage.removeItem("compareStat");
//localStorage.removeItem("nominalDamage");
wesSettings.version = 1;
wesSettings.ncount = 2;
var uIds = Object.keys(wesSettings.players), statArr, stat, lsData;
for (i = 0; i < uIds.length; i++) {
statArr = [];
for (j = 0; j < 7; j++) {
lsData = localStorage.getItem('daystat_' + uIds[i] + '_' + j);
if (lsData) {
stat = {};
var dsArr = lsData.split("||")[1].split("|"),
strArray = dsArr[0].split("/"),
str = strArray[0].split(";");
stat['time'] = (new Date(str[0])).getTime();
stat['battles'] = wesGeneral.toFl(str[12]);
stat['wins'] = wesGeneral.toFl(str[10]);
stat['xp'] = wesGeneral.toFl(str[24]);
stat['damage_dealt'] = wesGeneral.toFl(str[16]);
stat['frags'] = wesGeneral.toFl(str[20]);
stat['spotted'] = wesGeneral.toFl(str[22]);
stat['capture_points'] = wesGeneral.toFl(str[14]);
stat['dropped_capture_points'] = wesGeneral.toFl(str[18]);
stat['gold'] = wesGeneral.toFl(str[1]);
stat['credit'] = wesGeneral.toFl(str[2]);
stat['exp'] = wesGeneral.toFl(str[3]);
stat['damage_received'] = 0;
stat['draws'] = 0;
stat['hits'] = 0;
stat['shots'] = 0;
stat['survived_battles'] = 0;
stat['clan'] = {
'battles': 0,
'capture_points': 0,
'damage_dealt': 0,
'damage_received': 0,
'draws': 0,
'dropped_capture_points': 0,
'frags': 0,
'hits': 0,
'shots': 0,
'spotted': 0,
'wins': 0,
'survived_battles': 0,
'xp': 0,
'tanks': []
};
stat['company'] = {
'battles': 0,
'capture_points': 0,
'damage_dealt': 0,
'damage_received': 0,
'draws': 0,
'dropped_capture_points': 0,
'frags': 0,
'hits': 0,
'shots': 0,
'spotted': 0,
'wins': 0,
'survived_battles': 0,
'xp': 0,
'tanks': []
};
if (dsArr.length > 2) {
var sData = JSON.parse(dsArr[2]);
stat['damage_received'] = sData['all']['damage_received'];
stat['draws'] = sData['all']['draws'];
stat['hits'] = sData['all']['hits'];
stat['shots'] = sData['all']['shots'];
stat['survived_battles'] = sData['all']['survived_battles'];
stat['clan']['battles'] = sData['clan']['battles'];
stat['clan']['capture_points'] = sData['clan']['capture_points'];
stat['clan']['damage_dealt'] = sData['clan']['damage_dealt'];
stat['clan']['damage_received'] = sData['clan']['damage_received'];
stat['clan']['draws'] = sData['clan']['draws'];
stat['clan']['dropped_capture_points'] = sData['clan']['dropped_capture_points'];
stat['clan']['frags'] = sData['clan']['frags'];
stat['clan']['hits'] = sData['clan']['hits'];
stat['clan']['shots'] = sData['clan']['shots'];
stat['clan']['spotted'] = sData['clan']['spotted'];
stat['clan']['wins'] = sData['clan']['wins'];
stat['clan']['survived_battles'] = sData['clan']['survived_battles'];
stat['clan']['xp'] = sData['clan']['xp'];
stat['company']['battles'] = sData['company']['battles'];
stat['company']['capture_points'] = sData['company']['capture_points'];
stat['company']['damage_dealt'] = sData['company']['damage_dealt'];
stat['company']['damage_received'] = sData['company']['damage_received'];
stat['company']['draws'] = sData['company']['draws'];
stat['company']['dropped_capture_points'] = sData['company']['dropped_capture_points'];
stat['company']['frags'] = sData['company']['frags'];
stat['company']['hits'] = sData['company']['hits'];
stat['company']['shots'] = sData['company']['shots'];
stat['company']['spotted'] = sData['company']['spotted'];
stat['company']['wins'] = sData['company']['wins'];
stat['company']['survived_battles'] = sData['company']['survived_battles'];
stat['company']['xp'] = sData['company']['xp'];
}
if (dsArr.length > 3)
stat['wgRating'] = wesGeneral.toFl(dsArr[3]);
else
stat['wgRating'] = 0;
stat['medals'] = {};
if (dsArr.length > 1) {
var MedArr = dsArr[1].split("/");
for (var k = 0; k < MedArr.length; k++) {
var MedStr = MedArr[k].split(";");
if (wesGeneral.toFl(MedStr[1]))
stat['medals'][MedStr[0]] = wesGeneral.toFl(MedStr[1]);
}
}
stat['tanks'] = {};
for (k = 1; k < strArray.length; k++) {
var tStr = strArray[k].split(";");
var tName = tStr[0].toLowerCase();
for (var tank in tanksArr) {
if (typeof(tanksArr[tank]) !== 'undefined' && tName === tanksArr[tank]['tag']) {
stat['tanks'][tanksArr[tank]] = {};
stat['tanks'][tanksArr[tank]]["b"] = wesGeneral.toFl(tStr[1]);
stat['tanks'][tanksArr[tank]]["w"] = tStr.length > 3 ? tStr[3] : 0;
}
}
}
statArr.push(stat);
//localStorage.removeItem('daystat_' + uIds[i] + '_' + j);
}
}
wesGeneral.setLSData('wes_' + uIds[i], statArr);
}
wesGeneral.setLSData('wesSettings', wesSettings);
document.cookie = 'usSettings=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
};
wesGeneral.showWait(_("sWaitText"));
steps.step1();
}
},
ratings: function (stats) {
var xvmColors = ['FE0E00', 'FE7903', 'F8F400', '60FF00', '02C9B3', 'D042F3'];
var effStep = [0, 615, 870, 1175, 1525, 1850 ]; //рейтинг эффективности
var wn6Step = [0, 460, 850, 1215, 1620, 1960 ]; //рейтинг WN6
var wn8Step = [0, 380, 860, 1420, 2105, 2770 ]; //рейтинг WN8
var bsStep = [0, 720, 1920, 3905, 6700, 9600 ]; //рейтинг бронесайта
var prStep = [0, 1000, 1215, 1445, 1685, 1990 ]; //рейтинг нагиба
var wgStep = [0, 2495, 4345, 6425, 8625, 10040]; //рейтинг Wargaming
var nbStep = [0, 69, 102, 135, 172, 203 ]; //Нубо-Рейтинг
var avgLev, i;
var tanksStat = wesGeneral.getLSData('wes-tanks'),
wn8data = wesGeneral.getLSData('wes-wn8'),
prData = wesGeneral.getLSData('wes-pr');
function calcStep(rVal, steps) {
var l = steps.length;
if (rVal >= steps[l - 1]) {
return 0;
}
for (var i = l - 1; i >= 0; i--) {
if (rVal >= steps[i]) {
return (steps[i + 1] - rVal).toFixed(2);
}
}
return 0;
}
function getColor(rVal, steps) {
var l = steps.length;
if (rVal <= steps[0]) {
return xvmColors[0];
}
if (rVal >= steps[l - 1]) {
return xvmColors[xvmColors.length - 1];
}
for (var i = l - 1; i >= 0; i--) {
if (rVal >= steps[i]) {
return xvmColors[i];
}
}
return '000';
}
function getAvgTanksLvl() {
var tanks = stats['tanks'];
if (stats['battles'] == 0) {
return 0;
}
var avg = 0,
btl = 0;
for (var id in tanks) {
if (typeof(tanksStat[id]) !== 'undefined') {
avg += tanksStat[id]['l'] * tanks[id]['b'];
btl += tanks[id]['b'];
} else {
console.log('Unexpected tank: ' + id);
}
}
return btl ? avg / btl : 0;
}
avgLev = getAvgTanksLvl();
for (i = 0; i < stTypeKeys.length; i++) {
if (typeof stats[stTypeKeys[i]] == 'undefined') {
stats[stTypeKeys[i]] = [];
for (j = 0; j < stStatKeys.length; j++) {
if (stats[stTypeKeys[i]][stStatKeys[j]] == undefined) {
stats[stTypeKeys[i]][stStatKeys[j]] = 0;
}
}
};
}
var effRat = function () {
var retList = {};
function calculate() {
var damag = stats['damage_dealt'],
battles = stats['battles'],
frags = stats['frags'],
spotted = stats['spotted'],
caps = stats['capture_points'],
defs = stats['dropped_capture_points'];
if (battles == 0) {
return 0;
}
var value = (damag / battles * (10 / (avgLev + 2)) * (0.23 + 2 * avgLev / 100) +
frags / battles * 250 +
spotted / battles * 150 +
Math.log((caps / battles) + 1) / Math.log(1.732) * 150 +
defs / battles * 150).toFixed(2);
return (value > 0) ? value : 0;
}
function stepToNextLvl(rVal) {
return calcStep(rVal, effStep);
}
function getXvm(rVal) {
if (rVal > 2250) {
return 100;
}
return Math.max(0, Math.min(100,
rVal * (rVal * (rVal * (rVal * (rVal *
(rVal * 0.000000000000000013172 - 0.000000000000092286)
+ 0.00000000023692)
- 0.00000027377)
+ 0.00012983)
+ 0.05935)
- 31.684, 100), 0).toFixed(2);
}
function xvmStepToNextLvl(rVal) {
var steps = effStep.map(getXvm);
return calcStep(rVal, steps);
}
retList['value'] = calculate();
retList['stepToNL'] = stepToNextLvl(retList['value']);
retList['xvm'] = getXvm(retList['value']);
retList['xvmStepToNL'] = xvmStepToNextLvl(retList['xvm']);
retList['color'] = getColor(retList['value'], effStep);
return retList;
},
wn6Rat = function () {
var retList = {};
function calculate() {
var damag = stats['damage_dealt'],
battles = stats['battles'],
frags = stats['frags'],
spotted = stats['spotted'],
defs = stats['dropped_capture_points'],
wins = stats['wins'];
var value = ((1240 - 1040 / Math.pow(Math.min(avgLev, 6), 0.164)) * frags / battles +
damag / battles * 530 / (184 * Math.pow(Math.E, 0.24 * avgLev) + 130) +
spotted / battles * 125 +
Math.min(defs / battles, 2.2) * 100 +
((185 / (0.17 + Math.pow(Math.E, (wins / battles * 100 - 35) * -0.134))) - 500) * 0.45 +
(6 - Math.min(avgLev, 6)) * -60).toFixed(2);
return (value > 0) ? value : 0;
}
function stepToNextLvl(rVal) {
return calcStep(rVal, wn6Step);
}
function getXvm(rVal) {
if (rVal > 2350) {
return 100;
}
return Math.max(0, Math.min(100,
rVal * (rVal * (rVal * (rVal * (rVal * (rVal *
0.000000000000000001225
- 0.000000000000007167)
+ 0.000000000005501)
+ 0.00000002368)
- 0.00003668)
+ 0.05965)
- 5.297, 100), 0).toFixed(2);
}
function xvmStepToNextLvl(rVal) {
var steps = wn6Step.map(getXvm);
return calcStep(rVal, steps);
}
retList['value'] = calculate();
retList['stepToNL'] = stepToNextLvl(retList['value']);
retList['xvm'] = getXvm(retList['value']);
retList['xvmStepToNL'] = xvmStepToNextLvl(retList['xvm']);
retList['color'] = getColor(retList['value'], wn6Step);
return retList;
},
wn8Rat = function () {
var retList = {};
function calculate() {
var tanks = stats['tanks'], tbcount;
if (stats['battles'] == 0) {
return 0;
}
var expDmg = 0.0,
expSpot = 0.0,
expFrag = 0.0,
expDef = 0.0,
alltb = 0,
expWinRate = 0.0;
for (var id in tanks) {
if (wn8data[id]) {
tbcount = parseInt(tanks[id]['b']);
alltb += tbcount;
expDmg += parseFloat(wn8data[id]['dmg']) * tbcount;
expSpot += parseFloat(wn8data[id]['spot']) * tbcount;
expFrag += parseFloat(wn8data[id]['frag']) * tbcount;
expDef += parseFloat(wn8data[id]['def']) * tbcount;
expWinRate += parseFloat(wn8data[id]['wRate']) * tbcount / 100.0;
}
}
var rDAMAGE = stats['damage_dealt'] / stats['battles'] * alltb / expDmg,
rSPOT = stats['spotted'] / stats['battles'] * alltb / expSpot,
rFRAG = stats['frags'] / stats['battles'] * alltb / expFrag,
rDEF = stats['dropped_capture_points'] / stats['battles'] * alltb / expDef,
rWIN = stats['wins'] / stats['battles'] * alltb / expWinRate,
rWINc = Math.max(0, (rWIN - 0.71) / (1 - 0.71)),
rDAMAGEc = Math.max(0, (rDAMAGE - 0.22) / (1 - 0.22)),
rFRAGc = Math.max(0, Math.min(rDAMAGEc + 0.2, (rFRAG - 0.12) / (1 - 0.12))),
rSPOTc = Math.max(0, Math.min(rDAMAGEc + 0.1, (rSPOT - 0.38) / (1 - 0.38))),
rDEFc = Math.max(0, Math.min(rDAMAGEc + 0.1, (rDEF - 0.10) / (1 - 0.10)));
var value = 980.0 * rDAMAGEc + 210.0 * rDAMAGEc * rFRAGc + 155.0 * rFRAGc * rSPOTc + 75.0 * rDEFc * rFRAGc + 145.0 * Math.min(1.8, rWINc);
return (value > 0) ? value.toFixed(2) : 0;
}
function stepToNextLvl(rVal) {
return calcStep(rVal, wn8Step);
}
function getXvm(rVal) {
if (rVal > 3650) {
return 100;
}
return Math.max(0, Math.min(100,
rVal * (rVal * (rVal * (rVal * (rVal * (-rVal *
0.00000000000000000007656
+ 0.0000000000000014848)
- 0.0000000000099633)
+ 0.00000002858)
- 0.00003836)
+ 0.0575)
- 0.99, 100), 0).toFixed(2);
}
function xvmStepToNextLvl(rVal) {
var steps = wn8Step.map(getXvm);
return calcStep(rVal, steps);
}
retList['value'] = calculate();
retList['stepToNL'] = stepToNextLvl(retList['value']);
retList['xvm'] = getXvm(retList['value']);
retList['xvmStepToNL'] = xvmStepToNextLvl(retList['xvm']);
retList['color'] = getColor(retList['value'], wn8Step);
return retList;
},
prRat = function () {
var retList = {};
function calculate() {
var tanks = stats['tanks'], prD;
if (stats['battles'] == 0) {
return 0;
}
var expDmg = 0;
for (var id in tanks) {
if (id in prData) {
prD = parseFloat(prData[id]);
} else {
prD = 0;
}
expDmg += prD * tanks[id]['b'];
}
var clearedFromPenalties1 = 1500.0,
expectedMinBattles1 = 500.0,
expectedMinAvgTier1 = 6.0,
clearedFromPenalties2 = 1900.0,
expectedMinBattles2 = 2000.0,
expectedMinAvgTier2 = 7.0;
var damage = stats['damage_dealt'],
battles = stats['battles'],
wins = stats['wins'],
avgLev = getAvgTanksLvl();
var value = (500 * (wins / battles) / 0.4856) + (1000 * damage / (expDmg * 0.975));
if (value > clearedFromPenalties1)
value = value - (value - clearedFromPenalties1) * Math.pow(Math.max(0, 1 - (avgLev / expectedMinAvgTier1), 1 - (battles / expectedMinBattles1)), 0.5);
if (value > clearedFromPenalties2)
value = value - (value - clearedFromPenalties2) * Math.pow(Math.max(0, 1 - (avgLev / expectedMinAvgTier2), 1 - (battles / expectedMinBattles2)), 0.5);
return (value > 0) ? value.toFixed(2) : 0;
}
function stepToNextLvl(rVal) {
return calcStep(rVal, prStep);
}
function getXvm(rVal) {
if (rVal >= 2175) {
return 100;
}
if (rVal >= 1500 && rVal < 2175) {
return Math.max(rVal * (rVal * (rVal *
(0.00000000074489 * rVal - 0.0000051431)
+ 0.01313866)
- 14.65) + 6057.52
, rVal*(rVal*(0.000000081703*rVal - 0.000699026) + 1.88722) - 1538.59).toFixed(2);
}
return Math.max(rVal*(0.00001717*rVal + 0.03825) - 38.45, 0).toFixed(2);
}
function xvmStepToNextLvl(rVal) {
var steps = prStep.map(getXvm);
return calcStep(rVal, steps);
}
retList['value'] = calculate();
retList['stepToNL'] = stepToNextLvl(retList['value']);
retList['xvm'] = getXvm(retList['value']);
retList['xvmStepToNL'] = xvmStepToNextLvl(retList['xvm']);
retList['color'] = getColor(retList['value'], prStep);
return retList;
},
bsRat = function () {
var retList = {};
function calculate() {
var battles = stats['battles'] - stats['company']['battles'] - stats['clan']['battles'],
wins = stats['wins'] - stats['company']['wins'] - stats['clan']['wins'],
damage = stats['damage_dealt'] - stats['company']['damage_dealt'] - stats['clan']['damage_dealt'],
frags = stats['frags'] - stats['company']['frags'] - stats['clan']['frags'],
defs = stats['dropped_capture_points'] - stats['company']['dropped_capture_points'] - stats['clan']['dropped_capture_points'],
spotted = stats['spotted'] - stats['company']['spotted'] - stats['clan']['spotted'],
caps = stats['capture_points'] - stats['company']['capture_points'] - stats['clan']['capture_points'],
xp = stats['xp'] - stats['company']['xp'] - stats['clan']['xp'];
var value = Math.log(battles) / 10 * (xp / battles + damage / battles * (wins / battles * 2.0 + frags / battles * 0.9 + spotted / battles * 0.5 + caps / battles * 0.5 + defs / battles * 0.5));
return value.toFixed(2);
}
function stepToNextLvl(rVal) {
return calcStep(rVal, bsStep);
}
function getXvm(rVal) {
if (rVal > 13200) {
return 100;
}
return Math.max(Math.min(rVal * (rVal * (rVal * (rVal * (rVal *
(-0.00000000000000000000024883*rVal + 0.0000000000000000117935)
- 0.00000000000021706)
+ 0.00000000193685)
- 0.0000089711)
+ 0.02948)
- 0.78, 100), 0).toFixed(2);
}
function xvmStepToNextLvl(rVal) {
var steps = bsStep.map(getXvm);
return calcStep(rVal, steps);
}
retList['value'] = calculate();
retList['stepToNL'] = stepToNextLvl(retList['value']);
retList['xvm'] = getXvm(retList['value']);
retList['xvmStepToNL'] = xvmStepToNextLvl(retList['xvm']);
retList['color'] = getColor(retList['value'], bsStep);
return retList;
},
noobRat = function () {
var retList = {};
function calculate() {
return stats['noobRat'] ? stats['noobRat'] : 0;
}
function stepToNextLvl(rVal) {
return calcStep(rVal, nbStep);
}
function getXvm(rVal) {
if (rVal > 240) {
return 100;
}
return Math.max(Math.min(rVal*(rVal*(rVal*(rVal*(rVal*
(0.0000000000060542*rVal - 0.0000000047258)
+ 0.00000132876)
- 0.00016789)
+ 0.009921)
+ 0.2677)
- 17.3, 100), 0).toFixed(2);
}
function xvmStepToNextLvl(rVal) {
var steps = nbStep.map(getXvm);
return calcStep(rVal, steps);
}
retList['value'] = calculate();
retList['stepToNL'] = stepToNextLvl(retList['value']);
retList['xvm'] = getXvm(retList['value']);
retList['xvmStepToNL'] = xvmStepToNextLvl(retList['xvm']);
retList['color'] = getColor(retList['value'], nbStep);
return retList;
},
wgRat = function () {
var retList = {};
function calculate() {
return stats['wgRating'];
}
function stepToNextLvl(rVal) {
return calcStep(rVal, wgStep);
}
function getXvm(rVal) {
if (rVal > 11100) {
return 100;
}
return Math.max(0, Math.min(100,
rVal * (rVal * (rVal * (rVal * (rVal * (-rVal *
0.0000000000000000000013018
+ 0.00000000000000004812)
- 0.00000000000071831)
+ 0.0000000055583)
- 0.000023362)
+ 0.059054)
- 47.85, 100), 0).toFixed(2);
}
function xvmStepToNextLvl(rVal) {
var steps = wgStep.map(getXvm);
return calcStep(rVal, steps);
}
retList['value'] = calculate();
retList['stepToNL'] = stepToNextLvl(retList['value']);
retList['xvm'] = getXvm(retList['value']);
retList['xvmStepToNL'] = xvmStepToNextLvl(retList['xvm']);
retList['color'] = getColor(retList['value'], wgStep);
return retList;
},
wn8tankRat = function (tank) {
var retList = {};
if (wn8data[tank] != undefined) {
var expDmg = stats['tanks'][tank]['b'] * wn8data[tank]['dmg'],
expSpot = stats['tanks'][tank]['b'] * wn8data[tank]['spot'],
expFrag = stats['tanks'][tank]['b'] * wn8data[tank]['frag'],
expDef = stats['tanks'][tank]['b'] * wn8data[tank]['def'],
expWinRate = stats['tanks'][tank]['b'] * wn8data[tank]['wRate'],
rDAMAGE = stats['tanks'][tank]['d'] / expDmg,
rSPOT = stats['tanks'][tank]['s'] / expSpot,
rFRAG = stats['tanks'][tank]['f'] / expFrag,
rDEF = stats['tanks'][tank]['p'] / expDef,
rWIN = stats['tanks'][tank]['w'] / expWinRate,
rWINc = Math.max(0, (rWIN - 0.71) / (1 - 0.71)),
rDAMAGEc = Math.max(0, (rDAMAGE - 0.22) / (1 - 0.22)),
rFRAGc = Math.max(0, Math.min(rDAMAGEc + 0.2, (rFRAG - 0.12) / (1 - 0.12))),
rSPOTc = Math.max(0, Math.min(rDAMAGEc + 0.1, (rSPOT - 0.38) / (1 - 0.38))),
rDEFc = Math.max(0, Math.min(rDAMAGEc + 0.1, (rDEF - 0.10) / (1 - 0.10)));
retList['value'] = 980 * rDAMAGEc + 210 * rDAMAGEc * rFRAGc + 155 * rFRAGc * rSPOTc + 75 * rDEFc * rFRAGc + 145 * Math.min(1.8, rWINc);
retList['stepToNL'] = calcStep(retList['value'], wn8Step);
retList['color'] = getColor(retList['value'], wn8Step);
return retList;
} else {
return 0;
}
},
prtankRat = function (tank) {
var retList = {};
var tPR = (500 * (stats['tanks'][tank]['w'] / stats['tanks'][tank]['b']) / 0.4856) + (1000 * stats['tanks'][tank]['d'] / ((stats['tanks'][tank]['b'] * prData[tank]) * 0.975)),
clearedFromPenalties1 = 1500,
expectedMinBattles1 = 500,
expectedMinAvgTier1 = 6,
clearedFromPenalties2 = 1900,
expectedMinBattles2 = 2000,
expectedMinAvgTier2 = 7;
if (tPR > clearedFromPenalties1)
tPR = tPR - (tPR - clearedFromPenalties1) * Math.pow(Math.max(0, 1 - (tanksStat[tank]['l'] / expectedMinAvgTier1), 1 - (stats['tanks'][tank]['b'] / expectedMinBattles1)), 0.5);
if (tPR > clearedFromPenalties2)
tPR = tPR - (tPR - clearedFromPenalties2) * Math.pow(Math.max(0, 1 - (tanksStat[tank]['l'] / expectedMinAvgTier2), 1 - (stats['tanks'][tank]['b'] / expectedMinBattles2)), 0.5);
retList['value'] = tPR;
retList['stepToNL'] = calcStep(retList['value'], prStep);
retList['color'] = getColor(retList['value'], prStep);
return retList;
},
tanksRat = function() {
var tanks = {};
for (var tank in stats['tanks']) {
tanks[tank] = {};
tanks[tank]['wn8'] = wn8tankRat(tank);
tanks[tank]['pr'] = prtankRat(tank);
}
return tanks;
};
return {
'eff': effRat(),
'wn6': wn6Rat(),
'wn8': wn8Rat(),
'pr': prRat(),
'bs': bsRat(),
'wg': wgRat(),
'noob': noobRat(),
'avg': avgLev,
'tanks': tanksRat()
}
},
main: function () {
this.setStyles();
this.setScripts();
wesSettings = this.getLSData('wesSettings');
if (!wesSettings) wesSettings = this.defaultSettings;
if (wesSettings.blocks['compStat'] == undefined) {
var blocks = jQuery.extend({}, wesSettings.blocks);
wesSettings.blocks['compStat'] = this.defaultSettings.blocks['compStat'];
delete wesSettings.blocks['pers'];
delete wesSettings.blocks['speed'];
delete wesSettings.blocks['hall'];
delete wesSettings.blocks['achiev'];
delete wesSettings.blocks['common'];
delete wesSettings.blocks['diagr'];
delete wesSettings.blocks['rat'];
delete wesSettings.blocks['veh'];
wesSettings.blocks['pers'] = blocks['pers'];
wesSettings.blocks['speed'] = blocks['speed'];
wesSettings.blocks['hall'] = blocks['hall'];
wesSettings.blocks['achiev'] = blocks['achiev'];
wesSettings.blocks['common'] = blocks['common'];
wesSettings.blocks['diagr'] = blocks['diagr'];
wesSettings.blocks['rat'] = blocks['rat'];
wesSettings.blocks['veh'] = blocks['veh'];
wesGeneral.setLSData('wesSettings', wesSettings);
}
String.locale = wesSettings.locale;
wesApiKey = this.getApiKey();
this.createSettingsWindow();
this.createErrorWindow();
this.createWaitWindow();
if (wesSettings.version < 1) this.migrateToNewVersion.v1(); else $('#wes-wait').trigger('wesGeneralReady');
}
};
function extend(Child, Parent) {
var F = function () {
};
F.prototype = Parent.prototype;
Child.prototype = new F();
Child.prototype.constructor = Child;
Child.superclass = Parent.prototype
}
function WrappableBlock(name, options) {
var me = this;
me.name = name;
me.options = options || {};
me.wrap();
}
WrappableBlock.prototype.getCaption = function (showBlock) {
var me = this,
hasTranslate = _('block' + me.name.capitalize()) != 'block' + me.name.capitalize();
return (showBlock ? _('hideBlock') : _('showBlock')) +
' ' +
(hasTranslate ? '«' + _('block' + me.name.capitalize()) + '»' : '')
};
WrappableBlock.prototype.wrap = function () {
var me = this,
$wrp;
var showBlock = me.name in wesSettings.blocks && wesSettings.blocks[me.name] == 0,
deleteBlock = me.name in wesSettings.blocks && wesSettings.blocks[me.name] == 2,
expander = '<div class="wes-s-expander' +
(me.options.extraMargin ? ' wes-s-expander__extra' : '') + '" data-expand="' + me.name + '">' +
'<a class="b-vertical-arrow' +
(showBlock ? ' b-vertical-arrow__open' : '') +
'" href="">' +
'<span class="b-link-fake">' + me.getCaption(showBlock) + '</span></a></div>',
blockWrap = '<div class="wes-b-expander" data-expand="' + me.name + '" style="' +
(showBlock ? '' : 'display: none;') +
'">';
if (!me.options.end) {
$wrp = $(me.options.start);
if (!deleteBlock) {
$wrp.wrap(blockWrap);
} else {
$wrp.remove();
}
} else {
$wrp = $(me.options.start).nextUntil(me.options.end).andSelf().next().andSelf();
if (!deleteBlock) {
$wrp.wrapAll(blockWrap);
} else {
$wrp.remove();
}
}
if (!deleteBlock) {
$('div.wes-b-expander[data-expand=' + me.name + ']').before(expander);
$('div.wes-s-expander[data-expand=' + me.name + '] a').click(me.toggle(me));
}
};
WrappableBlock.prototype.toggle = function (thisArg) {
var me = thisArg;
return function (e) {
e.preventDefault();
var $this = $(e.currentTarget),
$block = $('div.wes-b-expander[data-expand=' + me.name + ']'),
showBlock = !$block.is(':visible');
$block.slideToggle();
$this.children('span').html(me.getCaption(showBlock));
$this.toggleClass('b-vertical-arrow__open', showBlock);
}
};
WrappableBlock.prototype.draw = function () {
};
WBEff = function () {
var me = this;
me.name = 'efRat';
me.options = {
start: 'div.wes-b-efrat'
};
me.draw();
me.wrap();
};
extend(WBEff, WrappableBlock);
WBEff.prototype.draw = function () {
var emptyRow = function (label, wesRatingType) {
wesRatingType = wesRatingType || label;
wesRatingType = wesRatingType.toLocaleLowerCase();
return '<tr><td>' + _(label) + '</td><td class="t-dotted_number t-dotted_number__nowidth">' +
'<span class="wes-eff-' + wesRatingType + '" id="wes-eff-' + wesRatingType + '"></span></td></tr>';
};
var tpl = '<div class="b-user-block wes-b-efrat">' +
'<div class="b-head-block"><h3>' + _('rating') + '</h3></div>' +
//'<table cellspacing="0" cellpadding="0" class="t-profile"><thead><tr>' +
//'<th class="wes-r-header wes-r-header__active" tabindex="0" unselectable="on" style="-moz-user-select: none;" data-rating-tab="eff"> </th>' +
// '<th class="wes-r-header" tabindex="0" unselectable="on" style="-moz-user-select: none;" data-rating-tab="global">' + _('globalMap') + '</th>' +
// '<th class="wes-r-header" tabindex="0" unselectable="on" style="-moz-user-select: none;" data-rating-tab="rota">' + _('rota') + '</th>' +
// '<th class="wes-r-header" tabindex="0" unselectable="on" style="-moz-user-select: none;" data-rating-tab="historic">' + _('historic') + '</th>' +
// '<th class="wes-r-header" tabindex="0" unselectable="on" style="-moz-user-select: none;" data-rating-tab="graph">' + _('graph') + '</th>' +
//'</tr></thead></table>' +
'<div class="b-user-block_info clearfix" style="padding-top: 0;" data-rating-tab="eff">' +
'<div class="b-user-block_right-column">' +
'<table class="us-ratings">' +
'<tr>' +
'<td class="us-ratings-head" width="33%"><a href="http://wot-news.com/index.php/stat/calc/ru/ru/' + wesAccount.userName + '" target="_blank">XWN8</a></td>' +
'<td class="us-ratings-head" width="33%"><a href="http://wot-news.com/index.php/stat/calc/ru/ru/' + wesAccount.userName + '" target="_blank">XWN6</a></td>' +
'<td class="us-ratings-head"><a href="http://wot-news.com/index.php/stat/calc/ru/ru/' + wesAccount.userName + '" target="_blank">XRE</a></td>' +
'</tr>' +
'<tr>' +
'<td width="33%"><span class="wes-eff-xrwn8" id="wes-eff-xrwn8"></span></td>' +
'<td width="33%"><span class="wes-eff-xrwn6" id="wes-eff-xrwn6"></span></td>' +
'<td><span class="wes-eff-xreff" id="wes-eff-xreff"></span></td>' +
'</tr>' +
'</table>' +
'<table class="us-ratings">' +
'<tr>' +
'<td class="us-ratings-head" width="33%"><a href="#" target="_blank">XWG</a></td>' +
'<td class="us-ratings-head" width="33%"><a href="http://www.noobmeter.com/player/ru/' + wesAccount.userName + '/' + wesAccount.userId + '/" target="_blank">XPR</a></td>' +
'<td class="us-ratings-head"><a href="http://armor.kiev.ua/wot/gamerstat/' + wesAccount.userName + '" target="_blank">XBS</a></td>' +
'' +
'</tr>' +
'<tr>' +
'<td width="33%"><span class="wes-eff-xrkwg" id="wes-eff-xrkwg"></span></td>' +
'<td width="33%"><span class="wes-eff-xrnag" id="wes-eff-xrnag"></span></td>' +
'<td><span class="wes-eff-xrarmor" id="wes-eff-xrarmor"></span></td>' +
'</tr>' +
'<tr>' +
'<td class="us-ratings-head" width="33%"></td>' +
'<td class="us-ratings-head" width="33%"><a href="http://wot-noobs.ru/nubomer/?nick=' + wesAccount.userName + '" target="_blank">XNR</a></td>' +
'<td class="us-ratings-head"></td>' +
'</tr>' +
'<tr>' +
'<td width="33%"> </td>' +
'<td width="33%"><span class="wes-eff-xrnoob" id="wes-eff-xrnoob"></span></td>' +
'<td></td>' +
'</tr>' +
'</table>' +
'<table class="t-dotted"><tbody>' +
emptyRow('rExp') + emptyRow('rDamage') + emptyRow('rFrag') +
emptyRow('rSpot') + emptyRow('rCap') + emptyRow('rDeff') +
emptyRow('treesCut') + emptyRow('lastBattle') + emptyRow('lastUpdate') +
'</tbody></table></div>' +
'<div class="b-user-block_left-column">' +
'<table class="us-ratings">' +
'<tr>' +
'<td class="us-ratings-head" width="33%"><a href="http://wot-news.com/index.php/stat/calc/ru/ru/' + wesAccount.userName + '" target="_blank">WN8</a></td>' +
'<td class="us-ratings-head" width="33%"><a href="http://wot-news.com/index.php/stat/calc/ru/ru/' + wesAccount.userName + '" target="_blank">WN6</a></td>' +
'<td class="us-ratings-head"><a href="http://wot-news.com/index.php/stat/calc/ru/ru/' + wesAccount.userName + '" target="_blank">RE</a></td>' +
'</tr>' +
'<tr>' +
'<td width="33%"><span class="wes-eff-rwn8" id="wes-eff-rwn8"></span></td>' +
'<td width="33%"><span class="wes-eff-rwn6" id="wes-eff-rwn6"></span></td>' +
'<td><span class="wes-eff-reff" id="wes-eff-reff"></span></td>' +
'</tr>' +
'</table>' +
'<table class="us-ratings">' +
'<tr>' +
'<td class="us-ratings-head" width="33%"><a href="#" target="_blank">WG</a></td>' +
'<td class="us-ratings-head" width="33%"><a href="http://www.noobmeter.com/player/ru/' + wesAccount.userName + '/' + wesAccount.userId + '/" target="_blank">PR</a></td>' +
'<td class="us-ratings-head"><a href="http://armor.kiev.ua/wot/gamerstat/' + wesAccount.userName + '" target="_blank">BS</a></td>' +
'</tr>' +
'<tr>' +
'<td width="33%"><span class="wes-eff-rkwg" id="wes-eff-rkwg"></span></td>' +
'<td width="33%"><span class="wes-eff-rnag" id="wes-eff-rnag"></span></td>' +
'<td><span class="wes-eff-rarmor" id="wes-eff-rarmor"></span></td>' +
'</tr>' +
'<tr>' +
'<td class="us-ratings-head" width="33%"></td>' +
'<td class="us-ratings-head" width="33%"><a href="http://wot-noobs.ru/nubomer/?nick=' + wesAccount.userName + '" target="_blank">NR</a></td>' +
'<td class="us-ratings-head"></td>' +
'</tr>' +
'<tr>' +
'<td width="33%"></td>' +
'<td width="33%"><span class="wes-eff-rnoob" id="wes-eff-rnoob"></span></td>' +
'<td></td>' +
'</tr>' +
'</table>' +
'<table class="t-dotted"><tbody>' +
emptyRow('rBattles') +
emptyRow('rBatteDay') + emptyRow('rMedLvl') + emptyRow('rWin') +
emptyRow('rLoose') + emptyRow('rSurv') + emptyRow('rHit') +
emptyRow('maxDamage') + emptyRow('maxFrags') + emptyRow('maxXp') +
'</tbody></table></div>' +
'</div>' +
'<div class="b-user-block_info clearfix" style="padding-top: 0; display: none;" data-rating-tab="global">' +
'<table class="t-dotted"><tbody>' +
emptyRow('rBattles', 'rGBattles') + emptyRow('rGWin') + emptyRow('rDamage', 'rGDamage') +
emptyRow('rFrag', 'rGFrag') + emptyRow('rSpot', 'rGSpot') + emptyRow('rCap', 'rGCap') +
emptyRow('rDeff', 'rGDeff') + emptyRow('rExp', 'rGExp') + emptyRow('rWin', 'rGWin') +
emptyRow('rSurv', 'rGSurv') + emptyRow('rHit', 'rGHit') +
'</tbody></table>' +
'</div>' +
'<div class="b-user-block_info clearfix" style="padding-top: 0; display: none;" data-rating-tab="rota">' +
'<table class="t-dotted"><tbody>' +
emptyRow('rBattles', 'rRBattles') + emptyRow('rGWin', 'rRWin') + emptyRow('rDamage', 'rRDamage') +
emptyRow('rFrag', 'rRFrag') + emptyRow('rSpot', 'rRSpot') + emptyRow('rCap', 'rRCap') +
emptyRow('rDeff', 'rRDeff') + emptyRow('rExp', 'rRExp') + emptyRow('rWin', 'rRWin') +
emptyRow('rSurv', 'rRSurv') + emptyRow('rHit', 'rRHit') +
'</tbody></table>' +
'</div>' +
'<div class="b-user-block_info clearfix" style="padding-top: 0; display: none;" data-rating-tab="historic">' +
'<table class="t-dotted"><tbody>' +
emptyRow('rBattles', 'rHBattles') + emptyRow('rGWin', 'rHWin') + emptyRow('rDamage', 'rHDamage') +
emptyRow('rFrag', 'rHFrag') + emptyRow('rSpot', 'rHSpot') + emptyRow('rCap', 'rHCap') +
emptyRow('rDeff', 'rHDeff') + emptyRow('rExp', 'rHExp') + emptyRow('rWin', 'rHWin') +
emptyRow('rSurv', 'rHSurv') + emptyRow('rHit', 'rHHit') +
'</tbody></table>' +
'</div>' +
'<div class="b-user-block_info clearfix" style="padding-top: 0; display: none;" data-rating-tab="graph">' +
'ГРАФФФФОН' +
'</div>' +
'</div>';
var $after = $('div.wes-b-expander[data-expand=newBat]');
if ($after.length) {
$after.after(tpl);
} else {
$('div.b-user-block:first').before(tpl);
}
$('th[data-rating-tab]').click(function (e) {
e.preventDefault();
var $this = $(e.currentTarget);
$('div[data-rating-tab]').hide();
$('div[data-rating-tab=' + $this.data('rating-tab') + ']').show();
$('th.wes-r-header__active').removeClass('wes-r-header__active');
$this.addClass('wes-r-header__active');
});
};
WBNew = function () {
var me = this;
me.name = 'newBat';
me.options = {
start: 'div.wes-b-newbat'
};
me.draw();
me.wrap();
};
extend(WBNew, WrappableBlock);
WBNew.prototype.draw = function () {
var emptyRow = function (label, wesRatingType) {
wesRatingType = wesRatingType || label;
wesRatingType = wesRatingType.toLocaleLowerCase();
return '<tr><td>' + _(label) + '</td>' +
'<td class="t-dotted_number t-dotted_number__nowidth">' +
'<span class="wes-eff-' + wesRatingType + '__new" id="wes-eff-' + wesRatingType + '__new"></span></td>' +
'<td class="t-dotted_number t-dotted_number__nowidth">' +
'<span class="wes-eff-' + wesRatingType + '__old" id="wes-eff-' + wesRatingType + '__old"></span></td>' +
'<td class="t-dotted_number t-dotted_number__nowidth">' +
'<span class="wes-eff-' + wesRatingType + '__cur" id="wes-eff-' + wesRatingType + '__cur"></span></td>' +
'</tr>';
};
var tpl = '<div class="b-user-block wes-b-newbat">' +
'<div class="b-head-block"><h3>' + _('blockNewBat') + '</h3></div>' +
'<div class="b-user-block_info clearfix" style="padding-top: 0;">' +
'<table class="t-dotted"><tbody>' +
'<th style="width: 31%;"></th>' +
'<th style="width: 23%; text-align: right;"><h4 class="wes-h-header">' + _('new') + '</h4></th>' +
'<th style="width: 23%; text-align: right;"><h4 class="wes-h-header">' + _('hsaved') + '</h4></th>' +
'<th style="width: 23%; text-align: right;"><h4 class="wes-h-header">' + _('current') + '</h4></th>' +
emptyRow('rBattles', 'nBattles') + emptyRow('nWin') + emptyRow('rWin', 'nWinRatio') +
emptyRow('rExp', 'nExp') + emptyRow('rMedLvl', 'nMedLvl') + emptyRow('rDamage', 'nDamage') +
emptyRow('rFrag', 'nFrag') + emptyRow('rSpot', 'nSpot') + emptyRow('rCap', 'nCap') +
emptyRow('rDeff', 'nDeff') + emptyRow('rEff', 'nEff') + emptyRow('rWn6', 'nWn6') +
emptyRow('rWn8', 'nWn8') +
'</tbody></table>' +
'</div></div>';
var $before = $('div.wes-s-expander[data-expand=efRat]');
if ($before.length) {
$before.before(tpl);
} else {
$('div.b-user-block:first').before(tpl);
}
};
WBCompStat = function() {
var me = this;
me.name = 'compStat';
me.options = {
start: 'div.wes-b-compstat'
};
me.draw();
me.wrap();
};
extend(WBCompStat, WrappableBlock);
WBCompStat.prototype.draw = function () {
var emptyRow = function (label, wesRatingType) {
wesRatingType = wesRatingType || label;
wesRatingType = wesRatingType.toLocaleLowerCase();
return '<tr><td>' + _(label) + '</td>' +
'<td class="t-dotted_number t-dotted_number__nowidth">' +
'<span class="wes-eff-' + wesRatingType + '__cur" id="wes-eff-' + wesRatingType + '__cur"></span></td>' +
'<td class="t-dotted_number t-dotted_number__nowidth">' +
'<span class="wes-eff-' + wesRatingType + '__my" id="wes-eff-' + wesRatingType + '__me"></span></td>' +
'</tr>';
};
var tpl = '<div class="b-user-block wes-b-compstat">' + '<div class="b-head-block"><h3>' + _('blockCompStat') + '</h3></div>' +
'<div class="b-user-block_info clearfix" style="padding-top: 0;">' +
'<table class="t-dotted"><tbody>' +
'<th style="width: 33%;"></th>' +
'<th style="width: 33%; text-align: right;"><h4 class="wes-h-header">' + _('player') + '</h4></th>' +
'<th style="width: 33%; text-align: right;"><h4 class="wes-h-header">' + _('me') + '</h4></th>' +
emptyRow('rBattles', 'nBattles') + emptyRow('nWin') + emptyRow('rWin', 'nWinRatio') +
emptyRow('rExp', 'nExp') + emptyRow('rMedLvl', 'nMedLvl') + emptyRow('rDamage', 'nDamage') +
emptyRow('rFrag', 'nFrag') + emptyRow('rSpot', 'nSpot') + emptyRow('rCap', 'nCap') +
emptyRow('rDeff', 'nDeff') + emptyRow('rEff', 'nEff') + emptyRow('rWn6', 'nWn6') +
emptyRow('rWn8', 'nWn8') +
'</tbody></table>' +
'</div></div>';
var $before = $('div.wes-s-expander[data-expand=pers]');
if (!$before.length) {
var $before = $('div.wes-s-expander[data-expand=speed]');
}
if ($before.length) {
$before.before(tpl);
} else {
$('div.b-user-block:first').before(tpl);
}
}
function SBNewBattles(saveDate) {
var me = this;
me.saveDate = saveDate || wesGeneral.formattedDate(new Date());
me.cssSet = false;
if (me.saveDate) {
me.draw();
}
}
SBNewBattles.prototype.draw = function () {
var me = this,
tpl = '<div class="wes-sb-new"><div class="b-sidebar-widget clearfix">' +
'<div class="b-sidebar-widget_inner" style="text-align: center; padding: 15px;">' +
'<h2 class="b-sidebar-widget_title" id="sb-nb-title">' + _('blockNewBat') + '</h2>' +
'<div><span id="sb-rb"></span>' +
'<span id="sb-nw" style="padding-left: 10px;"></span>' +
'<span id="sb-rw"></span></div><br>' +
'<div class="currency-all" style="display:none;"><span class="currency-gold" id="sb-gold" style="margin: 10px; display: none;"></span>' +
'<span class="currency-credit" id="sb-credit" style="margin: 10px; display: none;"></span>' +
'<span class="currency-experience" id="sb-experience" style="margin: 10px; display: none;"></span></div><br>' +
'<table class="us-ratings" style="width: 100%;"><tr>' +
'<td width="20%" class="us-ratings-head"><a target="_blank" ' +
'href="http://wot-news.com/index.php/stat/calc/ru/ru/' + wesAccount.userName + '">WN8</a></td>' +
'<td width="20%" class="us-ratings-head"><a target="_blank" ' +
'href="http://wot-news.com/index.php/stat/calc/ru/ru/' + wesAccount.userName + '">WN6</a></td>' +
'<td width="20%" class="us-ratings-head"><a target="_blank" ' +
'href="http://wot-news.com/index.php/stat/calc/ru/ru/' + wesAccount.userName + '">RE</a></td>' +
'<td width="20%" class="us-ratings-head"><a target="_blank" ' +
'href="http://www.noobmeter.com/player/ru/' + wesAccount.userName + '/' + wesAccount.userId + '/">PR</a></td>' +
'</tr><tr>' +
'<td width="20%" id="sb-wn8"></td><td width="20%" id="sb-wn6"></td><td width="20%" id="sb-re"></td><td width="20%" id="sb-pr"></td>' +
'</tr><tr>' +
'<td width="20%" id="sb-xwn8"></td><td width="20%" id="sb-xwn6"></td><td width="20%" id="sb-xre"></td><td width="20%" id="sb-xpr"></td>' +
'</tr></table><br><span>' + _('medals') + ':</span><br>' +
'<span id="sb-medals"></span><br>' +
// '<span>' + _('blockVeh') + ':</span><br>' +
// '<span id="sb-tanks"></span>' +
'</div></div></div>';
$('div.l-sidebar').append(tpl);
var $elem = $('div.wes-sb-new');
me.positionTop = $elem.offset().top;
me.$elem = $elem;
me.width = $elem.innerWidth();
$(window).scroll(function (e) {
me.onScroll(e);
});
};
SBNewBattles.prototype.onScroll = function (e) {
var me = this,
offY = $(window).scrollTop();
if (offY > me.positionTop) {
if (!me.cssSet) {
me.$elem.css({
'position': 'fixed',
'top': '10px',
'width': me.width
});
me.cssSet = true;
}
} else {
if (me.cssSet) {
me.$elem.css({
'position': 'relative',
'top': 0
});
me.cssSet = false;
}
}
};
//Тут функции и методы для отрисовки на странице профиля
wesAccount = {
'userId': parseInt(window.location.href.match(/\/(\d+)/)[1]),
'userName': document.getElementById("js-profile-name").innerHTML,
'curApiStat': false,
'curApiTanks': false,
'curStat': {},
addScriptInfo: function () {
var sInfoDiv = document.createElement("div"), timeDiv = $('.b-profile-name')[0];
sInfoDiv.innerHTML = '<p>' + _('scriptVersion') + ' <br></p><p>' +
'<a href="#" id="wes-show-settings">' + _('settings') + '</a></p>';
timeDiv.appendChild(sInfoDiv);
},
paintUsersNewBattles: function (resp) {
if (resp['status'] === 'ok') {
var keys = Object.keys(resp['data']), key, i, lastStat, oldBat,
newBat, oldWin, newWin, newB, newW, nDate, mText = '', saveStat = false;
for (i = 0; i < keys.length; i++) {
key = keys[i];
if (parseInt(key) !== wesSettings.myID) {
mText = '';
lastStat = wesGeneral.getUserLastStat(key);
if (lastStat) {
oldBat = parseInt(lastStat['battles']);
newBat = parseInt(resp['data'][key]['statistics']['all']['battles']);
oldWin = parseInt(lastStat['wins']);
newWin = parseInt(resp['data'][key]['statistics']['all']['wins']);
newB = newBat - oldBat;
newW = newWin - oldWin;
if (oldBat !== newBat) {
$('#wes-menu-' + key).css({
'background-position': '0 10px'
});
$('#wes-menu-' + key + ' > span').append(' <span class="wes-s-newcounter">+' + newB + '</span>');
}
mText += '<p>' + _("player") + ': ' + resp['data'][key]['nickname'] + '</p>';
if (wesSettings['players'][key].startsWith(_("player"))) {
wesSettings['players'][key] = resp['data'][key]['nickname'];
saveStat = true;
}
nDate = new Date(parseInt(lastStat['time']));
mText += '<p>' + _("saved") + ': ' + wesGeneral.formattedDate(nDate) + '</p>';
nDate = new Date(parseInt(resp['data'][key]['updated_at']) * 1000);
mText += '<p>' + _("lastUpdate") + ' ' + wesGeneral.formattedDate(nDate) + '</p>';
nDate = new Date(parseInt(resp['data'][key]['last_battle_time']) * 1000);
mText += '<p>' + _("lastBattle") + ' ' + wesGeneral.formattedDate(nDate) + '</p>';
if (newB > 0) {
mText += '<p>' + _("battles") + ': ' + newB + '</p>';
mText += '<p>' + _("wins") + ': ' + newW + ' (' + (newW / newB * 100).toFixed(2) + '%)</p>';
}
$('#wes-menu-' + key + '_tooltip').html(mText);
}
}
}
if (saveStat) wesGeneral.setLSData('wesSettings', wesSettings);
}
},
getUsersNewBattles: function () {
var uIds = Object.keys(wesSettings.players).join(",");
if (uIds !== '')
$.get("http://api." + document.location.host + "/wot/account/info/",
{
'application_id': wesApiKey,
'type': "jsonp",
'callback': "?",
"account_id": uIds
}, this.paintUsersNewBattles, "json");
},
createUserMenu: function () {
var mtext = "<li><a id='wes-save-stat' href='#'>" + _("saveStat") + "</a></li>",
uIds = Object.keys(wesSettings.players),
serv = wesGeneral.getServ(),
key, i, fake_div;
if (uIds.length > 0) {
mtext += "<br>";
for (i = 0; i < uIds.length; i++) {
key = parseInt(uIds[i]);
mtext += '<li><a id="wes-menu-' + key + '" class="js-tooltip" href="http://worldoftanks.' +
serv + '/community/accounts/' + key + '/">' +
(key === this.userId ? '<span style="color:green;">' : '<span>') + wesSettings.players[key] +
'</span></a><div class="b-tooltip-main" id="wes-menu-' + key + '_tooltip"></div></li>';
}
}
mtext += "<br>";
if (wesSettings.players[this.userId])
mtext += '<li><a id="wes-remove-stat" href="#">' + _("delStat") + '</a></li>';
fake_div = document.createElement("div");
fake_div.innerHTML = mtext;
$(".b-context-menu-list__bottomindent")[0].appendChild(fake_div);
this.getUsersNewBattles();
},
createChangeStat: function (statArr) {
var tpl = '<p>' + _('statFrom') + ': <a data-wshowed="0" href="#" class="b-link-fake b-link-fake__gray" id="show-wes-select">' +
wesGeneral.formattedDate(new Date(statArr[statArr.length - 1]['time'])) + '</a>', i;
tpl += '</p><div class="l-choose-dropdown js-date-popup" id="wes-select" style="display: none; left: 62.5px; top: 141.1667px;">' +
'<ul class="b-choose-dropdown">';
for (i = statArr.length - 1; i >= 0; i--) {
tpl +=
'<li class="js-ch-li b-choose-dropdown_item js-date-popup-li' + ((i == statArr.length - 1) ? ' b-choose-dropdown_item__active' : '') + '">' +
'<a data-stind="' + i + '" class="b-choose-dropdown_link wes-ch-date" href="#">' +
'<span class="js-date-format-utc">' + wesGeneral.formattedDate(new Date(statArr[i]['time'])) + '</span></a></li>';
}
tpl += '</ul><div class="b-choose-dropdown_arrow"></div></div>';
$('#wes-show-settings').parent().parent().after(tpl);
$('#show-wes-select').click(function (e) {
e.preventDefault();
if ($(this).attr('data-wshowed') == 0) {
$('#wes-select').show("fast");
$(this).attr('data-wshowed', 1);
} else {
$('#wes-select').hide("fast");
$(this).attr('data-wshowed', 0);
}
});
$(document).click(function (event) {
if ($(event.target).closest("#show-wes-select").length) return;
$('#wes-select').hide("fast");
$("#show-wes-select").attr('data-wshowed', 0);
event.stopPropagation();
});
$('.wes-ch-date').click(function (e) {
e.preventDefault();
$('.js-ch-li').removeClass('b-choose-dropdown_item__active');
$(this).parent().addClass('b-choose-dropdown_item__active');
$('#show-wes-select').html($(this).find("span:first").html());
wesAccount.paintCurPage(parseInt($(this).attr('data-stind')));
});
},
fillCurStat: function () {
function addData1(resp) {
if (resp['status'] === 'ok') {
var keys = Object.keys(resp['data']), key, i, j;
for (i = 0; i < keys.length; i++) {
key = keys[i];
wesAccount.curApiStat = resp['data'][key];
var apikeys = Object.keys(resp['data'][key]['statistics']['all']), apikey;
for (j = 0; j < apikeys.length; j++) {
apikey = apikeys[j];
wesAccount.curStat[apikey] = resp['data'][key]['statistics']['all'][apikey];
}
for (j = 0; j < stTypeKeys.length; j++) {
apikey = stTypeKeys[j];
wesAccount.curStat[apikey] = resp['data'][key]['statistics'][apikey];
wesAccount.curStat[apikey]['tanks'] = {};
}
var cEl = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-credit")[0];
cEl = cEl ? cEl.innerHTML : NaN;
wesAccount.curStat['credit'] = wesGeneral.toFl(cEl);
cEl = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-experience")[0];
cEl = cEl ? cEl.innerHTML : NaN;
wesAccount.curStat['exp'] = wesGeneral.toFl(cEl);
cEl = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-gold")[0];
cEl = cEl ? cEl.innerHTML : NaN;
wesAccount.curStat['gold'] = wesGeneral.toFl(cEl);
wesAccount.curStat['medals'] = {};
wesAccount.curStat['tanks'] = {};
wesAccount.curStat['time'] = (new Date()).getTime();
wesAccount.curStat['wgRating'] = parseInt(resp['data'][key]['global_rating']);
}
$.get("http://api." + document.location.host + "/wot/account/achievements/",
{
'application_id': wesApiKey,
'type': "jsonp",
'callback': "?",
"account_id": wesAccount.userId
}, addData2, "json");
}
}
function addData2(resp) {
if (resp['status'] === 'ok') {
var keys = Object.keys(resp['data']), key, i;
for (i = 0; i < keys.length; i++) {
key = keys[i];
for (var mkey in resp['data'][key]['achievements'])
wesAccount.curStat['medals'][mkey] = parseInt(resp['data'][key]['achievements'][mkey]);
for (mkey in resp['data'][key]['max_series'])
wesAccount.curStat['medals'][mkey] = parseInt(resp['data'][key]['max_series'][mkey]);
}
$.get("http://api." + document.location.host + "/wot/tanks/stats/",
{
'application_id': wesApiKey,
'type': "jsonp",
'callback': "?",
"account_id": wesAccount.userId,
"fields": "tank_id, all.battles, all.wins, all.damage_dealt, all.spotted, all.frags, all.capture_points, all.dropped_capture_points," +
"clan.battles, clan.wins, clan.damage_dealt, clan.spotted, clan.frags, clan.capture_points, clan.dropped_capture_points," +
"company.battles, company.wins, company.damage_dealt, company.spotted, company.frags, company.capture_points, company.dropped_capture_points," +
"stronghold_skirmish.battles, stronghold_skirmish.wins, stronghold_skirmish.damage_dealt, stronghold_skirmish.spotted, stronghold_skirmish.frags, stronghold_skirmish.capture_points, stronghold_skirmish.dropped_capture_points," +
"stronghold_defense.battles, stronghold_defense.wins, stronghold_defense.damage_dealt, stronghold_defense.spotted, stronghold_defense.frags, stronghold_defense.capture_points, stronghold_defense.dropped_capture_points," +
"team.battles, team.wins, team.damage_dealt, team.spotted, team.frags, team.capture_points, team.dropped_capture_points",
}, addData3, "json");
}
}
function addData3(resp) {
if (resp['status'] === 'ok') {
wesAccount.curApiTanks = resp;
var keys = Object.keys(resp['data']), key, i, j, k, tank, apikey;
for (i = 0; i < keys.length; i++) {
key = keys[i];
for (j = 0; j < resp['data'][key].length; j++) {
tank = resp['data'][key][j];
if (parseInt(tank['all']['battles']) > 0) {
wesAccount.curStat['tanks'][parseInt(tank['tank_id'])] = {
'b': tank['all']['battles'],
'w': tank['all']['wins'],
'd': tank['all']['damage_dealt'],
's': tank['all']['spotted'],
'f': tank['all']['frags'],
'c': tank['all']['capture_points'],
'p': tank['all']['dropped_capture_points']
};
};
for (k = 0; k < stTypeKeys.length; k++) {
apikey = stTypeKeys[k];
if (parseInt(tank[apikey]['battles']) > 0) {
wesAccount.curStat[apikey]['tanks'][parseInt(tank['tank_id'])] = {
'b': tank[apikey]['battles'],
'w': tank[apikey]['wins'],
'd': tank[apikey]['damage_dealt'],
's': tank[apikey]['spotted'],
'f': tank[apikey]['frags'],
'c': tank[apikey]['capture_points'],
'p': tank[apikey]['dropped_capture_points']
};
}
}
}
}
$.get('http://wot-noobs.ru/nubomer/?nick=' + wesAccount.userName
,function (data) {
var regexp = /<div class="kpd">(\d*\.*\d*)+<\/div>/gi,
res = regexp.exec(data);
if (res && res.length > 0) {
wesAccount.curStat['noobRat'] = Number(res[1]);
wesAccount.main();
}
}
, "html");
}
}
$.get("http://api." + document.location.host + "/wot/account/info/",
{
'application_id': wesApiKey,
'type': "jsonp",
'callback': "?",
"account_id": wesAccount.userId
}, addData1, "json");
},
FoundProc: function (Wins, Battles, digit, inv) {
var curPerc = (Wins / Battles * 100.0),
color = "90ffff",
nextD3 = Math.ceil(Wins / Battles * 100 + 0.5) - 0.5,
nextD1 = nextD3 - 1,
nextD2 = nextD3 - 0.5,
need_b1 = Math.floor(Battles - Wins * 100 / nextD1);
if (100 * Wins / Battles > nextD2)
var need_b2 = Math.floor(Battles - Wins * 100 / nextD2);
else
need_b2 = Math.ceil((nextD2 * Battles - Wins * 100) / (100 - nextD2));
var need_b3 = Math.ceil((nextD3 * Battles - Wins * 100) / (100 - nextD3));
if (inv) {
var v = 100 - curPerc;
} else {
v = curPerc;
}
if (digit)
curPerc = curPerc.toFixed(digit);
if (v < 101)
color = "D042F3";
if (v < 64.9)
color = "02C9B3";
if (v < 56.9)
color = "60FF00";
if (v < 51.9)
color = "F8F400";
if (v < 48.9)
color = "FE7903";
if (v < 46.9)
color = "FE0E00";
return ["<font color='" + color + "'>" + curPerc + "%</font>", Wins + "<font color='red'>/</font> <font color='green'>" + Battles + "</font><br>" + nextD1 + "% (" + need_b1 + ")<br>" + nextD2 + "% (" + need_b2 + ")<br>" + nextD3 + "% (" + need_b3 + ")"];
},
diffText: function (newVal, oldVal, fcol, withNewVal, inv) {
var diff = parseFloat(newVal) - parseFloat(oldVal), tcol1, tcol2;
if (fcol == undefined) {
fcol = 2;
}
if (withNewVal == undefined) {
withNewVal = true;
}
if (inv == undefined) {
inv = false;
}
if (!diff || parseFloat(diff.toFixed(fcol)) == 0) {
return (withNewVal ? newVal : '');
}
tcol1 = inv ? 'red' : 'green';
tcol2 = inv ? 'green' : 'red';
if (diff > 0) {
return (withNewVal ? newVal : '') + '<span class="wes-s-newcounter" style="color:' + tcol1 + ';">+' + diff.toFixed(fcol) + '</span>';
} else {
return (withNewVal ? newVal : '') + '<span class="wes-s-newcounter" style="color: ' + tcol2 + ';">' + diff.toFixed(fcol) + '</span>';
}
},
setRatingValue: function (wesRatingType, value, color, tooltip) {
wesRatingType = wesRatingType.toLocaleLowerCase();
color = color || 'default';
var $span = $('span.wes-eff-' + wesRatingType);
$span.html(value);
if (color && color != 'default') {
$span.css({'color': color});
}
if (tooltip) {
this.createTooltip($span, tooltip);
}
},
createTooltip: function (elem, tooltip) {
var $elem = $(elem),
hintName = $elem.attr('id') + '_tooltip';
if (typeof tooltip === 'boolean' && !tooltip) {
$('div.' + hintName).remove();
$elem.removeClass('js-tooltip');
} else if (typeof tooltip === 'string') {
$elem.after('<div id="' + hintName + '" class="b-tooltip-main"><span>' +
tooltip + '</span></div>'
).addClass('js-tooltip');
}
},
paintCurPage: function (statIndex) {
var curRating = wesGeneral.ratings(wesAccount.curStat),
oldStat,
oldRating,
oldDaypassed,
savedStat = wesGeneral.getLSData('wes_' + this.userId),
newStat = false,
daypassed = (new Date() - new Date(document.getElementsByClassName("js-date-format")[0].getAttribute("data-timestamp") * 1000)) / 1000 / 60 / 60 / 24,
myStat = wesGeneral.getLSData('wes_' + wesSettings.myID),
myLastStat = myStat ? myStat[myStat.length - 1] : false;
myRating = myLastStat? wesGeneral.ratings(myLastStat) : false;
if (statIndex >= 0) {
oldStat = savedStat[statIndex];
} else {
oldStat = savedStat ? savedStat[savedStat.length - 1] : false;
}
oldDaypassed = oldStat ? (oldStat['time'] - new Date(document.getElementsByClassName("js-date-format")[0].getAttribute("data-timestamp") * 1000)) / 1000 / 60 / 60 / 24 : false;
oldRating = (oldStat && (wesAccount.curStat.battles > oldStat.battles)) ? wesGeneral.ratings(oldStat) : curRating;
if (wesAccount.curStat.battles == oldStat.battles) {
$('div.wes-sb-new').css({'display': 'none'});
$('div.wes-s-expander[data-expand=newBat]').css({'display': 'none'});
$('div.wes-b-newbat').parent().css({'display': 'none'});
} else {
$('div.wes-sb-new').css({'display': 'block'});
$('div.wes-s-expander[data-expand=newBat]').css({'display': 'block'});
$('div.wes-b-newbat').parent().css({'display': 'block'});
}
if (this.userId == wesSettings.myID || myStat == undefined) {
$('div.wes-s-expander[data-expand=compStat]').css({'display': 'none'});
$('div.wes-b-compstat').parent().css({'display': 'none'});
} else {
$('div.wes-s-expander[data-expand=compStat]').css({'display': 'block'});
$('div.wes-b-compstat').parent().css({'display': 'block'});
}
if (oldStat) {
$('#sb-nb-title').html(_('blockNewBat'));
$('#sb-rb').html(_('rBattles') + ': ' + (wesAccount.curStat.battles - oldStat.battles));
$('#sb-nw').html(_('nWin') + ': ' + (wesAccount.curStat.wins - oldStat.wins));
if (wesAccount.curStat.wins - oldStat.wins != 0) {
newStat = {'tanks': {}, 'wgRating': 0,
'clan': {
'battles': 0, 'capture_points': 0, 'damage_dealt': 0, 'dropped_capture_points': 0, 'draws': 0, 'frags': 0, 'spotted': 0,
'wins': 0, 'xp': 0
}, 'company': {
'battles': 0, 'capture_points': 0, 'damage_dealt': 0, 'dropped_capture_points': 0, 'draws': 0, 'frags': 0, 'spotted': 0,
'wins': 0, 'xp': 0
}};
newStat['wins'] = parseInt(wesAccount.curStat.wins) - parseInt(oldStat.wins);
newStat['battles'] = parseInt(wesAccount.curStat.battles) - parseInt(oldStat.battles);
newStat['capture_points'] = parseInt(wesAccount.curStat.capture_points) - parseInt(oldStat.capture_points);
newStat['damage_dealt'] = parseInt(wesAccount.curStat.damage_dealt) - parseInt(oldStat.damage_dealt);
newStat['dropped_capture_points'] = parseInt(wesAccount.curStat.dropped_capture_points) - parseInt(oldStat.dropped_capture_points);
newStat['frags'] = parseInt(wesAccount.curStat.frags) - parseInt(oldStat.frags);
newStat['spotted'] = parseInt(wesAccount.curStat.spotted) - parseInt(oldStat.spotted);
newStat['xp'] = parseInt(wesAccount.curStat.xp) - parseInt(oldStat.xp);
var newWinVal = this.FoundProc(newStat['wins'], newStat['battles'], 2, false);
$('#sb-rw').html(' (' + newWinVal[0] + ')');
var medalsText = '<ul class="b-achivements clearfix" style="background: none; margin: 0 -10px 0 0; padding: 0;">',
tanksText = '<ul class="b-achivements clearfix" style="background: none; margin: 0 -10px 0 0; padding: 0;">';
if (wesAccount.curStat.medals) {
for (var medal in wesAccount.curStat.medals) {
var medLi = $('#js-achivement-' + medal),
medToolip = $('#js-achivement-' + medal + '_tooltip');
if (medLi && medToolip) {
var cMCount = 0;
if (oldStat.medals && medal in oldStat.medals && wesAccount.curStat.medals[medal] != oldStat.medals[medal]) {
cMCount = parseInt(wesAccount.curStat.medals[medal]) - parseInt(oldStat.medals[medal]);
} else if (oldStat.medals == undefined || !(medal in oldStat.medals)){
cMCount = parseInt(wesAccount.curStat.medals[medal]);
}
if (cMCount > 0) {
medalsText += '<li id="wes-sb-' + medal + '" class="b-achivements_item js-tooltip" style="margin: 10px 10px 0 0;">' +
'<img width="34" height="36" src="' + medLi.find('img:first').attr('src') + '">' +
'<div class="b-achivements_wrpr"><span class="b-achivements_num">' +
((cMCount > 1) ? '<span style="font-size: 60%;">' + cMCount + '</span>' : '') +
'</span></div>' +
'</li><div class="b-tooltip-main" id="wes-sb-' + medal + '_tooltip">' + medToolip.html() + '</div>';
}
}
}
}
if (oldStat.tanks != undefined) {
for (var tank in wesAccount.curStat.tanks) {
var tankTd = $('tr[data-vehicle-cd=' + tank + ']').prev(), newBattles = 0, newWins = 0;
if (tank in oldStat.tanks) {
newBattles = parseInt(wesAccount.curStat.tanks[tank].b) - parseInt(oldStat.tanks[tank].b);
newWins = parseInt(wesAccount.curStat.tanks[tank].w) - parseInt(oldStat.tanks[tank].w);
} else {
newBattles = parseInt(wesAccount.curStat.tanks[tank].b);
newWins = parseInt(wesAccount.curStat.tanks[tank].w)
}
if (tankTd && newBattles > 0) {
newStat['tanks'][tank] = {
'b': parseInt(wesAccount.curStat.tanks[tank].b) - ((tank in oldStat.tanks) ? parseInt(oldStat.tanks[tank].b) : 0),
'w': parseInt(wesAccount.curStat.tanks[tank].w) - ((tank in oldStat.tanks) ? parseInt(oldStat.tanks[tank].w) : 0),
'd': parseInt(wesAccount.curStat.tanks[tank].d) - ((tank in oldStat.tanks) ? parseInt(oldStat.tanks[tank].d) : 0),
's': parseInt(wesAccount.curStat.tanks[tank].s) - ((tank in oldStat.tanks) ? parseInt(oldStat.tanks[tank].s) : 0),
'f': parseInt(wesAccount.curStat.tanks[tank].f) - ((tank in oldStat.tanks) ? parseInt(oldStat.tanks[tank].f) : 0),
'c': parseInt(wesAccount.curStat.tanks[tank].c) - ((tank in oldStat.tanks) ? parseInt(oldStat.tanks[tank].c) : 0),
'p': parseInt(wesAccount.curStat.tanks[tank].p) - ((tank in oldStat.tanks) ? parseInt(oldStat.tanks[tank].p) : 0)
};
var winVal = this.FoundProc(newWins, newBattles, 2, false);
tanksText += '<li id="wes-sb-tank-' + tank + '" class="b-achivements_item js-tooltip" style="margin: 10px 10px 4px 0; padding-bottom: 12px;">' +
'<img width="61" height="17" src="' + tankTd.find('td:first').find('img:first').attr('src') + '">' +
'<div class="b-achivements_wrpr" style="bottom: -2px;"><span class="b-achivements_num">' +
'<span style="font-size: 60%;">' + newWins + '/' + newBattles + ' (' + winVal[0] + ')</span></span></div>' +
'</li><div class="b-tooltip-main" id="wes-sb-tank-' + tank + '_tooltip">' + tankTd.find('td:first').find('.b-name-vehicle').html() + '</div>';
}
}
}
medalsText += '</ul>';
tanksText += '</ul>';
$('#sb-medals').html(medalsText);
// $('#sb-tanks').html(tanksText);
var newRating = wesGeneral.ratings(newStat);
$('#sb-wn8').html('<span style="color: #' + newRating['wn8']['color'] + '">' + newRating['wn8']['value'] + '</span>');
$('#sb-wn6').html('<span style="color: #' + newRating['wn6']['color'] + '">' + newRating['wn6']['value'] + '</span>');
$('#sb-re').html('<span style="color: #' + newRating['eff']['color'] + '">' + newRating['eff']['value'] + '</span>');
$('#sb-pr').html('<span style="color: #' + newRating['pr']['color'] + '">' + newRating['pr']['value'] + '</span>');
$('#sb-xwn8').html('<span style="color: #' + newRating['wn8']['color'] + '">' + newRating['wn8']['xvm'] + '</span>');
$('#sb-xwn6').html('<span style="color: #' + newRating['wn6']['color'] + '">' + newRating['wn6']['xvm'] + '</span>');
$('#sb-xre').html('<span style="color: #' + newRating['eff']['color'] + '">' + newRating['eff']['xvm'] + '</span>');
$('#sb-xpr').html('<span style="color: #' + newRating['pr']['color'] + '">' + newRating['pr']['xvm'] + '</span>');
}
if (oldStat['gold'] && wesAccount.curStat['gold']) {
var curVal = parseInt(wesAccount.curStat['gold']) - parseInt(oldStat['gold']);
if (curVal) {
curVal = curVal > 0 ? '+' + curVal : '' + curVal;
$('#sb-gold').html(curVal).show();
}
}
if (oldStat['credit'] && wesAccount.curStat['credit']) {
curVal = parseInt(wesAccount.curStat['credit']) - parseInt(oldStat['credit']);
if (curVal) {
curVal = curVal > 0 ? '+' + curVal : '' + curVal;
$('#sb-credit').html(curVal).show();
}
}
if (oldStat['exp'] && wesAccount.curStat['exp']) {
curVal = parseInt(wesAccount.curStat['exp']) - parseInt(oldStat['exp']);
if (curVal) {
curVal = curVal > 0 ? '+' + curVal : '' + curVal;
$('#sb-experience').html(curVal).show();
}
}
if ((oldStat['gold'] && wesAccount.curStat['gold']) ||
(oldStat['credit'] && wesAccount.curStat['credit']) ||
(oldStat['exp'] && wesAccount.curStat['exp'])) {
$('div.currency-all').show();
}
}
this.setRatingValue('rWn8',
oldRating ? this.diffText(curRating['wn8']['value'], oldRating['wn8']['value']) : curRating['wn8']['value'],
'#' + curRating['wn8']['color'], curRating['wn8']['stepToNL']);
this.setRatingValue('rWn6',
oldRating ? this.diffText(curRating['wn6']['value'], oldRating['wn6']['value']) : curRating['wn6']['value'],
'#' + curRating['wn6']['color'], curRating['wn6']['stepToNL']);
this.setRatingValue('rEff',
oldRating ? this.diffText(curRating['eff']['value'], oldRating['eff']['value']) : curRating['eff']['value'],
'#' + curRating['eff']['color'], curRating['eff']['stepToNL']);
this.setRatingValue('rKwg',
oldRating ? this.diffText(curRating['wg']['value'], oldRating['wg']['value'], 0) : curRating['wg']['value'],
'#' + curRating['wg']['color'], curRating['wg']['stepToNL']);
this.setRatingValue('rNag',
oldRating ? this.diffText(curRating['pr']['value'], oldRating['pr']['value']) : curRating['pr']['value'],
'#' + curRating['pr']['color'], curRating['pr']['stepToNL']);
this.setRatingValue('rArmor',
oldRating ? this.diffText(curRating['bs']['value'], oldRating['bs']['value']) : curRating['bs']['value'],
'#' + curRating['bs']['color'], curRating['bs']['stepToNL']);
this.setRatingValue('rNoob',
oldRating ? this.diffText(curRating['noob']['value'], oldRating['noob']['value']) : curRating['noob']['value'],
'#' + curRating['noob']['color'], curRating['noob']['stepToNL']);
this.setRatingValue('xrWn8',
oldRating ? this.diffText(curRating['wn8']['xvm'], oldRating['wn8']['xvm']) : curRating['wn8']['xvm'],
'#' + curRating['wn8']['color'], curRating['wn8']['xvmStepToNL']);
this.setRatingValue('xrWn6',
oldRating ? this.diffText(curRating['wn6']['xvm'], oldRating['wn6']['xvm']) : curRating['wn6']['xvm'],
'#' + curRating['wn6']['color'], curRating['wn6']['xvmStepToNL']);
this.setRatingValue('xrEff',
oldRating ? this.diffText(curRating['eff']['xvm'], oldRating['eff']['xvm']) : curRating['eff']['xvm'],
'#' + curRating['eff']['color'], curRating['eff']['xvmStepToNL']);
this.setRatingValue('xrKwg',
oldRating ? this.diffText(curRating['wg']['xvm'], oldRating['wg']['xvm']) : curRating['wg']['xvm'],
'#' + curRating['wg']['color'], curRating['wg']['xvmStepToNL']);
this.setRatingValue('xrNag',
oldRating ? this.diffText(curRating['pr']['xvm'], oldRating['pr']['xvm']) : curRating['pr']['xvm'],
'#' + curRating['pr']['color'], curRating['pr']['xvmStepToNL']);
this.setRatingValue('xrArmor',
oldRating ? this.diffText(curRating['bs']['xvm'], oldRating['bs']['xvm']) : curRating['bs']['xvm'],
'#' + curRating['bs']['color'], curRating['bs']['xvmStepToNL']);
this.setRatingValue('xrNoob',
oldRating ? this.diffText(curRating['noob']['xvm'], oldRating['noob']['xvm']) : curRating['noob']['xvm'],
'#' + curRating['noob']['color'], curRating['noob']['xvmStepToNL']);
this.setRatingValue('rBattles',
oldStat ? this.diffText(wesAccount.curStat.battles, oldStat.battles, 0) : wesAccount.curStat.battles);
this.setRatingValue('rBatteDay',
oldStat ? this.diffText((wesAccount.curStat.battles / daypassed).toFixed(2), (oldStat.battles / oldDaypassed).toFixed(2)) : (wesAccount.curStat.battles / daypassed).toFixed(2),
'', 'Дней: ' + daypassed.toFixed());
this.setRatingValue('rMedLvl',
oldRating ? this.diffText(curRating.avg.toFixed(2), oldRating.avg.toFixed(2)) : curRating.avg.toFixed(2));
winVal = this.FoundProc(wesAccount.curStat.wins, wesAccount.curStat.battles, 2, false);
this.setRatingValue('rWin',
winVal[0] + (oldStat ?
this.diffText(wesAccount.curStat.wins / wesAccount.curStat.battles * 100.0, oldStat.wins / oldStat.battles * 100.0, 2, false) : ''),
'', winVal[1]);
var losB = wesAccount.curStat.battles - wesAccount.curStat.wins - wesAccount.curStat.draws,
looseVal = this.FoundProc(losB, wesAccount.curStat.battles, 2, true),
oldLosB = oldStat ? oldStat.battles - oldStat.wins - oldStat.draws : 0;
this.setRatingValue('rLoose',
looseVal[0] + (oldStat ?
this.diffText(losB / wesAccount.curStat.battles * 100.0, oldLosB / oldStat.battles * 100.0, 2, false, true) : ''),
'', looseVal[1]);
this.setRatingValue('rSurv',
(wesAccount.curStat.survived_battles / wesAccount.curStat.battles * 100.0).toFixed(2) + '%' + (oldStat ? this.diffText((wesAccount.curStat.survived_battles / wesAccount.curStat.battles * 100.0).toFixed(2), (oldStat.survived_battles / oldStat.battles * 100.0).toFixed(2), 2, false) : ''),
'', wesAccount.curStat.survived_battles + '/' + wesAccount.curStat.battles);
var hitsVal = this.FoundProc(wesAccount.curStat.hits, wesAccount.curStat.shots, 2, false);
this.setRatingValue('rHit',
hitsVal[0] + (oldStat ?
this.diffText(wesAccount.curStat.hits / wesAccount.curStat.shots * 100.0, oldStat.hits / oldStat.shots * 100.0, 2, false) : ''),
'', hitsVal[1]);
this.setRatingValue('rExp',
oldStat ? this.diffText((wesAccount.curStat.xp / wesAccount.curStat.battles).toFixed(2), (oldStat.xp / oldStat.battles).toFixed(2)) : (wesAccount.curStat.xp / wesAccount.curStat.battles).toFixed(2),
'', wesAccount.curStat.xp + '/' + wesAccount.curStat.battles);
this.setRatingValue('rDamage',
oldStat ? this.diffText((wesAccount.curStat.damage_dealt / wesAccount.curStat.battles).toFixed(2), (oldStat.damage_dealt / oldStat.battles).toFixed(2)) : (wesAccount.curStat.damage_dealt / wesAccount.curStat.battles).toFixed(2),
'', wesAccount.curStat.damage_dealt + '/' + wesAccount.curStat.battles);
this.setRatingValue('rFrag',
oldStat ? this.diffText((wesAccount.curStat.frags / wesAccount.curStat.battles).toFixed(2), (oldStat.frags / oldStat.battles).toFixed(2)) : (wesAccount.curStat.frags / wesAccount.curStat.battles).toFixed(2),
'', wesAccount.curStat.frags + '/' + wesAccount.curStat.battles);
this.setRatingValue('rSpot',
oldStat ? this.diffText((wesAccount.curStat.spotted / wesAccount.curStat.battles).toFixed(2), (oldStat.spotted / oldStat.battles).toFixed(2)) : (wesAccount.curStat.spotted / wesAccount.curStat.battles).toFixed(2),
'', wesAccount.curStat.spotted + '/' + wesAccount.curStat.battles);
this.setRatingValue('rCap',
oldStat ? this.diffText((wesAccount.curStat.capture_points / wesAccount.curStat.battles).toFixed(2), (oldStat.capture_points / oldStat.battles).toFixed(2)) : (wesAccount.curStat.capture_points / wesAccount.curStat.battles).toFixed(2),
'', wesAccount.curStat.capture_points + '/' + wesAccount.curStat.battles);
this.setRatingValue('rDeff',
oldStat ? this.diffText((wesAccount.curStat.dropped_capture_points / wesAccount.curStat.battles).toFixed(2), (oldStat.dropped_capture_points / oldStat.battles).toFixed(2)) : (wesAccount.curStat.dropped_capture_points / wesAccount.curStat.battles).toFixed(2),
'', wesAccount.curStat.dropped_capture_points + '/' + wesAccount.curStat.battles);
var nDate = wesGeneral.formattedDate(new Date(parseInt(wesAccount.curApiStat['last_battle_time']) * 1000));
this.setRatingValue('lastBattle', nDate);
nDate = wesGeneral.formattedDate(new Date(parseInt(wesAccount.curApiStat['updated_at']) * 1000));
this.setRatingValue('lastUpdate', nDate);
this.setRatingValue('maxDamage', wesAccount.curApiStat['statistics']['all']['max_damage']);
this.setRatingValue('maxFrags', wesAccount.curApiStat['statistics']['all']['max_frags']);
this.setRatingValue('maxXp', wesAccount.curApiStat['statistics']['all']['max_xp']);
this.setRatingValue('treesCut', wesAccount.curApiStat['statistics']['trees_cut']);
this.setRatingValue('nBattles__old', oldStat.battles);
this.setRatingValue('nBattles__cur', wesAccount.curStat.battles);
this.setRatingValue('nWin__old', oldStat.wins);
this.setRatingValue('nWin__cur', wesAccount.curStat.wins);
this.setRatingValue('nWinRatio__old', this.FoundProc(oldStat.wins, oldStat.battles, 2, false)[0]);
this.setRatingValue('nWinRatio__cur', this.FoundProc(wesAccount.curStat.wins, wesAccount.curStat.battles, 2, false)[0]);
this.setRatingValue('nExp__old', (oldStat.xp / oldStat.battles).toFixed(2));
this.setRatingValue('nExp__cur', (wesAccount.curStat.xp / wesAccount.curStat.battles).toFixed(2));
this.setRatingValue('nMedLvl__old', oldRating.avg.toFixed(2));
this.setRatingValue('nMedLvl__cur', curRating.avg.toFixed(2));
this.setRatingValue('nDamage__old', (oldStat.damage_dealt / oldStat.battles).toFixed(2));
this.setRatingValue('nDamage__cur', (wesAccount.curStat.damage_dealt / wesAccount.curStat.battles).toFixed(2));
this.setRatingValue('nFrag__old', (oldStat.frags / oldStat.battles).toFixed(2));
this.setRatingValue('nFrag__cur', (wesAccount.curStat.frags / wesAccount.curStat.battles).toFixed(2));
this.setRatingValue('nSpot__old', (oldStat.spotted / oldStat.battles).toFixed(2));
this.setRatingValue('nSpot__cur', (wesAccount.curStat.spotted / wesAccount.curStat.battles).toFixed(2));
this.setRatingValue('nCap__old', (oldStat.capture_points / oldStat.battles).toFixed(2));
this.setRatingValue('nCap__cur', (wesAccount.curStat.capture_points / wesAccount.curStat.battles).toFixed(2));
this.setRatingValue('nDeff__old', (oldStat.dropped_capture_points / oldStat.battles).toFixed(2));
this.setRatingValue('nDeff__cur', (wesAccount.curStat.dropped_capture_points / wesAccount.curStat.battles).toFixed(2));
if (newRating) {
this.setRatingValue('nBattles__new', (wesAccount.curStat.battles - oldStat.battles));
this.setRatingValue('nWin__new', (wesAccount.curStat.wins - oldStat.wins));
this.setRatingValue('nWinRatio__new', this.FoundProc((wesAccount.curStat.wins - oldStat.wins), (wesAccount.curStat.battles - oldStat.battles), 2, false)[0] + this.diffText((wesAccount.curStat.wins - oldStat.wins) / (wesAccount.curStat.battles - oldStat.battles) * 100.0, oldStat.wins / oldStat.battles * 100.0, 2, false));
this.setRatingValue('nExp__new', ((wesAccount.curStat.xp - oldStat.xp) / (wesAccount.curStat.battles - oldStat.battles)).toFixed(2) + this.diffText(((wesAccount.curStat.xp - oldStat.xp) / (wesAccount.curStat.battles - oldStat.battles)), (oldStat.xp / oldStat.battles), 2, false));
this.setRatingValue('nMedLvl__new', newRating.avg.toFixed(2) + this.diffText(newRating.avg, oldRating.avg, 2, false));
this.setRatingValue('nDamage__new', ((wesAccount.curStat.damage_dealt - oldStat.damage_dealt) / (wesAccount.curStat.battles - oldStat.battles)).toFixed(2) + this.diffText(((wesAccount.curStat.damage_dealt - oldStat.damage_dealt) / (wesAccount.curStat.battles - oldStat.battles)), (oldStat.damage_dealt / oldStat.battles), 2, false));
this.setRatingValue('nFrag__new', ((wesAccount.curStat.frags - oldStat.frags) / (wesAccount.curStat.battles - oldStat.battles)).toFixed(2) + this.diffText(((wesAccount.curStat.frags - oldStat.frags) / (wesAccount.curStat.battles - oldStat.battles)), (oldStat.frags / oldStat.battles), 2, false));
this.setRatingValue('nSpot__new', ((wesAccount.curStat.spotted - oldStat.spotted) / (wesAccount.curStat.battles - oldStat.battles)).toFixed(2) + this.diffText(((wesAccount.curStat.spotted - oldStat.spotted) / (wesAccount.curStat.battles - oldStat.battles)), (oldStat.spotted / oldStat.battles), 2, false));
this.setRatingValue('nCap__new', ((wesAccount.curStat.capture_points - oldStat.capture_points) / (wesAccount.curStat.battles - oldStat.battles)).toFixed(2) + this.diffText(((wesAccount.curStat.capture_points - oldStat.capture_points) / (wesAccount.curStat.battles - oldStat.battles)), (oldStat.capture_points / oldStat.battles), 2, false));
this.setRatingValue('nDeff__new', ((wesAccount.curStat.dropped_capture_points - oldStat.dropped_capture_points) / (wesAccount.curStat.battles - oldStat.battles)).toFixed(2) + this.diffText(((wesAccount.curStat.dropped_capture_points - oldStat.dropped_capture_points) / (wesAccount.curStat.battles - oldStat.battles)), (oldStat.dropped_capture_points / oldStat.battles), 2, false));
this.setRatingValue('nEff__new', newRating['eff']['value'] + this.diffText(newRating['eff']['value'], oldRating['eff']['value'], 2, false), '#' + newRating['eff']['color'], newRating['eff']['stepToNL']);
this.setRatingValue('nWn6__new', newRating['wn6']['value'] + this.diffText(newRating['wn6']['value'], oldRating['wn6']['value'], 2, false), '#' + newRating['wn6']['color'], newRating['wn6']['stepToNL']);
this.setRatingValue('nWn8__new', newRating['wn8']['value'] + this.diffText(newRating['wn8']['value'], oldRating['wn8']['value'], 2, false), '#' + newRating['wn8']['color'], newRating['wn8']['stepToNL']);
};
this.setRatingValue('nEff__old', oldRating['eff']['value'], '#' + oldRating['eff']['color'], oldRating['eff']['stepToNL']);
this.setRatingValue('nEff__cur', curRating['eff']['value'], '#' + curRating['eff']['color'], curRating['eff']['stepToNL']);
this.setRatingValue('nWn6__old', oldRating['wn6']['value'], '#' + oldRating['wn6']['color'], oldRating['wn6']['stepToNL']);
this.setRatingValue('nWn6__cur', curRating['wn6']['value'], '#' + curRating['wn6']['color'], curRating['wn6']['stepToNL']);
this.setRatingValue('nWn8__old', oldRating['wn8']['value'], '#' + oldRating['wn8']['color'], oldRating['wn8']['stepToNL']);
this.setRatingValue('nWn8__cur', curRating['wn8']['value'], '#' + curRating['wn8']['color'], curRating['wn8']['stepToNL']);
if (myLastStat) {
this.setRatingValue('nBattles__my', myLastStat.battles + this.diffText(myLastStat.battles, wesAccount.curStat.battles, 0, false));
this.setRatingValue('nWin__my', myLastStat.wins + this.diffText(myLastStat.wins, wesAccount.curStat.wins, 0, false));
this.setRatingValue('nWinRatio__my', this.FoundProc(myLastStat.wins, myLastStat.battles, 2, false)[0] + this.diffText(myLastStat.wins / myLastStat.battles * 100.0, wesAccount.curStat.wins / wesAccount.curStat.battles * 100.0, 2, false));
this.setRatingValue('nExp__my', (myLastStat.xp / myLastStat.battles).toFixed(2) + this.diffText((myLastStat.xp / myLastStat.battles), (wesAccount.curStat.xp / wesAccount.curStat.battles), 2, false));
this.setRatingValue('nMedLvl__my', myRating.avg.toFixed(2) + this.diffText(myRating.avg, curRating.avg, 2, false));
this.setRatingValue('nDamage__my', (myLastStat.damage_dealt / myLastStat.battles).toFixed(2) + this.diffText((myLastStat.damage_dealt / myLastStat.battles), (wesAccount.curStat.damage_dealt / wesAccount.curStat.battles), 2, false));
this.setRatingValue('nFrag__my', (myLastStat.frags / myLastStat.battles).toFixed(2) + this.diffText((myLastStat.frags / myLastStat.battles), (wesAccount.curStat.frags / wesAccount.curStat.battles), 2, false));
this.setRatingValue('nSpot__my', (myLastStat.spotted / myLastStat.battles).toFixed(2) + this.diffText((myLastStat.spotted / myLastStat.battles), (wesAccount.curStat.spotted / wesAccount.curStat.battles), 2, false));
this.setRatingValue('nCap__my', (myLastStat.capture_points / myLastStat.battles).toFixed(2) + this.diffText((myLastStat.capture_points / myLastStat.battles), (wesAccount.curStat.capture_points / wesAccount.curStat.battles), 2, false));
this.setRatingValue('nDeff__my', (myLastStat.dropped_capture_points / myLastStat.battles).toFixed(2) + this.diffText((myLastStat.dropped_capture_points / myLastStat.battles), (wesAccount.curStat.dropped_capture_points / wesAccount.curStat.battles), 2, false));
this.setRatingValue('nEff__my', myRating['eff']['value'] + this.diffText(myRating['eff']['value'], curRating['eff']['value'], 2, false), '#' + myRating['eff']['color']);
this.setRatingValue('nWn6__my', myRating['wn6']['value'] + this.diffText(myRating['wn6']['value'], curRating['wn6']['value'], 2, false), '#' + myRating['wn6']['color']);
this.setRatingValue('nWn8__my', myRating['wn8']['value'] + this.diffText(myRating['wn8']['value'], curRating['wn8']['value'], 2, false), '#' + myRating['wn8']['color']);
}
},
main: function () {
var savedStat;
if (wesSettings.myID === 0 && $('.current-page').length) {
wesSettings.myID = this.userId;
wesGeneral.setLSData('wesSettings', wesSettings);
}
wesAccount.wbeff = new WBEff();
savedStat = wesGeneral.getLSData('wes_' + this.userId);
if (savedStat && wesSettings.players[this.userId] == undefined) {
wesSettings.players[this.userId] = this.userName;
wesGeneral.setLSData('wesSettings', wesSettings);
}
this.addScriptInfo();
this.createUserMenu();
document.getElementsByClassName('b-userblock-wrpr')[0].style.marginBottom = '0px';
new WrappableBlock('pers', {
start: $('div.b-personal-link').parent().parent()
});
new WrappableBlock('speed', {
start: 'div.b-user-block.b-user-block__sparks'
});
if ($('#js-knockout-fame-points').length) {
new WrappableBlock('hall', {
start: $('#js-knockout-fame-points').prev(),
end: $('#js-knockout-fame-points').next().next().next()
});
} else if ($('p.b-fame-message').length){
new WrappableBlock('hall', {
start: $('p.b-fame-message').parent(),
end: $('p.b-fame-message').parent().next()
});
}
new WrappableBlock('achiev', {
start: 'div.js-all-achievements',
end: $('div.js-all-achievements').next()
});
new WrappableBlock('common', {
start: $('div.b-result-classes').parent(),
end: $('div.b-result-classes').parent().next()
});
new WrappableBlock('diagr', {
start: 'div.b-diagrams-sector',
end: $('div.b-diagrams-sector').next()
});
new WrappableBlock('rat', {
start: '#js-knockout-ratings',
end: $('#js-knockout-ratings').next()
});
new WrappableBlock('veh', {
start: $('#js-vehicle-details-template').prev(),
end: $('#js-vehicle-details-template').next().next().next()
});
if (savedStat) {
wesAccount.sbnew = new SBNewBattles();
wesAccount.wbnew = new WBNew();
}
wesAccount.compStat = new WBCompStat();
if (savedStat) {
this.createChangeStat(savedStat);
var isChangedStat = false;
for (i = savedStat.length - 1; i >= 0; i--) {
for (j = 0; j < stTypeKeys.length; j++) {
var apikey;
apikey = stTypeKeys[j];
if (savedStat[i][apikey] != undefined && Array.isArray(savedStat[i][apikey]['tanks'])) {
if (savedStat[i][apikey]['tanks'].length > 0) {
savedStat[i][apikey]['tanks'] = savedStat[i][apikey]['tanks'].reduce(function(o, v, i) {
if (v) {
o[i] = v;
}
return o;
}, {});
} else {
savedStat[i][apikey]['tanks'] = {};
}
isChangedStat = true;
}
}
}
if (isChangedStat) {
wesGeneral.setLSData('wes_' + wesAccount.userId, savedStat);
}
}
this.paintCurPage(-1);
}
};
//Основное тело скрипта
$(document).ready(function () {
$(document).on("click", "#wes-remove-stat", function (event) {
event.preventDefault();
if (confirm(_('confirmDelete'))) {
wesGeneral.showWait(_("sWaitText"));
wesGeneral.deleteLSData('wes_' + wesAccount.userId);
for (var key in wesSettings.players) {
if (key == wesAccount.userId) {
delete wesSettings.players[key];
}
}
wesGeneral.setLSData('wesSettings', wesSettings);
window.location.reload();
}
});
$(document).on("click", "#wes-save-stat", function (event) {
event.preventDefault();
wesGeneral.showWait(_("sWaitText"));
var savedStat = wesGeneral.getLSData('wes_' + wesAccount.userId),
lastStat = savedStat ? savedStat[savedStat.length - 1] : false;
if (lastStat) {
if (lastStat.battles == wesAccount.curStat.battles) {
wesGeneral.hideWait();
wesGeneral.showError(_('noNewBattles'));
} else {
savedStat.push(wesAccount.curStat);
console.log(wesAccount.curStat);
if (wesSettings.scount > 0 && savedStat.length > wesSettings.scount) {
savedStat.splice(0, savedStat.length - wesSettings.scount);
}
wesGeneral.setLSData('wes_' + wesAccount.userId, savedStat);
window.location.reload();
}
} else {
wesGeneral.setLSData('wes_' + wesAccount.userId, [wesAccount.curStat]);
wesSettings.players[wesAccount.userId] = wesAccount.userName;
wesGeneral.setLSData('wesSettings', wesSettings);
window.location.reload();
}
});
$(document).on("click", "#wes-close-error", function (event) {
event.preventDefault();
$('.wes-overlay').hide();
$('#wes-error').hide();
});
$(document).on("click", "#wes-error-close", function (event) {
event.preventDefault();
$('.wes-overlay').hide();
$('#wes-error').hide();
});
$(document).on("click", "#wes-show-settings", function (event) {
event.preventDefault();
var lsSize = wesGeneral.calculateCurrentLocalStorageSize(), uIds = Object.keys(wesSettings.players), i,
key, sCount, serv = wesGeneral.getServ();
wesGeneral.updateProgressBar('ls-size', lsSize, 5000);
$('#wes-ls-size-text').html(_('lsSize') + ' ' +
String(Math.round(lsSize / 5000 * 100)) + '% (' + String(lsSize) + 'Kb)');
$("#wes-tab-content-3 > div")[0].innerHTML = '';
for (i = 0; i < uIds.length; i++) {
key = parseInt(uIds[i]);
sCount = wesGeneral.getLSData('wes_' + key);
if (sCount) sCount = sCount.length; else sCount = 0;
//if (key !== wesSettings.myID)
$("#wes-tab-content-3 > div")[0].innerHTML += '<p>' +
'<a href="http://worldoftanks.' + serv + '/community/accounts/' + key +
'/" target="_blank">' + wesSettings.players[key] + '</a>' +
'<span style="padding-left: 5px;">(' + _("saveCount") + ': ' + sCount + '):</span>' +
'<input style="margin-left: 5px;width: 200px;" type="text" id="wes-settitngs-player-' + key + '" value="' + wesSettings.players[key] + '"></p>';
}
$('#wes-settings-save-count').val(wesSettings.scount);
$('#wes-settings-graphs').val(wesSettings.graphs);
$('#wes-settings-lang').val(wesSettings.locale);
for (key in wesSettings.blocks) $('#wes-settings-block-' + key).val(wesSettings.blocks[key]);
$('.wes-overlay').show();
$('#wes-settings').show();
});
$(document).on("click", "#wes-close-settings", function (event) {
event.preventDefault();
$('.wes-overlay').hide();
$('#wes-settings').hide();
});
$(document).on("click", ".wes-tabs span", function (event) {
event.preventDefault();
$('.wes-active-tab').removeClass('wes-active-tab');
$(this).addClass('wes-active-tab');
$('.wes-tab-content').hide();
$('#wes-tab-content-' + $(this).attr('tabId')).show();
});
$(document).on("click", "#wes-settings-save", function (event) {
event.preventDefault();
wesGeneral.showWait(_("sWaitText"));
var scount = $('#wes-settings-save-count').val(), key, stat;
if (scount > 0 && scount < wesSettings.scount) {
for (key in wesSettings.players) {
stat = wesGeneral.getLSData('wes_' + key);
if (stat && stat.length > scount) {
stat.splice(0, stat.length - scount);
wesGeneral.setLSData('wes_' + key, stat);
}
}
}
wesSettings.scount = scount;
wesSettings.locale = $('#wes-settings-lang').val();
wesSettings.graphs = $('#wes-settings-graphs').val();
for (key in wesSettings.players) {
wesSettings.players[key] = $('#wes-settitngs-player-' + key).val();
}
for (key in wesSettings.blocks) {
wesSettings.blocks[key] = $('#wes-settings-block-' + key).val();
}
wesGeneral.setLSData('wesSettings', wesSettings);
window.location.reload();
});
$(document).on("wesGeneralReady", "#wes-wait", function (event) {
event.preventDefault();
if (!$(this).attr('wesGeneralReady')) {
$(this).attr('wesGeneralReady', 1);
if (window.location.href.indexOf("accounts") !== -1) {
//try {
wesAccount.fillCurStat();
//} catch (e) {
// wesGeneral.showError(e.message + ': ' + e.lineNumber);
//}
}
}
});
if (window.location.host.startsWith("worldoftanks")) {
//try {
wesGeneral.main();
//} catch (e) {
// wesGeneral.showError(e.message + ': ' + e.lineNumber);
//}
}
});
//} catch (e) {
// console.log(e.message + ': ' + e.lineNumber);
//}