WoTStatScript

More info for World of Tanks profile page. Updated for the new style.

当前为 2014-06-11 提交的版本,查看 最新版本

  1. ¨// ==UserScript==
  2. // @name WoTStatScript
  3. // @version 0.9.1.901
  4. // @description More info for World of Tanks profile page. Updated for the new style.
  5. // @author Orrie
  6. // @contributor Boom_Box
  7. // @namespace http://forum.worldoftanks.eu/index.php?/topic/263423-
  8. // @icon http://dl.dropboxusercontent.com/u/12497046/wot/projects/statscript/img/icon.png
  9. // @match http://worldoftanks.eu/*/*/*
  10. // @match http://worldoftanks.com/*/*/*
  11. // @match http://worldoftanks.ru/*/*/*
  12. // @match http://worldoftanks.asia/*/*/*
  13. // @match http://worldoftanks.kr/*/*/*
  14. // @include http://worldoftanks.eu/*/*/*
  15. // @include http://worldoftanks.com/*/*/*
  16. // @include http://worldoftanks.ru/*/*/*
  17. // @include http://worldoftanks.asia/*/*/*
  18. // @include http://worldoftanks.kr/*/*/*
  19. // @grant GM_xmlhttpRequest
  20. // ==/UserScript==
  21. /*
  22. Changelog: http://dl.dropboxusercontent.com/u/12497046/wot/projects/statscript/WoTStatScript-changelog.txt
  23. */
  24.  
  25. // script variables
  26. var scripthost = "https://greasyfork.org/scripts/661-wotstatscript";
  27. threadlink = "http://forum.worldoftanks.eu/index.php?/topic/263423-";
  28. sid = "orrie_js_174043"; // noobmeter api id
  29. nm_host = "http://noobmeter.com";
  30. scriptlink = "<div class='b-scriptlink'><a target='_blank' href="+scripthost+">Script</a> version 0.9.1.901 - <a target='_blank' href="+threadlink+">Thread</a></div>";
  31.  
  32. // get server info and webpage
  33. var wg_host = document.location.host;
  34. server = wg_host.match(/\.([^\.]+)$/)[1];
  35. wg_path = document.location.pathname;
  36. wg_accounts = wg_path.match(/(community|uc)\/accounts\/\d+/);
  37. if (wg_path.match(/(edit|battles|provinces|reserve|treasury)/)) {
  38. wg_clans = null;
  39. }
  40. else {
  41. wg_clans = wg_path.match(/(community|uc)\/clans\/[\w\-]+/);
  42. }
  43.  
  44. // determine browser types, beware inconsistencies, no method is reliable.
  45. var gecko = /Mozilla/.test(navigator.appCodeName), // true for ff (and chrome lol)
  46. opera = /Opera/.test(navigator.appName), // only true for opera
  47. chrome = /Chrome/.test(navigator.userAgent);
  48. if (opera || chrome) { gecko = false; }
  49.  
  50. // globally inserting functions into head as scripts
  51. var scripts = [copyClipboard];
  52. for (i=0; i<scripts.length; ++i) {
  53. var script = document.createElement('script');
  54. script.className = "wotstatscript";
  55. script.type = "text/javascript";
  56. script.textContent = scripts[i].toString();
  57. document.head.appendChild(script);
  58. }
  59.  
  60. // global colour defines
  61. var stat = (function() {
  62. var color = {
  63. sup_uni: "5A3175", // super unicum
  64. unicum: "6A4B9F", // unicum
  65. great: "4A92B7", // great
  66. v_good: "4C762E", // very good
  67. good: "589031", // good
  68. avg: "D7B600", // average
  69. b_avg: "D84300", // below average
  70. bad: "D00900", // bad
  71. v_bad: "940000", // very bad
  72. none: "6B6B6B" // default gray
  73. };
  74. return { color: color };
  75. })();
  76.  
  77. // colour scale array
  78. var colStatArr = [
  79. { color: stat.color.sup_uni, wn8: 2900, scale_wn8: 100, wn7: 2050, scale_wn7: 97.56, eff: 2050, scale_eff: 99.67, nm: 2000, battles: 25000, winrate: 65, survrate: 50, hitrate: 80 },
  80. { color: stat.color.unicum, wn8: 2350, scale_wn8: 87.96, wn7: 1850, scale_wn7: 90.31, eff: 1800, scale_eff: 94.94, nm: 1950, battles: 21000, winrate: 60, survrate: 45, hitrate: 75 },
  81. { color: stat.color.great, wn8: 1900, scale_wn8: 73.54, wn7: 1550, scale_wn7: 74.56, eff: 1500, scale_eff: 78.50, nm: 1750, battles: 17000, winrate: 57, survrate: 40, hitrate: 70 },
  82. { color: stat.color.v_good, wn8: 1600, scale_wn8: 62.72, wn7: 1350, scale_wn7: 62.75, battles: 13000, winrate: 54, survrate: 35, hitrate: 65 },
  83. { color: stat.color.good, wn8: 1250, scale_wn8: 50.21, wn7: 1100, scale_wn7: 48.21, eff: 1200, scale_eff: 56.71, nm: 1450, battles: 10000, winrate: 52, survrate: 30, hitrate: 60 },
  84. { color: stat.color.avg, wn8: 900, scale_wn8: 38.33, wn7: 900, scale_wn7: 37.44, eff: 900, scale_eff: 36.26, nm: 1250, battles: 7000, winrate: 48, survrate: 25, hitrate: 50 },
  85. { color: stat.color.b_avg, wn8: 600, scale_wn8: 28.07, wn7: 700, scale_wn7: 27.69, eff: 600, scale_eff: 14.42, nm: 1150, battles: 3000, winrate: 46, survrate: 20, hitrate: 45 },
  86. { color: stat.color.bad, wn8: 300, scale_wn8: 16.13, wn7: 500, scale_wn7: 18.87, battles: 1000, winrate: 43, survrate: 15, hitrate: 40 },
  87. { color: stat.color.v_bad, wn8: 0, scale_wn8: 0, wn7: 0, scale_wn7: 0, eff: 0, scale_eff: 0, nm: 0, battles: 0, winrate: 0, survrate: 0, hitrate: 0 }
  88. ];
  89.  
  90. // localization
  91. // cz-czech - Crabt33
  92. // de-german - ArtiOpa and Crakker
  93. // fr-french - SuperPommeDeTerre
  94. // pl-polish - KeluMocy
  95. // ru-russian - dimon222
  96. var locale = {
  97. // profile page
  98. p01: { lang: "Go to Bottom", ru: "Пролистать вниз", cz: "Konec stránky", de: "nach unten", fr: "Aller à la fin", pl: "Koniec strony" },
  99. p02: { lang: "Go to Top", ru: "Пролистать наверх", cz: "Začátek stránky", de: "nach oben", fr: "Aller au début", pl: "Początek strony" },
  100. p03: { lang: "Days Ago", ru: "Дней назад", cz: "dnů", de: "Tage in WOT aktiv", fr: "jours", pl: "Dni temu" },
  101. p04: { lang: "Player Stats:", ru: "Статистика игрока:", cz: "Stat. hráče:", de: "Spielerstatistik", fr: "Statistiques du joueur:", pl: "Statystyki gracza:" },
  102. p05: { lang: "Signature:", ru: "Подпись:", cz: "Podpis:", de: "Forumsignatur", fr: "Signature:", pl: "Sygnatura do forum:" },
  103. p06: { lang: "Light", ru: "Светлые тона", cz: "Světlý", de: "Signatur Weiß", fr: "Claire", pl: "Jasna" },
  104. p07: { lang: "Dark", ru: "Тёмные тона", cz: "Tmavý", de: "Signatur Schwarz", fr: "Foncée", pl: "Ciemna" },
  105. p08: { lang: "Replays:", ru: "Реплеи:", cz: "Záznamy:", de: "Wiederholung", fr: "Replays:", pl: "Powtórki:" },
  106. p09: { lang: "Victories", ru: "Победы", cz: "Vítězství", de: "Siege", fr: "Victoires", pl: "Zwycięstw" },
  107. p10: { lang: "Battles Participated", ru: "Участий в битвах", cz: "Počet bitev", de: "Gefechte geführt", fr: "Batailles participées", pl: "Bitew" },
  108. p11: { lang: "Average Experience", ru: "Средний опыт", cz: "Průměrné zkušenosti", de: "Durchnittl. Erfahrung", fr: "Expérience moyenne", pl: "Średnie doświadczenie" },
  109. p12: { lang: "Average Tier", ru: "Средний уровень танка", cz: "Průměrný Tier", de: "Durchschnittl. Stufe", fr: "Tiers moyen", pl: "Średni poziom pojazdu" },
  110. p13: { lang: "Win/Loss Ratio", ru: "Отношение Победы/Поражения", cz: "Poměr vítězství/porážek", de: "Verhältnis Siege/ Niederlagen", fr: "Ratio Victoires/Défaites", pl: "Zwycięstwa/porażki" },
  111. p14: { lang: "Performance Ratings", ru: "Рейтинги производительности", cz: "Hodnocení bojového výkonu", de: "Leistungsverhältnis", fr: "Indices de performances", pl: "Statystyki wydajności" },
  112. p15: { lang: "WN8", ru: "WN8", cz: "WN8", de: "WN8", fr: "WN8", pl: "WN8" },
  113. p16: { lang: "Efficiency", ru: "Эффективность", cz: "Efficiency", de: "Effizienz", fr: "Efficacité", pl: "Efficiency" },
  114. p17: { lang: "NoobMeter", ru: "NoobMeter", cz: "NoobMeter", de: "NoobMeter", fr: "NoobMeter", pl: "NoobMeter" },
  115. p18: { lang: "Fetching...", ru: "Загрузка...", cz: "Načítám...", de: "abrufen...", fr: "Récupération...", pl: "Pobieranie..." },
  116. p19: { lang: "Performance Rating Calculations", ru: "Вычисления рейтинга производительности", cz: "Výpočet hodnocení bojového výkonu", de: "Leistungsberechnung", fr: "Calculs des indicateurs de performances", pl: "Obliczenia statystyk wydajności" },
  117. p20: { lang: "Formula Type", ru: "Тип формулы", cz: "Typ výpočtu", de: "Formel", fr: "Type de formule", pl: "Formuła" },
  118. p21: { lang: "Total", ru: "Всего", cz: "Celkem", de: "Gesamt", fr: "Total", pl: "Wynik" },
  119. p22: { lang: "Scaled", ru: "Шкала", cz: "Stupnice", de: "Skaliert", fr: "A l'échelle", pl: "Skalowanie" },
  120. p23: { lang: "Destroyed", ru: "Уничтожено", cz: "Zničeno", de: "Zerstört", fr: "Détruits", pl: "Fragi" },
  121. p24: { lang: "Damage", ru: "Урон", cz: "Poškození", de: "Schaden", fr: "Dommages", pl: "Obrażenia" },
  122. p25: { lang: "Detected", ru: "Обнаружено", cz: "Detekováno", de: "Aufgeklärt", fr: "Détectés", pl: "Wykrycia" },
  123. p26: { lang: "Capping", ru: "Захват", cz: "Obsazení", de: "Erobert", fr: "Capture", pl: "Zdobycie bazy" },
  124. p27: { lang: "Defense", ru: "Оборона", cz: "Obrana", de: "Verteidigt", fr: "Défense", pl: "Obrona bazy" },
  125. p28: { lang: "Victories", ru: "Победы", cz: "Vítězství", de: "Siege", fr: "Victoires", pl: "Zwycięstwa" },
  126. p29: { lang: "WN8", ru: "WN8", cz: "WN8", de: "WN8", fr: "WN8", pl: "WN8" },
  127. p30: { lang: "WN7", ru: "WN7", cz: "WN7", de: "WN7", fr: "WN7", pl: "WN7" },
  128. p31: { lang: "Efficiency", ru: "Эффективность", cz: "Efficiency", de: "Effizienz", fr: "Efficacité", pl: "Efficiency" },
  129. p32: { lang: "What is WN Efficiency?", ru: "Что такое WN эффективность?", cz: "Co je WN hodnocení?", de: "Was bedeutet WN Effizienz", fr: "Qu'est que l'efficacité WN ?", pl: "Czym jest statystyka wydajności WN?" },
  130. p33: { lang: "Ace Tanker", ru: "Мастер", cz: "Hrdina", de: "Panzer Ass", fr: "As du char", pl: "As Pancerny" },
  131. p34: { lang: "1st Class", ru: "1 степень", cz: "1. třídy", de: "1ter Klasse", fr: "Classe 1", pl: "Pierwsza Klasa" },
  132. p35: { lang: "2nd Class", ru: "2 степень", cz: "2. třídy", de: "2ter Klasse", fr: "Classe 2", pl: "Druga Klasa" },
  133. p36: { lang: "3rd Class", ru: "3 степень", cz: "3. třídy", de: "3ter Klasse", fr: "Classe 3", pl: "Trzecia Klasa" },
  134. p37: { lang: "No Badge", ru: "Нет значка", cz: "Nezískáno", de: "kein Orden", fr: "Aucun badge", pl: "Bez odznaki" },
  135. p38: { lang: "Total Vehicles", ru: "Общее количество танки", cz: "Celkem vozidel", de: "Alle Fahrzeuge", fr: "Nombre total de véhicules", pl: "Całkowita liczba pojazdów" },
  136. p39: { lang: "Battles Participated:", ru: "Участий в битвах:", cz: "Počet bitev:", de: "An Gefechten teilgenommen", fr: "Batailles participées:", pl: "Bitwy:" },
  137. p40: { lang: "Victories:", ru: "Победы:", cz: "Vítězství:", de: "Siege", fr: "Victoires:", pl: "Zwycięstwa:" },
  138. p41: { lang: "Defeats:", ru: "Поражения:", cz: "Porážek:", de: "Niederlagen", fr: "Défaites:", pl: "Porażki:" },
  139. p42: { lang: "Draws:", ru: "Ничья:", cz: "Remíza:", de: "Unentschieden", fr: "Egalités:", pl: "Remisy:" },
  140. p43: { lang: "Battles Survived:", ru: "Битв пережито:", cz: "Přežito bitev:", de: "Gefechte überlebt", fr: "Batailles survécues:", pl: "Przetrwane bitwy:" },
  141. p44: { lang: "Average Battles per Day:", ru: "Среднее число битв за день:", cz: "Průměrný počet bitev za den:", de: "Durschnittliche Gefechte pro Tag", fr: "Nombre moyen de batailles par jour:", pl: "Średnia bitew na dzień:" },
  142. p45: { lang: "Experience:", ru: "Опыт:", cz: "Zkušenosti:", de: "Erfahrung", fr: "Expérience:", pl: "Doświadczenie:" },
  143. p46: { lang: "Average Experience per Battle:", ru: "Средний опыт за битву:", cz: "Průměrné zkušenosti za bitvu:", de: "Durchschnittserfahrung", fr: "Expérience moyenne par bataille:", pl: "Średnie doświadczenie na bitwę:" },
  144. p47: { lang: "Maximum Experience per Battle:", ru: "Максимальный опыт за битву:", cz: "Maximální zkušenosti za bitvu:", de: "Höchste Gefechtserfahrung", fr: "Expérience maximum par bataille:", pl: "Maksymalne doświadczenie na bitwę:" },
  145. p48: { lang: "Destroyed:", ru: "Уничтожено:", cz: "Zničeno:", de: "Zerstört", fr: "Détruits", pl: "Zniszczeni przeciwnicy:" },
  146. p49: { lang: "Deaths:", ru: "Смертей:", cz: "Nepřežil:", de: "Tode", fr: "Morts", pl: "Zniszczony:" },
  147. p50: { lang: "Detected:", ru: "Обнаружено", cz: "Detekováno:", de: "Aufgeklärt", fr: "Détectés", pl: "Wykrytych:" },
  148. p51: { lang: "Hit Ratio:", ru: "Коэффициент попаданий:", cz: "Přesnost střelby:", de: "Trefferquote", fr: "Ratio de hit", pl: "Celność:" },
  149. p52: { lang: "Damage Caused:", ru: "Урона нанесено:", cz: "Udělené poškození:", de: "Schaden verursacht", fr: "Dommages causés:", pl: "Zadane obrażenia:" },
  150. p53: { lang: "Damage Received:", ru: "Урона получено:", cz: "Přijaté poškození:", de: "Schaden erhalten", fr: "Dommages reçus:", pl: "Otrzymane obrażenia:" },
  151. p54: { lang: "Base Capture Points:", ru: "Очки захвата:", cz: "Bodů obsazení základny:", de: "Eroberungspunkte", fr: "Points de capture de base:", pl: "Punkty przejęcia bazy:" },
  152. p55: { lang: "Base Defense Points:", ru: "Очки обороны:", cz: "Bodů obrany základny:", de: "Verteidigungspunkte", fr: "Points de défense de base:", pl: "Punkty obrony bazy:" },
  153. p56: { lang: "Average Tier:", ru: "Средний уровень:", cz: "Průměrný Tier:", de: "Durchschnittliche Stufe", fr: "Tiers moyen:", pl: "Średni poziom pojazdów:" },
  154. p57: { lang: "Vehicle Tiers", ru: "Уровни техники", cz: "Tiery vozidel", de: "Fahrzeuge Stufe", fr: "Tiers du véhicule", pl: "Poziomy czołgów" },
  155. p58: { lang: "Tier", ru: "Уровень", cz: "Tier", de: "Stufe", fr: "Tiers", pl: "Poziom" },
  156. p59: { lang: "Total Vehicles:", ru: "Количество техники:", cz: "Celkem vozidel:", de: "Gesamt Fahrzeuge", fr: "Nombre total de véhicules:", pl: "Całkowita liczba pojazdów:" },
  157. p60: { lang: "Tankopedia", ru: "Танковедение", cz: "Tankpédie", de: "Tankopedia", fr: "Tankopedia", pl: "Tankopedia" },
  158. p61: { lang: "Tank Statistics", ru: "Статистика танка", cz: "Statistiky vozidel", de: "Panzer Statistik", fr: "Statistiques des chars", pl: "Statystyki czołgu" },
  159. p62: { lang: "Premium Tanks", ru: "Премиум танки", cz: "Premium tanky", de: "Premium Panzer", fr: "Chars premiums", pl: "Czołgi premium" },
  160. p63: { lang: "Copy stats to Clipboard", ru: "Скопировать в буфер обмена", cz: "Kopírovat Stat. do schránky", de: "Statistiken in Zwischenablage kopieren", fr: "Copier les statistiques vers le presse-papiers", pl: "Kopiuj statystyki do schowka" },
  161. p64: {
  162. lang: "Press Ctrl+C, or Right-Click and Copy",
  163. ru: "Нажмите Ctrl+C или ПКМ и Скопировать",
  164. cz: "Stiskni Ctrl+C, nebo klikni pravým tl. myši a vyber Kopírovat",
  165. de: "STRG+C/ rechter Mausklick und Kopieren",
  166. fr: "Appuyez sur Ctrl+C, ou clic droit et Copier",
  167. pl: "Naciśnij Ctrl+C, lub prawy klawisz myszy i 'Kopiuj'"
  168. },
  169. p65: {
  170. lang: "WoTStatScript not active, because of player having 0 battles",
  171. ru: "Скрипт неактивен, т.к. у игрока 0 битв",
  172. cz: "WoTStatScript není aktivní, protože hráč má 0 bitev",
  173. de: "WoTStatScript inaktiv wegen fehlender Gefechte",
  174. fr: "WoTStatScript n'est pas actif, car le joueur a 0 batailles",
  175. pl: "WoTStatScript nieaktywny, ponieważ gracz rozegrał 0 bitew"
  176. },
  177. p66: { lang: "Clan Stats:", ru: "Статистика клана:", cz: "Stat. klanu:", de: "Clanstatistiken", fr: "Statistiques du clan:", pl: "Statystyki klanu:" },
  178. p67: { lang: "Replays:", ru: "Реплеи:", cz: "Záznamy:", de: "Wiederholungen", fr: "Replays:", pl: "Powtórki:" },
  179. p68: { lang: "Tier 10 Only", ru: "Уровень 10 Только", cz: "Pouze Tier 10", de: "nur Stufe 10", fr: "Seulement les tiers 10", pl: "Tylko 10 tier" },
  180. p69: {
  181. lang: "Battles missing from API, ratings may be inaccurate",
  182. ru: "Отсутствует Battles от API, рейтинги могут быть неточными",
  183. cz: "Některé bitvy se z API nenačetly, hodnocení může být nepřesné",
  184. de: "Fehlende API Gefechtsdaten, Bewertungen können ungenau sein",
  185. fr: "Des batailles manquent de l'API, les indices peuvent être faussés",
  186. pl: "Brakujące bitwy, obliczenia mogą być niedokładne"
  187. },
  188. p70: { lang: "Hit Ratio", ru: "Коэффициент попаданий", cz: "Přesnost střelby", de: "Trefferquote", fr: "Ratio de hit", pl: "Celność" },
  189. p71: { lang: "Average Damage", ru: "Средний Урона", cz: "Průměrné poškození", de: "Durchschnittlicher Schaden", fr: "Dommages moyens", pl: "Średnie obrażenia" },
  190. p72: { lang: "Stats for", ru: "Cтатистика для", cz: "Statistika hráče", de: "Statistik für", fr: "Statistiques pour ", pl: "Statystyki z" },
  191. p73: { lang: "Battles:", ru: "Битвы:", cz: "Bitev:", de: "Gefechte", fr: "Batailles:", pl: "Bitew:" },
  192. // clan page
  193. c01: { lang: "Clan Stats / Replays:", ru: "Статистика клана / Реплеи:", cz: "Statistiky klanu / Záznamy", de: "Clan Statistiken / Wiederholungen", fr: "Statistiques du clan / Replays:", pl: "Statystyki klanu / Powtórki:" },
  194. //p00: { lang: "p00_en", ru: "p00_ru", cz: "", de: "", fr: ":", pl: ""},
  195. end: {}
  196. };
  197.  
  198. // region settings and language detection
  199. // wotlabs, noobmeter, mywotstats, feldzug, wotcs, wotreplays and wot-news
  200. var lang_detect = document.getElementsByClassName('b-portalmenu_links_list_point')[3].firstElementChild.innerHTML.toLowerCase();
  201. console.log(lang_detect);
  202. wl_srv = nm_srv = mws_srv = fz_srv = wr_srv = wn_srv = null;
  203. switch(server) {
  204. case ("eu"):
  205. wl_srv = nm_srv = mws_srv = fz_srv = wr_srv = wn_srv = server;
  206. switch(lang_detect) {
  207. case ("support"): break; // english
  208. case ("podpora"): for (var x in locale) { locale[x].lang = locale[x].cz; } break; // czech
  209. case ("kundendienst"): for (var x in locale) { locale[x].lang = locale[x].de; } break; // german
  210. case ("soporte"): break; // spanish
  211. case ("aide"): for (var x in locale) { locale[x].lang = locale[x].fr; } break; // french
  212. case ("pomoc"): for (var x in locale) { locale[x].lang = locale[x].pl; } break; // polish
  213. case ("destek"): break; // turkish
  214. default: break;
  215. }
  216. break;
  217. case ("ru"): // russian
  218. nm_srv = fz_srv = wr_srv = wn_srv = server;
  219. for (var x in locale) {
  220. locale[x].lang = locale[x].ru;
  221. }
  222. break;
  223. case ("com"):
  224. wl_srv = nm_srv = mws_srv = fz_srv = "na"; wr_srv = server; wn_srv = "us";
  225. switch(lang_detect) {
  226. case ("support"): locale.p27.lang = "Defence"; locale.p55.lang = "Base Defence Points:"; break; // american - muh freedom
  227. case ("soporte"): break; // argentinian spanish
  228. case ("suporte"): break; // brazilian portuguese
  229. default: break;
  230. }
  231. break;
  232. case ("asia"):
  233. wl_srv = nm_srv = mws_srv = wn_srv = "sea"; fz_srv = server; wr_srv = "com";
  234. switch(lang_detect) {
  235. case ("support"): break; // english
  236. case ("支援"): break; // thai
  237. case ("サポート"): break; // japanese
  238. case ("สนับสนุน"): break; // taiwanese mandarin
  239. default: break;
  240. }
  241. break;
  242. case ("kr"): // korean
  243. nm_srv = fz_srv = server; wr_srv = "com";
  244. break;
  245. default: break;
  246. }
  247.  
  248. // variables for dropbox and data uri
  249. // dropbox url
  250. var dropbox = "https://dl.dropboxusercontent.com/u/12497046/wot/projects/statscript/img";
  251.  
  252. // data uri
  253. uri_context_menu = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPQAAAABCAIAAABmEhQDAAAAHklEQVQoU2MAAj4BAR5ePi6eUTSKhgni4eFjYGAAAN9YIhjam+zlAAAAAElFTkSuQmCC";
  254. uri_pr_hitrate = "data:image/png;base64,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";
  255. uri_pr_avgtier = "data:image/png;base64,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";
  256. uri_nm_logo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABgUlEQVQ4y92SPWsUYRSFn/POzE4MgkhMKyKICAEjiUksgoWClY0WYifKDlj4VyxsDGvlgmhtLUiIkoSNiLEWCwN+dmvAnZl3jkV2lxArSz3d/eDe53Iu/NOabb8J6cHkfLGZbXUWq1E8c2c7kxpPhF8unfPu0bk4qqWqz+jggAtFL6uor9hhLqjZnkwHq7ip+/WRJlF50tYs0oLwF5vdPwhKKCHDguiEfpUBkKh6aMIT8MutzmJ3TDFGb/duA7L91HBTgAEYQlqHgeOH9PPt/oUCWCpezVTk7z1sFpwG7gMt4C64a7QCdGUTVF9LQ/l6feXiN80Xmw8aJ/cQxm6AIKkAXgAfgWnbZyVNgp8bjdAIqi8HW1MMeSUs2MG+ZfsTeMdwQrBs+AAgPAQ1gl0BnC82njVOboxPkGujVHhglMuORonYywfid8nXe52ltbGNC8X6JaNTQapjrGNjchH7VutYnvhHJJ3Cg8+mdXSCr4/XOlcH+7xf1d984Fx7I/D/6Dd9b6wCx93gcQAAAABJRU5ErkJggg==";
  257. uri_rating_meter = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3kAAAASCAMAAADR9efjAAABRFBMVEUkFC8qHkAuWnEvSR0xGz81aIM2VCE3WR45KVY7dJE8XSQ9IVA/ZyNCLmNFiKtGcidHbitIM2xMNnFShi5UO35cAABdnr9fhURjRpRqAABqnEdyqsd0lV11AAB6Xql9qV+BBgCFcQCGKgCKAACLc7SUBgCZggCaMACfGxulBwCqkACrNQCsOTnCCADJqgDKPwDVIxvbQDnbvhvcVxvgxjnhbTkkFC8qHkAuWnEvSR0xGz81aIM2VCE3WR45KVY7dJE8XSQ9IVA/ZyNCLmNFiKtGcidHbitIM2xMNnFShi5UO35cAABdnr9fhURjRpRqAABqnEdyqsd0lV11AAB6Xql9qV+BBgCFcQCGKgCKAACLc7SUBgCZggCaMACfGxulBwCqkACrNQCsOTnCCADJqgDKPwDVIxvbQDnbvhvcVxvgxjnhbTlFm8EBAAAANnRSTlNubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm49/hDAAAABRklEQVR42u3aMW6DQBCF4We8JDYOOUTq3MH3r3OHyCmcwpFCMAsbzSHezo71il/TYRkQ+sSQ3pGRSB1RsCPVY0NHamezTpceC+r0Rzz23WYTveKOpwD9pC8kZE7Ua70+xn10s1mnghV7Up3NJprsvwZoSvaMGEiNyDiQGojHfrZZp739Vp0muyakZhyxNNEJOURzOkub0qa0KW1Km9KmtCltSpvSJk2bHzxt+taHUm7haPYT4TVbbLp2YGjzytKmfyeSckPdXzeE12xxF+zIOF8zS5v+DaGUWzia/UZ4zW7ugu0Y2szpLG0+sDbfpE1pU9qUNqVNaVPalDZ9tUl4txmv0WTm2mrTtav/hqvZLby0ycr/C4xk07WLTde2Zrfw0iZ14+/aYtO1FxOja7/NbuH1blPalDalTWlT2pQ2pU1pU9oMps1/l3rfXyRbwecAAAAASUVORK5CYII=";
  258. uri_rating_meter_marker = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAANCAQAAADLNWwDAAAAV0lEQVQI12NgEGQQZhBhEALSQEqMQQIIgUxxBqmvRyBMKQa5H3cZpIGyDHIMir/fAkkxBgZFa/0/nxgUgQoZVNLsgExloGpkUSS1SCYgmQuxTQwkCncDAH0wFzVj5p2XAAAAAElFTkSuQmCC";
  259. uri_tiers = "data:image/png;base64,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";
  260. uri_badges_class_none = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAfCAYAAABtYXSPAAAFVklEQVR42q2Xf0idVRjHu/f95dxVBGvNJlM2lI2hbW5sqMo23SDa2JaOtWBDCuZG2QBawZis0WA4pgtMREUQFXWJiASIGgkgEBWRKSD9GYAVEDQE+qtOzweey7nck12vdODLc5/3fL/f87znx/ve94X/aDEbFc61TXSZtFk2X6PnmGUe2OVYeNZ/aw1BXAWxtN+a66A2p7nXrcYnT/vtZVEQIi3MigONtjAH2qd810N9MzcV2DsIFTmCHfbOMxVjeejQWy+dZS0y86xYUSR48fr169MHDhx4czvFoEOPD372JjefHTu1wM5GflFR0fujo6MmNzf3s97e3pJsioGPDj0++OFriwGW7yyRVp8rSOzZs+fVs2fPfj03N2ck/3xoaKgCYllZWRzs3r3bKy4u9goLCz0iebIPHnx06PHBD1/1j9KWyikkTBYjrbKlpeXvwcHBv2SaKeaLvr6+GsjHjh3zgCyBf/ToUW/fvn0ekTzZBw8+OvT44IdvSjFhWkHO7mcaXwqC4PbMzIwB7e3tJhaLfTkwMNCAoLa2NgCHDx8OGxoa/EOHDvlE8mQfPPjo0Ce98MWfcdzTaWfG152/My8vr6ygoGBgcnLSLCwsmJ6eHmbmK7nT1yCfPHkyBMePH4/Onz8fVFVVBUTyZB88+OjQ44Mfvvgzjo7npy9VLOX0FAr56b1798yjR49Md3e32b9/P8V809nZeQ7y6dOnI1BdXZ3T1NQUnjhxIiSSJ/vgwUeHHh/88MWfcVJOVyy9mEArLZOpfXb37l0zPz9vLl++jAnF/NDV1XUBcmNj4w4gy5F79erVqKamJiKSJ/vgwUeHHh/88MWfcXS84N+KCXVjlQs+qqurMxsbG+bx48dmZGTEYPrkyZNzkM+cOZML6uvrd167di2SGBHJk33w4KNDjw9++OKv48ALbTH2h6+b6uXy8vKnJSUl64uLi6ajo8PIHWPwvRhegCjHdCeQvZGQE5IjMYdInuyDBx8denzwwxd/xtHxfLjpBYXaWSzPiZ/Gx8eN7APDesseYGqXHzx48Ho2xcBHhx4f/PDFn3EYz86M+xqIdPr6Ll26ZNbX141sTjMxMcHMLN+5c6cxm2Lgo0OPD3744q/jRDqu+yrQzhLB22EY/jI2NmbkRJiHDx9isNLW1nb71q1b9YgyNXjw0aHHBz988WccW4zWkLZnIj3/lYL2vXv3/lpRUWHkYUYx38rR7bAFZS4EPjr0+OCHL/46TpS6Z9y3tW7ieDzecvHixefDw8OmsrKSdf5NrrccOXLkQ7cgtxB48NGhxwc/fO3m3fztHRcEinxBred5azdv3jT9/f3m/v37Zmpq6k+5/okYvmULcguhHx58dOjxwQ9f9Q8U8c2KoQVacYXgAzF+Lu8ec/DgQXPjxg3D2u/atWtF+tgPzRSwtLT0jEjOdfrhwUeHHh/88FX/IG1ct6CUv4V5gmrBx3I81xKJxB9RFJn8/HyeFYbNeOXKlRUt4A0iOdfphwcfHXp88MNX/f3NC3H/XEeCAkGd4B3Bp3Jkf29tbTWnTp0y8pQ109PTZnZ21jQ3N68RyblOPzz46NDjo36R8yd+i18Iob7uSwVN8oL7ubS01MgpMcQgCAyPd15+RPLUfvjo0KtPmM2XQSwl+kAN8vTF9q6s/XeCVd/3V2Xw1TAMlwU/Esm5Tj88+OhUH1rPrD7o7LeNxkCPY5XeaavgPUUby0AkB/TDg49O9dYP/6yb+9GVELwiKNJYIigmJ5Kn9Secj8JtNfcLEgR26Yhbyl2fbTcr9pzjb3N7Et1j61mf/6k539FuEXGnL8si/gEY8SzOXUsBvQAAAABJRU5ErkJggg==";
  261. uri_badges_class_total = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAfCAQAAADHaLwEAAAErklEQVQYGQXAD4yWdR0A8M/39zzv8R4cB4fADmUorjRUmULKNDetVMtcTWdYbra0aJZrjmVZrY1yW26LcmuMZCZrJUbaLEfGRjUczjnHTUXaIADjPzAABLw74O55vg4ACIQQAiEAABAAAAAANSohBIAQAIoCKCAUgAKg0qq1QoVQBAgUFC231mpFqwgpAAqARqCgVdQCIVC0CBW3UVCrhAoFCEARWpWCIpyTAgFaVGgVtdBKKYwJoaUAWnQQ+h968VNfBgAApPa6iz//mn5FkToKgoIQKlCbMOvrd96775aVc7inHtr92+a55vlmRf4uNxy+oY+Vc07fuOhzd680RVFLrZDUSAW1Srlk7lUPzjAys7efPxy9ZeCP0rhhPZbM+MuRBTN6+5vLue32zfOOveeCGuOIgiJUMPHy29994MY19B6btePUwoFXdc1wjX4D1rqn++bho7P39f3H3CkPvj64WEcIIShCIoVJY7fdG9PLpaL3s6tvmHq/p/zckJPW+4Ufme/OvgWr9V3veHlEfZepoJKylopQK5OnVtdcMNWgLAe6w/6kccI9jjvrFdN0nPPuRD2TdHVcmD0w+9QZjUaIgkSr67uPLdllu2foG467DHlUOGXEB3q87IsuMTlMfMGQNzy6aOA3eoVQyQJCMe2ji1sLbfItej5w0gW11Dprkta4fpUPQ/chZ7SutH9Av0qtFQWEEPnOG252g9k4oeO0Lnaba4LWMWmm0VR6LPAVmzVb9SlaKYuQWq3TVwzuP7xZWkXbNe6499CrOKG1117TzQ2xzg7HbBydc9wZqQhRpFDQyS89PWuF5/SI6ixG3GyK804aMMsFl5niQirTrbfU97tXLBZohCxIjTRx58aXrDDdd6S+5oQXHbDEJHuEJ822xVsuauV95nrS8diwTZ8WjSxCgPPe/ueRjb5qF+XA818b2+igtThqj997xZD7muVb1f9zla5fj3nZKakIKiFVinPONWeGrt7et92RfX17tu5/ev4yZ1xmkU3escvjtu38wq5/j47O3+m1kcNrm/X2GTMmKRIpNY6W/df3PqH1yUvf2la2/PKlpec7xpzWY6Inxg7um/bmj/81eOWwb7uzro/Y7ZxGKNQgpcZou+sfhwb7H3Nw5vxn7/9VvDpt+IGHX7fQVo84dOTvK0fHf7rsE7P3KFaPj7ytQUoJUNDR41o/KKevznm5JJfnzPc93rPqm9nJZdlZa2nPxp/kUzkvP511Y5Wb9KoVRQGgqFUmu8my2Nb34YTsz0tzTS5+3/Jn01+v2/S3/ExOyQk5eaTssdLdpuvqCAQBQmgVHb2ucYVr7/jG3Gk71L6n62eHll48aI0tFhoe+/MLthmy3UljQoskAFBJtSkmWTD5mYvmzHLYQYvc6r826JrnmBOjJ39ovVNGjUutFJIAhBQqFBMMuqM8rFuEaERoa23ThmaddXb4SCuFRkgIANRaIVWmucRlpusgjOhRS+mE/9tr2HnjQiskEACAUGmFXv1S6Gg0KjQ6RjTOSq1UpAQIABAIiVoqWiEVoVU0WiGMCyQABACAkCqNokiNIgVSoBUILQBQAQAAAAgpERIhkQAAHwPlu9kMCvbXiAAAAABJRU5ErkJggg==";
  262.  
  263. // matches url with profile page and checks if profile has any battles as script is useless without
  264. if (wg_accounts !== null) {
  265. var speed_table_battles = filter(document.getElementsByClassName('t-personal-data_value')[2].innerHTML, 1);
  266. if (speed_table_battles > 0) {
  267. // style variables
  268. var box_background = "border: 1px solid rgba(255, 255, 255, 0.05); box-shadow: 0 0 38px 1px rgba(0, 0, 0, 0.3) inset, 0 0 23px 1px rgba(255, 255, 255, 0.02), 0 0 5px 1px rgba(0, 0, 0, 0.5) inset;";
  269. input_background = "background: rgba(0, 0, 0, 0.09); box-shadow: 0 0 1px 1px rgba(255, 255, 255, 0.15) inset, 0 0 38px 1px rgba(0, 0, 0, 0.3) inset, 0 0 23px 1px rgba(255, 255, 255, 0.02), 0 0 5px 1px rgba(0, 0, 0, 0.5) inset; color: #606061;";
  270. // style contents
  271. var style = document.createElement('style');
  272. style.className = "wotstatscript";
  273. style.type ="text/css";
  274. style.innerHTML
  275. // global rules
  276. = "h3, h4 {margin: 0 0 15px; text-align: center;}"
  277. + "h5 {margin: 5px 0 8px;}"
  278. + "p, .reg-KR p {margin: 0;}"
  279. + ".reg-KR p {line-height: 133%;}"
  280. + "table {width: 100%;}"
  281. // page fix page slowdown
  282. + ".l-page {background-position: center 0 !important;}"
  283. // container wrapper
  284. + ".l-container-wrapper {background: none;}"
  285. // content width
  286. + ".l-content {margin: 0 22px 25px; width: 955px}"
  287. // background rules
  288. + ".b-background {height: 315px; left: -22px; opacity: 0.5; position: absolute; top: -25px; width: 1000px; z-index: -1;}"
  289. + ".b-background img {width: 100%;}"
  290. // profile wrapper rules
  291. + ".b-profile-wrpr {margin: 15px 0 0; min-height: 132px;}" // with famepoints 156px
  292. + ".reg-RUS .b-profile-wrpr {min-height: 135px;}"
  293. + ".b-profile-wrpr td {font-weight: bold; line-height: 133%;}"
  294. + ".b-profile-wrpr table a {background: url('/static/3.13.0.2.1/common/css/scss/context-menu/img/arrow.png') no-repeat 0 2px; color: #CACBCC; padding: 0 0 0 10px;}"
  295. + ".b-profile-wrpr table a:hover {background: url('/static/3.13.0.2.1/common/css/scss/context-menu/img/arrow.png') no-repeat -244px 2px; color: #FFFFFF;}"
  296. + ".b-profile-header {position: absolute; right: 0; top: 0;}"
  297. + ".b-scriptlink {"+input_background+" border-left: 1px solid #000000; border-right: 1px solid #000000; display: inline-block; text-align: center; padding: 7px 0 6px; width: 199px;}"
  298. + ".b-ratingsClip {display: inline-block;}"
  299. + ".b-ratingsButton {"+input_background+" border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding: 7px 7px 6px;}"
  300. + ".b-ratingsButton:hover {background-color: #282828; cursor: pointer;}"
  301. + ".b-profile-error {background: rgba(204,0,0,0.15); border: 1px solid #510000; box-shadow: 0 0 3px #733232; color: #CACBCC; display: none; margin: 0 3px -6px 0; overflow: hidden; padding: 3px; text-align: center; text-overflow: ellipsis; white-space: nowrap; width: 220px;}"
  302. + ".b-profile-error:hover {width: auto;}"
  303. // profile player rules
  304. + ".b-profile-name {float: none; margin: 0; max-width: 370px;}"
  305. + ".b-profile-name table {font-family: Arial;}"
  306. + ".b-profile-name td:first-child {white-space: nowrap;}"
  307. + ".reg-RUS .b-profile-name td:first-child {width: 120px;}"
  308. + ".reg-KR .b-profile-name td:first-child {width: 80px;}"
  309. + ".b-header-h1__profile {margin: 0; padding: 0 0 6px;}"
  310. + "body.reg-KR h1, body.reg-KR .b-header-h1 {line-height: 1;}"
  311. // profile clan rules
  312. + "#js-clan-block-container {left: 385px; position: absolute; top: 25px;}"
  313. + ".b-profile-clan {float: none; max-width: 360px; margin: 0;}"
  314. + ".b-profile-noclan {float: none; margin: 27px 0 0;}"
  315. + ".b-photo {min-height: 54px;}"
  316. + "a.b-link-clan, .b-link-clan a {display: inline;}"
  317. + ".b-statistic {margin: 0 0 3px;}"
  318. + ".b-victory-points {background: none; display: none; margin: 0; padding: 0;}"
  319. + ".b-victory-points_container {margin: 0; max-width: 335px;}"
  320. + ".b-victory-points_text {display: table-cell; font-size: 13px; margin: 0; padding: 6px 0 0;}"
  321. + ".b-victory-points_text br {display: none;}"
  322. + ".b-victory-points_text__indent-top {white-space: pre;}"
  323. + ".b-victory-points_count {background-position: right center; display: table-cell; font-size: 22px; margin: 0; padding: 0 40px 0 10px;}"
  324. + ".b-victory-points_ico { background-image: url('/static/3.13.0.2.1/common/css/scss/content/victory-points/img/victory-points-link.png'); background-position: center center; display: table-cell; float: right; height: 24px; margin: 0 0 0 5px; opacity: 1; width: 30px;}"
  325. + ".b-gray-link__arrow {font-size: 12px;}"
  326. + "#js-clan-block-container table {font-family: Arial; width: 360px;}"
  327. + "#js-clan-block-container td:first-child {white-space: nowrap;}"
  328. + ".reg-RUS #js-clan-block-container td:first-child {width: 115px;}"
  329. + ".reg-KR #js-clan-block-container td:first-child {width: 70px;}"
  330. // profile menu rules
  331. + ".b-profile-menu {position: absolute; right: 200px; top: 0;}"
  332. + ".b-profile-menu .b-context-menu {width: 149px;}"
  333. + ".b-profile-menu .b-context-menu-list__bottomindent {margin-bottom: 30px;}"
  334. // sidebar rules
  335. + ".l-sidebar {margin: 0; position: absolute; right: 0; top: 25px; width: auto;}"
  336. + ".b-context-menu {background: url("+uri_context_menu+") repeat-y; border-right: 1px solid black; margin: 0; width: 200px;}"
  337. + ".b-context-menu_wrapper {padding: 10px 0 5px;}"
  338. + ".b-context-menu-list {line-height: 16px;}"
  339. + ".b-sidebar-widget__comparison {background-color: #000000; border: 1px solid #000000; margin: 0; position: absolute; left: 224px; top: -26px; width: 203px;}"
  340. + ".b-sidebar-widget_inner__comparison {display: table; margin: 5px auto; padding: 0;}"
  341. + ".js-recruitsation-block {position: absolute; right: -228px; top: 0px; width: 205px;}"
  342. + ".b-sidebar-widget_title {margin: 0 0 10px;}"
  343. + ".b-sidebar-widget_text {margin: 0 0 5px;}"
  344. // userblock wrapper rules
  345. + ".b-userblock-wrpr {margin: 0 0 -2px;}"
  346. + ".b-user-block {"+box_background+" margin: 0; width: 750px;}"
  347. + ".b-head-block {background: url('/static/3.13.0.2.1/common/css/scss/tables/img/th-profile-bg.png') repeat-x; border: 1px solid #000000;}"
  348. + ".b-user-block_info {padding: 5px 25px;}"
  349. + ".b-personal-link {clear: left; margin: 53px 0 0;}"
  350. + ".b-user-block__sparks {background: url('"+dropbox+"/sparks.png') no-repeat 50% 0; width: 100%;}"
  351. + ".b-personal-data {min-height: 180px; padding: 0 20px 15px;}"
  352. + ".t-personal-data_ico {padding: 82px 5px 0;}"
  353. + ".t-personal-data_ico__hitrate {background: url("+uri_pr_hitrate+") no-repeat 50% 50px;}"
  354. + ".t-personal-data_ico__tier {background: url("+uri_pr_avgtier+") no-repeat 50% 50px;}"
  355. + ".t-personal-data_value {font-size: 28px; line-height: 100%;}"
  356. + ".t-personal-data_value.t-personal-data_value__pr {font-size: 36px;}"
  357. + ".b-speedometer-body {padding: 20px 50px;}"
  358. + ".b-speedometer {width: 33.3333%}"
  359. // ratings wrapper rules
  360. + ".b-ratings-wrpr {margin: 0 0 40px;}" // see multiple rules
  361. + ".b-ratings-info {text-align: center;}"
  362. + ".t-ratings-info {table-layout: fixed;}"
  363. + ".t-ratings-info th {font-size: 13px; font-weight: bold; line-height: 133%;}"
  364. + ".t-ratings-info td {font-family: 'WarHeliosCondCBold','Arial Narrow',arial,sans-serif; font-size: 36px; line-height: 133%}"
  365. + ".t-ratings-info .rating-url_nm {background-image: url("+uri_nm_logo+"); background-position: left center; background-repeat: no-repeat; padding: 0 0 0 20px;}"
  366. + ".b-ratings-info, .ratings-table {background: inherit; padding: 10px 25px;}"
  367. + ".t-table-ratings {width: 100%;}"
  368. + ".t-table-ratings td {line-height: 130%; padding: 9px 12px 2px 0; vertical-align: bottom;}"
  369. + ".t-table-ratings .td-value {padding-right: 0; text-align: right; white-space: nowrap;}"
  370. + ".t-table-ratings .td-number {color: #BABCBF; font-weight: bold; padding-right: 0; text-align: right; width: 70px;}"
  371. + ".t-table-ratings .td-center {line-height: 16px; padding: 9px 0 2px; text-align: center;}"
  372. + ".t-table-ratings .td-rating-meter {background: url('/static/3.17.0.1/common/css/scss/content/user/img/speedometr-separator.png') no-repeat 50% 100%; padding: 0;}"
  373. + ".t-table-ratings .rating-meter {background: url("+uri_rating_meter+") no-repeat; border: 1px solid #252527; border-radius: 3px; height: 3px; margin: 0 7px;}"
  374. + ".t-table-ratings .rating-meter-dail_line {background: url("+uri_rating_meter+") no-repeat; box-shadow: 0 0 10px 1px rgba(221, 84, 12, 0.15), 0 0 3px 1px rgba(133, 18, 11, 0.25); height: 3px;}"
  375. + ".t-table-ratings .rating-meter-marker {background: url("+uri_rating_meter_marker+") no-repeat; float: right; height: 13px; margin: -5px -2px 0 0; width: 5px;}"
  376. + ".t-table-ratings .rating-meter_wn8 {background-position: 0 0;}"
  377. + ".t-table-ratings .rating-meter_wn8 .rating-meter-dail_line {background-position: 0 -3px;}"
  378. + ".t-table-ratings .rating-meter_wn7 {background-position: 0 -6px;}"
  379. + ".t-table-ratings .rating-meter_wn7 .rating-meter-dail_line {background-position: 0 -9px;}"
  380. + ".t-table-ratings .rating-meter_eff {background-position: 0 -12px;}"
  381. + ".t-table-ratings .rating-meter_eff .rating-meter-dail_line {background-position: 0 -15px;}"
  382. + ".wnelink {background: inherit; padding: 5px 25px 5px 0; text-align: right;}"
  383. + ".wnelink_info {background-image: url('/static/3.17.0.1/common/css/scss/content/links/img/ico-info.png'), url('/static/3.13.0.2.1/common/css/block/b-link/img/orange_arrow.png'); background-position: 4px 0px, right 0; padding: 0 9px 0 20px;}"
  384. + ".wnelink_info:hover {background-position: 4px -17px, right -22px;}"
  385. // statistics wrapper rules
  386. + ".b-statistics-wrpr {margin: 0 0 30px; overflow: auto;}"
  387. + ".b-statistics-wrpr .t-dotted td {line-height: 23px; padding: 0;}"
  388. + ".b-statistics-wrpr .t-dotted td.t-dotted_class-ico {line-height: 13px;}"
  389. + ".b-statistics-wrpr .t-dotted td.t-dotted_class-ico img {margin: 2px 0 -1px;}"
  390. + ".b-result {margin: 0 10px; width: 315px;}"
  391. + ".b-result-classes {margin: 0 10px; width: 265px;}"
  392. + ".b-result-classes span {color: #606061; display: inline-block; width: 48px;}"
  393. + ".t-dotted td {background: url('/static/3.17.0.1/common/css/scss/content/user/img/speedometr-separator.png') no-repeat 50% 100%;}"
  394. // cake diagram rules
  395. + ".b-diagrams-sector {margin: 0 0 25px;}"
  396. + ".b-diagrams-sector h3 {text-align: center;}"
  397. + ".b-diagram-block {float: left; margin: 0 9px; width: 300px;}"
  398. + ".b-diagram-wrpr {float: none; margin: 0 auto;}"
  399. + ".t-dotted.t-dotted__diagram {margin-top: 0px; width: 100%;}"
  400. + ".t-dotted_diagram-percent {display: inline-block; width: 40px;}"
  401. + ".b-diagram-total {margin: 25px 0 0;}"
  402. + ".b-diagram-tiers .js-results {display: inline-block; margin: 0 0 0 30px; text-align: right; width: 14px;}"
  403. + ".reg-RUS .b-diagram-tiers .js-results {margin: 0 0 0 15px;}"
  404. + ".b-diagram-tiers .t-dotted_diagram-percent {margin: 0 0 0 3px; width: 52px;}"
  405. + ".b-diagram-ico_tier {background: url("+uri_tiers+") no-repeat; padding-left: 30px;}"
  406. + ".b-diagram-ico_tier-1 {background-position: 4px 1px;}"
  407. + ".b-diagram-ico_tier-2 {background-position: 4px -14px;}"
  408. + ".b-diagram-ico_tier-3 {background-position: 4px -29px;}"
  409. + ".b-diagram-ico_tier-4 {background-position: 4px -45px;}"
  410. + ".b-diagram-ico_tier-5 {background-position: 4px -59px;}"
  411. + ".b-diagram-ico_tier-6 {background-position: 4px -74px;}"
  412. + ".b-diagram-ico_tier-7 {background-position: 4px -89px;}"
  413. + ".b-diagram-ico_tier-8 {background-position: 4px -104px;}"
  414. + ".b-diagram-ico_tier-9 {background-position: 4px -120px;}"
  415. + ".b-diagram-ico_tier-10 {background-position: 4px -134px;}"
  416. + ".t-dotted__diagram tr td.t-dotted_diagram-last {width: 0;}"
  417. // achievement wrapper rules
  418. + ".b-achievements-wrpr {}" // see multiple rules
  419. + ".js-short-achievements {margin: 15px 0 30px;}"
  420. + ".js-full-achievements {margin: 0 37px 30px;}"
  421. + ".reg-KR .js-full-achievements {margin: 0 34px 30px;}"
  422. + ".b-achivements {display: table; margin: 0 auto; padding: 0 0 20px;}"
  423. + ".b-achivements-head {margin-top: 15px;}"
  424. + ".b-achivements_item {display: inline-table; float: inherit; margin: 5px 5px 0;}"
  425. + ".js-full-achievements #js-achivement-medalTamadaYoshio {margin-left: 38.5px;}"
  426. + ".js-full-achievements #js-achivement-histBattle2_battlefield {margin-left: 245px;}"
  427. + ".js-full-achievements #js-achivement-noMansLand {margin-left: 85px;}"
  428. + ".js-full-achievements #js-achivement-ironMan {margin-left: 325px;}"
  429. // global rating rules
  430. + ".b-composite-heading {margin: 20px 0 15px 400px; width: 553px;}"
  431. + ".b-profile-ratings-date {margin-top: 1px}"
  432. + ".b-profile-item__empty {display: table; margin: 0 auto; text-align: center;}"
  433. + ".b-rating-dial__user {margin: 10px 21px 22px;}"
  434. + ".b-leadership-info {display: table; margin: 0 auto;}"
  435. + ".l-leadership-info-alignment {display: table; margin: 0 auto; text-align: center;}"
  436. + ".b-unordered-lists_item {display: table; margin: 4px auto 5px;}"
  437. + ".b-profile-link {display: table; margin: 8px auto}"
  438. // vehicle table rules
  439. + ".b-vehicles-wrpr {margin: 20px 0;}"
  440. + ".b-vehicles-header {display: table; margin: 0 auto 15px}"
  441. + ".b-profile-vehicles-tankstat {margin: 0; position: absolute; right: 15px;}"
  442. + ".b-profile-vehicles-tankstat_link {background-image: url("+uri_nm_logo+"), url('/static/3.13.0.2.1/common/css/block/b-link/img/orange_arrow.png'); background-position: left center, right 0px; padding: 0 9px 0 20px;}"
  443. + ".b-profile-vehicles-tankstat_link:hover {background-position: left center, right -22px;}"
  444. + ".t-profile__vehicle .t-profile_right {text-align: center;}"
  445. + ".t-profile_dropdown-ico .tablesorter-header-inner {display: inherit;}"
  446. + ".t-profile_tankstype-prem td {border-top: 2px dashed #212123;}"
  447. + ".t-profile_tankstype-prem .b-tankstype-text {color: #FFC363;}"
  448. + ".t-profile_tankstype-prem.t-profile_tankstype__empty .b-tankstype-text {color: rgba(255, 195, 99, 0.3);}"
  449. + ".t-profile .t-profile_tankstype td {height: 50px; padding: 0; vertical-align: middle;}"
  450. + ".b-tankstype-ico {display: table-cell;}"
  451. + ".b-tankstype-ico__lighttank {background-position: 0 -114px;}"
  452. + ".b-tankstype-ico__mediumtank {background-position: 0 -173px;}"
  453. + ".b-tankstype-ico__heavytank {background-position: 0 5px;}"
  454. + ".b-tankstype-ico__at-spg {background-position: 0 -232px;}"
  455. + ".b-tankstype-ico__spg {background-position: 0 -54px;}"
  456. + ".b-tankstype-ico__prem {background-position: 0 -291px;}"
  457. + ".b-tankstype-ico__ten {background: none; color: #BBB7AC; font-size: 17px; font-weight: 100; padding: 0 0 3px; text-align: center;}"
  458. + ".b-tankstype-text {display: table-cell; height: inherit; vertical-align: middle;}"
  459. + ".t-profile .t-profile_tankstype__item td {height: 40px; padding: 0; vertical-align: middle;}"
  460. + ".t-profile .t-profile_tankstype__item:hover td {background: rgba(0, 0, 0, 0.04); border-bottom: 1px solid rgba(255, 255, 255, 0); color: #BABCBF;}"
  461. + ".b-armory-wrapper {height: inherit; margin: 0; padding: 0; width: 160px;}"
  462. + ".b-armory-wrapper .b-armory-level {display: table-cell; font-size: inherit; height: inherit; position: inherit; vertical-align: middle; left: 0; top: 0;}"
  463. + ".b-armory-wrapper img.png {height: 64px; margin: -50px 0 0 24px;}"
  464. + ".b-name-vehicle {color: #BBB7AC; display: table-cell; height: inherit; vertical-align: middle;}"
  465. + ".b-name-vehicle.b-gold-name {color: #FFC363;}"
  466. + ".t-profile_dropdown-link {display: inherit;}"
  467. + ".js-error-data {text-align: center;}"
  468. + ".b-msg-error {display: table; margin: 0 auto;}"
  469. + ".b-vehicle-detail_txt {margin: 0 auto 4px; text-align: center; width: 768px;}"
  470. + ".b-vehicle-detail_link {display: table; margin: 0 auto;}"
  471. + ".b-vehicle-slider {margin: 23px 64px 17px}"
  472. + ".b-vehicle-slider_inner {width: 741px;}"
  473. + ".b-vehicle-slider_prev {left: -12px;}"
  474. + ".b-vehicle-slider_next {right: -12px;}"
  475. + ".b-vehicle-minitable {margin: 0 43px; width: 350px;}"
  476. + ".b-vehicle-minitable__right {float: left;}"
  477. // profile navigator
  478. + ".b-profile-nav {text-align: center;}"
  479. + ".wrapper-dropdown .b-profile-nav {padding: 7px 0 0; position: absolute; right: 50%;}"
  480. + ".b-profile-nav a {background: url('/static/3.17.0.1/common/css/scss/content/links/img/vertical-arrow.png') no-repeat; padding: 2px 10px 0;}"
  481. + ".b-profile-nav a#top {background-position: 100% 0px;}"
  482. + ".b-profile-nav a#top:hover {background-position: 100% -36px;}"
  483. + ".b-profile-nav a#bottom {background-position: 100% -18px;}"
  484. + ".b-profile-nav a#bottom:hover {background-position: 100% -54px;}"
  485. + ".b-profile-nav span {border-bottom: 1px dashed;}"
  486. // multiple usage rules
  487. + ".b-ratings-wrpr, .b-achievements-wrpr {background: rgba(0, 0, 0, 0.09); "+box_background+" clear: both; width: 100%;}"
  488. + ".b-orange-arrow__heading, .b-profile-ratings_link {margin: 4px 0 0;}"
  489. + ".b-vertical-arrow {display: table; margin: 2px auto 0; padding: 2px 10px 0;}"
  490. + "";
  491. document.head.appendChild(style);
  492. // end style
  493.  
  494. // removing elements
  495. var layoutfix_class = document.getElementsByClassName('b-hr-layoutfix');
  496. layoutfix_class[0].parentNode.removeChild(layoutfix_class[0]);
  497. layoutfix_class[0].parentNode.removeChild(layoutfix_class[0]);
  498.  
  499. // profile wrapper
  500. var profile_div = document.createElement('div');
  501. profile_div.className = "b-profile-wrpr";
  502. profileHead_div = document.createElement('div');
  503. profileHead_div.className = "b-profile-header";
  504. profile_div.appendChild(profileHead_div);
  505. profileName_class = document.getElementsByClassName('b-profile-name')[0];
  506. profileName_class.parentNode.insertBefore(profile_div, profileName_class.nextSibling);
  507. profile_div.appendChild(profileName_class);
  508.  
  509. // profile header
  510. var profileError_div = document.createElement('div');
  511. profileError_div.className = "b-profile-error";
  512. profileHead_div.innerHTML += scriptlink;
  513. profileHead_div.insertBefore(profileError_div, profileHead_div.firstElementChild);
  514.  
  515. // background behind profile wrapper
  516. var background_div = document.createElement('div');
  517. background_div.className = "b-background";
  518. background_div.innerHTML = "<img src='/static/3.16.0.2/common/img/common/cont-img-mask.png'>";
  519. profile_div.parentNode.insertBefore(background_div, profile_div);
  520.  
  521. // page navigation
  522. var lcontent_class = document.getElementsByClassName('l-content')[0];
  523. dropdown_class = document.getElementsByClassName('wrapper-dropdown')[0];
  524. topNav_div = document.createElement('div');
  525. topNav_div.className = "b-profile-nav";
  526. topNav_div.innerHTML += "<a id='top' href='#bottom'><span>"+locale.p01.lang+"</span></a>";
  527. dropdown_class.appendChild(topNav_div);
  528. bottomNav_div = document.createElement('div');
  529. bottomNav_div.className = "b-profile-nav";
  530. bottomNav_div.innerHTML += "<a id='bottom' href='#top'><span>"+locale.p02.lang+"</span></a>";
  531. lcontent_class.appendChild(bottomNav_div);
  532.  
  533. // getting registration date
  534. var dateStamp = document.getElementsByClassName('js-date-format')[0].getAttribute('data-timestamp'),
  535. daysPassed = (new Date() - new Date(dateStamp * 1000)) / 1000/60/60/24;
  536. profileName_class.lastElementChild.innerHTML += " - "+daysPassed.toFixed(0)+" "+locale.p03.lang+".";
  537.  
  538. // getting userinfo
  539. var nick = document.getElementsByTagName('h1')[0].innerHTML,
  540. userid = document.location.href.match(/\/(\d+)/)[1];
  541.  
  542. // player statistic links
  543. var nm_url = nm_host+"/player/"+nm_srv+"/"+nick+"/"+userid;
  544. wl_player = nm_player = wn_player = mws_player = fz_player = signature = replays = "";
  545. if (wl_srv !== null) {
  546. wl_player = "<td><a target='_blank' href='http://wotlabs.net/"+wl_srv+"/player/"+nick+"'>WoTLabs</a></td>",
  547. signature = "<tr><td class='statname'>"+locale.p05.lang+"</td><td><a target='_blank' href='http://wotlabs.net/sig/"+wl_srv+"/"+nick+"/signature.png'>"+locale.p06.lang+"</a></td>"
  548. + "<td><a target='_blank' href='http://wotlabs.net/sig_dark/"+wl_srv+"/"+nick+"/signature.png'>"+locale.p07.lang+"</a></td></tr>";
  549. }
  550. if (nm_srv !== null) {
  551. nm_player = "<td><a target='_blank' href='"+nm_url+"'>Noobmeter</a></td>";
  552. }
  553. if (wn_srv !== null) {
  554. wn_player = "<td><a target='_blank' href='http://wot-news.com/index.php/stat/pstat/"+wn_srv+"/"+nick+"/'>Wot-news</a></td>";
  555. }
  556. if (mws_srv !== null) {
  557. mws_player = "<td><a target='_blank' href='http://mywotstats.com/player/view/"+userid+"/"+mws_srv+"'>MyWOTStats</a></td>";
  558. }
  559. if (fz_srv !== null) {
  560. fz_player = "<td><a target='_blank' href='http://feldzug.net/"+fz_srv+"/"+nick+"'>Feldzug</a></td>";
  561. }
  562. if (wr_srv !== null) {
  563. replays = "<tr><td class='statname'>"+locale.p08.lang+"</td><td><a target='_blank' href='http://wotreplays."+wr_srv+"/player/"+nick+"'>WoTReplays</a></td></tr>";
  564. }
  565. playerstat = "<tr><td class='statname'>"+locale.p04.lang+"</td>"+wl_player+nm_player+wn_player+"</tr><tr><td></td>"+mws_player+fz_player+"</tr>";
  566. if (playerstat.length > 66) {
  567. profileName_class.innerHTML += "<table>"+playerstat+signature+replays+"</table>";
  568. }
  569.  
  570. // clan handler caller - clan container is delayed by Wargaming
  571. clanHnd();
  572.  
  573. // move sidebar
  574. var sidebar_class = document.getElementsByClassName('l-sidebar')[0];
  575. profile_div.appendChild(sidebar_class);
  576.  
  577. // end profile wrapper
  578.  
  579. // formula calculations and variables
  580. // expected tank values v14 with premium tanks up to 0.8.11
  581. var statArr = {
  582. "ms-1": { title:"MS-1", nation:"RU", tier:1, type:"LT", frag:2.10, dmg:270, spot:1.55, def:1.81, win:60.46 },
  583. "bt-2": { title:"BT-2", nation:"RU", tier:2, type:"LT", frag:1.89, dmg:306, spot:2.20, def:1.58, win:57.80 },
  584. "t-26": { title:"T-26", nation:"RU", tier:2, type:"LT", frag:1.87, dmg:302, spot:1.26, def:2.33, win:54.63 },
  585. "t-60": { title:"T-60", nation:"RU", tier:2, type:"LT", frag:1.80, dmg:299, spot:1.71, def:2.37, win:57.55 },
  586. "tetrarch_ll": { title:"Tetrarch", nation:"RU", tier:2, type:"LT", prem:1, frag:1.96, dmg:323, spot:1.63, def:1.87, win:59.43 },
  587. "bt-7": { title:"BT-7", nation:"RU", tier:3, type:"LT", frag:0.94, dmg:229, spot:2.19, def:1.38, win:51.27 },
  588. "t-46": { title:"T-46", nation:"RU", tier:3, type:"LT", frag:1.17, dmg:284, spot:1.57, def:1.27, win:53.17 },
  589. "t-70": { title:"T-70", nation:"RU", tier:3, type:"LT", frag:1.47, dmg:361, spot:1.72, def:1.37, win:62.46 },
  590. "bt-sv": { title:"BT-SV", nation:"RU", tier:3, type:"LT", prem:1, frag:1.52, dmg:346, spot:1.54, def:1.94, win:61.00 },
  591. "m3_stuart_ll": { title:"M3 Light", nation:"RU", tier:3, type:"LT", prem:1, frag:1.02, dmg:232, spot:1.78, def:1.18, win:50.83 },
  592. "t-127": { title:"T-127", nation:"RU", tier:3, type:"LT", prem:1, frag:1.89, dmg:393, spot:1.83, def:1.88, win:59.79 },
  593. "ltp": { title:"LTP", nation:"RU", tier:3, type:"LT", prem:1, frag:1.68, dmg:343, spot:1.22, def:2.46, win:58.40 },
  594. "a-20": { title:"A-20", nation:"RU", tier:4, type:"LT", frag:0.90, dmg:270, spot:3.34, def:0.62, win:48.95 },
  595. "t-50": { title:"T-50", nation:"RU", tier:4, type:"LT", frag:0.97, dmg:339, spot:4.02, def:1.07, win:59.40 },
  596. "t80": { title:"T-80", nation:"RU", tier:4, type:"LT", frag:1.17, dmg:404, spot:1.87, def:2.06, win:58.07 },
  597. "valentine_ll": { title:"Valentine II", nation:"RU", tier:4, type:"LT", prem:1, frag:0.96, dmg:370, spot:0.88, def:1.28, win:53.78 },
  598. "t_50_2": { title:"T-50-2", nation:"RU", tier:5, type:"LT", frag:0.61, dmg:380, spot:4.79, def:0.80, win:54.50 },
  599. "mt25": { title:"MT-25", nation:"RU", tier:6, type:"LT", frag:0.63, dmg:415, spot:3.60, def:0.86, win:53.51 },
  600. "t-28": { title:"T-28", nation:"RU", tier:4, type:"MT", frag:1.19, dmg:421, spot:1.24, def:0.97, win:51.85 },
  601. "a-32": { title:"A-32", nation:"RU", tier:4, type:"MT", prem:1, frag:0.87, dmg:273, spot:2.86, def:0.56, win:53.98 },
  602. "t-34": { title:"T-34", nation:"RU", tier:5, type:"MT", frag:1.15, dmg:528, spot:1.44, def:1.24, win:54.75 },
  603. "matilda_ii_ll": { title:"Matilda IV", nation:"RU", tier:5, type:"MT", prem:1, frag:1.40, dmg:587, spot:1.16, def:1.61, win:55.82 },
  604. "t-34-85": { title:"T-34-85", nation:"RU", tier:6, type:"MT", frag:1.03, dmg:740, spot:1.37, def:1.02, win:53.78 },
  605. "a43": { title:"A-43", nation:"RU", tier:6, type:"MT", frag:1.08, dmg:755, spot:1.44, def:1.21, win:53.18 },
  606. "t-43": { title:"T-43", nation:"RU", tier:7, type:"MT", frag:0.97, dmg:891, spot:1.54, def:1.00, win:53.64 },
  607. "kv-13": { title:"KV-13", nation:"RU", tier:7, type:"MT", frag:0.85, dmg:750, spot:1.59, def:1.05, win:52.94 },
  608. "a44": { title:"A-44", nation:"RU", tier:7, type:"MT", frag:1.00, dmg:943, spot:1.59, def:1.18, win:55.71 },
  609. "t-44-85": { title:"T-44-85", nation:"RU", tier:7, type:"MT", prem:1, frag:0.95, dmg:898, spot:1.52, def:1.12, win:53.05 },
  610. "t-44-122": { title:"T-44-122", nation:"RU", tier:7, type:"MT", prem:1, frag:0.95, dmg:898, spot:1.52, def:1.12, win:53.05 },
  611. "t-44": { title:"T-44", nation:"RU", tier:8, type:"MT", frag:0.97, dmg:1114, spot:1.74, def:1.05, win:54.68 },
  612. "object416": { title:"Object 416", nation:"RU", tier:8, type:"MT", frag:0.95, dmg:1186, spot:1.91, def:1.09, win:53.04 },
  613. "t-54": { title:"T-54", nation:"RU", tier:9, type:"MT", frag:1.11, dmg:1568, spot:1.90, def:0.95, win:55.23 },
  614. "r104_object_430_ii": { title:"Object 430 Version II", nation:"RU", tier:9, type:"MT", frag:0.99, dmg:1524, spot:1.64, def:0.77, win:53.20 },
  615. "t62a": { title:"T-62A", nation:"RU", tier:10, type:"MT", frag:0.98, dmg:1682, spot:1.61, def:0.74, win:50.40 },
  616. "object_140": { title:"Object 140", nation:"RU", tier:10, type:"MT", frag:0.98, dmg:1682, spot:1.61, def:0.74, win:50.40 },
  617. "object_430": { title:"Object 430", nation:"RU", tier:10, type:"MT", frag:0.98, dmg:1682, spot:1.61, def:0.74, win:50.40 },
  618. "object_907": { title:"Object 907", nation:"RU", tier:10, type:"MT", prem:1, frag:0.98, dmg:1682, spot:1.61, def:0.74, win:50.40 },
  619. "kv": { title:"KV", nation:"RU", tier:5, type:"HT", frag:1.01, dmg:590, spot:0.72, def:0.52, win:51.16 },
  620. "kv1": { title:"KV-1", nation:"RU", tier:5, type:"HT", frag:1.22, dmg:653, spot:0.80, def:1.00, win:53.41 },
  621. "churchill_ll": { title:"Churchill III", nation:"RU", tier:5, type:"HT", prem:1, frag:1.30, dmg:614, spot:1.17, def:1.51, win:52.73 },
  622. "kv-220": { title:"KV-220 Beta-Test", nation:"RU", tier:5, type:"HT", prem:1, frag:1.39, dmg:593, spot:1.46, def:0.62, win:54.00 },
  623. "kv-220_action": { title:"KV-220", nation:"RU", tier:5, type:"HT", prem:1, frag:1.39, dmg:593, spot:1.46, def:0.62, win:54.00 },
  624. "kv-1s": { title:"KV-1S", nation:"RU", tier:6, type:"HT", frag:1.33, dmg:1003, spot:1.16, def:0.94, win:56.56 },
  625. "kv2": { title:"KV-2", nation:"RU", tier:6, type:"HT", frag:1.15, dmg:900, spot:0.74, def:0.84, win:53.31 },
  626. "t150": { title:"T-150", nation:"RU", tier:6, type:"HT", frag:1.02, dmg:804, spot:0.80, def:0.79, win:52.65 },
  627. "is": { title:"IS", nation:"RU", tier:7, type:"HT", frag:1.06, dmg:1068, spot:1.05, def:0.79, win:52.53 },
  628. "kv-3": { title:"KV-3", nation:"RU", tier:7, type:"HT", frag:1.09, dmg:1128, spot:0.87, def:0.77, win:53.45 },
  629. "is-3": { title:"IS-3", nation:"RU", tier:8, type:"HT", frag:0.97, dmg:1346, spot:1.03, def:0.77, win:52.09 },
  630. "kv4": { title:"KV-4", nation:"RU", tier:8, type:"HT", frag:0.85, dmg:1223, spot:0.79, def:0.71, win:51.70 },
  631. "object252": { title:"IS-6", nation:"RU", tier:8, type:"HT", prem:1, frag:1.11, dmg:1415, spot:1.11, def:0.91, win:53.28 },
  632. "kv-5": { title:"KV-5", nation:"RU", tier:8, type:"HT", prem:1, frag:1.00, dmg:1248, spot:1.11, def:0.91, win:50.31 },
  633. "st_i": { title:"ST-I", nation:"RU", tier:9, type:"HT", frag:0.96, dmg:1608, spot:0.92, def:0.70, win:52.55 },
  634. "is8": { title:"IS-8", nation:"RU", tier:9, type:"HT", frag:0.96, dmg:1571, spot:1.12, def:0.67, win:50.35 },
  635. "is-4": { title:"IS-4", nation:"RU", tier:10, type:"HT", frag:0.91, dmg:1791, spot:1.08, def:0.78, win:49.75 },
  636. "is-7": { title:"IS-7", nation:"RU", tier:10, type:"HT", frag:0.86, dmg:1700, spot:1.13, def:0.56, win:50.07 },
  637. "at-1": { title:"AT-1", nation:"RU", tier:2, type:"TD", frag:1.74, dmg:307, spot:0.46, def:1.66, win:56.42 },
  638. "su-76": { title:"SU-76", nation:"RU", tier:3, type:"TD", frag:1.49, dmg:396, spot:0.87, def:1.70, win:54.36 },
  639. "su-76i": { title:"SU-76I", nation:"RU", tier:3, type:"TD", prem:1, frag:1.49, dmg:396, spot:0.87, def:1.70, win:54.36 },
  640. "gaz-74b": { title:"SU-85B", nation:"RU", tier:4, type:"TD", frag:1.44, dmg:519, spot:1.00, def:1.45, win:55.48 },
  641. "su-85": { title:"SU-85", nation:"RU", tier:5, type:"TD", frag:1.21, dmg:608, spot:0.54, def:1.22, win:52.36 },
  642. "su_85i": { title:"SU-85I", nation:"RU", tier:5, type:"TD", prem:1, frag:1.21, dmg:608, spot:0.54, def:1.22, win:52.36 },
  643. "su-100": { title:"SU-100", nation:"RU", tier:6, type:"TD", frag:1.24, dmg:887, spot:0.81, def:1.19, win:54.05 },
  644. "su100y": { title:"SU-100Y", nation:"RU", tier:6, type:"TD", prem:1, frag:1.28, dmg:985, spot:0.70, def:0.86, win:54.72 },
  645. "su-152": { title:"SU-152", nation:"RU", tier:7, type:"TD", frag:1.12, dmg:1096, spot:0.57, def:0.94, win:52.53 },
  646. "su100m1": { title:"SU-100M1", nation:"RU", tier:7, type:"TD", frag:1.02, dmg:1034, spot:0.91, def:1.14, win:52.43 },
  647. "su122_44": { title:"SU-122-44", nation:"RU", tier:7, type:"TD", prem:1, frag:1.34, dmg:1251, spot:0.82, def:1.14, win:54.32 },
  648. "isu-152": { title:"ISU-152", nation:"RU", tier:8, type:"TD", frag:1.18, dmg:1561, spot:0.59, def:0.81, win:51.04 },
  649. "su-101": { title:"SU-101", nation:"RU", tier:8, type:"TD", frag:1.02, dmg:1278, spot:0.93, def:1.11, win:50.39 },
  650. "object_704": { title:"Object 704", nation:"RU", tier:9, type:"TD", frag:1.16, dmg:1842, spot:0.69, def:0.70, win:52.00 },
  651. "su122_54": { title:"SU-122-54", nation:"RU", tier:9, type:"TD", frag:1.06, dmg:1575, spot:0.96, def:0.94, win:50.27 },
  652. "object268": { title:"Object 268", nation:"RU", tier:10, type:"TD", frag:1.21, dmg:2219, spot:0.85, def:0.71, win:51.17 },
  653. "object263": { title:"Object 263", nation:"RU", tier:10, type:"TD", frag:1.13, dmg:2027, spot:0.94, def:1.07, win:50.67 },
  654. "su-18": { title:"SU-18", nation:"RU", tier:2, type:"SPG", frag:1.42, dmg:267, spot:0.17, def:2.51, win:49.78 },
  655. "su-26": { title:"SU-26", nation:"RU", tier:3, type:"SPG", frag:1.60, dmg:586, spot:0.16, def:2.17, win:57.28 },
  656. "su-5": { title:"SU-5", nation:"RU", tier:4, type:"SPG", frag:1.02, dmg:582, spot:0.16, def:1.73, win:49.33 },
  657. "su122a": { title:"SU-122A", nation:"RU", tier:5, type:"SPG", frag:1.16, dmg:705, spot:0.12, def:1.79, win:52.19 },
  658. "su-8": { title:"SU-8", nation:"RU", tier:6, type:"SPG", frag:0.92, dmg:1101, spot:0.11, def:1.26, win:49.77 },
  659. "su14_1": { title:"SU-14-1", nation:"RU", tier:7, type:"SPG", frag:0.81, dmg:1226, spot:0.10, def:0.86, win:48.50 },
  660. "s-51": { title:"S-51", nation:"RU", tier:7, type:"SPG", frag:0.82, dmg:1180, spot:0.10, def:0.62, win:48.50 },
  661. "su-14": { title:"SU-14-2", nation:"RU", tier:8, type:"SPG", frag:0.92, dmg:1319, spot:0.09, def:0.66, win:48.58 },
  662. "object_212": { title:"212A", nation:"RU", tier:9, type:"SPG", frag:0.85, dmg:1556, spot:0.09, def:0.57, win:49.17 },
  663. "object_261": { title:"Object 261", nation:"RU", tier:10, type:"SPG", frag:0.91, dmg:1682, spot:0.08, def:0.65, win:48.94 },
  664. "ltraktor": { title:"Leichttraktor", nation:"DE", tier:1, type:"LT", frag:2.11, dmg:278, spot:2.35, def:1.84, win:59.54 },
  665. "pz35t": { title:"Pz.Kpfw. 35 (t)", nation:"DE", tier:2, type:"LT", frag:1.95, dmg:311, spot:2.01, def:2.19, win:57.60 },
  666. "pzi": { title:"Pz.Kpfw. I", nation:"DE", tier:2, type:"LT", frag:1.72, dmg:266, spot:3.18, def:2.66, win:59.06 },
  667. "pzii": { title:"Pz.Kpfw. II", nation:"DE", tier:2, type:"LT", frag:1.69, dmg:272, spot:2.05, def:1.78, win:56.14 },
  668. "h39_captured": { title:"Pz.Kpfw. 38H 735 (f)", nation:"DE", tier:2, type:"LT", prem:1, frag:2.20, dmg:352, spot:1.88, def:2.72, win:54.01 },
  669. "pz38t": { title:"Pz.Kpfw. 38 (t)", nation:"DE", tier:3, type:"LT", frag:1.68, dmg:384, spot:1.58, def:1.77, win:56.45 },
  670. "pziii_a": { title:"Pz.Kpfw. III Ausf. A", nation:"DE", tier:3, type:"LT", frag:1.20, dmg:268, spot:1.84, def:1.53, win:53.33 },
  671. "pzi_ausf_c": { title:"Pz.Kpfw. I Ausf. C", nation:"DE", tier:3, type:"LT", frag:1.31, dmg:277, spot:3.01, def:1.41, win:57.25 },
  672. "pz_ii_ausfg": { title:"Pz.Kpfw. II Ausf. G", nation:"DE", tier:3, type:"LT", frag:1.15, dmg:288, spot:1.99, def:1.63, win:59.52 },
  673. "pzii_j": { title:"Pz.Kpfw. II Ausf. J", nation:"DE", tier:3, type:"LT", prem:1, frag:2.14, dmg:405, spot:2.08, def:3.01, win:63.00 },
  674. "t-15": { title:"T-15", nation:"DE", tier:3, type:"LT", prem:1, frag:1.29, dmg:295, spot:3.61, def:1.66, win:59.71 },
  675. "pzii_luchs": { title:"Pz.Kpfw. II Luchs", nation:"DE", tier:4, type:"LT", frag:1.34, dmg:339, spot:2.75, def:1.32, win:56.52 },
  676. "pz38_na": { title:"Pz.Kpfw. 38 (t) n.A.", nation:"DE", tier:4, type:"LT", frag:0.92, dmg:290, spot:2.71, def:1.11, win:54.03 },
  677. "vk1602": { title:"VK 16.02 Leopard", nation:"DE", tier:5, type:"LT", frag:0.73, dmg:357, spot:3.20, def:0.80, win:53.30 },
  678. "vk2801": { title:"VK 28.01", nation:"DE", tier:6, type:"LT", frag:0.77, dmg:596, spot:2.97, def:0.62, win:53.08 },
  679. "auf_panther": { title:"Aufklarungspanzer Panther", nation:"DE", tier:7, type:"LT", frag:0.69, dmg:738, spot:2.36, def:0.71, win:50.37 },
  680. "pz_iv_ausfa": { title:"Pz.Kpfw. IV Ausf. A", nation:"DE", tier:3, type:"MT", frag:0, dmg:0, spot:0, def:0, win:0 }, // no values
  681. "s35_captured": { title:"Pz.Kpfw. S35 739 (f)", nation:"DE", tier:3, type:"MT", prem:1, frag:1.90, dmg:425, spot:1.58, def:1.94, win:62.00 },
  682. "g100_gtraktor_krupp": { title:"Grosstraktor Krupp", nation:"DE", tier:3, type:"MT", prem:1, frag:0, dmg:0, spot:0, def:0, win:0 }, // no values
  683. "pziii_ausfj": { title:"Pz.Kpfw. III", nation:"DE", tier:4, type:"MT", frag:1.19, dmg:360, spot:2.15, def:1.16, win:55.49 },
  684. "vk2001db": { title:"VK 20.01 (D)", nation:"DE", tier:4, type:"MT", frag:1.30, dmg:424, spot:1.71, def:1.36, win:57.92 },
  685. "pz_iv_ausfd": { title:"Pz.Kpfw. IV Ausf. D", nation:"DE", tier:4, type:"MT", frag:0, dmg:0, spot:0, def:0, win:0 }, // no values
  686. "pziv": { title:"Pz.Kpfw. IV", nation:"DE", tier:5, type:"MT", frag:1.23, dmg:607, spot:1.26, def:1.07, win:54.88 }, // for backup
  687. "pz_iv_ausfh": { title:"Pz.Kpfw. IV Ausf. H", nation:"DE", tier:5, type:"MT", frag:1.23, dmg:607, spot:1.26, def:1.07, win:54.88 },
  688. "pziii_iv": { title:"Pz.Kpfw. III/IV", nation:"DE", tier:5, type:"MT", frag:0.98, dmg:455, spot:1.65, def:1.00, win:53.07 },
  689. "t-25": { title:"T-25", nation:"DE", tier:5, type:"MT", prem:1, frag:1.22, dmg:596, spot:1.55, def:1.29, win:55.52 },
  690. "pziv_hydro": { title:"Pz.Kpfw. IV hydrostat.", nation:"DE", tier:5, type:"MT", prem:1, frag:1.23, dmg:607, spot:1.26, def:1.07, win:54.88 },
  691. "vk3002db_v1": { title:"VK 30.01 (D)", nation:"DE", tier:6, type:"MT", frag:1.13, dmg:788, spot:1.49, def:1.33, win:53.74 },
  692. "vk3001p": { title:"VK 30.01 (P)", nation:"DE", tier:6, type:"MT", frag:0.93, dmg:666, spot:1.28, def:0.89, win:52.07 },
  693. "vk3002m": { title:"VK 30.02 (M)", nation:"DE", tier:6, type:"MT", frag:1.08, dmg:755, spot:1.44, def:1.21, win:53.18 },
  694. "pzv_pziv": { title:"Pz.Kpfw. V/IV", nation:"DE", tier:6, type:"MT", prem:1, frag:1.04, dmg:643, spot:2.01, def:1.30, win:50.70 },
  695. "pzv_pziv_ausf_alfa": { title:"Pz.Kpfw. V/IV Alpha", nation:"DE", tier:6, type:"MT", prem:1, frag:1.04, dmg:643, spot:2.01, def:1.30, win:51.35 },
  696. "pziv_schmalturm": { title:"Pz.Kpfw. IV Schmalturm", nation:"DE", tier:6, type:"MT", prem:1, frag:1.07, dmg:808, spot:1.10, def:1.62, win:50.54 },
  697. "pzv": { title:"Panther", nation:"DE", tier:7, type:"MT", frag:0.84, dmg:850, spot:1.11, def:1.27, win:51.64 },
  698. "vk3002db": { title:"VK 30.02 (D)", nation:"DE", tier:7, type:"MT", frag:0.92, dmg:848, spot:1.54, def:1.02, win:52.63 },
  699. "panther_m10": { title:"Panther/M10", nation:"DE", tier:7, type:"MT", prem:1, frag:0.99, dmg:942, spot:1.27, def:1.49, win:52.41 },
  700. "panther_ii": { title:"Panther II", nation:"DE", tier:8, type:"MT", frag:0.90, dmg:1110, spot:1.43, def:1.04, win:53.04 },
  701. "indien_panzer": { title:"Indien-Panzer", nation:"DE", tier:8, type:"MT", frag:0.90, dmg:1213, spot:1.13, def:1.16, win:50.29 },
  702. "e-50": { title:"E 50", nation:"DE", tier:9, type:"MT", frag:1.01, dmg:1518, spot:1.47, def:0.82, win:52.24 },
  703. "pro_ag_a": { title:"Leopard Prototyp A", nation:"DE", tier:9, type:"MT", frag:0.96, dmg:1485, spot:1.27, def:1.09, win:49.51 },
  704. "e50_ausf_m": { title:"E 50 Ausf. M", nation:"DE", tier:10, type:"MT", frag:0.94, dmg:1701, spot:1.42, def:0.66, win:49.77 },
  705. "leopard1": { title:"Leopard 1", nation:"DE", tier:10, type:"MT", frag:0.93, dmg:1736, spot:1.46, def:0.82, win:47.28 },
  706. "dw_ii": { title:"Durchbruchswagen 2", nation:"DE", tier:4, type:"HT", frag:1.16, dmg:348, spot:1.20, def:1.49, win:51.63 },
  707. "b-1bis_captured": { title:"Pz.Kpfw. B2 740 (f)", nation:"DE", tier:4, type:"HT", prem:1, frag:1.96, dmg:527, spot:1.79, def:2.22, win:60.16 },
  708. "vk3001h": { title:"VK 30.01 (H)", nation:"DE", tier:5, type:"HT", frag:1.17, dmg:677, spot:1.45, def:0.90, win:51.80 },
  709. "vk3601h": { title:"VK 36.01 (H)", nation:"DE", tier:6, type:"HT", frag:1.34, dmg:947, spot:1.40, def:1.40, win:57.39 },
  710. "pzvi": { title:"Tiger I", nation:"DE", tier:7, type:"HT", frag:0.93, dmg:1031, spot:0.94, def:0.98, win:51.68 },
  711. "pzvi_tiger_p": { title:"Tiger (P)", nation:"DE", tier:7, type:"HT", frag:0.97, dmg:1095, spot:0.93, def:1.08, win:53.17 },
  712. "pzvib_tiger_ii": { title:"Tiger II", nation:"DE", tier:8, type:"HT", frag:0.89, dmg:1261, spot:0.99, def:0.83, win:50.25 },
  713. "vk4502a": { title:"VK 45.02 (P) Ausf. A", nation:"DE", tier:8, type:"HT", frag:0.92, dmg:1258, spot:1.25, def:0.89, win:51.16 },
  714. "e-75": { title:"E 75", nation:"DE", tier:9, type:"HT", frag:0.96, dmg:1595, spot:1.00, def:0.69, win:51.37 },
  715. "lowe": { title:"Lowe", nation:"DE", tier:8, type:"HT", prem:1, frag:0.83, dmg:1221, spot:0.84, def:0.79, win:49.04 },
  716. "vk4502p": { title:"VK 45.02 (P) Ausf. B", nation:"DE", tier:9, type:"HT", frag:0.90, dmg:1488, spot:0.93, def:0.60, win:49.63 },
  717. "e-100": { title:"E 100", nation:"DE", tier:10, type:"HT", frag:0.94, dmg:1836, spot:0.98, def:0.52, win:50.59 },
  718. "maus": { title:"Maus", nation:"DE", tier:10, type:"HT", frag:0.82, dmg:1631, spot:0.89, def:0.68, win:49.77 },
  719. "vk7201": { title:"VK 72.01 (K)", nation:"DE", tier:10, type:"HT", prem:1, frag:0.86, dmg:1700, spot:1.13, def:0.56, win:50.07 },
  720. "panzerjager_i": { title:"Panzerjager I", nation:"DE", tier:2, type:"TD", frag:1.95, dmg:330, spot:0.94, def:1.78, win:59.68 },
  721. "g20_marder_ii": { title:"Marder II", nation:"DE", tier:3, type:"TD", frag:1.51, dmg:428, spot:1.08, def:1.51, win:58.41 },
  722. "hetzer": { title:"Hetzer", nation:"DE", tier:4, type:"TD", frag:1.63, dmg:533, spot:0.64, def:1.37, win:57.58 },
  723. "marder_iii": { title:"Marder 38T", nation:"DE", tier:4, type:"TD", frag:1.42, dmg:533, spot:0.64, def:1.37, win:57.58 },
  724. "g101_stug_iii": { title:"StuG III Ausf. B", nation:"DE", tier:5, type:"TD", frag:0, dmg:0, spot:0, def:0, win:0 }, // no values
  725. "stug_40_ausfg": { title:"StuG III Ausf. G", nation:"DE", tier:5, type:"TD", frag:1.21, dmg:616, spot:0.73, def:1.40, win:53.19 },
  726. "pz_sfl_ivc": { title:"Pz.Sfl. IVc", nation:"DE", tier:5, type:"TD", frag:1.32, dmg:681, spot:0.86, def:1.32, win:54.17 },
  727. "jagdpziv": { title:"Jagdpanzer IV", nation:"DE", tier:6, type:"TD", frag:1.08, dmg:748, spot:0.72, def:1.26, win:52.37 },
  728. "nashorn": { title:"Nashorn", nation:"DE", tier:6, type:"TD", frag:1.26, dmg:937, spot:0.80, def:1.14, win:53.97 },
  729. "dickermax": { title:"Dicker Max", nation:"DE", tier:6, type:"TD", prem:1, frag:1.20, dmg:892, spot:0.76, def:1.09, win:51.40 },
  730. "jagdpanther": { title:"Jagdpanther", nation:"DE", tier:7, type:"TD", frag:1.10, dmg:1123, spot:0.68, def:1.10, win:51.94 },
  731. "sturer_emil": { title:"Pz.Sfl. V", nation:"DE", tier:7, type:"TD", frag:1.10, dmg:1123, spot:0.68, def:1.10, win:52.69 },
  732. "e-25": { title:"E 25", nation:"DE", tier:7, type:"TD", prem:1, frag:1.34, dmg:1127, spot:1.40, def:2.25, win:50.54 },
  733. "jagdpantherii": { title:"Jagdpanther II", nation:"DE", tier:8, type:"TD", frag:1.14, dmg:1544, spot:0.76, def:0.98, win:50.97 },
  734. "ferdinand": { title:"Ferdinand", nation:"DE", tier:8, type:"TD", frag:1.07, dmg:1455, spot:0.62, def:0.90, win:50.53 },
  735. "rhb_waffentrager": { title:"Rhm.-Borsig Waffentrager", nation:"DE", tier:8, type:"TD", frag:1.22, dmg:1652, spot:0.81, def:1.05, win:54.54 },
  736. "jagdtiger_sdkfz_185": { title:"8,8 cm Pak 43 Jagdtiger", nation:"DE", tier:8, type:"TD", prem:1, frag:1.00, dmg:1378, spot:0.72, def:1.14, win:50.48 },
  737. "jagdtiger": { title:"Jagdtiger", nation:"DE", tier:9, type:"TD", frag:1.09, dmg:1777, spot:0.66, def:0.77, win:49.84 },
  738. "waffentrager_iv": { title:"Waffentrager auf Pz. IV", nation:"DE", tier:9, type:"TD", frag:1.16, dmg:1842, spot:0.69, def:0.70, win:52.00 },
  739. "jagdpz_e100": { title:"Jagdpanzer E 100", nation:"DE", tier:10, type:"TD", frag:1.02, dmg:1943, spot:0.66, def:0.49, win:48.61 },
  740. "waffentrager_e100": { title:"Waffentrager auf E 100", nation:"DE", tier:10, type:"TD", frag:1.40, dmg:2388, spot:0.95, def:0.68, win:53.83 },
  741. "gw_mk_vie": { title:"G.Pz. Mk. VI (e)", nation:"DE", tier:2, type:"SPG", frag:1.47, dmg:280, spot:0.17, def:2.23, win:51.21 },
  742. "bison_i": { title:"Sturmpanzer I Bison", nation:"DE", tier:3, type:"SPG", frag:1.31, dmg:383, spot:0.21, def:1.57, win:57.02 },
  743. "wespe": { title:"Wespe", nation:"DE", tier:3, type:"SPG", frag:1.15, dmg:415, spot:0.16, def:1.81, win:54.00 },
  744. "sturmpanzer_ii": { title:"Sturmpanzer II", nation:"DE", tier:4, type:"SPG", frag:1.16, dmg:436, spot:0.18, def:1.68, win:50.46 },
  745. "pz_sfl_ivb": { title:"Pz.Sfl. IVb", nation:"DE", tier:4, type:"SPG", frag:1.10, dmg:471, spot:0.16, def:2.44, win:55.16 },
  746. "grille": { title:"Grille", nation:"DE", tier:5, type:"SPG", frag:1.08, dmg:648, spot:0.11, def:1.58, win:51.03 },
  747. "hummel": { title:"Hummel", nation:"DE", tier:6, type:"SPG", frag:0.84, dmg:982, spot:0.11, def:1.28, win:48.42 },
  748. "g_panther": { title:"G.W. Panther", nation:"DE", tier:7, type:"SPG", frag:0.81, dmg:1248, spot:0.10, def:0.91, win:48.17 },
  749. "gw_tiger_p": { title:"G.W. Tiger (P)", nation:"DE", tier:8, type:"SPG", frag:0.88, dmg:1335, spot:0.09, def:0.61, win:47.62 },
  750. "g_tiger": { title:"G.W. Tiger", nation:"DE", tier:9, type:"SPG", frag:0.86, dmg:1552, spot:0.09, def:0.61, win:49.30 },
  751. "g_e": { title:"G.W. E 100", nation:"DE", tier:10, type:"SPG", frag:0.86, dmg:1651, spot:0.08, def:0.56, win:49.55 },
  752. "t1_cunningham": { title:"T1 Cunningham", nation:"US", tier:1, type:"LT", frag:2.14, dmg:265, spot:2.67, def:1.78, win:61.40 },
  753. "m2_lt": { title:"M2 Light Tank", nation:"US", tier:2, type:"LT", frag:1.75, dmg:281, spot:2.73, def:1.76, win:60.49 },
  754. "t2_lt": { title:"T2 Light Tank", nation:"US", tier:2, type:"LT", prem:1, frag:1.70, dmg:275, spot:3.12, def:1.64, win:58.98 },
  755. "t1_e6": { title:"T1E6", nation:"US", tier:2, type:"LT", prem:1, frag:1.62, dmg:269, spot:2.05, def:1.43, win:57.06 },
  756. "t7_combat_car": { title:"T7 Combat Car", nation:"US", tier:2, type:"LT", prem:1, frag:1.80, dmg:295, spot:2.02, def:2.02, win:58.04 },
  757. "m3_stuart": { title:"M3 Stuart", nation:"US", tier:3, type:"LT", frag:1.09, dmg:252, spot:2.66, def:1.57, win:53.72 },
  758. "m22_locust": { title:"M22 Locust", nation:"US", tier:3, type:"LT", prem:1, frag:1.22, dmg:287, spot:2.94, def:1.27, win:58.31 },
  759. "mtls1g14": { title:"MTLS-1G14", nation:"US", tier:3, type:"LT", prem:1, frag:1.39, dmg:314, spot:1.95, def:1.64, win:57.44 },
  760. "m5_stuart": { title:"M5 Stuart", nation:"US", tier:4, type:"LT", frag:1.03, dmg:334, spot:3.12, def:1.28, win:57.84 },
  761. "m24_chaffee": { title:"M24 Chaffee", nation:"US", tier:5, type:"LT", frag:0.69, dmg:538, spot:2.67, def:0.81, win:53.27 },
  762. "t21": { title:"T21", nation:"US", tier:6, type:"LT", frag:0.65, dmg:517, spot:2.44, def:0.76, win:52.09 },
  763. "t71": { title:"T71", nation:"US", tier:7, type:"LT", frag:0.81, dmg:824, spot:2.66, def:0.85, win:53.03 },
  764. "t2_med": { title:"T2 Medium Tank", nation:"US", tier:2, type:"MT", frag:1.92, dmg:310, spot:2.01, def:1.92, win:57.24 },
  765. "m2_med": { title:"M2 Medium Tank", nation:"US", tier:3, type:"MT", frag:1.38, dmg:301, spot:1.45, def:1.15, win:53.29 },
  766. "m3_grant": { title:"M3 Lee", nation:"US", tier:4, type:"MT", frag:1.14, dmg:377, spot:0.87, def:0.97, win:51.78 },
  767. "m4_sherman": { title:"M4 Sherman", nation:"US", tier:5, type:"MT", frag:1.73, dmg:801, spot:1.57, def:1.31, win:60.24 },
  768. "m7_med": { title:"M7", nation:"US", tier:5, type:"MT", frag:0.98, dmg:441, spot:2.15, def:1.12, win:53.32 },
  769. "ram-ii": { title:"Ram II", nation:"US", tier:5, type:"MT", prem:1, frag:1.19, dmg:538, spot:1.37, def:1.31, win:55.69 },
  770. "m4a2e4": { title:"M4A2E4 Sherman", nation:"US", tier:5, type:"MT", prem:1, frag:0.94, dmg:401, spot:1.45, def:0.94, win:51.74 },
  771. "sherman_jumbo": { title:"M4A3E2 Sherman Jumbo", nation:"US", tier:6, type:"MT", frag:1.21, dmg:840, spot:1.19, def:1.38, win:54.75 },
  772. "m4a3e8_sherman": { title:"M4A3E8 Sherman", nation:"US", tier:6, type:"MT", frag:1.03, dmg:700, spot:1.50, def:1.11, win:53.63 },
  773. "t20": { title:"T20", nation:"US", tier:7, type:"MT", frag:0.97, dmg:932, spot:1.69, def:0.98, win:53.52 },
  774. "t23e3": { title:"T23E3", nation:"US", tier:7, type:"MT", prem:1, frag:0, dmg:0, spot:0, def:0, win:0 }, // no values
  775. "pershing": { title:"M26 Pershing", nation:"US", tier:8, type:"MT", frag:0.95, dmg:1159, spot:1.53, def:1.11, win:52.76 },
  776. "t69": { title:"T69", nation:"US", tier:8, type:"MT", frag:1.21, dmg:1490, spot:1.33, def:1.48, win:55.52 },
  777. "t26_e4_superpershing": { title:"T26E4 SuperPershing", nation:"US", tier:8, type:"MT", prem:1, frag:0.89, dmg:1151, spot:0.90, def:1.10, win:52.30 },
  778. "t23": { title:"T23", nation:"US", tier:8, type:"MT", prem:1, frag:0.95, dmg:1159, spot:1.53, def:1.11, win:52.76 },
  779. "m46_patton": { title:"M46 Patton", nation:"US", tier:9, type:"MT", frag:1.02, dmg:1503, spot:1.64, def:0.81, win:52.47 },
  780. "t54e1": { title:"T54E1", nation:"US", tier:9, type:"MT", frag:1.14, dmg:1670, spot:1.05, def:0.81, win:51.79 },
  781. "m48a1": { title:"M48A1 Patton", nation:"US", tier:10, type:"MT", frag:0.97, dmg:1716, spot:1.58, def:0.63, win:50.52 },
  782. "m60": { title:"M60", nation:"US", tier:10, type:"MT", prem:1, frag:0.91, dmg:1735, spot:1.31, def:0.60, win:48.50 },
  783. "t95_e6": { title:"T95E6", nation:"US", tier:10, type:"MT", prem:1, frag:0, dmg:0, spot:0, def:0, win:0 }, // no values
  784. "t1_hvy": { title:"T1 Heavy Tank", nation:"US", tier:5, type:"HT", frag:1.24, dmg:636, spot:1.14, def:1.15, win:53.98 },
  785. "t14": { title:"T14", nation:"US", tier:5, type:"HT", prem:1, frag:1.35, dmg:593, spot:1.53, def:1.31, win:54.02 },
  786. "m6": { title:"M6", nation:"US", tier:6, type:"HT", frag:1.07, dmg:845, spot:1.03, def:0.92, win:52.17 },
  787. "t29": { title:"T29", nation:"US", tier:7, type:"HT", frag:1.13, dmg:1239, spot:1.07, def:1.04, win:54.14 },
  788. "t32": { title:"T32", nation:"US", tier:8, type:"HT", frag:0.97, dmg:1336, spot:1.21, def:0.92, win:52.77 },
  789. "t34_hvy": { title:"T34", nation:"US", tier:8, type:"HT", prem:1, frag:0.87, dmg:1313, spot:0.81, def:0.68, win:50.57 },
  790. "m6a2e1": { title:"M6A2E1", nation:"US", tier:8, type:"HT", prem:1, frag:0.87, dmg:1113, spot:1.22, def:0.80, win:47.06 },
  791. "m103": { title:"M103", nation:"US", tier:9, type:"HT", frag:0.92, dmg:1578, spot:1.09, def:0.67, win:50.82 },
  792. "t110": { title:"T110E5", nation:"US", tier:10, type:"HT", frag:0.90, dmg:1802, spot:1.19, def:0.74, win:50.23 },
  793. "t57_58": { title:"T57 Heavy Tank", nation:"US", tier:10, type:"HT", frag:1.16, dmg:2159, spot:0.85, def:0.78, win:51.43 },
  794. "t18": { title:"T18", nation:"US", tier:2, type:"TD", frag:2.48, dmg:360, spot:1.21, def:1.79, win:60.50 },
  795. "t82": { title:"T82", nation:"US", tier:3, type:"TD", frag:1.57, dmg:389, spot:1.31, def:1.11, win:58.10 },
  796. "t40": { title:"T40", nation:"US", tier:4, type:"TD", frag:1.45, dmg:533, spot:1.15, def:1.46, win:56.56 },
  797. "m8a1": { title:"M8A1", nation:"US", tier:4, type:"TD", frag:1.42, dmg:516, spot:1.54, def:1.77, win:57.49 },
  798. "m10_wolverine": { title:"M10 Wolverine", nation:"US", tier:5, type:"TD", frag:1.26, dmg:627, spot:0.95, def:1.42, win:54.24 },
  799. "t49": { title:"T49", nation:"US", tier:5, type:"TD", frag:1.46, dmg:700, spot:1.71, def:1.67, win:56.89 },
  800. "m36_slagger": { title:"M36 Jackson", nation:"US", tier:6, type:"TD", frag:1.09, dmg:824, spot:0.89, def:1.23, win:53.57 },
  801. "m18_hellcat": { title:"M18 Hellcat", nation:"US", tier:6, type:"TD", frag:1.37, dmg:1002, spot:1.47, def:1.60, win:56.24 },
  802. "t25_at": { title:"T25 AT", nation:"US", tier:7, type:"TD", frag:1.06, dmg:1057, spot:0.81, def:1.12, win:53.20 },
  803. "t25_2": { title:"T25/2", nation:"US", tier:7, type:"TD", frag:1.01, dmg:1041, spot:0.98, def:1.26, win:52.52 },
  804. "t28_prototype": { title:"T28 Prototype", nation:"US", tier:8, type:"TD", frag:1.07, dmg:1467, spot:0.51, def:1.06, win:50.58 },
  805. "t28": { title:"T28", nation:"US", tier:8, type:"TD", frag:1.01, dmg:1353, spot:0.51, def:0.95, win:49.66 },
  806. "t95": { title:"T95", nation:"US", tier:9, type:"TD", frag:1.06, dmg:1646, spot:0.46, def:0.76, win:49.81 },
  807. "t30": { title:"T30", nation:"US", tier:9, type:"TD", frag:1.02, dmg:1733, spot:0.72, def:0.64, win:50.69 },
  808. "t110e3": { title:"T110E3", nation:"US", tier:10, type:"TD", frag:1.10, dmg:2072, spot:0.73, def:0.50, win:51.04 },
  809. "t110e4": { title:"T110E4", nation:"US", tier:10, type:"TD", frag:1.03, dmg:2053, spot:0.81, def:0.56, win:48.93 },
  810. "t57": { title:"T57", nation:"US", tier:2, type:"SPG", frag:1.56, dmg:296, spot:0.30, def:2.33, win:51.15 },
  811. "m7_priest": { title:"M7 Priest", nation:"US", tier:3, type:"SPG", frag:1.04, dmg:567, spot:0.16, def:1.89, win:53.00 },
  812. "sexton_i": { title:"Sextron I", nation:"US", tier:3, type:"SPG", frag:1.30, dmg:490, spot:0.16, def:1.93, win:55.11 },
  813. "m37": { title:"M37", nation:"US", tier:4, type:"SPG", frag:1.15, dmg:419, spot:0.17, def:1.90, win:49.49 },
  814. "m41": { title:"M41", nation:"US", tier:5, type:"SPG", frag:0.99, dmg:874, spot:0.12, def:1.33, win:50.44 },
  815. "m44": { title:"M44", nation:"US", tier:6, type:"SPG", frag:0.90, dmg:974, spot:0.11, def:1.52, win:47.95 },
  816. "m12": { title:"M12", nation:"US", tier:7, type:"SPG", frag:0.81, dmg:1240, spot:0.10, def:0.89, win:48.45 },
  817. "m40m43": { title:"M40/M43", nation:"US", tier:8, type:"SPG", frag:0.86, dmg:1378, spot:0.09, def:0.46, win:47.61 },
  818. "m53_55": { title:"M53/M55", nation:"US", tier:9, type:"SPG", frag:0.86, dmg:1619, spot:0.09, def:0.58, win:48.32 },
  819. "t92": { title:"T92", nation:"US", tier:10, type:"SPG", frag:0.86, dmg:1693, spot:0.08, def:0.58, win:48.24 },
  820. "gb03_cruiser_mk_i": { title:"Cruiser Mk. I", nation:"UK", tier:2, type:"LT", frag:1.73, dmg:301, spot:1.97, def:1.40, win:58.67 },
  821. "gb58_cruiser_mk_iii": { title:"Cruiser Mk. III", nation:"UK", tier:2, type:"LT", frag:2.09, dmg:349, spot:2.24, def:1.42, win:64.03 },
  822. "gb76_mk_vic": { title:"Light Mk. VIC", nation:"UK", tier:2, type:"LT", prem:1, frag:1.80, dmg:295, spot:2.02, def:2.02, win:58.04 },
  823. "gb69_cruiser_mk_ii": { title:"Cruiser Mk. II", nation:"UK", tier:3, type:"LT", frag:1.51, dmg:330, spot:1.02, def:1.20, win:57.99 },
  824. "gb59_cruiser_mk_iv": { title:"Cruiser Mk. IV", nation:"UK", tier:3, type:"LT", frag:1.65, dmg:381, spot:1.92, def:1.31, win:60.33 },
  825. "gb60_covenanter": { title:"Covenanter", nation:"UK", tier:4, type:"LT", frag:1.11, dmg:378, spot:1.81, def:1.15, win:55.60 },
  826. "gb04_valentine": { title:"Valentine", nation:"UK", tier:4, type:"LT", frag:1.45, dmg:396, spot:1.75, def:1.78, win:55.72 },
  827. "gb20_crusader": { title:"Crusader", nation:"UK", tier:5, type:"LT", frag:1.06, dmg:489, spot:1.71, def:1.25, win:54.16 },
  828. "gb01_medium_mark_i": { title:"Vickers Medium Mk. I", nation:"UK", tier:1, type:"LT", frag:2.05, dmg:260, spot:1.38, def:1.76, win:57.88 },
  829. "gb05_vickers_medium_mk_ii": { title:"Vickers Medium Mk. II", nation:"UK", tier:2, type:"MT", frag:1.80, dmg:297, spot:1.23, def:1.67, win:57.37 },
  830. "gb06_vickers_medium_mk_iii": { title:"Vickers Medium Mk. III", nation:"UK", tier:3, type:"MT", frag:1.15, dmg:290, spot:1.04, def:0.47, win:51.20 },
  831. "gb07_matilda": { title:"Matilda", nation:"UK", tier:4, type:"MT", frag:1.55, dmg:562, spot:0.91, def:2.08, win:59.66 },
  832. "gb68_matilda_black_prince": { title:"Matilda Black Prince", nation:"UK", tier:5, type:"MT", prem:1, frag:1.22, dmg:536, spot:0.78, def:1.28, win:52.98 },
  833. "gb21_cromwell": { title:"Cromwell", nation:"UK", tier:6, type:"MT", frag:1.11, dmg:744, spot:2.05, def:1.09, win:54.02 },
  834. "gb22_comet": { title:"Comet", nation:"UK", tier:7, type:"MT", frag:1.04, dmg:958, spot:1.82, def:1.14, win:54.07 },
  835. "gb23_centurion": { title:"Centurion Mk. I", nation:"UK", tier:8, type:"MT", frag:0.87, dmg:1193, spot:1.26, def:1.07, win:53.58 },
  836. "gb24_centurion_mk3": { title:"Centurion Mk. 7/1", nation:"UK", tier:9, type:"MT", frag:0.90, dmg:1503, spot:1.22, def:0.79, win:50.50 },
  837. "gb70_fv4202_105": { title:"FV4202", nation:"UK", tier:10, type:"MT", frag:0.93, dmg:1726, spot:1.34, def:0.60, win:48.85 },
  838. "gb08_churchill_i": { title:"Churchill I", nation:"UK", tier:5, type:"HT", frag:1.24, dmg:671, spot:0.90, def:1.43, win:53.96 },
  839. "gb51_excelsior": { title:"Excelsior", nation:"UK", tier:5, type:"HT", prem:1, frag:1.32, dmg:582, spot:1.32, def:1.89, win:53.90 },
  840. "gb09_churchill_vii": { title:"Churchill VII", nation:"UK", tier:6, type:"HT", frag:1.06, dmg:802, spot:0.76, def:1.18, win:52.39 },
  841. "gb63_tog_ii": { title:"TOG II*", nation:"UK", tier:6, type:"HT", prem:1, frag:1.29, dmg:922, spot:0.60, def:1.41, win:55.31 },
  842. "gb10_black_prince": { title:"Black Prince", nation:"UK", tier:7, type:"HT", frag:0.96, dmg:1043, spot:0.89, def:1.10, win:53.54 },
  843. "gb11_caernarvon": { title:"Caernarvon", nation:"UK", tier:8, type:"HT", frag:0.84, dmg:1257, spot:1.06, def:0.87, win:52.11 },
  844. "gb12_conqueror": { title:"Conqueror", nation:"UK", tier:9, type:"HT", frag:0.90, dmg:1604, spot:1.04, def:0.68, win:49.96 },
  845. "gb13_fv215b": { title:"FV215b", nation:"UK", tier:10, type:"HT", frag:0.92, dmg:1859, spot:1.06, def:0.76, win:47.41 },
  846. "gb39_universal_carrierqf2": { title:"Universal Carrier 2-pdr", nation:"UK", tier:2, type:"TD", frag:1.95, dmg:321, spot:1.48, def:1.77, win:60.98 },
  847. "gb42_valentine_at": { title:"Valentine AT", nation:"UK", tier:3, type:"TD", frag:1.76, dmg:401, spot:0.94, def:1.64, win:59.00 },
  848. "gb57_alecto": { title:"Alecto", nation:"UK", tier:4, type:"TD", frag:1.49, dmg:504, spot:1.48, def:1.66, win:55.33 },
  849. "gb73_at2": { title:"AT 2", nation:"UK", tier:5, type:"TD", frag:1.29, dmg:617, spot:0.79, def:1.97, win:55.00 },
  850. "gb74_at8": { title:"AT 8", nation:"UK", tier:6, type:"TD", frag:1.24, dmg:916, spot:0.73, def:1.69, win:54.00 },
  851. "gb40_gun_carrier_churchill": { title:"Churchill Gun Carrier", nation:"UK", tier:6, type:"TD", frag:0.92, dmg:704, spot:0.46, def:1.10, win:50.85 },
  852. "gb75_at7": { title:"AT 7", nation:"UK", tier:7, type:"TD", frag:1.19, dmg:1249, spot:0.69, def:1.10, win:54.00 },
  853. "gb71_at_15a": { title:"AT 15A", nation:"UK", tier:7, type:"TD", prem:1, frag:0.92, dmg:1008, spot:0.82, def:1.21, win:51.56 },
  854. "gb72_at15": { title:"AT 15", nation:"UK", tier:8, type:"TD", frag:1.15, dmg:1533, spot:0.63, def:1.31, win:53.26 },
  855. "gb32_tortoise": { title:"Tortoise", nation:"UK", tier:9, type:"TD", frag:1.11, dmg:1772, spot:0.57, def:1.07, win:51.99 },
  856. "gb48_fv215b_183": { title:"FV215b (183)", nation:"UK", tier:10, type:"TD", frag:1.15, dmg:2179, spot:0.60, def:0.58, win:49.03 },
  857. "gb25_loyd_carrier": { title:"Loyd Gun Carriage", nation:"UK", tier:2, type:"SPG", frag:1.47, dmg:280, spot:0.17, def:2.23, win:51.21 },
  858. "gb27_sexton": { title:"Sexton II", nation:"UK", tier:3, type:"SPG", frag:1.30, dmg:490, spot:0.16, def:1.93, win:55.11 },
  859. "gb78_sexton_i": { title:"Sexton I", nation:"UK", tier:3, type:"SPG", prem:1, frag:1.30, dmg:490, spot:0.16, def:1.93, win:55.11 },
  860. "gb26_birch_gun": { title:"Birch Gun", nation:"UK", tier:4, type:"SPG", frag:1.11, dmg:477, spot:0.16, def:1.94, win:51.11 },
  861. "gb28_bishop": { title:"Bishop", nation:"UK", tier:5, type:"SPG", frag:1.11, dmg:620, spot:0.12, def:1.76, win:55.29 },
  862. "gb77_fv304": { title:"FV304", nation:"UK", tier:6, type:"SPG", frag:0.95, dmg:889, spot:0.13, def:1.72, win:49.00 },
  863. "gb29_crusader_5inch": { title:"Crusader 5.5-in. SP", nation:"UK", tier:7, type:"SPG", frag:0.81, dmg:1226, spot:0.10, def:0.86, win:48.50 },
  864. "gb79_fv206": { title:"FV207", nation:"UK", tier:8, type:"SPG", frag:0.88, dmg:1335, spot:0.09, def:0.61, win:46.68 },
  865. "gb30_fv3805": { title:"FV3805", nation:"UK", tier:9, type:"SPG", frag:0.86, dmg:1619, spot:0.09, def:0.58, win:48.32 },
  866. "gb31_conqueror_gun": { title:"Conqueror Gun Carriage", nation:"UK", tier:10, type:"SPG", frag:0.87, dmg:1778, spot:0.08, def:0.58, win:49.00 },
  867. "renaultft": { title:"Renault FT", nation:"FR", tier:1, type:"LT", frag:2.01, dmg:268, spot:2.12, def:2.17, win:60.24 },
  868. "hotchkiss_h35": { title:"Hotchkiss H35", nation:"FR", tier:2, type:"LT", frag:1.52, dmg:249, spot:1.32, def:2.43, win:58.69 },
  869. "d1": { title:"D1", nation:"FR", tier:2, type:"LT", frag:1.46, dmg:250, spot:1.24, def:2.90, win:53.96 },
  870. "amx38": { title:"AMX 38", nation:"FR", tier:3, type:"LT", frag:0.95, dmg:222, spot:1.05, def:1.64, win:55.07 },
  871. "amx40": { title:"AMX 40", nation:"FR", tier:4, type:"LT", frag:0.93, dmg:297, spot:0.92, def:1.39, win:53.09 },
  872. "elc_amx": { title:"ELC AMX", nation:"FR", tier:5, type:"LT", frag:0.73, dmg:464, spot:2.88, def:0.77, win:53.91 },
  873. "amx_12t": { title:"AMX 12 t", nation:"FR", tier:6, type:"LT", frag:0.63, dmg:471, spot:1.93, def:0.69, win:51.44 },
  874. "amx_13_75": { title:"AMX 13 75", nation:"FR", tier:7, type:"LT", frag:0.75, dmg:623, spot:1.99, def:0.77, win:53.10 },
  875. "amx_13_90": { title:"AMX 13 90", nation:"FR", tier:8, type:"LT", frag:0.81, dmg:846, spot:2.37, def:0.66, win:53.77 },
  876. "d2": { title:"D2", nation:"FR", tier:3, type:"MT", frag:1.38, dmg:320, spot:0.97, def:2.07, win:59.59 },
  877. "lorraine40t": { title:"Lorraine 40 t", nation:"FR", tier:9, type:"MT", frag:1.09, dmg:1380, spot:1.47, def:0.95, win:53.24 },
  878. "bat_chatillon25t": { title:"Bat.-Chatillon 25 t", nation:"FR", tier:10, type:"MT", frag:1.19, dmg:1761, spot:2.12, def:0.84, win:52.51 },
  879. "b1": { title:"B1", nation:"FR", tier:4, type:"HT", frag:1.16, dmg:348, spot:1.20, def:1.49, win:51.63 },
  880. "bdr_g1b": { title:"BDR G1 B", nation:"FR", tier:5, type:"HT", frag:1.22, dmg:654, spot:0.83, def:1.11, win:52.93 },
  881. "arl_44": { title:"ARL 44", nation:"FR", tier:6, type:"HT", frag:0.96, dmg:813, spot:0.84, def:0.85, win:51.08 },
  882. "amx_m4_1945": { title:"AMX M4 mle. 45", nation:"FR", tier:7, type:"HT", frag:0.89, dmg:1021, spot:0.93, def:0.94, win:50.70 },
  883. "amx_50_100": { title:"AMX 50 100", nation:"FR", tier:8, type:"HT", frag:1.12, dmg:1417, spot:0.97, def:1.07, win:51.65 },
  884. "fcm_50t": { title:"FCM 50 t", nation:"FR", tier:8, type:"HT", prem:1, frag:1.00, dmg:1312, spot:1.37, def:1.11, win:50.71 },
  885. "amx_50_120": { title:"AMX 50 120", nation:"FR", tier:9, type:"HT", frag:1.12, dmg:1692, spot:0.90, def:0.87, win:50.81 },
  886. "f10_amx_50b": { title:"AMX 50 B", nation:"FR", tier:10, type:"HT", frag:1.07, dmg:1915, spot:1.03, def:0.87, win:50.15 },
  887. "renaultft_ac": { title:"Renault FT AC", nation:"FR", tier:2, type:"TD", frag:2.02, dmg:334, spot:0.86, def:1.65, win:54.47 },
  888. "fcm_36pak40": { title:"FCM 36 Pak 40", nation:"FR", tier:3, type:"TD", prem:1, frag:1.58, dmg:389, spot:1.02, def:2.09, win:57.84 },
  889. "renaultue57": { title:"Renault UE 57", nation:"FR", tier:3, type:"TD", frag:1.96, dmg:472, spot:1.03, def:2.15, win:59.00 },
  890. "somua_sau_40": { title:"Somua SAu 40", nation:"FR", tier:4, type:"TD", frag:1.19, dmg:409, spot:0.59, def:1.14, win:53.90 },
  891. "s_35ca": { title:"S35 CA", nation:"FR", tier:5, type:"TD", frag:1.26, dmg:649, spot:0.82, def:1.26, win:51.59 },
  892. "arl_v39": { title:"ARL V39", nation:"FR", tier:6, type:"TD", frag:0.99, dmg:765, spot:0.68, def:1.13, win:48.76 },
  893. "amx_ac_mle1946": { title:"AMX AC mle. 46", nation:"FR", tier:7, type:"TD", frag:0.95, dmg:1043, spot:0.72, def:0.97, win:51.34 },
  894. "amx_ac_mle1948": { title:"AMX AC mle. 48", nation:"FR", tier:8, type:"TD", frag:1.00, dmg:1359, spot:0.80, def:0.95, win:50.97 },
  895. "amx50_foch": { title:"AMX 50 Foch", nation:"FR", tier:9, type:"TD", frag:1.03, dmg:1674, spot:0.97, def:0.90, win:51.90 },
  896. "amx_50fosh_155": { title:"AMX 50 Foch (155)", nation:"FR", tier:10, type:"TD", frag:1.33, dmg:2296, spot:0.95, def:0.68, win:52.77 },
  897. "renaultbs": { title:"Renault FT 75 BS", nation:"FR", tier:2, type:"SPG", frag:1.44, dmg:278, spot:0.18, def:1.85, win:52.70 },
  898. "lorraine39_l_am": { title:"Lorraine 39L AM", nation:"FR", tier:3, type:"SPG", frag:1.39, dmg:500, spot:0.15, def:2.20, win:54.24 },
  899. "amx_ob_am105": { title:"AMX 105 AM mle. 47", nation:"FR", tier:4, type:"SPG", frag:1.11, dmg:477, spot:0.16, def:1.94, win:51.11 },
  900. "amx_105am": { title:"AMX 13 105 AM mle. 50", nation:"FR", tier:5, type:"SPG", frag:1.39, dmg:710, spot:0.12, def:2.01, win:52.80 },
  901. "_105_lefh18b2": { title:"105 leFH18B2", nation:"FR", tier:5, type:"SPG", prem:1, frag:1.22, dmg:675, spot:0.12, def:2.26, win:51.40 },
  902. "amx_13f3am": { title:"AMX 13 F3 AM", nation:"FR", tier:6, type:"SPG", frag:0.90, dmg:1052, spot:0.11, def:1.56, win:49.39 },
  903. "lorraine155_50": { title:"Lorraine 155 mle. 50", nation:"FR", tier:7, type:"SPG", frag:0.79, dmg:1235, spot:0.10, def:1.02, win:48.87 },
  904. "lorraine155_51": { title:"Lorraine 155 mle. 51", nation:"FR", tier:8, type:"SPG", frag:0.85, dmg:1309, spot:0.09, def:0.72, win:46.67 },
  905. "bat_chatillon155_55": { title:"Bat.-Chatillon 155 55", nation:"FR", tier:9, type:"SPG", frag:1.02, dmg:1576, spot:0.09, def:0.59, win:48.93 },
  906. "bat_chatillon155_58": { title:"Bat.-Chatillon 155 58", nation:"FR", tier:10, type:"SPG", frag:1.02, dmg:1682, spot:0.08, def:0.94, win:50.11 },
  907. "ch06_renault_nc31": { title:"Renault NC-31", nation:"CH", tier:1, type:"LT", frag:2.05, dmg:274, spot:1.51, def:2.10, win:60.00 },
  908. "ch07_vickers_mke_type_bt26": { title:"Vickers Mk. E Type B", nation:"CH", tier:2, type:"LT", frag:1.85, dmg:308, spot:1.72, def:1.83, win:60.49 },
  909. "ch08_type97_chi_ha": { title:"Type 97 Chi-Ha", nation:"CH", tier:3, type:"LT", frag:1.57, dmg:384, spot:1.47, def:1.71, win:59.80 },
  910. "ch09_m5": { title:"M5A1 Stuart", nation:"CH", tier:4, type:"LT", frag:1.08, dmg:377, spot:2.62, def:1.15, win:55.52 },
  911. "ch15_59_16": { title:"59-16", nation:"CH", tier:6, type:"LT", frag:0.63, dmg:415, spot:2.83, def:0.81, win:51.52 },
  912. "ch24_type64": { title:"Type 64", nation:"CH", tier:6, type:"LT", prem:1, frag:0.66, dmg:483, spot:2.75, def:0.75, win:52.33 },
  913. "ch16_wz_131": { title:"WZ-131", nation:"CH", tier:7, type:"LT", frag:0.73, dmg:752, spot:2.59, def:0.81, win:52.48 },
  914. "ch02_type62": { title:"Type 62", nation:"CH", tier:7, type:"LT", prem:1, frag:0.70, dmg:685, spot:2.43, def:0.85, win:52.18 },
  915. "ch17_wz131_1_wz132": { title:"WZ-132", nation:"CH", tier:8, type:"LT", frag:0.68, dmg:804, spot:2.87, def:0.69, win:52.11 },
  916. "ch21_t34": { title:"Type T-34", nation:"CH", tier:5, type:"MT", frag:1.18, dmg:538, spot:1.45, def:1.25, win:53.54 },
  917. "ch20_type58": { title:"Type 58", nation:"CH", tier:6, type:"MT", frag:1.10, dmg:751, spot:1.56, def:1.22, win:52.87 },
  918. "ch04_t34_1": { title:"T-34-1", nation:"CH", tier:7, type:"MT", frag:1.03, dmg:1015, spot:1.58, def:1.04, win:53.58 },
  919. "ch05_t34_2": { title:"T-34-2", nation:"CH", tier:8, type:"MT", frag:0.91, dmg:1115, spot:1.66, def:0.79, win:52.30 },
  920. "ch14_t34_3": { title:"T-34-3", nation:"CH", tier:8, type:"MT", prem:1, frag:0.91, dmg:1115, spot:1.66, def:0.79, win:52.30 },
  921. "ch01_type59": { title:"Type 59", nation:"CH", tier:8, type:"MT", prem:1, frag:0.99, dmg:1132, spot:1.70, def:1.02, win:52.88 },
  922. "ch01_type59_g": { title:"Type 59 Gold", nation:"CH", tier:8, type:"MT", prem:1, frag:0.99, dmg:1132, spot:1.70, def:1.02, win:52.88 },
  923. "ch18_wz-120": { title:"WZ-120", nation:"CH", tier:9, type:"MT", frag:0.99, dmg:1524, spot:1.64, def:0.77, win:53.20 },
  924. "ch19_121": { title:"121", nation:"CH", tier:10, type:"MT", frag:0.95, dmg:1704, spot:1.39, def:0.69, win:51.04 },
  925. "ch10_is2": { title:"IS-2", nation:"CH", tier:7, type:"HT", frag:1.07, dmg:1153, spot:1.11, def:0.86, win:53.10 },
  926. "ch11_110": { title:"110", nation:"CH", tier:8, type:"HT", frag:0.94, dmg:1347, spot:1.17, def:0.87, win:53.26 },
  927. "ch03_111": { title:"WZ-111", nation:"CH", tier:8, type:"HT", prem:1, frag:1.11, dmg:1415, spot:1.11, def:0.91, win:53.28 },
  928. "ch23_112": { title:"112", nation:"CH", tier:8, type:"HT", prem:1, frag:1.11, dmg:1415, spot:1.11, def:0.91, win:53.28 },
  929. "ch12_111_1_2_3": { title:"WZ-111 model 1-4", nation:"CH", tier:9, type:"HT", frag:0.91, dmg:1586, spot:1.34, def:0.54, win:52.66 },
  930. "ch22_113": { title:"113", nation:"CH", tier:10, type:"HT", frag:0.88, dmg:1748, spot:1.23, def:0.66, win:49.50 },
  931. "nc27": { title:"Renault Otsu", nation:"JP", tier:1, type:"LT", frag:2.05, dmg:260, spot:1.38, def:1.76, win:57.88 },
  932. "ha_go": { title:"Type 95 Ha-Go", nation:"JP", tier:2, type:"LT", frag:1.80, dmg:295, spot:2.02, def:2.02, win:58.04 },
  933. "ke_ni": { title:"Type 98 Ke-Ni", nation:"JP", tier:3, type:"LT", frag:1.39, dmg:314, spot:1.95, def:1.64, win:57.44 },
  934. "ke_ni_b": { title:"Type 98 Ke-Ni B", nation:"JP", tier:3, type:"LT", prem:1, frag:1.39, dmg:314, spot:1.95, def:1.64, win:57.44 },
  935. "ke_ho": { title:"Type 2597 Chi-Ha", nation:"JP", tier:4, type:"LT", frag:1.11, dmg:359, spot:2.39, def:1.36, win:56.28 },
  936. "chi_ni": { title:"Type 5 Ke-Ho", nation:"JP", tier:2, type:"MT", frag:1.80, dmg:297, spot:1.23, def:1.67, win:57.37 },
  937. "chi_ha": { title:"Chi-Ni", nation:"JP", tier:3, type:"MT", frag:1.45, dmg:334, spot:1.26, def:1.41, win:56.52 },
  938. "chi_he": { title:"Type 1 Chi-He", nation:"JP", tier:4, type:"MT", frag:1.27, dmg:429, spot:1.38, def:1.31, win:55.34 },
  939. "chi_nu": { title:"Type 3 Chi-Nu", nation:"JP", tier:5, type:"MT", frag:1.15, dmg:530, spot:1.41, def:1.19, win:54.27 },
  940. "chi_nu_kai": { title:"Type 3 Chi-Nu Kai", nation:"JP", tier:5, type:"MT", prem:1, frag:1.15, dmg:530, spot:1.41, def:1.19, win:54.27 },
  941. "chi_to": { title:"Type 4 Chi-To", nation:"JP", tier:6, type:"MT", frag:1.08, dmg:755, spot:1.44, def:1.21, win:53.18 },
  942. "chi_ri": { title:"Type 5 Chi-Ri", nation:"JP", tier:7, type:"MT", frag:0.95, dmg:898, spot:1.52, def:1.12, win:53.05 },
  943. "sta_1": { title:"STA-1", nation:"JP", tier:8, type:"MT", frag:0.95, dmg:1186, spot:1.41, def:1.09, win:53.04 },
  944. "type_61": { title:"Type 61", nation:"JP", tier:9, type:"MT", frag:0.99, dmg:1524, spot:1.64, def:0.77, win:53.20 },
  945. "st_b1": { title:"STB-1", nation:"JP", tier:10, type:"MT", frag:0.93, dmg:1736, spot:1.46, def:0.82, win:47.28 }
  946. };
  947. vehAmount = vehTierTotal = vehBattlesTotal = 0,
  948. premBattlesTotal = premWinsTotal = premBadgesTotal = 0,
  949. tenBattlesTotal = tenWinsTotal = tenBadgesTotal = 0,
  950. vehExpFrag = vehExpDmg = vehExpSpot = vehExpDef = vehExpWin = 0;
  951. vehTiersObj = {1:{b:0,c:0},2:{b:0,c:0},3:{b:0,c:0},4:{b:0,c:0},5:{b:0,c:0},6:{b:0,c:0},7:{b:0,c:0},8:{b:0,c:0},9:{b:0,c:0},10:{b:0,c:0}};
  952. vehBadgesObj = {0:{c:0,p:0},1:{c:0,p:0},2:{c:0,p:0},3:{c:0,p:0},4:{c:0,p:0},5:{c:0,p:0}};
  953. premArr = []; tenArr = [];
  954. vehListObj = {};
  955.  
  956. // total mastery badge and colouring tank table category rows
  957. var typeRow_class = document.getElementsByClassName('t-profile_tankstype js-table-dropdown-link');
  958. for (var i=0; i<typeRow_class.length; i++) {
  959. vehAmount += filter(typeRow_class[i].cells[0].getElementsByTagName('span')[1].innerHTML,1);
  960. vehBadgesObj[5].c = vehAmount;
  961. vehBadgesObj[5].p = (vehAmount/vehAmount*100).toFixed(0);
  962. typeBattles = filter(typeRow_class[i].cells[1].innerHTML,1);
  963. typeWinrate = filter(typeRow_class[i].cells[2].innerHTML,1);
  964. typeWins = typeBattles*(typeWinrate/100);
  965. // modify table
  966. typeRow_class[i].cells[2].innerHTML = filter(typeWins.toFixed(0),3)+" - "+colStat(typeWinrate, "winrate", 0, "pct");
  967. }
  968.  
  969. // average tier, colouring premium tanks and winrates in vehicle tables
  970. var vehRow_class = document.getElementsByClassName('t-profile_tankstype t-profile_tankstype__item');
  971. vehRowStats_class = document.getElementsByClassName('t-profile_slidedown tablesorter-childRow');
  972. for (var i=0; i<vehRow_class.length; i++) {
  973. // fetch info from table
  974. vehImgName = vehRow_class[i].cells[0].getElementsByTagName('img')[0].src.match(/\w+-([\w-]+).png/);
  975. if (statArr[vehImgName[1]]) {
  976. vehStatArr = statArr[vehImgName[1]];
  977. vehBattles = filter(vehRow_class[i].cells[1].innerHTML,1);
  978. vehWinrate = filter(vehRow_class[i].cells[2].innerHTML,1);
  979. typeWins = vehBattles*(vehWinrate/100);
  980. if (vehRow_class[i].cells[3].getElementsByTagName('img')[0]) { vehBadge = vehRow_class[i].cells[3].getElementsByTagName('img')[0].getAttribute('data-badge_code'); }
  981. else { vehBadge = 0; }
  982. // modify table
  983. vehRow_class[i].cells[0].getElementsByTagName('img')[0].src = "http://"+wg_host+"/static/3.13.0.2.1/encyclopedia/tankopedia/vehicle/"+vehImgName[0];
  984. vehRow_class[i].cells[2].innerHTML = filter(typeWins.toFixed(0),3)+" - "+colStat(vehWinrate, "winrate", 0, "pct");
  985. // process information and push into arrays
  986. vehTier = vehStatArr.tier;
  987. vehTiersObj[vehTier].b += vehBattles
  988. vehTiersObj[vehTier].c += 1;
  989. vehTierTotal += vehTier*vehBattles;
  990. vehBattlesTotal += vehBattles;
  991. vehBadgesObj[vehBadge].c += 1;
  992. vehBadgesObj[vehBadge].p = (vehBadgesObj[vehBadge].c/vehBadgesObj[5].c*100).toFixed(0);
  993.  
  994. // summarize expected stat from every tank for WN8
  995. vehExpFrag += vehStatArr.frag*vehBattles,
  996. vehExpDmg += vehStatArr.dmg *vehBattles,
  997. vehExpSpot += vehStatArr.spot*vehBattles,
  998. vehExpDef += vehStatArr.def *vehBattles,
  999. vehExpWin += vehStatArr.win *vehBattles;
  1000.  
  1001. // get info for premium table
  1002. if (vehStatArr.prem !== undefined) {
  1003. premBattlesTotal += filter(vehRow_class[i].cells[1].innerHTML,1);
  1004. premWinsTotal += filter(vehRow_class[i].cells[2].innerHTML.match(/[\d.,\s]+\s-/)[0],1);
  1005. vehRow_class[i].cells[0].getElementsByTagName('span')[1].className += " b-gold-name";
  1006. premArr.push([vehRow_class[i].cloneNode(true), vehRowStats_class[i].cloneNode(true)]);
  1007. if (vehRow_class[i].cells[3].innerHTML.length > 2) { premBadgesTotal += 1; }
  1008. }
  1009.  
  1010. // get info for tier 10 table
  1011. if (vehTier == 10) {
  1012. tenBattlesTotal += filter(vehRow_class[i].cells[1].innerHTML,1);
  1013. tenWinsTotal += filter(vehRow_class[i].cells[2].innerHTML.match(/[\d.,\s]+\s-/)[0],1);
  1014. tenArr.push([vehRow_class[i].cloneNode(true), vehRowStats_class[i].cloneNode(true)]);
  1015. if (vehRow_class[i].cells[3].innerHTML.length > 2) { tenBadgesTotal += 1; }
  1016. }
  1017.  
  1018. // summarize player vehicles into dedicated array for console
  1019. vehListObj[vehStatArr.title] = {
  1020. "infoNation": vehStatArr.nation,
  1021. "infoTier": vehStatArr.tier,
  1022. "infoType": vehStatArr.type,
  1023. "infoBattles": vehBattles,
  1024. "infoBattlesWins": parseFloat(typeWins.toFixed(0)),
  1025. "infoVehBadge": vehBadge,
  1026. "statExpected": {frag: vehStatArr.frag, dmg: vehStatArr.dmg, spot: vehStatArr.spot, def: vehStatArr.def, win: vehStatArr.win}
  1027. }
  1028. }
  1029. else {
  1030. console.log(vehImgName[1]+" doesn't exist in statArr");
  1031. }
  1032. }
  1033.  
  1034. // finding statistic tables
  1035. var mb_table = document.getElementsByClassName('b-result-classes')[0].getElementsByClassName('t-dotted')[0];
  1036. or_table = document.getElementsByClassName('b-result')[0].getElementsByClassName('t-dotted')[0];
  1037. bp_table = document.getElementsByClassName('b-result')[1].getElementsByClassName('t-dotted')[0];
  1038. sm_ratio = document.getElementsByClassName('b-speedometer-ratio');
  1039.  
  1040. // fetching info and calculate draws
  1041. var battles = filter(or_table.rows[0].cells[1].innerHTML,1),
  1042. wins = filter(or_table.rows[1].cells[1].innerHTML.match(/([\d.,\s|&nbsp;]+\d+)\s/)[1],1),
  1043. losses = filter(or_table.rows[2].cells[1].innerHTML.match(/([\d.,\s|&nbsp;]+\d+)\s/)[1],1),
  1044. survive = filter(or_table.rows[3].cells[1].innerHTML.match(/([\d.,\s|&nbsp;]+\d+)\s/)[1],1),
  1045. exp = filter(or_table.rows[4].cells[1].innerHTML,1),
  1046. avgExp = filter(or_table.rows[5].cells[1].innerHTML,1),
  1047. maxExp = filter(or_table.rows[6].cells[1].innerHTML,1),
  1048. frags = filter(bp_table.rows[0].cells[1].innerHTML,1),
  1049. spotted = filter(bp_table.rows[1].cells[1].innerHTML,1),
  1050. hitRate = filter(bp_table.rows[2].cells[1].innerHTML,1),
  1051. dmgDlt = filter(bp_table.rows[3].cells[1].innerHTML,1),
  1052. caps = filter(bp_table.rows[5].cells[1].innerHTML,1),
  1053. defs = filter(bp_table.rows[6].cells[1].innerHTML,1),
  1054. deaths = filter(sm_ratio[0].innerHTML.match(/\/(.+)$/)[1],1),
  1055. dmgRec = filter(sm_ratio[1].innerHTML.match(/\/(.+)$/)[1],1),
  1056. draws = battles-(wins+losses);
  1057.  
  1058. // calculate averages and rates
  1059. var avgBat = battles/daysPassed,
  1060. avgWin = wins/battles,
  1061. avgWinPct = avgWin*100,
  1062. avgLoss = losses/battles,
  1063. avgLossPct = avgLoss*100,
  1064. avgDraws = draws/battles,
  1065. avgDrawsPct = avgDraws*100,
  1066. avgSurv = survive/battles,
  1067. avgSurvPct = avgSurv*100,
  1068. avgFrags = frags/battles,
  1069. avgDeaths = deaths/battles,
  1070. avgSpots = spotted/battles,
  1071. avgDmg = dmgDlt/battles,
  1072. avgDmgRec = dmgRec/battles,
  1073. avgCap = caps/battles,
  1074. avgDef = defs/battles,
  1075. avgTier = vehTierTotal/vehBattlesTotal;
  1076. winlossRate = wins/losses;
  1077.  
  1078. // colourize stats
  1079. var avgWinrate = colStat(avgWinPct, "winrate", 2, "pct", "" ),
  1080. avgLossrate = colStat(avgLossPct, "winrate", 2, "pct", avgDraws ),
  1081. avgSurvrate = colStat(avgSurvPct, "survrate", 2, "pct", "" ),
  1082. avgHitrate = colStat(hitRate, "hitrate", 0, "pct", "" ),
  1083. colBattles = colStat(battles, "battles", 0, "", "" ),
  1084. avgDrawrate = colStat(avgDrawsPct, "", 2, "pct", "" );
  1085.  
  1086. // Finalize WN8 - e = expected, w = weighted, n = normalized
  1087. // all steps are stored in variables for console insertion
  1088. var eFrag = vehExpFrag/vehBattlesTotal,
  1089. eDmg = vehExpDmg /vehBattlesTotal,
  1090. eSpot = vehExpSpot/vehBattlesTotal,
  1091. eDef = vehExpDef /vehBattlesTotal,
  1092. eWin = vehExpWin /vehBattlesTotal,
  1093. wFrag = avgFrags/eFrag,
  1094. wDmg = avgDmg/eDmg,
  1095. wSpot = avgSpots/eSpot,
  1096. wDef = avgDef/eDef,
  1097. wWin = avgWinPct/eWin,
  1098. nWin = Math.max( (wWin - 0.71) / (1 - 0.71) ,0),
  1099. nDmg = Math.max( (wDmg - 0.22) / (1 - 0.22) ,0),
  1100. nFrag = Math.max(Math.min(nDmg+0.2,(wFrag - 0.12) / (1 - 0.12)),0),
  1101. nSpot = Math.max(Math.min(nDmg+0.1,(wSpot - 0.38) / (1 - 0.38)),0),
  1102. nDef = Math.max(Math.min(nDmg+0.1,(wDef - 0.10) / (1 - 0.10)),0);
  1103.  
  1104. // calculate ratings
  1105. // WN8
  1106. var wn8 = (function() {
  1107. var frag = 210*nDmg*nFrag,
  1108. dmg = 980*nDmg,
  1109. spot = 155*nFrag*nSpot,
  1110. def = 75*nDef*nFrag,
  1111. win = 145*Math.min(1.8,nWin),
  1112. rating = frag+dmg+spot+def+win;
  1113. if (rating>=2900) {
  1114. pct = scale = 100;
  1115. }
  1116. else {
  1117. pct = (rating/2900)*100;
  1118. scale = Math.max(Math.min(rating*(rating*(rating*(rating*(rating*(0.00000000000000000007119*rating+0.0000000000000002334)-0.000000000006963)+0.00000002845)-0.00004558)+0.06565)-0.18,100),0);
  1119. }
  1120. return { frag: frag, dmg: dmg, spot: spot, def: def, win: win, rating: rating, pct: pct, scale: scale, ratingCol: colStat(rating,"wn8",2), scaleCol: colStat(scale,"scale_wn8",2) };
  1121. })();
  1122. // WN7 - Legacy Support
  1123. var wn7 = (function() {
  1124. var frag = avgFrags*(1240-1040/(Math.pow(Math.min(avgTier,6),0.164))),
  1125. dmg = avgDmg*530/(184*Math.exp(0.24*avgTier)+130),
  1126. spot = avgSpots*125*Math.min(avgTier,3)/3,
  1127. def = Math.min(2.2,avgDef)*100,
  1128. win = (((185/(0.17+Math.exp((avgWinPct-35)*-0.134)))-500)*0.45),
  1129. norm = -Math.abs((((5-Math.min(avgTier,5))*125)/(1+Math.exp(avgTier-Math.pow(battles/220,3/avgTier))*1.5))),
  1130. rating = frag+dmg+spot+def+win+norm;
  1131. if (rating>=2050) {
  1132. pct = scale = 100;
  1133. }
  1134. else {
  1135. pct = (rating/2050)*100;
  1136. scale = Math.max(Math.min(rating*(rating*(rating*(-0.0000000000083*rating+0.0000000287)-0.000024)+0.049)-2.7,100),0);
  1137. }
  1138. return { frag: frag, dmg: dmg, spot: spot, def: def, win: win, norm: norm, rating: rating, pct: pct, scale: scale, ratingCol: colStat(rating,"wn7",2), scaleCol: colStat(scale,"scale_wn7",2) };
  1139. })();
  1140. // efficiency - improved
  1141. var eff = (function() {
  1142. var frag = avgFrags*250,
  1143. dmg = avgDmg*(10/(avgTier+2))*(0.23+2*avgTier/100),
  1144. spot = avgSpots*150,
  1145. cap = (Math.log(avgCap+1)/Math.log(1.732))*150,
  1146. def = avgDef*150,
  1147. rating = frag+dmg+spot+cap+def;
  1148. if (rating>=2050) {
  1149. pct = scale = 100;
  1150. }
  1151. else {
  1152. pct = (rating/2050)*100;
  1153. scale = Math.max(Math.min(rating*(rating*(rating*(rating*(rating*(0.000000000000000045254*rating-0.00000000000033131)+0.00000000094164)-0.0000013227)+0.00095664)-0.2598)+13.23,100),0);;
  1154. }
  1155. return { frag: frag, dmg: dmg, spot: spot, cap: cap, def: def, rating: rating, pct: pct, scale: scale, ratingCol: colStat(rating,"eff",2), scaleCol: colStat(scale,"scale_eff",2) };
  1156. })();
  1157. // end formula calculations and variables
  1158.  
  1159. // check for missing battles and notify
  1160. colVehBattlesTotal = " ";
  1161. if (vehBattlesTotal != battles) {
  1162. profileError_div.innerHTML = locale.p69.lang;
  1163. profileError_div.style.display="inline-block";
  1164. colVehBattlesTotal = "<span class='t-dotted_minor'>API:</span> <font color='940000'>"+filter(vehBattlesTotal,2)+"</font>";
  1165. }
  1166.  
  1167. // personal data - modify data
  1168. var pTable_class = document.getElementsByClassName('t-personal-data')[0];
  1169. pTable_class.rows[0].cells[0].innerHTML = locale.p09.lang;
  1170. pTable_class.rows[1].cells[0].innerHTML = avgWinrate;
  1171. pTable_class.rows[0].cells[1].innerHTML = locale.p10.lang;
  1172. pTable_class.rows[1].cells[1].innerHTML = colBattles;
  1173. pT_avgxp_name = document.createElement('th');
  1174. pT_avgxp_name.className = "t-personal-data_ico t-personal-data_ico__exp";
  1175. pT_avgxp_name.innerHTML = locale.p11.lang;
  1176. pTable_class.rows[0].cells[1].parentNode.insertBefore(pT_avgxp_name, pTable_class.rows[0].cells[1].nextSibling);
  1177. pT_avgxp_value = document.createElement('td');
  1178. pT_avgxp_value.className = "t-personal-data_value";
  1179. pT_avgxp_value.innerHTML = filter(avgExp,2);
  1180. pTable_class.rows[1].cells[1].parentNode.insertBefore(pT_avgxp_value, pTable_class.rows[1].cells[1].nextSibling);
  1181. pTable_class.rows[0].cells[4].innerHTML = locale.p70.lang;
  1182. pTable_class.rows[0].cells[4].className = "t-personal-data_ico t-personal-data_ico__hitrate";
  1183. pTable_class.rows[1].cells[3].innerHTML = avgHitrate;
  1184. pTable_class.rows[0].cells[5].innerHTML = locale.p71.lang;
  1185. pT_avgtier_name = document.createElement('th');
  1186. pT_avgtier_name.className = "t-personal-data_ico t-personal-data_ico__tier";
  1187. pT_avgtier_name.innerHTML = locale.p12.lang;
  1188. pTable_class.rows[0].appendChild(pT_avgtier_name);
  1189. pT_avgtier_value = document.createElement('td');
  1190. pT_avgtier_value.className = "t-personal-data_value";
  1191. pT_avgtier_value.innerHTML = avgTier.toFixed(2);
  1192. pTable_class.rows[1].appendChild(pT_avgtier_value);
  1193.  
  1194. // speedometer - win/loss ratio
  1195. var sm_body_class = document.getElementsByClassName('b-speedometer-body')[0];
  1196. sm_winrate_div = document.createElement('div');
  1197. sm_winrate_div.className = "b-speedometer";
  1198. sm_winrate_arrow = Math.min(30*(winlossRate-1),31).toFixed(4);
  1199. sm_winrate_div.innerHTML = "<div class='b-speedometer-arrow' data-deg='"+sm_winrate_arrow+"' style='transform: rotate("+sm_winrate_arrow+"deg); -webkit-transform: rotate("+sm_winrate_arrow+"deg); -ms-transform: rotate("+sm_winrate_arrow+"deg);'></div><div class='b-speedometer-round'></div><p class='b-speedometer-title'>"+locale.p13.lang+"</p><p class='b-speedometer-weight'>"+winlossRate.toFixed(2)+"</p><p class='b-speedometer-ratio'>"+filter(wins,3)+" / "+filter(losses,3)+"</p>";
  1200. sm_body_class.appendChild(sm_winrate_div);
  1201.  
  1202. // performance ratings wrapper
  1203. var ratings_div = document.createElement('div');
  1204. ratings_div.className = "b-ratings-wrpr",
  1205. ub_class = document.getElementsByClassName('b-userblock-wrpr')[0];
  1206. ub_class.parentNode.insertBefore(ratings_div, ub_class.nextSibling);
  1207. ratingsHeader_div = document.createElement('div');
  1208. ratingsHeader_div.className = "b-head-block",
  1209. ratingsHeader_div.innerHTML += "<h3>"+locale.p14.lang+"</h3>";
  1210. ratings_div.appendChild(ratingsHeader_div);
  1211. ratingsInfo_div = document.createElement('div');
  1212. ratingsInfo_div.className = "b-ratings-info",
  1213. ratings_div.appendChild(ratingsInfo_div);
  1214. ratingsInfo_table = document.createElement('table');
  1215. ratingsInfo_table.className = "t-ratings-info",
  1216. ratingsInfo_div.appendChild(ratingsInfo_table);
  1217. // inserting performance ratings
  1218. ratingsInfo_table.innerHTML = "<thead><tr><th><a href='http://wiki.wnefficiency.net/pages/WN8' target='_blank'>"+locale.p15.lang+"</a></th><th>"+locale.p30.lang+"</th><th>"+locale.p16.lang+"</th><th><a class='rating-url_nm' target='_blank' href="+nm_url+">"+locale.p17.lang+"</a></th></tr></thead><tbody><tr><td class='js-wnscript'>"+wn8.ratingCol+"</td><td>"+wn7.ratingCol+"</td><td>"+eff.ratingCol+"</td><td class='js-noobmeter'>"+locale.p18.lang+"</td></tr></tbody>";
  1219.  
  1220. // create and populate performance ratings calcs table
  1221. var rTable_div = document.createElement('div');
  1222. rTable_div.className = "ratings-table";
  1223. ratings_div.appendChild(rTable_div);
  1224. rTable_div.innerHTML = "<h3>"+locale.p19.lang+"</h3>";
  1225. rTable = document.createElement('table');
  1226. rTable.className = "t-table-ratings";
  1227. rTable_div.appendChild(rTable);
  1228. rTHead = document.createElement('thead');
  1229. rTHead.innerHTML = "<tr><th>"+locale.p20.lang+"</th><th>"+locale.p21.lang+"</th><th>"+locale.p22.lang+"</th><th>"+locale.p23.lang+"</th><th>"+locale.p24.lang+"</th><th>"+locale.p25.lang+"</th><th>"+locale.p26.lang+"</th><th>"+locale.p27.lang+"</th><th>"+locale.p28.lang+"</th></tr>";
  1230. rTable.appendChild(rTHead);
  1231. rTBody = document.createElement('tbody');
  1232. rTable.appendChild(rTBody);
  1233. ratingsArr = [
  1234. // Formula RatingPct Localized Total ScaleColored Frag Dmg Spot Cap Def Win
  1235. ["wn8", wn8.pct, locale.p29.lang, wn8.ratingCol, wn8.scaleCol, wn8.frag.toFixed(2), wn8.dmg.toFixed(2), wn8.spot.toFixed(2), "–", wn8.def.toFixed(2), wn8.win.toFixed(2) ],
  1236. ["wn7", wn7.pct, locale.p30.lang, wn7.ratingCol, wn7.scaleCol, wn7.frag.toFixed(2), wn7.dmg.toFixed(2), wn7.spot.toFixed(2), "–", wn7.def.toFixed(2), wn7.win.toFixed(2) ],
  1237. ["eff", eff.pct, locale.p31.lang, eff.ratingCol, eff.scaleCol, eff.frag.toFixed(2), eff.dmg.toFixed(2), eff.spot.toFixed(2), eff.cap.toFixed(2), eff.def.toFixed(2), "–" ]
  1238. ];
  1239. for (i=0; i<ratingsArr.length; ++i) {
  1240. rRow = document.createElement('tr');
  1241. rTBody.appendChild(rRow);
  1242. for (j=2; j<ratingsArr[i].length; ++j) {
  1243. rCell = document.createElement('td');
  1244. rCell.className = "td-center";
  1245. rCell.innerHTML = ratingsArr[i][j];
  1246. rRow.appendChild(rCell);
  1247. }
  1248. rmRow = document.createElement('tr');
  1249. rmRow.innerHTML = "<td class='td-rating-meter' colspan='9'><div class='rating-meter rating-meter_"+ratingsArr[i][0]+"'><div class='rating-meter-dail_line' style='width:"+ratingsArr[i][1]+"%;'><div class='rating-meter-marker'></div></div></div></td>";
  1250. rTBody.appendChild(rmRow);
  1251. }
  1252.  
  1253. // link to WN thread
  1254. ratings_div.innerHTML += "<div class='wnelink'><a class ='b-orange-arrow wnelink_info' target='_blank' href='http://wiki.wnefficiency.net/pages/WN_Efficiency_Wiki'>"+locale.p32.lang+"</a></div>";
  1255.  
  1256. // end performance ratings wrapper
  1257.  
  1258. // statistics wrapper
  1259. var statistics_div = document.getElementsByClassName('b-result-classes')[0].parentNode;
  1260. statistics_div.className = "b-statistics-wrpr";
  1261. ratings_div.parentNode.insertBefore(statistics_div, ratings_div.nextSibling);
  1262.  
  1263. // remove the old tables ( overall results and battle performance )
  1264. mb_table.innerHTML = "<tbody></tbody>";
  1265. or_table.innerHTML = "<tbody></tbody>";
  1266. bp_table.innerHTML = "<tbody></tbody>";
  1267.  
  1268. // populating the tables
  1269. var mb_table_cn = mb_table.firstElementChild,
  1270. or_table_cn = or_table.firstElementChild,
  1271. bp_table_cn = bp_table.firstElementChild;
  1272. insertNewTr(mb_table_cn, "<img src='/static/3.17.1.2/common/img/classes/class-ace.png'>", locale.p33.lang, vehBadgesObj[4].c+"<span>("+vehBadgesObj[4].p+"%)</span>"),
  1273. insertNewTr(mb_table_cn, "<img src='/static/3.17.1.2/common/img/classes/class-1.png'>", locale.p34.lang, vehBadgesObj[3].c+"<span>("+vehBadgesObj[3].p+"%)</span>"),
  1274. insertNewTr(mb_table_cn, "<img src='/static/3.17.1.2/common/img/classes/class-2.png'>", locale.p35.lang, vehBadgesObj[2].c+"<span>("+vehBadgesObj[2].p+"%)</span>"),
  1275. insertNewTr(mb_table_cn, "<img src='/static/3.17.1.2/common/img/classes/class-3.png'>", locale.p36.lang, vehBadgesObj[1].c+"<span>("+vehBadgesObj[1].p+"%)</span>"),
  1276. insertNewTr(mb_table_cn, "<img src='"+uri_badges_class_none+"'>", locale.p37.lang, vehBadgesObj[0].c+"<span>("+vehBadgesObj[0].p+"%)</span>"),
  1277. insertNewTr(mb_table_cn, "<img src='"+uri_badges_class_total+"'>", locale.p38.lang, vehBadgesObj[5].c+"<span>("+vehBadgesObj[5].p+"%)</span>"),
  1278. insertNewTr(or_table_cn, locale.p39.lang, filter(battles,2), colVehBattlesTotal ),
  1279. insertNewTr(or_table_cn, locale.p40.lang, filter(wins,2), "("+avgWinrate+")" ),
  1280. insertNewTr(or_table_cn, locale.p41.lang, filter(losses,2), "("+avgLossrate+")" ),
  1281. insertNewTr(or_table_cn, locale.p42.lang, filter(draws,2), "("+avgDrawrate+")" ),
  1282. insertNewTr(or_table_cn, locale.p43.lang, filter(survive,2), "("+avgSurvrate+")" ),
  1283. insertNewTr(or_table_cn, locale.p44.lang, "", avgBat.toFixed(2) ),
  1284. insertNewTr(or_table_cn, locale.p45.lang, "", filter(exp,2) ),
  1285. insertNewTr(or_table_cn, locale.p46.lang, "", filter(avgExp,2) ),
  1286. insertNewTr(or_table_cn, locale.p47.lang, "", filter(maxExp,2) ),
  1287. insertNewTr(bp_table_cn, locale.p48.lang, filter(frags,2), avgFrags.toFixed(2) ),
  1288. insertNewTr(bp_table_cn, locale.p49.lang, filter(deaths,2), avgDeaths.toFixed(2)),
  1289. insertNewTr(bp_table_cn, locale.p50.lang, filter(spotted,2), avgSpots.toFixed(2) ),
  1290. insertNewTr(bp_table_cn, locale.p51.lang, "", avgHitrate ),
  1291. insertNewTr(bp_table_cn, locale.p52.lang, filter(dmgDlt,2), avgDmg.toFixed(2) ),
  1292. insertNewTr(bp_table_cn, locale.p53.lang, filter(dmgRec,2), avgDmgRec.toFixed(2)),
  1293. insertNewTr(bp_table_cn, locale.p54.lang, filter(caps,2), avgCap.toFixed(2) ),
  1294. insertNewTr(bp_table_cn, locale.p55.lang, filter(defs,2), avgDef.toFixed(2) ),
  1295. insertNewTr(bp_table_cn, locale.p56.lang, "", avgTier.toFixed(2) );
  1296.  
  1297. // cake diagrams - adding tier diagram
  1298. var diagramsSector_class = document.getElementsByClassName('b-diagrams-sector')[0];
  1299. diagramsTier_div = document.createElement('div'),
  1300. diagramsTier_div.className = "b-diagram-block b-diagram-tiers js-diagram-block";
  1301. diagramsTier_div.innerHTML = "<h3>"+locale.p57.lang+"</h3><div class='b-diagram-wrpr'><div class='b-diagram' id='holder-mechanism-tier'></div><div class='b-diagram-round js-diagram-round'><span class='b-diagram-round_title'></span><span class='b-diagram-round_value js-result'>"+vehAmount+"</span></div></div>";
  1302. diagramsSector_class.firstElementChild.parentNode.insertBefore(diagramsTier_div, diagramsSector_class.firstElementChild.nextSibling);
  1303. diagramsTier_table = document.createElement('table'),
  1304. diagramsTier_table.className = "t-dotted t-dotted__diagram js-diagram-mechanism-legend";
  1305. diagramsTier_table.innerHTML = "<tbody></tbody>";
  1306. diagramsTier_div.appendChild(diagramsTier_table);
  1307. diagramsTier_td = 0;
  1308. diagramsTierColorArr = ["496877","2b591f","831818","303766","814f07","1A775F","B0D23A","763D46","936C19","471952"];
  1309. for (var i in vehTiersObj) {
  1310. diagramsTierColor = diagramsTierColorArr[diagramsTier_td];
  1311. diagramsTier_td += 1;
  1312. if (vehTiersObj[i].c !== 0) {
  1313. battleRate = (vehTiersObj[i].b/battles*100).toFixed(2);
  1314. tierRate = (vehTiersObj[i].c/vehAmount*100).toFixed(2);
  1315. diagramsTier_table.firstElementChild.innerHTML += "<tr><td class='t-dotted_diagram-first'><span class='t-dotted_diagram-bg'></span></td><td><span class='t-dotted_diagram-bg'><span class='t-dotted_diagram-info'><span class='t-diagram_battle'>"+filter(vehTiersObj[i].b,3)+"</span><span class='t-dotted_diagram-percent'>(<span class=''>"+battleRate+"%</span>)</span><span class='t-diagram_tiers js-results'>"+vehTiersObj[i].c+"</span><span class='t-dotted_diagram-percent'>(<span class='js-value'>"+tierRate+"%</span>)</span></span><span class='b-diagram-ico b-diagram-ico_tier b-diagram-ico_tier-"+diagramsTier_td+"'>"+locale.p58.lang+" "+diagramsTier_td+"</span></span></td><td class='t-dotted_diagram-last'><span class='t-dotted_diagram-bg'><span class='js-colors'>#"+diagramsTierColor+"</span></span></td></tr>";
  1316. }
  1317. }
  1318. diagramsSector_class.firstElementChild.innerHTML += "<div class='b-diagram-total'><h3>"+locale.p59.lang+" "+vehAmount+"</h3></div>";
  1319. // fix for cake diagram in chrome
  1320. if (chrome) {
  1321. $('.js-diagram-block').each(function() { var items = [], values = [], labels = [], colors = [], results = [], legend, result, holder; holder = $('.b-diagram', this).attr('id'); $('.js-diagram-mechanism-legend tr', this).each(function () { items.push($(this)); values.push(parseInt($('.js-value', this).text(), 10)); labels.push($('.js-label', this).text()); colors.push($('.js-colors', this).text()); results.push($('.js-results', this).text()); legend = $('.js-diagram-mechanism-legend'); result = $('#' + holder).next().find('.js-result'); }); Raphael(holder, 630, 630).pieChart(65, 65.5, 53.5, items, values, colors, results, legend, result); });
  1322. }
  1323.  
  1324. // achievements wrapper
  1325. var medal_div = document.createElement('div');
  1326. medal_div.className = "b-achievements-wrpr";
  1327. medalHeader_div = document.createElement('div');
  1328. medalHeader_div.className = "b-head-block";
  1329. medalHeader_class = document.getElementsByClassName('js-achievements-header')[0];
  1330. medalHeader_div.appendChild(medalHeader_class);
  1331. medal_div.appendChild(medalHeader_div);
  1332. medalClassArr = ["js-achievements-header","b-profile-item-empty","js-achivements-showhide","js-short-achievements","js-full-achievements"];
  1333. for (i=1; i<medalClassArr.length; ++i) {
  1334. medalChild = document.getElementsByClassName(medalClassArr[i])[0];
  1335. if (medalChild !== undefined) {
  1336. medal_div.appendChild(medalChild);
  1337. }
  1338. }
  1339. diagramsSector_class.parentNode.insertBefore(medal_div, diagramsSector_class.nextSibling);
  1340.  
  1341. // vehicles wrapper
  1342. var vehTable_class = document.getElementsByClassName('t-profile t-profile__vehicle')[0];
  1343. vehicles_div = document.createElement('div');
  1344. vehicles_div.className = "b-vehicles-wrpr";
  1345. vehicles_h3_class = vehTable_class.previousElementSibling.previousElementSibling;
  1346. vehicles_h3_class.className = "b-profile-ratings_title";
  1347. vehiclesHeader_div = document.createElement('div');
  1348. vehiclesHeader_div.className = "b-vehicles-header";
  1349. vehiclesHeader_div.appendChild(vehicles_h3_class);
  1350. vehiclesHeader_div.innerHTML += "<a class='b-orange-arrow b-profile-ratings_link' target='_blank' href='/encyclopedia/vehicles/'>"+locale.p60.lang+"</a><span class='b-profile-vehicles-tankstat'><a class='b-orange-arrow b-profile-ratings_link b-profile-vehicles-tankstat_link' target='_blank' href='http://www.noobmeter.com/tankStats/"+nm_srv+"'>"+locale.p61.lang+"</a></span>";
  1351. vehicles_div.appendChild(vehiclesHeader_div);
  1352. vehTable_class.parentNode.insertBefore(vehicles_div, vehTable_class);
  1353. vehicles_div.appendChild(vehTable_class);
  1354. // add a premium tanks table to the vehicle table
  1355. if (premArr.length === 0) {
  1356. premHBody = document.createElement('tbody');
  1357. premHBody.innerHTML = "<tr class='t-profile_tankstype t-profile_tankstype-prem t-profile_tankstype__empty'><td width='388' class='t-profile_head'><span class='b-tankstype-ico b-tankstype-ico__prem'></span><span class='b-tankstype-text'>"+locale.p62.lang+" </span></td><td class='t-profile_right'>&ndash;</td><td class='t-profile_center'>&ndash;</td><td class='t-profile_center'>&ndash;</td><td class='t-profile_dropdown-ico'><!-- empty --></td></tr>";
  1358. vehTable_class.appendChild(premHBody);
  1359. }
  1360. else {
  1361. premHBody = document.createElement('tbody');
  1362. premHBody.className = "tablesorter-no-sort";
  1363. premHBody.innerHTML = "<tr class='t-profile_tankstype t-profile_tankstype-prem js-table-dropdown-link'><td width='388' class='t-profile_head'><span class='b-tankstype-ico b-tankstype-ico__prem'></span><span class='b-tankstype-text'>"+locale.p62.lang+" <span class='b-armory-col'>"+premArr.length+"</span></span></td><td class='t-profile_right'>"+filter(premBattlesTotal,3)+"</td><td class='t-profile_center'>"+filter(premWinsTotal,3)+" - "+colStat((premWinsTotal/premBattlesTotal)*100, "winrate", 0, "pct")+"</td><td class='t-profile_center'>"+premBadgesTotal+"</td><td class='t-profile_dropdown-ico'><a title='Show/hide vehicles' class='t-profile_dropdown-link' href=''></a></td></tr>";
  1364. vehTable_class.appendChild(premHBody);
  1365. premTBody = document.createElement('tbody');
  1366. premTBody.className = "sortable";
  1367. premTBody.style.display="none";
  1368. vehTable_class.appendChild(premTBody);
  1369. for (i=0; i<premArr.length; ++i) {
  1370. premTBody.appendChild(premArr[i][0]);
  1371. premTBody.appendChild(premArr[i][1]);
  1372. }
  1373. }
  1374. // add a tier 10 table to the vehicle table
  1375. if (tenArr.length === 0) {
  1376. tenHBody = document.createElement('tbody');
  1377. tenHBody.innerHTML = "<tr class='t-profile_tankstype t-profile_tankstype__empty'><td width='388' class='t-profile_head'><span class='b-tankstype-ico b-tankstype-ico__ten'>✖</span><span class='b-tankstype-text'>"+locale.p68.lang+" </span></td><td class='t-profile_right'>&ndash;</td><td class='t-profile_center'>&ndash;</td><td class='t-profile_center'>&ndash;</td><td class='t-profile_dropdown-ico'><!-- empty --></td></tr>";
  1378. vehTable_class.appendChild(tenHBody);
  1379. }
  1380. else {
  1381. tenHBody = document.createElement('tbody');
  1382. tenHBody.className = "tablesorter-no-sort";
  1383. tenHBody.innerHTML = "<tr class='t-profile_tankstype js-table-dropdown-link'><td width='388' class='t-profile_head'><span class='b-tankstype-ico b-tankstype-ico__ten'>✖</span><span class='b-tankstype-text'>"+locale.p68.lang+" <span class='b-armory-col'>"+tenArr.length+"</span></span></td><td class='t-profile_right'>"+filter(tenBattlesTotal,3)+"</td><td class='t-profile_center'>"+filter(tenWinsTotal,3)+" - "+colStat((tenWinsTotal/tenBattlesTotal)*100, "winrate", 0, "pct")+"</td><td class='t-profile_center'>"+tenBadgesTotal+"</td><td class='t-profile_dropdown-ico'><a title='Show/hide vehicles' class='t-profile_dropdown-link' href=''></a></td></tr>";
  1384. vehTable_class.appendChild(tenHBody);
  1385. tenTBody = document.createElement('tbody');
  1386. tenTBody.className = "sortable";
  1387. tenTBody.style.display="none";
  1388. vehTable_class.appendChild(tenTBody);
  1389. for (i=0; i<tenArr.length; ++i) {
  1390. tenTBody.appendChild(tenArr[i][0]);
  1391. tenTBody.appendChild(tenArr[i][1]);
  1392. }
  1393. }
  1394. // end vehicles wrapper
  1395.  
  1396. // debugging to browser console
  1397. console.info("Browser Info: ", navigator.appCodeName+" - "+navigator.appName+" - "+navigator.userAgent);
  1398. console.info("WN8 Calculation:");
  1399. console.info("Expected:\n", "eFrag: ", eFrag, "- eDmg: ", eDmg, "- eSpot: ", eSpot, "- eDef: ", eDef, "- eWin: ", eWin );
  1400. console.info("Actual:\n", "aFrag: ", avgFrags, "- aDmg: ", avgDmg, "- aSpot: ", avgSpots, "- aDef: ", avgDef, "- aWin: ", avgWinPct );
  1401. console.info("Weighted:\n", "wFrag: ", wFrag, "- wDmg: ", wDmg, "- wSpot: ", wSpot, "- wDef: ", wDef, "- wWin: ", wWin );
  1402. console.info("Normalized:\n", "nFrag: ", nFrag, "- nDmg: ", nDmg, "- nSpot: ", nSpot, "- nDef: ", nDef, "- nWin: ", nWin );
  1403. console.info("Vehicle Info:\n", vehListObj);
  1404. console.info("Tier Info:\n", vehTiersObj);
  1405.  
  1406. // button for saving stats to clipboard
  1407. var ratingsClipboard = locale.p72.lang+" "+nick+": \n"+locale.p73.lang+" "+battles+" \nWR: "+avgWinPct.toFixed(2)+" \nWN8: "+wn8.rating.toFixed(2)+" \nWN7: "+wn7.rating.toFixed(2)+" \nEff: "+eff.rating.toFixed(2);
  1408. console.info(ratingsClipboard);
  1409. ratingsClipboard_div = document.createElement('div');
  1410. ratingsClipboard_div.className = "b-ratingsClip";
  1411. profileHead_div.insertBefore(ratingsClipboard_div, profileHead_div.firstElementChild.nextSibling);
  1412. ratingsClipboard_div.innerHTML += "<div class='ratingsClip-holder js-noobmeter' style='display:none;'>"+ratingsClipboard+"</div><div class='ratingsClip-holder' style='display:none;'>"+locale.p64.lang+"</div><div class='b-ratingsButton' onclick='copyClipboard()'>"+locale.p63.lang+"</div>";
  1413.  
  1414. // noobmeter retrieval
  1415. if (nm_srv !== null) {
  1416. // retrieve and process info
  1417. var nmapi_url = nm_host+"/simpleplayerprapi/"+nm_srv+"/"+nick+"/"+userid+"/"+sid;
  1418. gRecProps = [
  1419. { url: nmapi_url, handler: nmHnd, onerror: nmHnd_error, nav: true }
  1420. ];
  1421.  
  1422. // delayed insertion
  1423. for (i=0; i<gRecProps.length; ++i) {
  1424. var doc = gRecProps[i];
  1425. if (doc.nav) gRec(doc);
  1426. }
  1427. }
  1428. }
  1429. else {
  1430. profileName_class = document.getElementsByClassName('b-profile-name')[0];
  1431. profileName_class.innerHTML += "<div style='width: 950px; top: -15px; text-align: center; position: absolute;'>"+locale.p65.lang+"</div>";
  1432. }
  1433. // end speed_table_battles
  1434. }
  1435. // end wg_accounts
  1436.  
  1437. // matches url with clan page
  1438. else if (wg_clans !== null) {
  1439. // style variables
  1440. var box_background = "background: url('/static/3.13.0.2.1/common/css/scss/layout/img/ui-bg-top.jpg'); border: 1px solid rgba(255, 255, 255, 0.05); box-shadow: 0 0 38px 1px rgba(0, 0, 0, 0.3) inset, 0 0 23px 1px rgba(255, 255, 255, 0.02), 0 0 5px 1px rgba(0, 0, 0, 0.5) inset;";
  1441. input_background = "background: rgba(0, 0, 0, 0.09); border: 1px solid #000000; box-shadow: 0 0 1px 1px rgba(255, 255, 255, 0.15) inset, 0 0 38px 1px rgba(0, 0, 0, 0.3) inset, 0 0 23px 1px rgba(255, 255, 255, 0.02), 0 0 5px 1px rgba(0, 0, 0, 0.5) inset; color: #606061;";
  1442. // style contents
  1443. var style = document.createElement('style');
  1444. style.className = "wotstatscript";
  1445. style.type ="text/css";
  1446. style.innerHTML
  1447. // global rules
  1448. = "p {margin: 0;}"
  1449. // l-page fix page slowdown
  1450. + ".l-page {background-position: center 0 !important;}"
  1451. // l-content width
  1452. + ".l-content-indent, .reg-RUS .l-content-indent, .reg-KR .l-content-indent {padding: 0;}"
  1453. + ".l-content {margin: 0 22px 25px; width: 955px;}"
  1454. // b-clan-wrapper
  1455. + ".b-clan-wrapper {overflow: auto;}"
  1456. // b-clan-header rules
  1457. + ".b-background-clan-profile {left: -22px; top: 0;}"
  1458. + ".b-background-clan-profile, .b-background-clan-profile img {height: auto; margin-bottom: -2px; width: 1000px;}"
  1459. + ".b-clan-header {width: 745px;}"
  1460. + ".b-scriptlink {"+input_background+" position: absolute; right: 0px; text-align: center; top: -1px; padding: 7px 0 6px; width: 199px;}"
  1461. + ".reg-KR .b-scriptlink {line-height: 133%;}"
  1462. + ".b-clan-profile {padding: 15px 0 0;}"
  1463. + ".b-clan-profile .b-wrap {padding: 0;}"
  1464. + ".b-clan-victory-points {margin: 0; width: auto;}"
  1465. + ".b-text-info {margin: 0;}"
  1466. + ".b-clan-profile h2 {overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}"
  1467. + ".b-text-info_motto {font-size: 16px; margin: 0;}"
  1468. // b-clan-desc rules
  1469. + ".b-clan-desc {float: left; margin: 15px 0 0; min-height: 370px; width: 745px;}"
  1470. // b-clan-stat rules
  1471. + ".b-clan-stat {border-top: 1px solid #010101; box-shadow: 0 0 1px 1px rgba(255, 255, 255, 0.05) inset; padding: 5px 0 5px;}"
  1472. + ".b-clan-stat li {padding: 1px 3px 1px 19px;}"
  1473. + ".b-clan-stat li.b-clan-stat-header {background: url('/static/3.13.0.2.1/common/css/scss/context-menu/img/active-point.png') repeat-y; font-weight: bold; margin: 5px 2px 0; padding: 2px 3px 2px 19px;}"
  1474. // b-clan-buttons rules
  1475. + ".l-content > form {height: 100%; position: fixed; top: 0;}"
  1476. + ".b-clan-buttons {bottom: 0; padding: 10px 0; position: absolute; text-align: center; width: 953px;}"
  1477. + ".b-clan-buttons {"+box_background+"}"
  1478. + ".b-clan-buttons .b-button {margin-bottom: 0;}"
  1479. // sidebar rules
  1480. + ".l-sidebar {margin: 0; position: absolute; right: 0; top: 25px; width: auto;}"
  1481. + ".b-context-menu {background: url("+uri_context_menu+") repeat-y; border-right: 1px solid black; margin: 0; width: 200px;}"
  1482. + ".b-context-menu_wrapper {padding: 10px 0 0;}"
  1483. + ".b-context-menu_btn {margin: 10px 0 0;}"
  1484. + ".b-sidebar-widget {margin: 0; position: absolute; right: -228px; top: -26px; width: 203px;}"
  1485. + ".b-sidebar-widget h2 { color: #FFFFFF; font: 18px/22px 'WarHeliosCondCBold','Arial Narrow',arial,sans-serif; margin: 0 0 11px; text-transform: uppercase;}"
  1486. // footer rules
  1487. + ".b-footer, .reg-RUS .b-footer {height: 285px; margin: 0 auto; position: static;}"
  1488. + ".reg-KR .b-footer {background-size: 100% 100%; height: 360px; margin-top: -2px;}"
  1489. + "";
  1490. document.head.appendChild(style);
  1491. // end style
  1492.  
  1493. // clan wrapper
  1494. var clanWrpr_div = document.createElement('div');
  1495. clanWrpr_div.className = "b-clan-wrapper",
  1496. background_class = document.getElementsByClassName('b-background-clan-profile')[0];
  1497. background_class.parentNode.insertBefore(clanWrpr_div, background_class.nextSibling);
  1498. clanHead_div = document.createElement('div');
  1499. clanHead_div.className = "b-clan-header",
  1500. clanHead_div.innerHTML += scriptlink;
  1501. infoWrapper_class = document.getElementsByClassName('b-wrap')[0];
  1502. clanHead_div.appendChild(infoWrapper_class);
  1503. clanWrpr_div.appendChild(clanHead_div);
  1504.  
  1505. // clan description
  1506. clanDesc_div = document.getElementsByClassName('b-clan-profile')[0].children[2];
  1507. clanDesc_div.className = "b-clan-desc";
  1508. clanWrpr_div.appendChild(clanDesc_div);
  1509.  
  1510. // move sidebar
  1511. var sidebar_class = document.getElementsByClassName('l-sidebar')[0];
  1512. clanWrpr_div.appendChild(sidebar_class);
  1513.  
  1514. // clan statistic links
  1515. var clan_id = document.location.href.match(/\/(\d+)/)[1];
  1516. clan_name = document.location.href.match(/\-([\w.+\-]+)/)[1];
  1517. sidebar_class = document.getElementsByClassName('b-context-menu_wrapper')[0];
  1518. clanStat_div = document.createElement('ul');
  1519. clanStat_div.className = "b-context-menu-list b-clan-stat",
  1520. wl_clan = nm_clan = mws_clan = wotcs_clan = replays = "";
  1521. if (wl_srv !== null) {
  1522. wl_clan = "<li><a target='_blank' href='http://wotlabs.net/"+wl_srv+"/clan/"+clan_name+"'>WoTLabs</a></li>";
  1523. }
  1524. if (nm_srv !== null) {
  1525. nm_clan = "<li><a target='_blank' href='"+nm_host+"/clan/"+nm_srv+"/"+clan_name+"/"+clan_id+"'>Noobmeter</a></li>";
  1526. wotcs_clan = "<li><a target='_blank' href='http://wotcs.com/clan.php?wid="+clan_id+"'>WoT-CS</a></li>";
  1527. }
  1528. if (mws_srv !== null) {
  1529. mws_clan = "<li><a target='_blank' href='http://mywotstats.com/clan/view/"+clan_id+"/"+mws_srv+"'>MyWOTStats</a></li>";
  1530. }
  1531. if (wr_srv !== null) {
  1532. replays = "<li><a target='_blank' href='http://wotreplays."+wr_srv+"/clan/"+clan_name+"'>WoTReplays</a></li>";
  1533. }
  1534. clanStat = wl_clan+nm_clan+mws_clan+wotcs_clan+replays;
  1535. clanStat_div.innerHTML = "<li class='b-clan-stat-header'>"+locale.c01.lang+"</li>"+clanStat;
  1536. sidebar_class.appendChild(clanStat_div);
  1537. }
  1538. // end wg_clans
  1539.  
  1540. // helper functions
  1541. // filter
  1542. function filter(input, type) {
  1543. var inputStr = input.toString();
  1544. switch(type) {
  1545. case (1):
  1546. output = parseFloat(inputStr.replace(/[^\d]/g,""));
  1547. if (isNaN(output)) {return 0;} else {return output;} // string into integer
  1548. case (2):
  1549. return inputStr.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1 "); // output with spaces
  1550. case (3):
  1551. return inputStr.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); // output with commas
  1552. case (4):
  1553. return inputStr.replace(/[^\w]/g,""); // remove all symbols
  1554. default:
  1555. console.log("error filtering: ", input);
  1556. return input;
  1557. }
  1558. }
  1559.  
  1560. // colouring
  1561. function colStat(input, type, dec, set, ext) {
  1562. color = "";
  1563. output = input.toFixed(dec);
  1564. if (type == "battles") {
  1565. output = filter(input,2);
  1566. }
  1567. if (set == "pct") {
  1568. output += "%";
  1569. }
  1570. if (ext || ext == "0") {
  1571. input = 100-(input+(ext*100));
  1572. }
  1573. if (type !== "") {
  1574. for (var i=0; i<colStatArr.length; ++i) {
  1575. if (input >= colStatArr[i][type]) {
  1576. var color = colStatArr[i].color;
  1577. break;
  1578. }
  1579. }
  1580. }
  1581. if (type == "wn8") {
  1582. background_div.style.background = "#"+color;
  1583. }
  1584. return "<font color='"+color+"'>"+output+"</font>";
  1585. }
  1586.  
  1587. // quick insertion of row into tables
  1588. function insertNewTr(table_parent, text_td, val_td, val2_td) {
  1589. var trNew = document.createElement('tr');
  1590.  
  1591. var tdNew_text = document.createElement('td');
  1592. tdNew_text.innerHTML = text_td;
  1593. tdNew_text.className = "t-dotted_minor";
  1594.  
  1595. var tdNew_value = document.createElement('td');
  1596. tdNew_value.innerHTML = val_td;
  1597. tdNew_value.className = "t-dotted_value";
  1598.  
  1599. table_parent.appendChild(trNew);
  1600. trNew.appendChild(tdNew_text);
  1601. trNew.appendChild(tdNew_value);
  1602.  
  1603. if (table_parent == mb_table_cn) {
  1604. tdNew_text.className = "t-dotted_class-ico t-dotted_minor__middle";
  1605. tdNew_value.className = "t-dotted_minor t-dotted_minor__middle";
  1606. }
  1607.  
  1608. if (val2_td !== "") {
  1609. var tdNew_value2 = document.createElement('td');
  1610. tdNew_value2.innerHTML = val2_td;
  1611. tdNew_value2.className = "t-dotted_value";
  1612. if (table_parent == mb_table_cn) {
  1613. tdNew_value2.className = "t-dotted_value t-dotted_minor__middle";
  1614. }
  1615. trNew.appendChild(tdNew_value2);
  1616. }
  1617.  
  1618. return trNew;
  1619. }
  1620. // end helper functions
  1621.  
  1622. // clan handler
  1623. function clanHnd() {
  1624. var cc_class = document.getElementById('js-clan-block-container');
  1625. cc_classCheckSeq = 0;
  1626. cc_classChecker = setInterval(function() {
  1627. cc_classCheckSeq += 1;
  1628. ci_class = document.getElementById('js-profile-clan');
  1629. ct_class = document.getElementById('js-profile-clan-table');
  1630. vp_class = document.getElementsByClassName('b-victory-points')[0];
  1631. pn_class = document.getElementsByClassName('js-profile-name')[0];
  1632. if (ci_class !== null && ct_class == null) {
  1633. // clan info
  1634. cl_class = ci_class.getElementsByTagName('a')[1];
  1635. clan_id = cl_class.getAttribute('href').match(/\/(\d+)/)[1];
  1636. clan_name = cl_class.getElementsByTagName('span')[0].innerHTML.match(/[\w.+\-]+/)[0];
  1637.  
  1638. // move victory points
  1639. if (vp_class) {
  1640. pn_class.appendChild(vp_class);
  1641. vp_class.style.display="inline-block";
  1642. }
  1643.  
  1644. // clan statistic links
  1645. wl_clan = nm_clan = wn_clan = mws_clan = wotcs_clan = replays = "";
  1646. if (wl_srv !== null) {
  1647. wl_clan = "<td><a target='_blank' href='http://wotlabs.net/"+wl_srv+"/clan/"+clan_name+"'>WoTLabs</a></td>";
  1648. }
  1649. if (nm_srv !== null) {
  1650. nm_clan = "<td><a target='_blank' href='"+nm_host+"/clan/"+nm_srv+"/"+clan_name+"/"+clan_id+"'>Noobmeter</a></td>";
  1651. wotcs_clan = "<td><a target='_blank' href='http://wotcs.com/clan.php?wid="+clan_id+"'>WoT-CS</a></td>";
  1652. }
  1653. if (wn_srv !== null) {
  1654. wn_clan = "<td><a target='_blank' href='http://wot-news.com/index.php/stat/clanstat/"+wn_srv+"/"+clan_id+"/'>Wot-news</a></td>";
  1655. }
  1656. if (mws_srv !== null) {
  1657. mws_clan = "<td><a target='_blank' href='http://mywotstats.com/clan/view/"+clan_id+"/"+mws_srv+"'>MyWOTStats</a></td>";
  1658. }
  1659. if (wr_srv !== null) {
  1660. replays = "<td class='statname'>"+locale.p67.lang+"</td><td><a target='_blank' href='http://wotreplays."+wr_srv+"/clan/"+clan_name+"'>WoTReplays</a></td>";
  1661. }
  1662. clanstat = "<tr><td class='statname'>"+locale.p66.lang+"</td>"+wl_clan+nm_clan+wn_clan+"</tr><tr><td></td>"+mws_clan+wotcs_clan+"</tr><tr>"+replays+"</tr>";
  1663. cc_class.innerHTML += "<table id='js-profile-clan-table'>"+clanstat+"</table>";
  1664. profileName_class.parentNode.insertBefore(cc_class, profileName_class.nextSibling);
  1665. clearInterval(cc_classChecker);
  1666. }
  1667. else if (cc_classCheckSeq == 5 || ct_class !== null) {
  1668. clearInterval(cc_classChecker);
  1669. }
  1670. }, 2500);
  1671. }
  1672.  
  1673. // noobmeter handler
  1674. function nmHnd(response) {
  1675. if (response.statusText == "OK") {
  1676. var nmpr = parseFloat(response.responseText);
  1677. if (isNaN(nmpr)) {
  1678. var nm_fmt = "No Rating";
  1679. }
  1680. else {
  1681. var nm_fmt = colStat(nmpr,"nm",2);
  1682. }
  1683. nmHnd_insert(nm_fmt, nmpr);
  1684. }
  1685. else {
  1686. nmHnd_error();
  1687. }
  1688. }
  1689. function nmHnd_error() {
  1690. nmHnd_insert("No Rating");
  1691. console.log("error retrieving NoobMeter data");
  1692. return null;
  1693. }
  1694. function nmHnd_insert(nm_fmt, nmpr) {
  1695. ratingsInfo_div = document.getElementsByClassName('js-noobmeter')[1];
  1696. ratingsClip_div = document.getElementsByClassName('js-noobmeter')[0];
  1697. ratingsInfo_div.innerHTML = nm_fmt;
  1698. ratingsClip_div.innerHTML += " NM: "+nmpr.toFixed(2);
  1699. }
  1700. // end noobmeter handler
  1701.  
  1702. // retrieval function
  1703. function gRec(doc) {
  1704. var resp;
  1705. GM_xmlhttpRequest({
  1706. method: "GET",
  1707. url: doc.url,
  1708. headers: {
  1709. "Accept": "text/xml"
  1710. },
  1711. onload: function(resp) {
  1712. if (resp.readyState == 4) {
  1713. if (resp.status == 200) {
  1714. doc.handler(resp);
  1715. }
  1716. }
  1717. },
  1718. onerror: function() {
  1719. doc.onerror();
  1720. }
  1721. });
  1722. }
  1723.  
  1724. // global functions inserted into head
  1725. // clipboard helper
  1726. function copyClipboard() {
  1727. text = document.getElementsByClassName('ratingsClip-holder')[0].innerHTML;
  1728. locale = document.getElementsByClassName('ratingsClip-holder')[1].innerHTML;
  1729. window.prompt(locale, text);
  1730. }
  1731. // end global functions
  1732. // end script