Updated the Russian Lend-Lease vehicles.

master
Pacman Ghost 5 years ago
parent 914e65ed3b
commit 62f30bb40e
  1. BIN
      chapter-h/chapter-h-placeholders.zip
  2. 4
      vasl_templates/tools/make_chapter_h_placeholders.py
  3. 12
      vasl_templates/tools/tests/fixtures/chapter-h-placeholders.txt
  4. 95
      vasl_templates/webapp/data/vehicles/russian.json
  5. 167
      vasl_templates/webapp/data/vehicles/russian.lend-lease.json
  6. 63
      vasl_templates/webapp/static/snippets.js
  7. 14
      vasl_templates/webapp/static/vo.js
  8. 3
      vasl_templates/webapp/templates/vo-notes-report.html
  9. 17
      vasl_templates/webapp/tests/fixtures/vasl-pieces.txt
  10. 223
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1940.txt
  11. 223
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1941.txt
  12. 223
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1942.txt
  13. 223
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1943.txt
  14. 223
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1944.txt
  15. 223
      vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1945.txt
  16. 9
      vasl_templates/webapp/vasl_mod.py
  17. 95
      vasl_templates/webapp/vo.py

@ -51,6 +51,10 @@ def make_chapter_h_placeholders( output_fname, log=None \
fname = os.path.join( root, fname )
if os.path.splitext( fname )[1] != ".json":
continue
if os.path.splitext( fname )[0].endswith( ".lend-lease" ):
# NOTE: Doing this means we will miss any pieces explicitly defined in a lend-lease file
# (instead of being copied from an existing piece), but we can live with that... :-/
continue
dname2, fname2 = os.path.split( fname )
nat = os.path.splitext( fname2 )[0]
if nat == "common":

@ -1213,17 +1213,8 @@ russian/vehicles/44.png
russian/vehicles/45.png
russian/vehicles/46.png
russian/vehicles/47.png
russian/vehicles/48.png
russian/vehicles/49.png
russian/vehicles/5.png
russian/vehicles/50.png
russian/vehicles/51.png
russian/vehicles/52.png
russian/vehicles/53.png
russian/vehicles/54.png
russian/vehicles/59.png
russian/vehicles/6.png
russian/vehicles/60.png
russian/vehicles/7.png
russian/vehicles/8.png
russian/vehicles/9.png
@ -1258,13 +1249,10 @@ russian/vehicles/i.html
russian/vehicles/j.html
russian/vehicles/k.html
russian/vehicles/l.html
russian/vehicles/ll.html
russian/vehicles/m.html
russian/vehicles/n.html
russian/vehicles/o.html
russian/vehicles/p.html
russian/vehicles/q.html
russian/vehicles/r.html
russian/vehicles/s.html
russian/vehicles/t.html
slovakian/ordnance/28.png

@ -644,101 +644,6 @@
"notes": [ "S\u2020<sup>1</sup>" ],
"id": "ru/v:073",
"gpid": 7089
},
{ "name": "Stuart III(a)",
"type": "LT",
"CS#": 4,
"capabilities2": { "C": 6 },
"note_number": "48",
"notes": [ "N", "O", "LL" ],
"id": "ru/v:074",
"gpid": [ 6362, 6364 ]
},
{ "name": "Lee(a)",
"type": "MT",
"CS#": 7,
"capabilities2": { "C": "4\u2020", "s": "8\u2020" },
"note_number": "49\u2020",
"notes": [ "B\u2020<sup>1</sup>", "N", "O", "LL" ],
"id": "ru/v:075",
"gpid": [ 704, 706, 7423 ]
},
{ "name": "Sherman III(a)",
"type": "MT",
"CS#": "5:brewup",
"capabilities2": { "s": 8, "WP": [ [6,"J4+"], "\u2020" ] },
"note_number": "50\u2020",
"notes": [ "N", "O", "R\u2020<sup>1</sup>", "LL" ],
"id": "ru/v:076",
"gpid": [ 708, 710, 7091 ]
},
{ "name": "Sherman III(L)(a)",
"type": "MT",
"CS#": "6:brewup",
"capabilities2": { "s": 5, "WP": 7, "sM": 8 },
"note_number": "50.1",
"notes": [ "N", "O", "R\u2020", "LL" ],
"id": "ru/v:077",
"gpid": [ 712, 714 ]
},
{ "name": "Matilda II(b)",
"type": "HT",
"CS#": 5,
"capabilities2": { "sD": 6 },
"note_number": "51\u2020",
"notes": [ "M\u2020<sup>1</sup>", "N", "LL" ],
"id": "ru/v:078",
"gpid": null
},
{ "name": "Valentine V(b)",
"type": "HT",
"CS#": 4,
"capabilities2": { "sM": 8 },
"note_number": "52.1",
"notes": [ "N", "LL" ],
"id": "ru/v:079",
"gpid": null
},
{ "name": "Valentine VIII(b)",
"type": "HT",
"CS#": 4,
"capabilities2": { "HE": 7, "sD": 6 },
"note_number": "52.2",
"notes": [ "N", "LL" ],
"id": "ru/v:080",
"gpid": null
},
{ "name": "Churchill III(b)",
"type": "HT",
"CS#": 7,
"capabilities2": { "D": [ [6,"J4"], [7,5], "\u2020" ], "HE": [ [7,"F3"], [8,"4+"], "\u2020" ], "sD": [ [6,"4+"] ], "sM": "8\u2020" },
"note_number": "53\u2020",
"notes": [ "N", "LL" ],
"id": "ru/v:081",
"gpid": null
},
{ "name": "M3A1 Scout Car(a)",
"type": "APC",
"CS#": 4,
"note_number": "54\u2020",
"notes": [ "N", "LL" ],
"id": "ru/v:082",
"gpid": null
},
{ "name": "Jeep GPA(a)",
"type": "atr",
"cs#": 2,
"note_number": "59",
"notes": [ "H\u2020", "L\u2020<sup>1</sup>" ],
"id": "ru/v:083",
"gpid": 7119
},
{ "name": "DUKW(a)",
"type": "atr",
"cs#": 7,
"note_number": "60\u2020",
"id": "ru/v:084",
"gpid": 7120
}
]

