您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds some usable fields for MMO game World of Tanks user's page
// ==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); //}