// ==UserScript==
// @name WoTStatScript - ForumsExtendedStat
// @version 1.04
// @description Adds stats and links for posts on official World of Tanks forums
// @author Orrie
// @contributor seriych
// @namespace http://forum.worldoftanks.eu/index.php?/topic/263423-
// @icon http://dl.dropboxusercontent.com/u/12497046/wot/projects/statscript/img/icon.png
// @include /^http:\/\/forum\.worldoftanks\.(eu|com|ru|asia|kr)\/\S+(\/topic\/|\?showtopic=)/
// @include /^http:\/\/forum\.worldoftanks\.(eu|com|ru|asia|kr)\/index\.php\?app=members&module=messaging§ion=view&do=showConversation&topicID=\d+/
// @grant GM_xmlhttpRequest
// @license MIT License
// ==/UserScript==
(function () {
// server, API and cluster settings
var sc = {
srv: document.location.host.match(/\.(eu|ru|com|asia|kr)/)[1],
api: {
ru: "98ca7c4fb108175b67d6505b9c3f3ebd",
eu: "a7595640a90bf2d19065f3f2683b171c",
com: "bf5dba0efd444d75147b6222dd903fd2",
asia: "95f8713eccd322e52dbf521dbd28b19c",
kr: "ffea0f1c3c5f770db09357d94fe6abfb"
},
sym: ","
},
srv = {
s: "en", wl: false, nm: false, ws: false, wr: false, wn: false, cs: false, wlife: false
};
switch(sc.srv) {
case ("eu"): // eu server
srv.wl = srv.nm = srv.ws = srv.wr = srv.wn = srv.cs = srv.wlife = sc.srv;
break;
case ("ru"): // ru server
srv.wl = srv.nm = srv.ws = srv.wr = srv.wn = srv.cs = sc.srv;
srv.s = "ru";
sc.sym = " ";
break;
case ("com"): // na server
srv.wl = srv.nm = srv.ws = srv.cs = "na"; srv.wr = "com"; srv.wn = "us";
break;
case ("asia"): // asia server
srv.wl = srv.nm = srv.ws = srv.wn = srv.cs = "sea"; srv.wr = "com";
break;
case ("kr"): // korean server
srv.wl = srv.nm = srv.ws = srv.cs = srv.ch = sc.srv; srv.wr = "com";
break;
default: break;
}
// data uri
var uri = {
icon_arrow:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPwAAAAJCAMAAAAhKrH/AAAAV1BMVEUAAAD///+TKCf9AQmTLiX9AQmTMir9AQmTLif9AQmTMSz9AQmTMir9AQmTMyn9AQmTMirvGgKTMirsIAGTMirwGQOTMiqTMirsIAGaNDGgNzfqJwDrJABtE0DNAAAAGnRSTlMAABERIiIzM0REVVVmZnd3iIqZmrvDzN3g7thzQuwAAACHSURBVHja5dVLDsIwDEXRCySlP0IMoXXs7H+dDBASA1bQ3B0cPclm2Fe2wrfTQeO3qwqqAKWek80HxfO/l1/EBRgtU2tf+KkJ7TO9hdVSV3jU42f6ZClY6Qt/d4n+BGol29jTwQN1pE2QbA610BVefImuwL7xsNAXXhVpEYY8kNfO/rwsyA3ekEsOT2YDLE8AAAAASUVORK5CYII="
};
// style contents
var style = elem("style", "wotstatscript", "", "text/css"),
styleText = [
".author_info {z-index: 1;}",
".user_details > br {display: none;}",
".basic_info {margin: 0 0 4px;}",
".post_count.margin-bottom {margin: 0 0 5px;}",
".battles_count {display: none;}",
".i-xvm-lang {vertical-align: text-top;}",
".t-table-stats {margin: 5px 0; width: auto;}",
".t-table-stats td {padding: 0 5px 0 0; line-height: 16px;}",
".t-table-stats td:last-of-type {font-weight: bold;}",
".t-tables-links {background: #EDEDED; border: 1px solid #d5d5d5; border-radius: 3px; box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1), 0 0 3px 3px rgba(255, 255, 255, 0.2); display: inline-block; margin: 5px 0 5px -3px; overflow: hidden; padding: 3px 3px 0; text-overflow: ellipsis; white-space: nowrap; width: 90px;}",
".t-tables-links:hover {border-color: #7D7D7D; width: 180px;}",
".t-tables-links tbody {display: table; width: 180px;}",
".t-tables-links td {padding: 0 0 2px; font-weight: bold;}",
".t-tables-links td a { background: url("+uri.icon_arrow+") no-repeat scroll 0 2px rgba(0, 0, 0, 0); padding: 0 0 0 10px; vertical-align: middle;}",
".t-tables-links td a:hover {background: url("+uri.icon_arrow+") no-repeat scroll -244px 2px rgba(0, 0, 0, 0);}",
".t-tables-links tr:last-of-type td {}",
".realm_kr .t-tables-links {width: 108px;}",
".realm_kr .t-tables-links:hover {width: 215px;}",
".realm_kr .t-tables-links tbody {width: 215px;}"
];
for (var css=0; css<styleText.length; css++) {
style.appendChild(document.createTextNode(styleText[css]));
}
document.head.appendChild(style);
// end style
// colour scale array
var colArr = {
// col wr bat wn8 wn7 eff nm pr
sUni: [ "#5A3175", 65, 30000, 2900, 2050, 2050, 2000 ], // 99.99% super unicum
uni: [ "#83579D", 60, 25000, 2450, 1850, 1800, 1950, 9930 ], // 99.90% unicum
gr8: [ "#3972C6", 56, 21000, 2000, 1550, 1500, 1750, 8525 ], // 99.00% great
vGud: [ "#4099BF", 54, 17000, 1600, 1350 ], // 95.00% very good
good: [ "#4D7326", 52, 13000, 1200, 1100, 1200, 1450, 6340 ], // 82.00% good
aAvg: [ "#849B24", 50, 10000, 900 ], // 63.00% above average
avg: [ "#CCB800", 48, 7000, 650, 900, 900, 1250, 4185 ], // 40.00% average
bAvg: [ "#CC7A00", 47, 3000, 450, 700, 600, 1150, 2020 ], // 20.00% below average
bas: [ "#CD3333", 46, 1000, 300, 500 ], // 6.00% basic
beg: [ "#930D0D", 0, 0, 0, 0, 0, 0, 0 ], // 0.00% beginner
dft: [ "#6B6B6B" ], // default
id: { "col": 0, "wr": 1, "bat": 2, "wn8": 3, "wn7": 4, "eff": 5, "nm": 6, "pr": 7 } // type identifier
};
// localization
var loc = {
f00: { en: "Client", ru: "Клиент"},
f01: { en: "Winrate:", ru: "Винрейт:"},
f02: { en: "Battles:", ru: "Боев:"},
f03: { en: "Rating:", ru: "Рейтинг:"},
f04: { en: "WN8:", ru: "WN8:"}
//f00: { en: "f00_en", ru: "f00_ru"},
};
for (var l in loc) {
if (loc.hasOwnProperty(l)) {
loc[l] = loc[l][srv.s];
}
}
// formula calculations and variables
// expected tank values v18 with premium tanks up to 0.9.6
var statObj = {
3329: { frag:1.92, dmg:249.77, spot:1.43, def:1.51, win:59.03 }, // MS-1
1025: { frag:1.54, dmg:265.05, spot:2.02, def:1.24, win:58.91 }, // BT-2
4609: { frag:1.67, dmg:282.37, spot:1.40, def:1.67, win:60.03 }, // T-26
15361: { frag:1.56, dmg:260.95, spot:1.59, def:1.72, win:61.47 }, // T-60
54529: { frag:1.63, dmg:279.98, spot:1.53, def:1.46, win:58.64 }, // Tetrarch
769: { frag:0.88, dmg:218.00, spot:2.10, def:1.03, win:54.71 }, // BT-7
52225: { frag:1.70, dmg:359.74, spot:2.39, def:1.71, win:61.83 }, // BT-SV
56577: { frag:1.40, dmg:303.68, spot:1.50, def:1.55, win:57.47 }, // LTP
52737: { frag:1.04, dmg:235.25, spot:1.69, def:1.17, win:53.40 }, // M3 Light
53505: { frag:1.79, dmg:373.25, spot:1.79, def:1.73, win:59.84 }, // T-127
3073: { frag:1.11, dmg:268.97, spot:1.43, def:1.00, win:56.25 }, // T-46
15105: { frag:1.43, dmg:337.87, spot:1.49, def:1.63, win:58.12 }, // T-70
2049: { frag:0.74, dmg:273.73, spot:2.37, def:0.84, win:55.37 }, // A-20
9473: { frag:0.70, dmg:260.62, spot:2.99, def:0.65, win:55.52 }, // T-50
15873: { frag:1.12, dmg:380.82, spot:1.73, def:1.36, win:58.59 }, // T-80
52481: { frag:1.46, dmg:409.99, spot:1.54, def:1.63, win:57.22 }, // Valentine II
16641: { frag:0.51, dmg:365.84, spot:3.47, def:0.59, win:53.10 }, // MT-25
18433: { frag:0.75, dmg:783.58, spot:2.82, def:0.80, win:54.30 }, // LTTB
18177: { frag:0.63, dmg:883.93, spot:2.33, def:0.65, win:51.84 }, // T-54 ltwt.
52993: { frag:0.87, dmg:293.06, spot:2.40, def:0.78, win:54.78 }, // A-32
1537: { frag:1.12, dmg:418.64, spot:1.27, def:0.92, win:56.80 }, // T-28
51457: { frag:1.36, dmg:578.41, spot:1.19, def:1.45, win:57.86 }, // Matilda IV
1: { frag:1.09, dmg:514.27, spot:1.46, def:1.06, win:55.56 }, // T-34
12289: { frag:1.03, dmg:683.16, spot:2.02, def:0.98, win:54.35 }, // A-43
2561: { frag:1.02, dmg:734.66, spot:1.45, def:0.96, win:55.05 }, // T-34-85
58113: { frag:1.03, dmg:683.16, spot:2.02, def:0.98, win:54.35 }, // T-34-85M
12545: { frag:0.99, dmg:951.71, spot:1.70, def:0.83, win:53.38 }, // A-44
8961: { frag:0.85, dmg:779.58, spot:1.54, def:0.93, win:53.60 }, // KV-13
6657: { frag:0.94, dmg:877.16, spot:1.56, def:1.00, win:54.34 }, // T-43
57089: { frag:0.85, dmg:779.58, spot:1.54, def:0.93, win:53.60 }, // T-44-85
56833: { frag:0.85, dmg:779.58, spot:1.54, def:0.93, win:53.60 }, // T-44-122
13313: { frag:1.03, dmg:1279.62, spot:1.42, def:0.96, win:52.81 }, // Object 416
4353: { frag:0.82, dmg:1014.58, spot:1.65, def:0.85, win:52.59 }, // T-44
59905: { frag:0.82, dmg:1147.96, spot:1.31, def:0.91, win:52.68 }, // T-54 First Prototype
17665: { frag:1.03, dmg:1548.16, spot:1.56, def:0.87, win:53.24 }, // Object 430 Version II
7937: { frag:0.94, dmg:1457.35, spot:1.80, def:0.81, win:51.34 }, // T-54
16897: { frag:1.01, dmg:1833.60, spot:1.70, def:0.89, win:49.47 }, // Object 140
17153: { frag:1.00, dmg:1785.87, spot:1.65, def:0.88, win:50.03 }, // Object 430
15617: { frag:1.00, dmg:1811.66, spot:1.74, def:0.85, win:49.66 }, // Object 907
13825: { frag:0.92, dmg:1698.26, spot:1.62, def:0.76, win:48.56 }, // T-62A
51713: { frag:1.28, dmg:612.11, spot:1.19, def:1.30, win:55.12 }, // Churchill III
11777: { frag:1.21, dmg:629.78, spot:0.88, def:1.00, win:54.45 }, // KV-1
18689: { frag:1.41, dmg:729.97, spot:1.36, def:1.16, win:58.91 }, // KV-1S
54017: { frag:1.50, dmg:699.26, spot:1.42, def:1.37, win:60.67 }, // KV-220
51201: { frag:1.50, dmg:699.26, spot:1.42, def:1.37, win:60.67 }, // KV-220 Beta-Test
10497: { frag:1.15, dmg:880.75, spot:0.73, def:0.74, win:54.81 }, // KV-2
2817: { frag:1.16, dmg:892.47, spot:1.14, def:0.74, win:54.90 }, // KV-85
11265: { frag:1.05, dmg:816.85, spot:0.92, def:0.81, win:54.57 }, // T-150
513: { frag:1.03, dmg:1078.74, spot:1.08, def:0.76, win:53.52 }, // IS
5889: { frag:1.05, dmg:1121.31, spot:0.88, def:0.77, win:54.16 }, // KV-3
5377: { frag:0.94, dmg:1331.96, spot:1.06, def:0.76, win:52.04 }, // IS-3
9217: { frag:1.11, dmg:1431.77, spot:1.19, def:0.83, win:53.64 }, // IS-6
58881: { frag:1.11, dmg:1431.77, spot:1.19, def:0.83, win:53.64 }, // IS-5 (Object 730)
11009: { frag:0.83, dmg:1206.36, spot:0.85, def:0.72, win:52.25 }, // KV-4
53249: { frag:0.99, dmg:1266.56, spot:1.10, def:0.85, win:51.87 }, // KV-5
11521: { frag:0.89, dmg:1540.88, spot:1.14, def:0.67, win:50.23 }, // IS-8
10753: { frag:0.95, dmg:1695.84, spot:0.97, def:0.69, win:52.57 }, // ST-I
6145: { frag:0.91, dmg:1871.69, spot:1.10, def:0.76, win:49.02 }, // IS-4
7169: { frag:0.86, dmg:1789.37, spot:1.23, def:0.62, win:49.14 }, // IS-7
58369: { frag:0.84, dmg:1771.13, spot:1.31, def:0.63, win:47.91 }, // Object 260 mod. 1945
5121: { frag:1.80, dmg:298.73, spot:0.47, def:1.46, win:59.07 }, // AT-1
6401: { frag:1.64, dmg:407.49, spot:0.98, def:1.59, win:58.41 }, // SU-76
54273: { frag:2.22, dmg:453.48, spot:0.97, def:1.81, win:62.70 }, // SU-76I
6913: { frag:1.57, dmg:580.78, spot:1.16, def:1.47, win:58.94 }, // SU-85B
257: { frag:1.19, dmg:595.07, spot:0.56, def:1.20, win:54.53 }, // SU-85
53761: { frag:1.46, dmg:670.32, spot:0.88, def:1.72, win:54.75 }, // SU-85I
3585: { frag:1.24, dmg:876.79, spot:0.81, def:1.13, win:54.85 }, // SU-100
54785: { frag:1.26, dmg:909.16, spot:0.61, def:0.87, win:55.28 }, // SU-100Y
10241: { frag:1.03, dmg:1029.66, spot:0.85, def:1.16, win:53.31 }, // SU-100M1
55297: { frag:1.25, dmg:1164.81, spot:0.81, def:0.95, win:54.33 }, // SU-122-44
2305: { frag:1.09, dmg:1075.09, spot:0.54, def:0.83, win:52.83 }, // SU-152
58625: { frag:1.19, dmg:1588.72, spot:0.56, def:0.79, win:51.54 }, // ISU-130
7425: { frag:1.19, dmg:1588.72, spot:0.56, def:0.79, win:51.54 }, // ISU-152
9985: { frag:0.98, dmg:1241.29, spot:0.93, def:0.96, win:50.35 }, // SU-101
8193: { frag:1.24, dmg:2056.67, spot:0.70, def:0.83, win:51.57 }, // Object 704
12033: { frag:0.97, dmg:1542.79, spot:0.90, def:0.86, win:49.94 }, // SU-122-54
14337: { frag:1.13, dmg:2190.82, spot:0.99, def:0.81, win:49.72 }, // Object 263
13569: { frag:1.17, dmg:2299.37, spot:0.83, def:0.77, win:49.06 }, // Object 268
3841: { frag:1.35, dmg:251.57, spot:0.12, def:1.67, win:53.42 }, // SU-18
7681: { frag:1.60, dmg:600.17, spot:0.12, def:2.08, win:58.49 }, // SU-26
4865: { frag:1.19, dmg:697.45, spot:0.10, def:1.66, win:53.65 }, // SU-5
16385: { frag:1.02, dmg:575.07, spot:0.09, def:1.25, win:53.06 }, // SU-122A
5633: { frag:1.15, dmg:1148.14, spot:0.06, def:1.32, win:52.49 }, // SU-8
1793: { frag:0.95, dmg:1329.10, spot:0.05, def:0.84, win:50.34 }, // S-51
16129: { frag:0.93, dmg:1075.26, spot:0.04, def:0.85, win:52.37 }, // SU-14-1
4097: { frag:1.01, dmg:1439.64, spot:0.02, def:0.71, win:50.88 }, // SU-14-2
8449: { frag:1.00, dmg:1672.34, spot:0.03, def:0.71, win:49.67 }, // 212A
8705: { frag:1.02, dmg:1912.22, spot:0.05, def:0.90, win:48.59 }, // Object 261
3089: { frag:1.95, dmg:258.63, spot:2.26, def:1.50, win:59.48 }, // Leichttraktor
785: { frag:1.63, dmg:275.47, spot:1.92, def:1.65, win:59.76 }, // Pz.Kpfw. 35 (t)
52497: { frag:2.11, dmg:345.64, spot:1.91, def:2.65, win:57.09 }, // Pz.Kpfw. 38H 735 (f)
12817: { frag:1.21, dmg:195.14, spot:2.65, def:0.80, win:59.10 }, // Pz.Kpfw. I
2065: { frag:1.51, dmg:250.64, spot:2.07, def:1.51, win:58.68 }, // Pz.Kpfw. II
60433: { frag:1.21, dmg:195.14, spot:2.65, def:0.80, win:59.10 }, // Pz.Kpfw. II Ausf. D
3345: { frag:1.55, dmg:363.12, spot:1.57, def:1.37, win:60.14 }, // Pz.Kpfw. 38 (t)
12561: { frag:1.13, dmg:243.00, spot:3.07, def:1.15, win:56.92 }, // Pz.Kpfw. I Ausf. C
13073: { frag:1.03, dmg:272.73, spot:1.84, def:1.35, win:58.35 }, // Pz.Kpfw. II Ausf. G
51729: { frag:2.01, dmg:380.52, spot:2.00, def:2.09, win:68.24 }, // Pz.Kpfw. II Ausf. J
4881: { frag:1.20, dmg:278.00, spot:1.86, def:0.94, win:56.96 }, // Pz.Kpfw. III Ausf. A
54801: { frag:1.18, dmg:270.45, spot:3.01, def:1.41, win:59.85 }, // T-15
8209: { frag:0.75, dmg:275.30, spot:2.30, def:0.82, win:55.31 }, // Pz.Kpfw. 38 (t) n.A.
6161: { frag:0.89, dmg:323.33, spot:2.77, def:0.97, win:57.51 }, // Pz.Kpfw. II Luchs
5393: { frag:0.61, dmg:351.24, spot:2.78, def:0.66, win:53.55 }, // VK 16.02 Leopard
10001: { frag:0.64, dmg:520.86, spot:2.70, def:0.52, win:53.52 }, // VK 28.01
14353: { frag:0.61, dmg:667.90, spot:2.07, def:0.60, win:51.29 }, // Aufklärungspanzer Panther
18449: { frag:0.68, dmg:911.55, spot:2.39, def:0.75, win:51.62 }, // Spähpanzer Ru 251
59665: { frag:1.19, dmg:300.59, spot:1.07, def:1.05, win:56.53 }, // Grosstraktor - Krupp
17169: { frag:1.51, dmg:333.55, spot:1.32, def:1.03, win:59.26 }, // Pz.Kpfw. IV Ausf. A
51985: { frag:1.70, dmg:391.83, spot:1.54, def:1.73, win:61.13 }, // Pz.Kpfw. S35 739 (f)
4369: { frag:1.01, dmg:339.46, spot:1.96, def:0.90, win:56.28 }, // Pz.Kpfw. III
17425: { frag:1.16, dmg:443.43, spot:1.35, def:0.99, win:55.97 }, // Pz.Kpfw. IV Ausf. D
13585: { frag:1.21, dmg:406.33, spot:1.72, def:1.29, win:57.62 }, // VK 20.01 (D)
61457: { frag:0.90, dmg:427.40, spot:1.59, def:0.85, win:52.96 }, // Pz.Kpfw. III Ausf. K
6417: { frag:0.90, dmg:427.40, spot:1.59, def:0.85, win:52.96 }, // Pz.Kpfw. III/IV
18193: { frag:1.31, dmg:611.02, spot:1.41, def:0.96, win:56.68 }, // Pz.Kpfw. IV Ausf. H
55057: { frag:1.30, dmg:610.92, spot:1.34, def:1.62, win:53.61 }, // Pz.Kpfw. IV hydrostat.
54545: { frag:1.16, dmg:570.31, spot:1.57, def:1.21, win:55.99 }, // T-25
57361: { frag:0.98, dmg:736.75, spot:1.07, def:1.24, win:52.27 }, // Pz.Kpfw. IV Schmalturm
51473: { frag:0.66, dmg:450.51, spot:1.61, def:0.71, win:49.63 }, // Pz.Kpfw. V/IV
54033: { frag:0.66, dmg:450.51, spot:1.61, def:0.71, win:49.63 }, // Pz.Kpfw. V/IV Alpha
14097: { frag:1.04, dmg:735.74, spot:1.68, def:1.08, win:54.27 }, // VK 30.01 (D)
7185: { frag:0.93, dmg:678.91, spot:1.29, def:0.82, win:52.86 }, // VK 30.01 (P)
15889: { frag:1.00, dmg:737.19, spot:1.41, def:1.02, win:52.16 }, // VK 30.02 (M)
1297: { frag:0.88, dmg:894.97, spot:1.22, def:1.19, win:52.69 }, // Panther
57617: { frag:0.93, dmg:870.17, spot:1.27, def:1.19, win:51.98 }, // Panther/M10
4113: { frag:0.93, dmg:860.50, spot:1.58, def:0.99, win:52.34 }, // VK 30.02 (D)
13841: { frag:0.86, dmg:1162.01, spot:1.22, def:1.00, win:50.42 }, // Indien-Panzer
8465: { frag:0.82, dmg:1076.79, spot:1.33, def:0.90, win:51.94 }, // Panther II
60177: { frag:0.82, dmg:1076.79, spot:1.33, def:0.90, win:51.94 }, // Panther mit 8.8cm L/71
10257: { frag:0.89, dmg:1482.21, spot:1.44, def:0.68, win:49.75 }, // E 50
14865: { frag:0.86, dmg:1451.40, spot:1.40, def:0.89, win:48.89 }, // Leopard Prototyp A
60945: { frag:0.94, dmg:1457.35, spot:1.80, def:0.81, win:51.34 }, // Т-55 NVA DDR
12305: { frag:0.91, dmg:1815.14, spot:1.45, def:0.71, win:48.32 }, // E 50 Ausf. M
14609: { frag:0.96, dmg:1827.88, spot:1.67, def:0.91, win:47.92 }, // Leopard 1
13329: { frag:1.21, dmg:417.73, spot:1.03, def:1.27, win:54.75 }, // Durchbruchswagen 2
52241: { frag:1.79, dmg:519.50, spot:1.67, def:1.73, win:60.86 }, // Pz.Kpfw. B2 740 (f)
2577: { frag:1.07, dmg:664.49, spot:1.27, def:1.08, win:53.89 }, // VK 30.01 (H)
2321: { frag:1.10, dmg:810.08, spot:1.26, def:1.09, win:54.60 }, // VK 36.01 (H)
10769: { frag:0.97, dmg:1098.74, spot:0.99, def:1.04, win:53.38 }, // Tiger (P)
529: { frag:0.99, dmg:1100.50, spot:0.99, def:1.00, win:52.84 }, // Tiger I
54289: { frag:0.83, dmg:1239.23, spot:0.87, def:0.86, win:49.33 }, // Löwe
5137: { frag:0.86, dmg:1247.99, spot:1.00, def:0.83, win:50.75 }, // Tiger II
10513: { frag:0.88, dmg:1229.43, spot:1.25, def:0.84, win:51.05 }, // VK 45.02 (P) Ausf. A
9745: { frag:0.92, dmg:1608.91, spot:1.08, def:0.70, win:50.77 }, // E 75
7441: { frag:0.87, dmg:1540.44, spot:0.95, def:0.64, win:50.02 }, // VK 45.02 (P) Ausf. B
9489: { frag:0.94, dmg:1959.15, spot:1.03, def:0.53, win:49.67 }, // E 100
6929: { frag:0.85, dmg:1783.87, spot:0.93, def:0.69, win:49.46 }, // Maus
58641: { frag:0.96, dmg:2025.56, spot:1.14, def:0.52, win:49.81 }, // VK 72.01 (K)
3601: { frag:2.01, dmg:327.84, spot:1.16, def:1.66, win:59.92 }, // Panzerjäger I
6673: { frag:1.45, dmg:406.89, spot:1.08, def:1.45, win:58.75 }, // Marder II
1809: { frag:1.49, dmg:477.76, spot:0.62, def:1.12, win:56.82 }, // Hetzer
11281: { frag:1.50, dmg:565.29, spot:1.03, def:1.57, win:57.75 }, // Marder 38T
17937: { frag:1.43, dmg:488.97, spot:0.81, def:1.19, win:56.74 }, // StuG III Ausf. B
16145: { frag:1.22, dmg:643.66, spot:0.80, def:1.14, win:52.98 }, // Pz.Sfl. IVc
1041: { frag:1.19, dmg:599.06, spot:0.75, def:1.31, win:53.81 }, // StuG III Ausf. G
60689: { frag:1.19, dmg:599.06, spot:0.75, def:1.31, win:53.81 }, // StuG IV
57105: { frag:1.14, dmg:863.10, spot:0.79, def:1.14, win:52.25 }, // Dicker Max
1553: { frag:1.06, dmg:739.43, spot:0.77, def:1.19, win:52.29 }, // Jagdpanzer IV
11793: { frag:1.20, dmg:938.85, spot:0.70, def:1.20, win:51.86 }, // Nashorn
55569: { frag:1.31, dmg:1061.27, spot:1.60, def:1.69, win:51.64 }, // E 25
3857: { frag:1.07, dmg:1101.36, spot:0.74, def:1.03, win:52.53 }, // Jagdpanther
11025: { frag:1.06, dmg:1081.86, spot:0.53, def:0.97, win:50.47 }, // Sturer Emil
55313: { frag:0.97, dmg:1303.38, spot:0.77, def:1.12, win:49.76 }, // 8.8 cm Pak 43 Jagdtiger
7697: { frag:1.09, dmg:1488.75, spot:0.62, def:0.94, win:50.72 }, // Ferdinand
11537: { frag:1.14, dmg:1538.09, spot:0.81, def:0.96, win:51.19 }, // Jagdpanther II
16657: { frag:1.29, dmg:1724.44, spot:0.63, def:1.12, win:52.11 }, // Rhm.-Borsig Waffenträger
7953: { frag:1.08, dmg:1835.74, spot:0.65, def:0.81, win:50.02 }, // Jagdtiger
16401: { frag:1.18, dmg:1972.18, spot:0.68, def:0.94, win:50.69 }, // Waffenträger auf Pz. IV
12049: { frag:1.08, dmg:2166.00, spot:0.68, def:0.53, win:49.08 }, // Jagdpanzer E 100
16913: { frag:1.47, dmg:2496.73, spot:0.53, def:0.84, win:49.87 }, // Waffenträger auf E 100
15121: { frag:1.02, dmg:192.52, spot:0.18, def:1.31, win:57.53 }, // G.Pz. Mk. VI (e)
2833: { frag:1.25, dmg:400.31, spot:0.18, def:1.67, win:57.64 }, // Sturmpanzer I Bison
5905: { frag:1.15, dmg:425.16, spot:0.14, def:1.70, win:53.47 }, // Wespe
15633: { frag:1.22, dmg:470.38, spot:0.11, def:1.68, win:55.35 }, // Pz.Sfl. IVb
4625: { frag:1.11, dmg:446.05, spot:0.17, def:1.68, win:54.10 }, // Sturmpanzer II
5649: { frag:1.11, dmg:665.17, spot:0.11, def:1.56, win:52.70 }, // Grille
273: { frag:1.05, dmg:1002.20, spot:0.08, def:1.33, win:50.74 }, // Hummel
8977: { frag:1.02, dmg:1306.13, spot:0.05, def:1.04, win:50.37 }, // G.W. Panther
15377: { frag:0.91, dmg:1316.65, spot:0.04, def:0.64, win:50.11 }, // G.W. Tiger (P)
8721: { frag:0.93, dmg:1566.33, spot:0.04, def:0.63, win:48.51 }, // G.W. Tiger
9233: { frag:0.97, dmg:1844.31, spot:0.04, def:0.62, win:48.11 }, // G.W. E 100
545: { frag:1.69, dmg:213.47, spot:2.18, def:1.28, win:58.77 }, // T1 Cunningham
1825: { frag:1.49, dmg:251.35, spot:2.57, def:1.34, win:59.39 }, // M2 LT
53537: { frag:1.15, dmg:202.07, spot:1.76, def:0.95, win:56.92 }, // T1E6
51489: { frag:1.23, dmg:210.73, spot:2.67, def:1.10, win:57.42 }, // T2 LT
55073: { frag:1.24, dmg:182.84, spot:1.99, def:1.19, win:57.82 }, // T7 Combat Car
52769: { frag:1.16, dmg:276.63, spot:2.67, def:1.34, win:57.51 }, // M22 Locust
289: { frag:1.08, dmg:252.87, spot:2.53, def:1.27, win:57.56 }, // M3 Stuart
52001: { frag:1.08, dmg:252.87, spot:2.53, def:1.27, win:57.56 }, // MTLS-1G14
5153: { frag:0.85, dmg:289.51, spot:2.62, def:0.98, win:56.83 }, // M5 Stuart
9761: { frag:0.65, dmg:492.30, spot:2.75, def:0.72, win:53.80 }, // M24 Chaffee
15137: { frag:0.56, dmg:466.70, spot:2.39, def:0.59, win:52.87 }, // T21
16673: { frag:0.71, dmg:632.34, spot:2.30, def:0.86, win:53.22 }, // T37
17953: { frag:0.82, dmg:874.78, spot:2.57, def:0.82, win:52.94 }, // M41 Walker Bulldog
15649: { frag:0.67, dmg:712.99, spot:2.60, def:0.64, win:52.48 }, // T71
18209: { frag:0.62, dmg:921.84, spot:1.92, def:0.59, win:51.24 }, // T49
5665: { frag:1.53, dmg:260.74, spot:1.75, def:1.27, win:59.88 }, // T2 MT
4897: { frag:1.38, dmg:302.83, spot:1.56, def:1.08, win:57.42 }, // M2 MT
3105: { frag:1.00, dmg:344.64, spot:0.84, def:0.84, win:54.28 }, // M3 Lee
12577: { frag:1.44, dmg:666.89, spot:1.55, def:1.04, win:58.15 }, // M4 Improved
1057: { frag:1.44, dmg:666.89, spot:1.55, def:1.04, win:58.15 }, // M4 Sherman
52257: { frag:1.00, dmg:445.08, spot:1.54, def:0.90, win:54.41 }, // M4A2E4 Sherman
5409: { frag:0.94, dmg:427.81, spot:2.19, def:0.99, win:55.20 }, // M7
51745: { frag:1.19, dmg:549.92, spot:1.46, def:1.19, win:57.24 }, // Ram II
56097: { frag:1.00, dmg:690.05, spot:1.54, def:1.00, win:55.03 }, // Fury
10017: { frag:1.06, dmg:745.05, spot:1.22, def:1.10, win:54.30 }, // M4A3E2 Sherman Jumbo
1313: { frag:1.00, dmg:690.05, spot:1.54, def:1.00, win:55.03 }, // M4A3E8 Sherman
1569: { frag:0.95, dmg:958.11, spot:1.74, def:1.03, win:54.31 }, // T20
11809: { frag:1.10, dmg:902.09, spot:1.81, def:1.35, win:52.39 }, // T23E3
5921: { frag:0.86, dmg:1118.55, spot:1.58, def:0.99, win:51.70 }, // M26 Pershing
13345: { frag:0.86, dmg:1131.01, spot:1.00, def:0.97, win:51.19 }, // T26E4 SuperPershing
14625: { frag:1.03, dmg:1272.64, spot:1.32, def:1.08, win:52.22 }, // T69
53793: { frag:0.86, dmg:1118.55, spot:1.58, def:0.99, win:51.70 }, // T95E2
8993: { frag:0.89, dmg:1444.58, spot:1.64, def:0.72, win:50.36 }, // M46 Patton
15393: { frag:1.12, dmg:1698.56, spot:1.03, def:0.78, win:51.01 }, // T54E1
14113: { frag:0.88, dmg:1714.31, spot:1.59, def:0.68, win:47.79 }, // M48A1 Patton
15905: { frag:0.79, dmg:1651.72, spot:1.48, def:0.72, win:46.45 }, // M60
55841: { frag:0.79, dmg:1651.72, spot:1.48, def:0.72, win:46.45 }, // T95E6
3361: { frag:1.24, dmg:638.89, spot:1.21, def:1.12, win:55.52 }, // T1 HT
33: { frag:1.33, dmg:606.91, spot:1.54, def:1.21, win:55.78 }, // T14
801: { frag:1.04, dmg:829.81, spot:1.08, def:0.85, win:53.56 }, // M6
3873: { frag:1.10, dmg:1233.90, spot:1.15, def:0.98, win:54.89 }, // T29
52513: { frag:0.85, dmg:1136.19, spot:1.18, def:0.82, win:47.48 }, // M6A2E1
4385: { frag:0.92, dmg:1294.05, spot:1.23, def:0.92, win:52.54 }, // T32
2849: { frag:0.84, dmg:1298.47, spot:0.83, def:0.71, win:50.60 }, // T34
9505: { frag:0.88, dmg:1567.62, spot:1.12, def:0.68, win:50.08 }, // M103
10785: { frag:0.87, dmg:1813.53, spot:1.21, def:0.73, win:48.63 }, // T110E5
14881: { frag:1.13, dmg:2157.48, spot:0.84, def:0.75, win:49.56 }, // T57 HT
6177: { frag:2.11, dmg:312.85, spot:1.21, def:1.50, win:58.21 }, // T18
6433: { frag:1.50, dmg:364.48, spot:1.31, def:1.17, win:58.78 }, // T82
10273: { frag:1.33, dmg:499.46, spot:1.58, def:1.59, win:58.51 }, // M8A1
7713: { frag:1.54, dmg:579.16, spot:1.28, def:1.54, win:58.95 }, // T40
6945: { frag:1.26, dmg:620.69, spot:1.03, def:1.39, win:55.62 }, // M10 Wolverine
10529: { frag:1.38, dmg:670.61, spot:1.76, def:1.51, win:57.52 }, // T67
11553: { frag:1.20, dmg:902.91, spot:1.48, def:1.30, win:55.27 }, // M18 Hellcat
7201: { frag:1.11, dmg:849.66, spot:0.94, def:1.17, win:54.82 }, // M36 Jackson
9249: { frag:1.07, dmg:1089.15, spot:0.81, def:1.13, win:53.42 }, // T25 AT
11041: { frag:0.95, dmg:1003.48, spot:1.00, def:1.12, win:52.75 }, // T25/2
56609: { frag:1.07, dmg:1089.15, spot:0.81, def:1.13, win:53.42 }, // T28 Concept
56353: { frag:0.98, dmg:1241.29, spot:0.93, def:0.96, win:50.35 }, // M56 Scorpion
8225: { frag:1.01, dmg:1390.41, spot:0.52, def:0.93, win:50.77 }, // T28
11297: { frag:1.04, dmg:1439.56, spot:0.53, def:0.96, win:51.10 }, // T28 Prototype
2593: { frag:1.02, dmg:1787.68, spot:0.75, def:0.62, win:50.55 }, // T30
8737: { frag:1.09, dmg:1820.48, spot:0.50, def:0.67, win:51.91 }, // T95
13857: { frag:1.12, dmg:2318.01, spot:0.81, def:0.60, win:51.29 }, // T110E3
13089: { frag:1.06, dmg:2177.48, spot:0.84, def:0.62, win:49.24 }, // T110E4
2081: { frag:1.43, dmg:272.68, spot:0.36, def:2.01, win:55.72 }, // T57
3617: { frag:1.04, dmg:574.73, spot:0.11, def:1.95, win:51.01 }, // M7 Priest
4641: { frag:1.06, dmg:404.02, spot:0.14, def:1.58, win:53.48 }, // M37
4129: { frag:1.09, dmg:1047.08, spot:0.07, def:1.56, win:51.23 }, // M41 HMC
16417: { frag:1.04, dmg:840.34, spot:0.08, def:1.39, win:53.08 }, // M44
7969: { frag:1.01, dmg:1299.66, spot:0.06, def:1.11, win:50.89 }, // M12
7457: { frag:1.05, dmg:1568.70, spot:0.05, def:0.87, win:50.89 }, // M40/M43
16161: { frag:1.02, dmg:1777.19, spot:0.04, def:0.90, win:51.30 }, // M53/M55
8481: { frag:0.95, dmg:1886.27, spot:0.04, def:0.72, win:48.47 }, // T92
5201: { frag:1.87, dmg:319.65, spot:1.57, def:1.59, win:59.85 }, // Cruiser Mk. I
7761: { frag:1.85, dmg:314.54, spot:2.21, def:1.36, win:61.18 }, // Cruiser Mk. III
54865: { frag:1.43, dmg:210.41, spot:1.99, def:1.24, win:58.91 }, // Light Mk. VIC
593: { frag:1.49, dmg:251.35, spot:2.57, def:1.34, win:59.39 }, // M2A4
6993: { frag:1.39, dmg:305.51, spot:1.03, def:1.04, win:56.01 }, // Cruiser Mk. II
7505: { frag:1.48, dmg:361.38, spot:1.88, def:1.12, win:60.24 }, // Cruiser Mk. IV
1361: { frag:1.08, dmg:252.87, spot:2.53, def:1.27, win:57.56 }, // Stuart I-IV
6481: { frag:1.04, dmg:369.65, spot:1.87, def:1.05, win:56.99 }, // Covenanter
4945: { frag:0.86, dmg:333.95, spot:0.86, def:1.22, win:54.69 }, // Valentine
2129: { frag:0.98, dmg:456.88, spot:1.76, def:1.10, win:54.74 }, // Crusader
81: { frag:1.88, dmg:240.35, spot:1.17, def:1.17, win:58.74 }, // Vickers Medium Mk. I
337: { frag:1.64, dmg:274.36, spot:1.04, def:1.35, win:58.00 }, // Vickers Medium Mk. II
2385: { frag:1.19, dmg:300.59, spot:1.07, def:1.05, win:56.53 }, // Vickers Medium Mk. III
1617: { frag:1.00, dmg:344.64, spot:0.84, def:0.84, win:54.28 }, // Grant
849: { frag:1.33, dmg:502.84, spot:0.88, def:1.61, win:58.01 }, // Matilda
53585: { frag:1.24, dmg:574.64, spot:0.83, def:1.49, win:55.41 }, // Matilda Black Prince
12881: { frag:1.44, dmg:666.89, spot:1.55, def:1.04, win:58.15 }, // Sherman III
1105: { frag:1.04, dmg:711.06, spot:2.06, def:0.95, win:55.05 }, // Cromwell
3665: { frag:0.95, dmg:806.35, spot:0.91, def:0.79, win:52.33 }, // Sherman Firefly
5457: { frag:1.01, dmg:929.79, spot:1.77, def:1.06, win:53.33 }, // Comet
5969: { frag:0.82, dmg:1147.96, spot:1.31, def:0.91, win:52.68 }, // Centurion Mk. I
55633: { frag:0.82, dmg:1147.96, spot:1.31, def:0.91, win:52.68 }, // FV4202 (P)
5713: { frag:0.91, dmg:1588.38, spot:1.28, def:0.85, win:50.84 }, // Centurion Mk. 7/1
7249: { frag:0.96, dmg:1886.82, spot:1.39, def:0.80, win:48.31 }, // FV4202
2897: { frag:1.17, dmg:630.42, spot:0.91, def:1.20, win:54.92 }, // Churchill I
54353: { frag:1.43, dmg:661.43, spot:1.61, def:1.31, win:57.56 }, // Excelsior
4689: { frag:0.99, dmg:756.40, spot:0.78, def:1.06, win:53.16 }, // Churchill VII
53841: { frag:1.16, dmg:863.71, spot:0.62, def:1.24, win:52.60 }, // TOG II*
3153: { frag:0.94, dmg:1011.85, spot:0.88, def:1.10, win:54.08 }, // Black Prince
3921: { frag:0.81, dmg:1213.79, spot:1.11, def:0.93, win:51.58 }, // Caernarvon
4433: { frag:0.87, dmg:1610.79, spot:1.04, def:0.69, win:50.07 }, // Conqueror
6225: { frag:0.91, dmg:1901.63, spot:1.10, def:0.66, win:48.36 }, // FV215b
8273: { frag:1.78, dmg:291.66, spot:1.44, def:1.52, win:59.20 }, // Universal Carrier 2-pdr
8017: { frag:1.63, dmg:387.60, spot:0.90, def:1.66, win:58.80 }, // Valentine AT
9041: { frag:1.32, dmg:475.48, spot:1.46, def:1.59, win:57.50 }, // Alecto
13393: { frag:1.26, dmg:620.69, spot:1.03, def:1.39, win:55.62 }, // Archer
8785: { frag:1.19, dmg:579.58, spot:0.81, def:1.56, win:57.32 }, // AT 2
14417: { frag:1.11, dmg:849.66, spot:0.94, def:1.17, win:54.82 }, // Achilles
9553: { frag:1.12, dmg:823.44, spot:0.70, def:1.41, win:56.13 }, // AT 8
9809: { frag:0.90, dmg:703.56, spot:0.42, def:1.03, win:52.42 }, // Churchill Gun Carrier
54097: { frag:0.93, dmg:970.33, spot:0.71, def:1.21, win:51.99 }, // AT 15A
10065: { frag:1.18, dmg:1241.60, spot:0.70, def:1.30, win:56.42 }, // AT 7
14161: { frag:0.95, dmg:1003.48, spot:1.00, def:1.12, win:52.75 }, // Challenger
8529: { frag:1.06, dmg:1443.76, spot:0.66, def:1.19, win:52.50 }, // AT 15
14673: { frag:1.09, dmg:1488.75, spot:0.62, def:0.94, win:50.72 }, // Charioteer
13137: { frag:0.87, dmg:1610.79, spot:1.04, def:0.69, win:50.07 }, // Conway
52561: { frag:1.08, dmg:1820.73, spot:0.63, def:0.87, win:51.56 }, // Tortoise
9297: { frag:1.25, dmg:2329.98, spot:0.59, def:0.57, win:48.77 }, // FV215b (183)
13905: { frag:1.25, dmg:2329.98, spot:0.59, def:0.57, win:48.77 }, // FV4005
10577: { frag:1.41, dmg:195.95, spot:0.26, def:1.32, win:56.18 }, // Loyd Gun Carriage
54609: { frag:1.12, dmg:279.39, spot:0.13, def:1.61, win:53.94 }, // Sexton I
3409: { frag:0.96, dmg:239.84, spot:0.12, def:1.37, win:53.78 }, // Sexton II
10833: { frag:1.00, dmg:361.14, spot:0.10, def:1.88, win:53.40 }, // Birch Gun
11089: { frag:1.22, dmg:647.73, spot:0.11, def:1.70, win:55.25 }, // Bishop
11857: { frag:1.14, dmg:853.36, spot:0.16, def:2.15, win:54.53 }, // FV304
11345: { frag:0.92, dmg:993.36, spot:0.07, def:1.66, win:51.29 }, // Crusader 5.5-in. SP
12113: { frag:0.93, dmg:1306.53, spot:0.03, def:0.86, win:50.24 }, // FV207
11601: { frag:0.99, dmg:1703.97, spot:0.03, def:0.77, win:50.38 }, // FV3805
12369: { frag:1.02, dmg:2244.39, spot:0.03, def:0.97, win:51.69 }, // Conqueror Gun Carriage
577: { frag:1.72, dmg:219.80, spot:1.37, def:1.50, win:59.45 }, // Renault FT
1601: { frag:1.43, dmg:236.13, spot:1.16, def:1.85, win:55.79 }, // D1
1345: { frag:1.46, dmg:240.71, spot:1.38, def:1.81, win:58.89 }, // Hotchkiss H35
5953: { frag:0.99, dmg:219.46, spot:0.95, def:1.60, win:55.63 }, // AMX 38
2881: { frag:0.71, dmg:239.62, spot:0.86, def:0.91, win:52.49 }, // AMX 40
14145: { frag:0.66, dmg:462.17, spot:2.61, def:0.75, win:53.93 }, // ELC AMX
6465: { frag:0.59, dmg:493.20, spot:2.02, def:0.57, win:51.92 }, // AMX 12 t
63809: { frag:0.60, dmg:586.53, spot:2.09, def:0.60, win:52.04 }, // AMX 13 57
5185: { frag:0.60, dmg:586.53, spot:2.09, def:0.60, win:52.04 }, // AMX 13 75
4929: { frag:0.70, dmg:836.95, spot:2.45, def:0.65, win:51.76 }, // AMX 13 90
321: { frag:1.29, dmg:300.60, spot:0.92, def:1.46, win:57.94 }, // D2
63553: { frag:0.93, dmg:1120.00, spot:1.51, def:1.07, win:50.04 }, // AMX Chasseur de chars
5697: { frag:0.96, dmg:1407.12, spot:1.35, def:0.79, win:49.42 }, // Lorraine 40 t
3649: { frag:1.12, dmg:1821.23, spot:2.04, def:0.87, win:49.04 }, // Bat.-Châtillon 25 t
1089: { frag:1.04, dmg:335.58, spot:1.11, def:1.19, win:52.91 }, // B1
6721: { frag:1.22, dmg:648.05, spot:0.88, def:0.99, win:54.31 }, // BDR G1 B
2625: { frag:0.95, dmg:806.35, spot:0.91, def:0.79, win:52.33 }, // ARL 44
6977: { frag:0.88, dmg:1024.94, spot:0.94, def:0.92, win:51.70 }, // AMX M4 mle. 45
3137: { frag:1.10, dmg:1405.35, spot:0.92, def:1.02, win:51.27 }, // AMX 50 100
64065: { frag:0.93, dmg:1244.66, spot:1.51, def:1.07, win:50.04 }, // FCM 50 t
3905: { frag:1.02, dmg:1667.38, spot:0.87, def:0.80, win:49.45 }, // AMX 50 120
6209: { frag:1.05, dmg:1980.08, spot:0.95, def:0.82, win:48.19 }, // AMX 50 B
7745: { frag:2.03, dmg:331.49, spot:0.94, def:1.93, win:59.36 }, // Renault FT AC
2369: { frag:1.86, dmg:450.04, spot:1.08, def:1.77, win:60.06 }, // FCM 36 Pak 40
8257: { frag:1.49, dmg:375.37, spot:1.11, def:1.80, win:58.75 }, // Renault UE 57
9793: { frag:1.18, dmg:399.26, spot:0.57, def:0.98, win:54.53 }, // Somua SAu 40
10049: { frag:1.39, dmg:697.03, spot:0.92, def:1.42, win:55.13 }, // S35 CA
11585: { frag:0.95, dmg:731.25, spot:0.65, def:1.00, win:50.75 }, // ARL V39
10817: { frag:0.90, dmg:989.07, spot:0.68, def:1.01, win:51.48 }, // AMX AC mle. 46
12097: { frag:0.96, dmg:1315.14, spot:0.79, def:0.95, win:50.00 }, // AMX AC mle. 48
11073: { frag:0.99, dmg:1650.32, spot:0.97, def:0.87, win:50.07 }, // AMX 50 Foch
13889: { frag:1.27, dmg:2346.05, spot:0.92, def:0.76, win:49.73 }, // AMX 50 Foch (155)
833: { frag:1.41, dmg:247.23, spot:0.15, def:2.18, win:55.88 }, // Renault FT 75 BS
3393: { frag:1.36, dmg:491.42, spot:0.15, def:2.05, win:54.84 }, // Lorraine 39L AM
14657: { frag:1.09, dmg:427.29, spot:0.12, def:1.58, win:54.04 }, // AMX 105 AM mle. 47
2113: { frag:1.40, dmg:703.54, spot:0.10, def:1.88, win:54.89 }, // 105 leFH18B2
4161: { frag:1.18, dmg:649.76, spot:0.10, def:2.30, win:52.34 }, // AMX 13 105 AM mle. 50
4673: { frag:1.12, dmg:1061.24, spot:0.08, def:1.69, win:52.13 }, // AMX 13 F3 AM
7233: { frag:0.95, dmg:1266.11, spot:0.06, def:1.36, win:50.45 }, // Lorraine 155 mle. 50
7489: { frag:0.98, dmg:1443.84, spot:0.06, def:1.14, win:50.11 }, // Lorraine 155 mle. 51
14401: { frag:0.95, dmg:1598.09, spot:0.05, def:1.04, win:49.62 }, // Bat.-Châtillon 155 55
11841: { frag:1.12, dmg:1887.05, spot:0.07, def:1.25, win:48.81 }, // Bat.-Châtillon 155 58
1329: { frag:1.92, dmg:252.45, spot:1.49, def:1.66, win:57.82 }, // Renault NC-31
2353: { frag:1.70, dmg:280.61, spot:1.52, def:1.41, win:59.70 }, // Vickers Mk. E Type B
4401: { frag:1.48, dmg:365.03, spot:1.36, def:1.37, win:59.50 }, // Type 2597 Chi-Ha
3121: { frag:0.95, dmg:346.57, spot:2.40, def:1.05, win:55.71 }, // M5A1 Stuart
4913: { frag:0.53, dmg:383.93, spot:2.71, def:0.51, win:52.00 }, // 59-16
305: { frag:0.58, dmg:616.27, spot:2.35, def:0.67, win:50.46 }, // Type 62
64817: { frag:0.62, dmg:528.91, spot:2.67, def:0.74, win:51.69 }, // Type 64
3377: { frag:0.59, dmg:645.60, spot:2.56, def:0.58, win:52.08 }, // WZ-131
3889: { frag:0.55, dmg:731.77, spot:2.74, def:0.58, win:50.72 }, // WZ-132
4657: { frag:1.10, dmg:511.81, spot:1.49, def:1.09, win:53.93 }, // Type T-34
5169: { frag:1.00, dmg:701.37, spot:1.60, def:0.97, win:53.07 }, // Type 58
1073: { frag:0.97, dmg:967.93, spot:1.57, def:0.97, win:54.07 }, // T-34-1
1585: { frag:0.82, dmg:1035.29, spot:1.66, def:0.88, win:50.43 }, // T-34-2
64049: { frag:0.89, dmg:1112.93, spot:1.50, def:0.75, win:49.60 }, // T-34-3
49: { frag:0.88, dmg:1056.54, spot:1.70, def:0.91, win:50.94 }, // Type 59
561: { frag:0.88, dmg:1056.54, spot:1.70, def:0.91, win:50.94 }, // Type 59 G
1841: { frag:0.90, dmg:1453.89, spot:1.51, def:0.69, win:50.42 }, // WZ-120
4145: { frag:0.93, dmg:1787.87, spot:1.41, def:0.68, win:48.20 }, // 121
3633: { frag:1.06, dmg:1134.25, spot:1.13, def:0.83, win:54.18 }, // IS-2
2865: { frag:0.91, dmg:1304.61, spot:1.15, def:0.80, win:52.40 }, // 110
64561: { frag:0.94, dmg:1278.38, spot:1.35, def:0.75, win:52.25 }, // 112
817: { frag:1.11, dmg:1431.77, spot:1.19, def:0.83, win:53.64 }, // WZ-111
2097: { frag:0.92, dmg:1657.16, spot:1.29, def:0.63, win:51.35 }, // WZ-111 model 1-4
5425: { frag:0.84, dmg:1771.13, spot:1.31, def:0.63, win:47.91 }, // 113
609: { frag:1.75, dmg:217.76, spot:1.31, def:1.88, win:58.33 }, // Renault Otsu
865: { frag:1.64, dmg:279.18, spot:1.71, def:1.26, win:58.94 }, // Type 95 Ha-Go
3169: { frag:1.51, dmg:265.35, spot:1.54, def:1.80, win:58.65 }, // Type 97 Te-Ke
2401: { frag:1.36, dmg:332.40, spot:1.80, def:1.35, win:59.48 }, // Type 98 Ke-Ni
51809: { frag:1.36, dmg:332.40, spot:1.80, def:1.35, win:59.48 }, // Type 98 Ke-Ni Otsu
2913: { frag:1.19, dmg:425.95, spot:1.84, def:1.32, win:57.71 }, // Type 5 Ke-Ho
353: { frag:1.51, dmg:249.89, spot:1.42, def:1.29, win:58.96 }, // Chi-Ni
2145: { frag:1.48, dmg:362.98, spot:1.31, def:1.33, win:58.57 }, // Type 97 Chi-Ha
1633: { frag:1.07, dmg:398.04, spot:1.27, def:1.09, win:55.72 }, // Type 1 Chi-He
1377: { frag:1.00, dmg:512.14, spot:1.23, def:1.06, win:54.07 }, // Type 3 Chi-Nu
51553: { frag:1.06, dmg:550.49, spot:1.08, def:1.19, win:53.90 }, // Type 3 Chi-Nu Kai
1889: { frag:1.03, dmg:761.32, spot:1.12, def:1.09, win:52.19 }, // Type 4 Chi-To
1121: { frag:0.95, dmg:950.98, spot:1.05, def:1.07, win:51.43 }, // Type 5 Chi-Ri
2657: { frag:0.89, dmg:1196.34, spot:1.34, def:1.05, win:51.48 }, // STA-1
52065: { frag:0.89, dmg:1196.34, spot:1.34, def:1.05, win:51.48 }, // STA-2
3425: { frag:0.96, dmg:1625.42, spot:1.31, def:0.82, win:50.60 }, // Type 61
3681: { frag:1.04, dmg:1968.87, spot:1.58, def:0.83, win:49.75 } // STB-1
};
// create global post variable
var postObj = {
cls: document.querySelectorAll(".post_wrap, .post_wrap__wg"),
ids: [],
num: []
},
s = {},
id, users, index;
// fetch userids and store all posts into one obj for later use
for (var t=0; t<postObj.cls.length; t++) {
id = postObj.cls[t].getElementsByClassName("ipsUserPhotoLink")[0].getAttribute('href').match(/\-(\d+)\//)[1];
if (!isNaN(id)) {
s[id] = {u:{},v:{frag:0,dmg:0,spot:0,def:0,win:0},wn8:""};
users = postObj.ids.length;
index = postObj.ids.indexOf(id);
if (index>-1) {
postObj.num[index][postObj.num[index].length] = t;
}
else {
postObj.ids[users] = id;
postObj.num[users] = [];
postObj.num[users][0] = t;
}
}
}
// request and retrieve statistics from API
if (postObj.ids.length > 0) {
sc.api.i = "http://api.worldoftanks."+sc.srv+"/wot/account/info/?application_id="+sc.api[sc.srv]+"&account_id="+postObj.ids.join(',');
sc.api.v = "http://api.worldoftanks."+sc.srv+"/wot/account/tanks/?application_id="+sc.api[sc.srv]+"&account_id="+postObj.ids.join(',');
reqHnd(sc.api.i, apiInfoHnd);
}
// processing information from player API
function apiInfoHnd(resp) {
for (var a in resp.data) {
if (resp.data.hasOwnProperty(a)) {
// store stats
s[resp.data[a].account_id].u = {
name: resp.data[a].nickname,
id: resp.data[a].account_id,
cid: resp.data[a].clan_id,
bat: resp.data[a].statistics.all.battles,
win: (resp.data[a].statistics.all.wins/resp.data[a].statistics.all.battles)*100,
dmg: resp.data[a].statistics.all.damage_dealt/resp.data[a].statistics.all.battles,
frag: resp.data[a].statistics.all.frags/resp.data[a].statistics.all.battles,
spot: resp.data[a].statistics.all.spotted/resp.data[a].statistics.all.battles,
def: resp.data[a].statistics.all.dropped_capture_points/resp.data[a].statistics.all.battles,
wgr: resp.data[a].global_rating,
lng: resp.data[a].client_language
};
}
}
reqHnd(sc.api.v, apiVehHnd);
}
// processing information from vehicle API and calculate WN8
function apiVehHnd(resp) {
for (var p in resp.data) {
if (resp.data.hasOwnProperty(p)) {
var rWin, rDmg, rFrag, rSpot, rDef;
if (s[p].u.bat > 0) {
for (var v in resp.data[p]) {
if (resp.data[p].hasOwnProperty(v)) {
s[p].v.frag += statObj[resp.data[p][v].tank_id].frag*resp.data[p][v].statistics.battles;
s[p].v.dmg += statObj[resp.data[p][v].tank_id].dmg *resp.data[p][v].statistics.battles;
s[p].v.spot += statObj[resp.data[p][v].tank_id].spot*resp.data[p][v].statistics.battles;
s[p].v.def += statObj[resp.data[p][v].tank_id].def *resp.data[p][v].statistics.battles;
s[p].v.win += statObj[resp.data[p][v].tank_id].win *resp.data[p][v].statistics.battles;
}
}
rWin = Math.max(((s[p].u.win /(s[p].v.win /s[p].u.bat)-0.71)/(1-0.71)),0);
rDmg = Math.max(((s[p].u.dmg /(s[p].v.dmg /s[p].u.bat)-0.22)/(1-0.22)),0);
rFrag = Math.max(Math.min(rDmg+0.2,((s[p].u.frag/(s[p].v.frag/s[p].u.bat)-0.12)/(1-0.12))),0);
rSpot = Math.max(Math.min(rDmg+0.1,((s[p].u.spot/(s[p].v.spot/s[p].u.bat)-0.38)/(1-0.38))),0);
rDef = Math.max(Math.min(rDmg+0.1,((s[p].u.def /(s[p].v.def /s[p].u.bat)-0.10)/(1-0.10))),0);
s[p].wn8 = colStat(980*rDmg + 210*rDmg*rFrag + 155*rFrag*rSpot + 75*rDef*rFrag + 145*Math.min(1.8,rWin),"wn8",0);
}
else {
s[p].wn8 = colStat(0,"wn8",0);
}
}
}
statInsert();
}
// insert stats and links to every post
function statInsert() {
for (var y in s) {
if (s.hasOwnProperty(y)) {
var iPost = postObj.ids.indexOf(y),
userStats = [
"<td>"+loc.f01+"</td><td>"+colStat((s[y].u.bat > 0) ? s[y].u.win : 0,"wr",2,"%")+"</td>",
"<td>"+loc.f02+"</td><td>"+colStat(s[y].u.bat,"bat",0,"")+"</td>",
"<td>"+loc.f03+"</td><td>"+colStat(s[y].u.wgr,"pr",0,"")+"</td>",
"<td>"+loc.f04+"</td><td>"+s[y].wn8+"</td>"
],
userLinks = [
[
["<a target='_blank' href='http://worldoftanks."+sc.srv+"/community/accounts/named/"+s[y].u.name+"'>Player Profile</a>"],
[srv.ws, "<a target='_blank' href='http://wotstats.org/stats/"+srv.ws+"/"+s[y].u.name+"/'>WoTstats</a>"]
],
[
[srv.wl, "<a target='_blank' href='http://wotlabs.net/"+srv.wl+"/player/"+s[y].u.name+"'>WoTLabs</a>"],
[srv.cs, "<a target='_blank' href='http://wotcs.com/player.php?wid="+s[y].u.id+"'>WoT-CS</a>"]
],
[
[srv.nm, "<a target='_blank' href='http://noobmeter.com/player/"+srv.nm+"/"+s[y].u.name+"'>Noobmeter</a>"],
[srv.wr, "<a target='_blank' href='http://wotreplays."+srv.wr+"/player/"+s[y].u.name+"'>WoTReplays</a>"]
],
[
[srv.wn, "<a target='_blank' href='http://wot-news.com/stat/pstat/"+srv.wn+"/"+s[y].u.name+"/'>Wot-news</a>"],
(sc.srv=="ru") ? [srv.wr, "<a target='_blank' href='http://wots.com.ua/user/stats/"+s[y].u.name+"'>WoTS.com.ua</a>"] : [srv.wlife, "<a target='_blank' href='http://en.wot-life.com/"+srv.wlife+"/player/"+s[y].u.name+"/'>WoT-Life</a>"]
]
];
if (iPost >- 1) {
for (var i=0; i<postObj.num[iPost].length; i++) {
var groupTitle = postObj.cls[postObj.num[iPost][i]].getElementsByClassName("group_title")[0],
basicInfo = postObj.cls[postObj.num[iPost][i]].getElementsByClassName("basic_info")[0],
infoClass = postObj.cls[postObj.num[iPost][i]].getElementsByClassName("author_info")[0],
statTable = elem("table", "t-table-stats", ""),
urlTable = elem("table", "t-tables-links", "<tbody></tbody>"),
flag = elem("img", "i-xvm-lang", "", "", "https://bytebucket.org/seriych/worldoftanksforumextendedstat.user.js/raw/tip/data/img/lang/"+s[y].u.lng+".png");
flag.title = s[y].u.lng.toUpperCase()+" "+loc.f00;
for (var sr=0; sr<userStats.length; ++sr) {
statTable.appendChild(elem("tr", "", userStats[sr]));
}
for (var l=0; l<userLinks.length; ++l) {
var uRow = elem("tr", "", "");
for (var lr=0; lr<userLinks[l].length; ++lr) {
uRow.appendChild(userLinks[l][lr][0] && userLinks[l][lr][1] ? elem("td", "", userLinks[l][lr][1]) : elem("td", "", userLinks[l][lr][0]));
}
urlTable.firstElementChild.appendChild(uRow);
}
if (sc.srv !== "ru") {
groupTitle.appendChild(flag);
}
basicInfo.insertBefore(statTable, basicInfo.lastElementChild);
infoClass.appendChild(urlTable);
}
}
}
}
}
// request handler
function reqHnd(url, handler) {
GM_xmlhttpRequest({
method: "GET",
url: url,
onload: function(resp) {
handler(JSON.parse(resp.responseText));
}
});
}
// colouring
function colStat(input, type, dec, sym) {
var color = colArr.dft[0],
output = input.toFixed(dec);
if (sym) {
output += sym;
}
if (input >= 1000) {
output = input.toFixed(dec).toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1"+sc.sym);
}
for (var c in colArr) {
if (colArr.hasOwnProperty(c)) {
if (input >= colArr[c][colArr.id[type]]) {
color = colArr[c][0]; break;
}
}
}
return "<font color='"+color+"'>"+output+"</font>";
}
// quick creation of element
function elem(tag, name, html, type, src) {
var element = document.createElement(tag);
if (name) {element.className = name;}
if (html) {element.innerHTML = html;}
if (type) {element.type = type;}
if (src) {element.src = src;}
return element;
}
}());