@ -0,0 +1,167 @@
[
{ "name": "Stuart III(a)",
"type": "LT",
"CS#": 4,
"capabilities2": { "C": 6 },
"note_number": "48",
"notes": [ "N", "O", "LL" ],
"id": "ru/v:074",
"gpid": [ 6364 ],
"_comment_": "VASL also has GPID 6362 (British), but it has extra capabilities."
},
{ "name": "Lee(a)",
"type": "MT",
"CS#": 7,
"capabilities2": { "C": "4\u2020", "s": "8\u2020" },
"note_number": "49\u2020",
"notes": [ "B\u2020<sup>1</sup>", "N", "O", "LL" ],
"id": "ru/v:075",
"gpid": [ 704, 7423 ],
"_comment_": "VASL has 2 other GPID's, with different capabilities."
},
{ "name": "Sherman III(a)",
"type": "MT",
"CS#": "5:brewup",
"capabilities2": { "s": 8, "WP": [ [6,"J4+"], "\u2020" ] },
"note_number": "50\u2020",
"notes": [ "N", "O", "R\u2020<sup>1</sup>", "LL" ],
"id": "ru/v:076",
"gpid": [ 708, 710, 7091 ],
"_comment_": "VASL also has sD6 (wrong?) and Red TH #'s[< 44] (why?) for all 3 variants."
},
{ "name": "Sherman III(L)(a)",
"type": "MT",
"CS#": "6:brewup",
"capabilities2": { "s": 5, "WP": 7, "sM": 8 },
"note_number": "50.1",
"notes": [ "N", "O", "R\u2020", "LL" ],
"id": "ru/v:077",
"gpid": [ 712, 7093 ]
},
{ "name": "Matilda II(b)",
"type": "HT",
"CS#": 5,
"capabilities2": { "sD": 6 },
"note_number": "51\u2020",
"notes": [ "M\u2020<sup>1</sup>", "N", "LL" ],
"id": "ru/v:078",
"gpid": null,
"_comment_": "VASL has a Russian variant with CS 4."
},
{ "id": "ru/v:085",
"copy_from": "br/v:041",
"name": "Valentine II(b)",
"note_number": "52",
"extra_notes": [ "LL" ],
"gpid": [ 724 ]
},
{ "id": "ru/v:079",
"copy_from": "br/v:042",
"name": "Valentine V(b)",
"note_number": "52\u2020",
"extra_notes": [ "LL" ],
"gpid": [ 726, 728, 7432, 7434 ]
},
{ "id": "ru/v:080",
"copy_from": "br/v:043",
"name": "Valentine VIII(b)",
"note_number": "52\u2020",
"extra_notes": [ "LL" ],
"gpid": [ 730, 7111 ]
},
{ "name": "Churchill III(b)",
"type": "HT",
"CS#": 7,
"capabilities2": { "D": [ [6,"J4"], [7,5], "\u2020" ], "HE": [ [7,"F3"], [8,"4+"], "\u2020" ], "sD": [ [6,"4+"] ], "sM": "8\u2020" },
"note_number": "53\u2020",
"notes": [ "N", "LL" ],
"id": "ru/v:081",
"gpid": [ 732, 7115 ]
},
{ "id": "ru/v:082",
"copy_from": "am/v:041",
"name": "M3A1 Scout Car(a)",
"note_number": "54",
"extra_notes": [ "LL" ],
"gpid": [ 7426, 7428 ]
},
{ "id": "ru/v:086",
"copy_from": "br/v:090",
"note_number": "55",
"extra_notes": [ "LL" ]
},
{ "id": "ru/v:087",
"copy_from": "br/v:091",
"note_number": "55",
"extra_notes": [ "LL" ]
},
{ "id": "ru/v:088",
"copy_from": "br/v:087",
"note_number": "56",
"extra_notes": [ "LL" ]
},
{ "id": "ru/v:089",
"copy_from": "br/v:094",
"note_number": "57",
"extra_notes": [ "LL" ]
},
{ "id": "ru/v:090",
"copy_from": "br/v:095",
"note_number": "57",
"extra_notes": [ "LL" ]
},
{ "id": "ru/v:091",
"copy_from": "br/v:096",
"note_number": "57",
"extra_notes": [ "LL" ]
},
{ "id": "ru/v:092",
"copy_from": "br/v:097",
"note_number": "57",
"extra_notes": [ "LL" ]
},
{ "id": "ru/v:093",
"copy_from": "br/v:098",
"note_number": "57",
"extra_notes": [ "LL" ]
},
{ "name": "Jeep(a)",
"type": "atr",
"cs#": 2,
"note_number": "58",
"notes": [ "H\u2020", "L\u2020<sup>1</sup>", "LL" ],
"id": "ru/v:083",
"gpid": [ 758, 759, 7119 ]
},
{ "id": "ru/v:094",
"copy_from": "br/v:123",
"note_number": "Br 85",
"extra_notes": [ "LL" ]
},
{ "id": "ru/v:095",
"copy_from": "br/v:124",
"note_number": "Br 85",
"extra_notes": [ "LL" ]
},
{ "id": "ru/v:096",
"copy_from": "br/v:125",
"note_number": "Br 85",
"extra_notes": [ "LL" ]
},
{ "id": "ru/v:097",
"copy_from": "br/v:126",
"note_number": "Br 85",
"extra_notes": [ "LL" ]
},
{ "id": "ru/v:084",
"copy_from": "am/v:056",
"note_number": "US 52\u2020",
"extra_notes": [ "LL" ],
"gpid": 7120
}
]

@ -16,7 +16,8 @@ var _DAY_OF_MONTH_POSTFIXES = { // nb: we assume English :-/
// NOTE: Blood & Jungle has a lot of multi-applicable notes that simply refer to other
// multi-applicable notes e.g. "Fr C" = "French Multi-Applicable Note C".
var BFP_MA_NOTE_REDIRECTS = {
// NOTE: These are also used for Lend-Lease vehicles.
var MA_NOTE_REDIRECTS = {
"Br": "british",
"Ch": "chinese",
"Fr": "french",
@ -28,6 +29,12 @@ var BFP_MA_NOTE_REDIRECTS = {
"AxM": "axis-minor",
} ;
// NOTE: There are BFP references like "Jp 5", but we ignore these since they are referring to
// a vehicle/ordnance *note*, not a multi-applicable note.
MA_NOTE_REDIRECT_REGEX = new RegExp(
"^((Br|Ch|Fr|Ge|Jp|Ru|US|AllM|AxM) [A-Z]{1,2})(\\u2020(<sup>\\d</sup>)?|<sup>T</sup>)?$"
) ;
var gDefaultScenario = null ;
var gLastSavedScenario = null ;
var gLastSavedScenarioFilename = null ;
@ -384,22 +391,38 @@ function get_vo_note_key( vo_entry )
// get the note number for the specified vehicle/ordnance
if ( ! vo_entry.note_number )
return null ;
// nb: there are some note numbers of the form "1.2" :-/
var match = vo_entry.note_number.match( new RegExp( "^([0-9.]+)" ) ) ;
// NOTE: There are some note numbers of the form "1.2" :-/ We also need to handle redirects.
var match = vo_entry.note_number.match( new RegExp( "^((Br|US) )?([0-9]+(.\\d)?)" ) ) ;
if ( ! match )
return null ;
var key = match[1] ;
var key = match[0] ;
if ( vo_entry.extn_id )
key = vo_entry.extn_id + ":" + key ;
return key ;
}
function is_known_vo_note_key( vo_type, nat, key )
function make_vo_note_key_url( vo_type, nat, key )
{
if ( ! key )
return null ;
// check for redirects
var match = key.match( /^(Br|US) (.+)$/ ) ;
if ( match ) {
nat = MA_NOTE_REDIRECTS[ match[1] ] ;
key = match[2] ;
}
// check if the vehicle/ordnance note key is known to us
return vo_type in gVehicleOrdnanceNotes &&
nat in gVehicleOrdnanceNotes[ vo_type ] &&
key in gVehicleOrdnanceNotes[ vo_type ][ nat ] ;
if ( !( vo_type in gVehicleOrdnanceNotes ) )
return null ;
if ( !( nat in gVehicleOrdnanceNotes[ vo_type ] ) )
return null ;
if ( !( key in gVehicleOrdnanceNotes[ vo_type ][ nat ] ) )
return null ;
// generate the URL
return APP_URL_BASE + "/" + vo_type + "/" + nat + "/note/" + key ;
}
function get_ma_notes_keys( nat, vo_entries, vo_type )
@ -419,9 +442,7 @@ function get_ma_notes_keys( nat, vo_entries, vo_type )
new RegExp( "^([A-Z][a-z])$" ),
new RegExp( "^([A-Za-z])<sup>" ),
new RegExp( "^<s>([A-Za-z])</s>$" ),
// NOTE: There are BFP references like "Jp 5", but we ignore these since they are referring to
// a vehicle/ordnance *note*, not a multi-applicable note.
new RegExp( "^((Br|Ch|Fr|Ge|Jp|Ru|US|AllM|AxM) [A-Z]{1,2})(\\u2020(<sup>\\d</sup>)?)?$" ),
MA_NOTE_REDIRECT_REGEX,
] ;
var EXTRA_NOTES_INFO = {
"sh/v": [ "landing-craft", "Landing Craft" ],
@ -484,7 +505,7 @@ function get_ma_notes_keys( nat, vo_entries, vo_type )
if ( pos > 0 ) {
var val = keys0[i].substr( pos+1 ) ;
pos = val.indexOf( " " ) ;
if ( BFP_MA_NOTE_REDIRECTS[ val.substr(0,pos) ] == nat && val.substr(pos+1) in std_keys )
if ( MA_NOTE_REDIRECTS[ val.substr(0,pos) ] == nat && val.substr(pos+1) in std_keys )
continue ;
}
keys0a.push( keys0[i] ) ;
@ -545,11 +566,17 @@ function get_ma_note( nat, vo_type, key )
{
var ma_notes ;
function redirect_ma_note( target, vo_type ) {
pos = target.indexOf( " " ) ;
var nat_redirect = BFP_MA_NOTE_REDIRECTS[ target.substring( 0, pos ) ] ;
if ( nat_redirect ) {
ma_notes = get_ma_notes_for_nat( nat_redirect, vo_type ) ;
return ma_notes[ target.substring( pos+1 ) ] ;
// extract the multi-applicable note ID
var match = target.match( MA_NOTE_REDIRECT_REGEX ) ;
if ( match ) {
// check if it's a valid redirect
pos = match[0].indexOf( " " ) ;
var nat_redirect = MA_NOTE_REDIRECTS[ match[0].substring( 0, pos ) ] ;
if ( nat_redirect ) {
// yup - get the referenced multi-applicable note
ma_notes = get_ma_notes_for_nat( nat_redirect, vo_type ) ;
return ma_notes[ match[0].substring( pos+1 ) ] ;
}
}
return null ;
}
@ -559,6 +586,8 @@ function get_ma_note( nat, vo_type, key )
var pos = key.indexOf( ":" ) ;
if ( pos !== -1 )
ma_note = redirect_ma_note( key.substring(pos+1), vo_type ) ;
else
ma_note = redirect_ma_note( key, vo_type ) ;
if ( ! ma_note ) {
// look for a normal note

@ -165,20 +165,17 @@ function do_add_vo( vo_type, player_no, vo_entry, vo_image_id, elite, custom_cap
"</div>"
] ;
var vo_note_key = get_vo_note_key( vo_entry ) ;
var vo_nat ;
if ( is_known_vo_note_key( vo_type, nat, vo_note_key ) )
vo_nat = nat ;
else {
var vo_note_url = make_vo_note_key_url( vo_type, nat, vo_note_key ) ;
if ( ! vo_note_url ) {
// NOTE: Note numbers seem to be distinct across all Allied Minor or all Axis Minor vehicles/ordnance,
// so if we don't find a note in a given nationality's normal vehicles/ordnance, we can get away with
// just checking their corresponding common vehicles/ordnance.
var nat_type = gTemplatePack.nationalities[ nat ].type ;
if ( ["allied-minor","axis-minor"].indexOf( nat_type ) !== -1 ) {
if ( is_known_vo_note_key( vo_type, nat_type, vo_note_key ) )
vo_nat = nat_type ;
vo_note_url = make_vo_note_key_url( vo_type, nat_type, vo_note_key ) ;
}
}
if ( vo_nat ) {
if ( vo_note_url ) {
var template_id = (vo_type === "vehicles") ? "ob_vehicle_note" : "ob_ordnance_note" ;
if ( is_template_available( template_id ) ) {
buf.push(
@ -186,8 +183,7 @@ function do_add_vo( vo_type, player_no, vo_entry, vo_image_id, elite, custom_cap
" class='snippet' data-id='" + template_id + "' title='" + GENERATE_SNIPPET_HINT + "'>"
) ;
}
var url = APP_URL_BASE + "/" + vo_type + "/" + vo_nat + "/note/" ;
data.vo_note_url = url + vo_note_key ;
data.vo_note_url = vo_note_url ;
}
buf.push( "</div>" ) ;
var $content = $( buf.join("") ) ;

@ -2,6 +2,7 @@
<html lang="en">
<script>
APP_URL_BASE = window.location.origin ;
var nat = "{{NATIONALITY}}" ;
var vo_type = "{{VO_TYPE}}" ;
var gTemplatePack = {} ;
@ -180,7 +181,7 @@ function load_vo_notes( vo_entries )
buf.push( "<td class='vo-note-raw'>", vo_entry.note_number) ;
var vo_note_key = get_vo_note_key( vo_entry ) ;
if ( vo_note_key ) {
if ( ! is_known_vo_note_key( vo_type, nat, vo_note_key ) )
if ( ! make_vo_note_key_url( vo_type, nat, vo_note_key ) )
vo_note_key += " (missing)" ;
}
buf.push( "<td class='vo-note'>", vo_note_key ) ;

@ -115,11 +115,16 @@
696 ZIS-5 ru/veh/ZIS5
698 IAG-6 ru/veh/IAG6
704 Lee(a) br/vehicles/lee
706 Lee(a) br/vehicles/lee2
708 Sherman III(a) br/vehicles/sheriiia
710 Sherman III(a) br/vehicles/sheriiia2
712 Sherman III(L)(a) ru/veh/sheriiila
714 Sherman III(L)(a) ru/veh/sheriiila2
724 Valentine II br/vehicles/valii
726 Valentine V br/vehicles/valv
728 Valentine V br/vehicles/valv2
730 Valentine VIII br/vehicles/valviii
732 Churchill III br/vehicles/churiv
758 Jeep(a) br/vehicles/jeep
759 Jeep(a) MMG br/vehicles/jeep2
849 60* MTR M2 am/amMTR am/amMTRb
850 60* MTR M19 am/amMTRa am/amMTRab
879 81* MTR M1 am/gun/amMTR81s am/gun/amMTR81sb
@ -1105,7 +1110,6 @@
5854 20L AA 20/65 ch/gun/chAA20LC2 ch/gun/chAA20LCb
5855 75L AA Bofors M29 ch/gun/chAA75L2 ch/gun/chAA75Lb
5856 88L AA FlaK 18 ch/gun/chAA88L2 ch/gun/chAA88Lb
6362 Stuart III(a) br/vehicles/stuiiia
6364 Stuart III(a) ru/veh/ruM3A1.gif
6730 47 MTR fi/fi47mtr.png fi/fi47mtrB.png
6765 81* MTR Krh/32 fi81mmMTR.png fi/gun/fi81mmMTRB.png
@ -1192,6 +1196,9 @@
7085 NKL-26 ru/veh/ruNKL-26.png
7089 RF-8-GAZ-98 ru/veh/ruRF8GAZ98.png
7091 Sherman III(a) ru/veh/ruShermanIII.png
7093 Sherman III(L) (a) ru/veh/ruShermanIIIL.png
7111 Valentine VIII ru/veh/ruValentineVIII.png
7115 Churchill III ru/veh/ruChurchilIII.png
7119 Jeep GPA(a) ru/veh/ruJeep GPA.png
7120 DUKW (a) ru/veh/ruDUKW.png
7124 FT-17 730m(f) ge/veh/geFT-17 CMG.png
@ -1203,3 +1210,7 @@
7418 T-28 M34(L) T28M34L.gif
7420 T-28E M40(L) T28EM40L.gif
7423 Lee(a) Lee(a)RU.gif
7426 M3A1 SC(a) ru/veh/ruM3A1 SC.png
7428 M3A1 SC(a) ruM3A1 SC UA.gif
7432 Valentine V RU VALVnoaa.gif
7434 Valentine V RU VALV.gif

@ -1,107 +1,120 @@
=== vehicles/russian/1940 ===
Name Capabilities (effective) # Notes Comments
----------------- ------------------------------------------- ----------------------- ------ -------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 CS 6 23 D M
KV-1 M42 A4[2] CS 6 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54† N LL
Jeep GPA(a) cs 2 cs 2 59 H† L†<sup>1</sup>
DUKW(a) cs 7 cs 7 60† n/a
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>
Name Capabilities (effective) # Notes Comments
-------------------- ------------------------------------------- ----------------------- ------ --------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 CS 6 23 D M
KV-1 M42 A4[2] CS 6 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine II(b) sM8 CS 4 sM8 CS 4 52 Br N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52† Br K†<sup>1</sup> Br N<sup>T</sup> LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52† Br N<sup>T</sup> LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54 US E† US H US I† US N LL
M5(a) cs 5†[1] cs 5†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M9(a) cs 4†[1] cs 4†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M17 MGMC(a) CS 4 CS 4 56 Br A Br F† Br AA†<sup>1</sup> LL
Carrier A sD5[4+]†[1] CS 3 CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier B sD5[4+]†[2] CS 3 CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier C sD5[4+]†[1] CS 3 CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier, MMG A sD5[4+]†[2] CS 3 CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier, MMG B sD5[4+]†[2] CS 4 CS 4 57 Br U†<sup>2</sup> Br BB†<sup>1</sup> LL
Jeep(a) cs 2 cs 2 58 H† L†<sup>1</sup> LL
&#190;-Ton Truck(a) cs 4 cs 4 Br 85 Br A Br N LL
1&#189;-Ton Truck(a) cs 6 cs 6 Br 85 Br A Br N LL
2&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
7&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
DUKW cs 7†[1] cs 7†[1] US 52† US D†<sup>3</sup> US O†<sup>2</sup> US CC†<sup>1</sup> LL
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>

@ -1,107 +1,120 @@
=== vehicles/russian/1941 ===
Name Capabilities (effective) # Notes Comments
----------------- ------------------------------------------- ----------------------- ------ -------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 CS 6 23 D M
KV-1 M42 A4[2] CS 6 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54† N LL
Jeep GPA(a) cs 2 cs 2 59 H† L†<sup>1</sup>
DUKW(a) cs 7 cs 7 60† n/a
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>
Name Capabilities (effective) # Notes Comments
-------------------- ------------------------------------------- ----------------------- ------ --------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 CS 6 23 D M
KV-1 M42 A4[2] CS 6 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine II(b) sM8 CS 4 sM8 CS 4 52 Br N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52† Br K†<sup>1</sup> Br N<sup>T</sup> LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52† Br N<sup>T</sup> LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54 US E† US H US I† US N LL
M5(a) cs 5†[1] cs 5†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M9(a) cs 4†[1] cs 4†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M17 MGMC(a) CS 4 CS 4 56 Br A Br F† Br AA†<sup>1</sup> LL
Carrier A sD5[4+]†[1] CS 3 CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier B sD5[4+]†[2] CS 3 CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier C sD5[4+]†[1] CS 3 CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier, MMG A sD5[4+]†[2] CS 3 CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier, MMG B sD5[4+]†[2] CS 4 CS 4 57 Br U†<sup>2</sup> Br BB†<sup>1</sup> LL
Jeep(a) cs 2 cs 2 58 H† L†<sup>1</sup> LL
&#190;-Ton Truck(a) cs 4 cs 4 Br 85 Br A Br N LL
1&#189;-Ton Truck(a) cs 6 cs 6 Br 85 Br A Br N LL
2&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
7&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
DUKW cs 7†[1] cs 7†[1] US 52† US D†<sup>3</sup> US O†<sup>2</sup> US CC†<sup>1</sup> LL
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>

@ -1,107 +1,120 @@
=== vehicles/russian/1942 ===
Name Capabilities (effective) # Notes Comments
----------------- ------------------------------------------- ----------------------- ------ -------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 A4 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54† N LL
Jeep GPA(a) cs 2 cs 2 59 H† L†<sup>1</sup>
DUKW(a) cs 7 cs 7 60† n/a
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® A4 C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>
Name Capabilities (effective) # Notes Comments
-------------------- ------------------------------------------- ----------------------- ------ --------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 A4 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine II(b) sM8 CS 4 sM8 CS 4 52 Br N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52† Br K†<sup>1</sup> Br N<sup>T</sup> LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52† Br N<sup>T</sup> LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54 US E† US H US I† US N LL
M5(a) cs 5†[1] cs 5†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M9(a) cs 4†[1] cs 4†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M17 MGMC(a) CS 4 CS 4 56 Br A Br F† Br AA†<sup>1</sup> LL
Carrier A sD5[4+]†[1] CS 3 CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier B sD5[4+]†[2] CS 3 CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier C sD5[4+]†[1] CS 3 CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier, MMG A sD5[4+]†[2] CS 3 CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier, MMG B sD5[4+]†[2] CS 4 CS 4 57 Br U†<sup>2</sup> Br BB†<sup>1</sup> LL
Jeep(a) cs 2 cs 2 58 H† L†<sup>1</sup> LL
&#190;-Ton Truck(a) cs 4 cs 4 Br 85 Br A Br N LL
1&#189;-Ton Truck(a) cs 6 cs 6 Br 85 Br A Br N LL
2&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
7&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
DUKW cs 7†[1] cs 7†[1] US 52† US D†<sup>3</sup> US O†<sup>2</sup> US CC†<sup>1</sup> LL
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® A4 C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>

@ -1,107 +1,120 @@
=== vehicles/russian/1943 ===
Name Capabilities (effective) # Notes Comments
----------------- ------------------------------------------- ----------------------- ------ -------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 A4 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 A4 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] A5 CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 A5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 A5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 A5 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54† N LL
Jeep GPA(a) cs 2 cs 2 59 H† L†<sup>1</sup>
DUKW(a) cs 7 cs 7 60† n/a
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® A5 C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>
Name Capabilities (effective) # Notes Comments
-------------------- ------------------------------------------- ----------------------- ------ --------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 A4 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 A4 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] A5 CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 A5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 A5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 A5 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine II(b) sM8 CS 4 sM8 CS 4 52 Br N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52† Br K†<sup>1</sup> Br N<sup>T</sup> LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52† Br N<sup>T</sup> LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54 US E† US H US I† US N LL
M5(a) cs 5†[1] cs 5†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M9(a) cs 4†[1] cs 4†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M17 MGMC(a) CS 4 CS 4 56 Br A Br F† Br AA†<sup>1</sup> LL
Carrier A sD5[4+]†[1] CS 3 CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier B sD5[4+]†[2] CS 3 CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier C sD5[4+]†[1] CS 3 CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier, MMG A sD5[4+]†[2] CS 3 CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier, MMG B sD5[4+]†[2] CS 4 CS 4 57 Br U†<sup>2</sup> Br BB†<sup>1</sup> LL
Jeep(a) cs 2 cs 2 58 H† L†<sup>1</sup> LL
&#190;-Ton Truck(a) cs 4 cs 4 Br 85 Br A Br N LL
1&#189;-Ton Truck(a) cs 6 cs 6 Br 85 Br A Br N LL
2&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
7&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
DUKW cs 7†[1] cs 7†[1] US 52† US D†<sup>3</sup> US O†<sup>2</sup> US CC†<sup>1</sup> LL
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® A5 C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>

@ -1,107 +1,120 @@
=== vehicles/russian/1944 ===
Name Capabilities (effective) # Notes Comments
----------------- ------------------------------------------- ----------------------- ------ -------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 A5 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 A3 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 A4 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 A5 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] A5 CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 A5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 A5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 A5 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 HE8† sD6 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54† N LL
Jeep GPA(a) cs 2 cs 2 59 H† L†<sup>1</sup>
DUKW(a) cs 7 cs 7 60† n/a
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® A5 C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>
Name Capabilities (effective) # Notes Comments
-------------------- ------------------------------------------- ----------------------- ------ --------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 A5 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 A3 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 A4 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 A5 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] A5 CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 A5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 A5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 A5 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine II(b) sM8 CS 4 sM8 CS 4 52 Br N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52† Br K†<sup>1</sup> Br N<sup>T</sup> LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52† Br N<sup>T</sup> LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 HE8† sD6 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54 US E† US H US I† US N LL
M5(a) cs 5†[1] cs 5†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M9(a) cs 4†[1] cs 4†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M17 MGMC(a) CS 4 CS 4 56 Br A Br F† Br AA†<sup>1</sup> LL
Carrier A sD5[4+]†[1] CS 3 sD5†[1] CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier B sD5[4+]†[2] CS 3 sD5†[2] CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier C sD5[4+]†[1] CS 3 sD5†[1] CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier, MMG A sD5[4+]†[2] CS 3 sD5†[2] CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier, MMG B sD5[4+]†[2] CS 4 sD5†[2] CS 4 57 Br U†<sup>2</sup> Br BB†<sup>1</sup> LL
Jeep(a) cs 2 cs 2 58 H† L†<sup>1</sup> LL
&#190;-Ton Truck(a) cs 4 cs 4 Br 85 Br A Br N LL
1&#189;-Ton Truck(a) cs 6 cs 6 Br 85 Br A Br N LL
2&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
7&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
DUKW cs 7†[1] cs 7†[1] US 52† US D†<sup>3</sup> US O†<sup>2</sup> US CC†<sup>1</sup> LL
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® A5 C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>

@ -1,107 +1,120 @@
=== vehicles/russian/1945 ===
Name Capabilities (effective) # Notes Comments
----------------- ------------------------------------------- ----------------------- ------ -------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 A5 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 A3 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 A6 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 A4 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 A5 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] A5 CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 A5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 A5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 A5 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] WP6† s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 D7† HE8† sD6 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54† N LL
Jeep GPA(a) cs 2 cs 2 59 H† L†<sup>1</sup>
DUKW(a) cs 7 cs 7 60† n/a
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® A5 C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>
Name Capabilities (effective) # Notes Comments
-------------------- ------------------------------------------- ----------------------- ------ --------------------------------------------------------- -----------------------------------------
T-37 ® CS 2 ® CS 2 1 H† M
T-27 ® CS 2 ® CS 2 1.1† M Q
T-40 ® CS 2 ® CS 2 2† H†
T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
T-60 M40 ® CS 2 ® CS 2 4 n/a
T-60 M42 ®† CS 2 ®† CS 2 4 C†
T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
T-26 M33 ® CS 3 ® CS 3 6 D I† M P
T-26 M37/39 ® CS 3 ® CS 3 6 D M P
T-26 M31 ® CS 3 ® CS 3 6.1† M P
T-26 M32 ® CS 3 ® CS 3 6.2† M P
OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
ST-26 Bridgelayer CS 3 CS 3 6.4† M
OT-133 ® CS 3 ® CS 3 7† M P
BT-2A ® CS 3 ® CS 3 7.1† M
BT-5 M34 ® CS 3 ® CS 3 8† M P
BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
T-34 M40 ® CS 5 ® CS 5 13 M
T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
T-34/85 A5[4] sD6† CS 6 A5 sD6† CS 6 18† J†
M4/76(a) A3[4] s8 sM8 CS 6 A3 s8 sM8 CS 6 19† N
T-44 A6[5] CS 5 A6 CS 5 20 B† M
T-35 ® s9 CS 8 ® s9 CS 8 21† M
SMK CS 7 CS 7 21.1 M T†
T-100 CS 7 CS 7 22.1 M T†
KV-1 M39/40 CS 6 CS 6 22† M
KV-1E CS 6 CS 6 23 D M
KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
KV-1S A4[2] CS 6 A4 CS 6 25† n/a
KV-85 A4[3]5[4] CS 5 A5 CS 5 26 B†
IS-2 no IF CS 6 no IF CS 6 27 B†
IS-2m no IF CS 6 no IF CS 6 28 B† G†
IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
SU-76M A5[3] CS 4[brewup] A5 CS 4[brewup] 30† n/a
SU-76i(g) A5[3] CS 5 A5 CS 5 31 K
SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
SU-152 no IF CS 6 no IF CS 6 33† n/a
ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
ISU-152 no IF CS 6 no IF CS 6 34 G†
SU-85 A5[3] HE7 s7 CS 5 A5 HE7 s7 CS 5 35 n/a
SU-100 HE7 CS 5 HE7 CS 5 36 n/a
SU-57(a) A5[3] HE7 CS 4 A5 HE7 CS 4 37 K
BA-20 ® CS 3 ® CS 3 38 n/a
BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
BA-64B CS 2 CS 2 40† A†
ZSU-37 CS 4 CS 4 41† A†
SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
GAZ-4M-AA CS 4 CS 4 43† A†
ZIS-42-AA CS 4 CS 4 44 A† F†
LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
LANO AA ® CS 5 ® CS 5 44.2† A†<sup>1</sup>
IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
GAZ-67B CS 2 CS 2 46 L†
Komsomolet CS 2† CS 2† 46.1† n/a
STZ-3 cs 4 cs 4 46.2 n/a
STZ-5 cs 7 cs 7 46.3 n/a
GAZ-MM cs 6 cs 6 47 n/a
ZIS-5 cs 7 cs 7 47 n/a
IAG-6 cs 7 cs 7 47 n/a
NKL-6 CS 2† CS 2† 47.1† S†<sup>1</sup>
NKL-16 cs 2 cs 2 47.1† S†<sup>1</sup>
NKL-26 CS 2 CS 2 47.2† Q S†<sup>1</sup>
RF-8-GAZ-98 CS 3 CS 3 47.3† S†<sup>1</sup>
Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†<sup>1</sup> N O LL
Sherman III(a) WP6[J4+]† s8 CS 5[brewup] WP6† s8 CS 5[brewup] 50† N O R†<sup>1</sup> LL
Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†<sup>1</sup> N LL
Valentine II(b) sM8 CS 4 sM8 CS 4 52 Br N LL
Valentine V(b) sM8 CS 4 sM8 CS 4 52† Br K†<sup>1</sup> Br N<sup>T</sup> LL
Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52† Br N<sup>T</sup> LL
Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 D7† HE8† sD6 sM8† CS 7 53† N LL
M3A1 Scout Car(a) CS 4 CS 4 54 US E† US H US I† US N LL
M5(a) cs 5†[1] cs 5†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M9(a) cs 4†[1] cs 4†[1] 55 Br A Br I†<sup>1</sup> Br N LL
M17 MGMC(a) CS 4 CS 4 56 Br A Br F† Br AA†<sup>1</sup> LL
Carrier A sD5[4+]†[1] CS 3 sD5†[1] CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier B sD5[4+]†[2] CS 3 sD5†[2] CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier C sD5[4+]†[1] CS 3 sD5†[1] CS 3 57 Br N Br P Br U†<sup>1</sup> LL
Carrier, MMG A sD5[4+]†[2] CS 3 sD5†[2] CS 3 57 Br N Br P Br Q†<sup>1</sup> Br U†<sup>2</sup> LL
Carrier, MMG B sD5[4+]†[2] CS 4 sD5†[2] CS 4 57 Br U†<sup>2</sup> Br BB†<sup>1</sup> LL
Jeep(a) cs 2 cs 2 58 H† L†<sup>1</sup> LL
&#190;-Ton Truck(a) cs 4 cs 4 Br 85 Br A Br N LL
1&#189;-Ton Truck(a) cs 6 cs 6 Br 85 Br A Br N LL
2&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
7&#189;-Ton Truck(a) cs 7 cs 7 Br 85 Br A Br N LL
DUKW cs 7†[1] cs 7†[1] US 52† US D†<sup>3</sup> US O†<sup>2</sup> US CC†<sup>1</sup> LL
BT-2A ® C5†[2] CS 3 ® C5†[2] CS 3 1† C†<sup>2</sup> Ru M†<sup>1</sup> CMG 2:00 from MA
BT-2A(L) ® C6†[2] CS 3 ® C6†[2] CS 3 2† C†<sup>2</sup> Ru M†<sup>1</sup>
BT-2B ® CS 3 ® CS 3 3† Ru M†<sup>1</sup> 2 TK DR (MG)
OT-26 ® CS 2[brewup] ® CS 2[brewup] 4†[1] Ru M†
T-26 M31 ® CS 3 ® CS 3 5† Ru M†<sup>1</sup>
T-26 M32 ® C5†[2] CS 3 ® C5†[2] CS 3 6† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U C5†[2] CS 3 C5†[2] CS 3 7† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32(L) ® C4†[2] CS 3 ® C4†[2] CS 3 8† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M32U(L) C4†[2] CS 3 C4†[2] CS 3 9† C†<sup>2</sup> Ru M†<sup>1</sup> 37*: Stbd MG: Port
T-26 M33 ® C5 CS 3 ® C5 CS 3 10†[3] Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup> C4 applies if equipped with optional CMG.
T-26 M33U C4†[1] CS 3 C4†[1] CS 3 11 C†<sup>1</sup> Ru M†
T-26 M39U C4†[1] CS 3 C4†[1] CS 3 12 C†<sup>1</sup> Ru M†
BT-5 M34 ® C4†[2] CS 3 ® C4†[2] CS 3 13 C†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
BT-7 M37 ® C4†[3] CS 3 ® C4†[3] CS 3 14 C†<sup>3</sup> Ru D†<sup>2</sup> Ru I† Ru M†<sup>1</sup>
T-26A ® AP7 C6†[3] s9 CS 3 ® AP7 C6†[3] s9 CS 3 15† B C†<sup>3</sup> Ru D†<sup>2</sup> Ru M†<sup>1</sup>
BT-7A AP7 C6†[2] s9 CS 3 AP7 C6†[2] s9 CS 3 16† B C†<sup>2</sup> Ru M†<sup>1</sup>
BA-6 ® A4[2]5[3] C4† CS 4 ® A5 C4† CS 4 17† n/a
SU-12 AP7 C6†[2] s8 CS 4 AP7 C6†[2] s8 CS 4 18† B C†<sup>2</sup> Ru F†<sup>1</sup>

@ -393,7 +393,8 @@ def get_vo_gpids( data_dir, extns ): #pylint: disable=too-many-locals,too-many-b
dname = os.path.join( data_dir, vo_type )
for root,_,fnames in os.walk(dname):
for fname in fnames:
if os.path.splitext(fname)[1] != ".json":
if os.path.splitext( fname )[1] != ".json":
continue
# load the GPID's from the next file
@ -401,7 +402,11 @@ def get_vo_gpids( data_dir, extns ): #pylint: disable=too-many-locals,too-many-b
# to have non-numeric values, as do, apparently, extensions :-/ For back-compat, we support both.
entries = json.load( open( os.path.join(root,fname), "r" ) )
for entry in entries:
entry_gpids = entry[ "gpid" ]
entry_gpids = entry.get( "gpid" )
if not entry_gpids:
entry_gpids = entry.get( "extra_gpids" ) # nb: for lend-lease vehicles/ordnance
if not entry_gpids:
continue
if not isinstance( entry_gpids, list ):
entry_gpids = [ entry_gpids ]
for gpid in entry_gpids:

@ -2,6 +2,7 @@
import os
import json
import copy
import logging
from flask import request, render_template, jsonify, abort
@ -59,7 +60,8 @@ def _do_load_vo_listings( vo_type, merge_common, report ): #pylint: disable=too-
minor_nats = { "allied-minor": set(), "axis-minor": set() }
for root,_,fnames in os.walk(dname):
for fname in fnames:
if os.path.splitext(fname)[1] != ".json":
fname_stem, extn = os.path.splitext( fname )
if extn != ".json" or fname_stem.endswith( ".lend-lease" ):
continue
nat = os.path.splitext( os.path.split(fname)[1] )[ 0 ]
if os.path.split(root)[1] in ("allied-minor","axis-minor"):
@ -70,17 +72,29 @@ def _do_load_vo_listings( vo_type, merge_common, report ): #pylint: disable=too-
minor_nats[minor_type].add( nat )
with open( os.path.join(root,fname), "r" ) as fp:
listings[nat] = json.load( fp )
# merge common entries
fname2 = os.path.join( root, "{}.lend-lease.json".format( fname_stem ) )
if os.path.isfile( fname2 ):
with open( fname2, "r" ) as fp:
listings[nat].extend( json.load( fp ) )
# fixup any vehicle/ordnance references
vo_index = _make_vo_index( listings )
for nat,vo_entries in listings.items():
for i,vo_entry in enumerate(vo_entries):
vo_id = vo_entry.get( "copy_from" )
if vo_id:
vo_entries[i] = _copy_vo_entry( vo_entry, vo_index[vo_id] )
# add in any common vehicles/ordnance and landing craft
if merge_common:
# merge common Allied/Axis Minor vehicles/ordnance
# add in any common Allied/Axis Minor vehicles/ordnance
for minor_type in ("allied-minor","axis-minor"):
if minor_type+"-common" not in listings:
continue
for nat in minor_nats[minor_type]:
listings[nat].extend( listings[minor_type+"-common"] )
del listings[ minor_type+"-common" ]
# merge landing craft
# add in any landing craft
if vo_type == "vehicles":
for lc in listings.get("landing-craft",[]):
if lc["name"] in ("Daihatsu","Shohatsu"):
@ -93,14 +107,10 @@ def _do_load_vo_listings( vo_type, merge_common, report ): #pylint: disable=too-
# NOTE: We do this here, rather than in VaslMod, because VaslMod is a wrapper around a VASL module, and so
# only knows about GPID's and counter images, rather than Chapter H pieces and piece ID's (e.g. "ge/v:001").
if globvars.vasl_mod:
# build an index of the pieces
piece_index = {}
for nat,pieces in listings.items():
for piece in pieces:
piece_index[ piece["id"] ] = piece
# process each VASL extension
vo_index = _make_vo_index( listings )
for extn in globvars.vasl_mod.get_extns():
_apply_extn_info( listings, extn[0], extn[1], piece_index, vo_type )
_apply_extn_info( listings, extn[0], extn[1], vo_index, vo_type )
# update nationality variants with the listings from their base nationality
for nat in listings:
@ -111,7 +121,38 @@ def _do_load_vo_listings( vo_type, merge_common, report ): #pylint: disable=too-
return listings
def _apply_extn_info( listings, extn_fname, extn_info, piece_index, vo_type ):
def _copy_vo_entry( placeholder_vo_entry, src_vo_entry ):
"""Create a new vehicle/ordnance entry by copying an existing one."""
# Anjuna, India (FEB/19)
# create the new vehicle/ordnance entry
new_vo_entry = copy.deepcopy( src_vo_entry )
new_vo_entry["id"] = placeholder_vo_entry["id"]
if "note_number" in placeholder_vo_entry:
new_vo_entry["note_number"] = placeholder_vo_entry["note_number"]
if "name" in placeholder_vo_entry:
new_vo_entry["name"] = placeholder_vo_entry["name"]
if "gpid" in placeholder_vo_entry:
new_vo_entry["gpid"] = placeholder_vo_entry["gpid"]
elif "extra_gpids" in placeholder_vo_entry:
if not isinstance( new_vo_entry["gpid"], list ):
new_vo_entry["gpid"] = [ new_vo_entry["gpid"] ]
new_vo_entry["gpid"].extend( placeholder_vo_entry["extra_gpids"] )
# fixup any multi-applicable notes
if "notes" in new_vo_entry:
vo_id = placeholder_vo_entry[ "copy_from" ]
if vo_id.startswith( "br/" ):
prefix = "Br"
elif vo_id.startswith( "am/" ):
prefix = "US"
else:
logging.warning( "Unexpected vehicle/ordnance reference nationality: %s", vo_id )
prefix = ""
new_vo_entry["notes"] = [ "{} {}".format( prefix, n ) for n in new_vo_entry["notes"] ]
if "extra_notes" in placeholder_vo_entry:
new_vo_entry["notes"].extend( placeholder_vo_entry["extra_notes"] )
return new_vo_entry
def _apply_extn_info( listings, extn_fname, extn_info, vo_index, vo_type ):
"""Update the vehicle/ordnance listings for the specified VASL extension."""
# initialize
@ -125,26 +166,34 @@ def _apply_extn_info( listings, extn_fname, extn_info, piece_index, vo_type ):
if not isinstance( extn_info[nat], dict ):
continue
for entry in extn_info[nat].get( vo_type, [] ):
piece = piece_index.get( entry["id"] )
if piece:
# update an existing piece
vo_entry = vo_index.get( entry["id"] )
if vo_entry:
# update an existing vehicle/ordnance
logger.debug( "- Updating GPID's for %s: %s", entry["id"], entry["gpid"] )
if piece["gpid"]:
prev_gpids = piece["gpid"]
if not isinstance( piece["gpid"], list ):
piece["gpid"] = [ piece["gpid"] ]
piece["gpid"].extend( entry["gpid"] )
if vo_entry["gpid"]:
prev_gpids = vo_entry["gpid"]
if not isinstance( vo_entry["gpid"], list ):
vo_entry["gpid"] = [ vo_entry["gpid"] ]
vo_entry["gpid"].extend( entry["gpid"] )
else:
prev_gpids = "(none)"
piece["gpid"] = entry["gpid"]
logger.debug( " - %s => %s", prev_gpids, piece["gpid"] )
vo_entry["gpid"] = entry["gpid"]
logger.debug( " - %s => %s", prev_gpids, vo_entry["gpid"] )
else:
# add a new piece
# add a new vehicle/ordnance
if nat not in listings:
listings[ nat ] = []
entry[ "extn_id" ] = extn_info[ "extensionId" ]
listings[ nat ].append( entry )
def _make_vo_index( vo_entries ):
"""Generate an index of each vehicle/ordnance entry."""
vo_index = {}
for nat in vo_entries:
for vo_entry in vo_entries[nat]:
vo_index[ vo_entry["id"] ] = vo_entry
return vo_index
# ---------------------------------------------------------------------
@app.route( "/<vo_type>/<nat>/<theater>/<int:year>", defaults={"month":1} )

Loading…
Cancel
Save