Added support for BFP's "Blood & Jungle" and "Poland In Flames".

master
Pacman Ghost 5 years ago
parent f5e9999354
commit c128209e7f
  1. 28
      vasl_templates/webapp/data/default-template-pack/nationalities.json
  2. 5
      vasl_templates/webapp/data/default-template-pack/ob_ordnance.j2
  3. 2
      vasl_templates/webapp/data/default-template-pack/ob_ordnance_ma_notes.j2
  4. 5
      vasl_templates/webapp/data/default-template-pack/ob_vehicles.j2
  5. 2
      vasl_templates/webapp/data/default-template-pack/ob_vehicles_ma_notes.j2
  6. 16
      vasl_templates/webapp/data/expected-multiple-images.json
  7. 181
      vasl_templates/webapp/data/extensions/bfp-cobra.json
  8. 543
      vasl_templates/webapp/data/extensions/bfp-pif.json
  9. 938
      vasl_templates/webapp/data/extensions/bfp-v403.json
  10. 4
      vasl_templates/webapp/data/extensions/kgs-v1.1.json
  11. 5
      vasl_templates/webapp/data/ordnance/allied-minor/belgian.json
  12. 6
      vasl_templates/webapp/data/ordnance/allied-minor/common.json
  13. 9
      vasl_templates/webapp/data/ordnance/american.json
  14. 6
      vasl_templates/webapp/data/ordnance/axis-minor/bulgarian.json
  15. 6
      vasl_templates/webapp/data/ordnance/axis-minor/common.json
  16. 3
      vasl_templates/webapp/data/ordnance/axis-minor/croatian.json
  17. 9
      vasl_templates/webapp/data/ordnance/axis-minor/romanian.json
  18. 2
      vasl_templates/webapp/data/ordnance/axis-minor/slovakian.json
  19. 9
      vasl_templates/webapp/data/ordnance/british.json
  20. 8
      vasl_templates/webapp/data/ordnance/chinese.json
  21. 1
      vasl_templates/webapp/data/ordnance/chinese~gmd.json
  22. 9
      vasl_templates/webapp/data/ordnance/communist-forces/cvpa.json
  23. 24
      vasl_templates/webapp/data/ordnance/finnish.json
  24. 18
      vasl_templates/webapp/data/ordnance/french.json
  25. 7
      vasl_templates/webapp/data/ordnance/german.json
  26. 12
      vasl_templates/webapp/data/ordnance/italian.json
  27. 14
      vasl_templates/webapp/data/ordnance/japanese.json
  28. 9
      vasl_templates/webapp/data/ordnance/russian.json
  29. 2
      vasl_templates/webapp/data/ordnance/un-forces/british-commonwealth-forces-korea.json
  30. 3
      vasl_templates/webapp/data/ordnance/un-forces/common.json
  31. 9
      vasl_templates/webapp/data/ordnance/un-forces/us-rok-ounc.json
  32. 31
      vasl_templates/webapp/data/vasl-overrides.json
  33. 1
      vasl_templates/webapp/data/vehicles/chinese~gmd.json
  34. 14
      vasl_templates/webapp/file_server/utils.py
  35. 22
      vasl_templates/webapp/file_server/vasl_mod.py
  36. 32
      vasl_templates/webapp/snippets.py
  37. 37
      vasl_templates/webapp/static/css/edit-vo-dialog.css
  38. BIN
      vasl_templates/webapp/static/images/flags/anzac.png
  39. BIN
      vasl_templates/webapp/static/images/flags/burmese.png
  40. 0
      vasl_templates/webapp/static/images/flags/chinese~gmd.png
  41. BIN
      vasl_templates/webapp/static/images/flags/filipino.png
  42. BIN
      vasl_templates/webapp/static/images/flags/indonesian.png
  43. BIN
      vasl_templates/webapp/static/images/flags/polish.png
  44. BIN
      vasl_templates/webapp/static/images/flags/slovakian.png
  45. BIN
      vasl_templates/webapp/static/images/flags/thai.png
  46. BIN
      vasl_templates/webapp/static/images/spacer.png
  47. 10
      vasl_templates/webapp/static/main.js
  48. 94
      vasl_templates/webapp/static/snippets.js
  49. 1
      vasl_templates/webapp/static/sortable.js
  50. 2
      vasl_templates/webapp/static/utils.js
  51. 11
      vasl_templates/webapp/static/vo.js
  52. 92
      vasl_templates/webapp/static/vo2.js
  53. 17
      vasl_templates/webapp/templates/edit-vo-dialog.html
  54. 27
      vasl_templates/webapp/templates/vo-notes-report.html
  55. 4
      vasl_templates/webapp/templates/vo-report.html
  56. 3
      vasl_templates/webapp/tests/fixtures/data/default-template-pack/ob_ordnance.j2
  57. 3
      vasl_templates/webapp/tests/fixtures/data/default-template-pack/ob_vehicles.j2
  58. 4
      vasl_templates/webapp/tests/fixtures/data/vehicles/german.json
  59. 4
      vasl_templates/webapp/tests/fixtures/vo-reports/landing-craft.txt
  60. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/allied-minor-common/1940.txt
  61. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/allied-minor-common/1941.txt
  62. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/allied-minor-common/1942.txt
  63. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/allied-minor-common/1943.txt
  64. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/allied-minor-common/1944.txt
  65. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/allied-minor-common/1945.txt
  66. 11
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1940.txt
  67. 11
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1941.txt
  68. 11
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1942.txt
  69. 11
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1943.txt
  70. 11
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1944.txt
  71. 11
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/american/1945.txt
  72. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/axis-minor-common/1940.txt
  73. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/axis-minor-common/1941.txt
  74. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/axis-minor-common/1942.txt
  75. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/axis-minor-common/1943.txt
  76. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/axis-minor-common/1944.txt
  77. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/axis-minor-common/1945.txt
  78. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/belgian/1940.txt
  79. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/belgian/1941.txt
  80. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/belgian/1942.txt
  81. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/belgian/1943.txt
  82. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/belgian/1944.txt
  83. 8
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/belgian/1945.txt
  84. 10
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1940.txt
  85. 10
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1941.txt
  86. 10
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1942.txt
  87. 10
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1943.txt
  88. 10
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1944.txt
  89. 10
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/british/1945.txt
  90. 20
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/bulgarian/1940.txt
  91. 20
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/bulgarian/1941.txt
  92. 20
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/bulgarian/1942.txt
  93. 20
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/bulgarian/1943.txt
  94. 20
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/bulgarian/1944.txt
  95. 20
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/bulgarian/1945.txt
  96. 10
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1940.txt
  97. 10
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1941.txt
  98. 10
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1942.txt
  99. 10
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1943.txt
  100. 10
      vasl_templates/webapp/tests/fixtures/vo-reports/ordnance/chinese/1944.txt
  101. Some files were not shown because too many files have changed in this diff Show More

@ -44,12 +44,17 @@
"display_name": "Chinese",
"ob_colors": [ "#d3edfc","#91cdf5", "#e0a22b" ]
},
"chinese~gmd": {
"display_name": "Chinese GMD",
"ob_colors": [ "#d3edfc","#91cdf5", "#e0a22b" ]
},
"polish": {
"display_name": "Polish",
"ob_colors": [ "#a3ecd1","#82e3bd", "#61d8a6" ],
"ob_colors": [ "#ecd8b0","#e8cfa4", "#84e8c2" ],
"type": "allied-minor"
},
"belgian": {
"display_name": "Belgian",
"ob_colors": [ "#a3ecd1","#82e3bd", "#61d8a6" ],
@ -99,6 +104,27 @@
"display_name": "Bulgarian",
"ob_colors": [ "#3ceb7c","#1de256", "#0ed93c" ],
"type": "axis-minor"
},
"anzac": {
"display_name": "ANZAC",
"ob_colors": [ "#f6edda","#e5cea0", "#e5cea0" ]
},
"thai": {
"display_name": "Thai",
"ob_colors": [ "#3ceb7c","#1de256", "#0ed93c" ]
},
"indonesian": {
"display_name": "Indonesian",
"ob_colors": [ "#3ceb7c","#1de256", "#0ed93c" ]
},
"burmese": {
"display_name": "Burmese",
"ob_colors": [ "#3ceb7c","#1de256", "#0ed93c" ]
},
"filipino": {
"display_name": "Filipino",
"ob_colors": [ "#3ceb7c","#1de256", "#0ed93c" ]
}
}

@ -5,6 +5,7 @@
<style>
td { margin: 0 ; padding: 0 ; }
.note { margin-top: 2px ; font-size: 90% ; font-style: italic ; color: #808080 ; }
.comment { font-size: 90% ; font-style: italic ; color: #404040 ; }
sup { font-size: 75% ; }
</style>
</head>
@ -28,6 +29,7 @@ sup { font-size: 75% ; }
<b> {{ord.name}} </b>
{%if ord.image%} <br> <img src="{{ord.image}}"> {%endif%}
<div class="note">
{%if ord.extn_id%} &#x2756; {%endif%}
{%if ord.notes%}
{{ord.note_number}}, {{ord.notes | join(", ")}}
{%else%}
@ -35,7 +37,8 @@ sup { font-size: 75% ; }
{%endif%}
</div>
<td valign="top" style="padding:2px 5px;">
{%for cap in ord.capabilities%} <div> {{cap}} </div> {%endfor%}
{%for cap in ord.capabilities%} <div class="capability"> {{cap}} </div> {%endfor%}
{%for cmnt in ord.comments%} <div class="comment"> {{cmnt}} </div> {%endfor%}
{%endfor%}
</table>

@ -4,6 +4,8 @@
<meta charset="utf-8">
<style>
.ma-note .key { font-weight: bold ; }
.ma-note table { margin-left: 10px ; }
.ma-note td { padding: 0 ; }
.extra-notes-caption { border: 1px solid #e0e0e0 ; background: #fcfcfc ; font-weight: bold ; padding: 2px 5px ; }
ul { margin: 0 0 0 15px ; padding: 0 ; }
sup { font-size: 75% ; }

@ -5,6 +5,7 @@
<style>
td { margin: 0 ; padding: 0 ; }
.note { margin-top: 2px ; font-size: 90% ; font-style: italic ; color: #808080 ; }
.comment { font-size: 90% ; font-style: italic ; color: #404040 ; }
sup { font-size: 75% ; }
</style>
</head>
@ -28,6 +29,7 @@ sup { font-size: 75% ; }
<b> {{veh.name}} </b>
{%if veh.image%} <br> <img src="{{veh.image}}"> {%endif%}
<div class="note">
{%if veh.extn_id%} &#x2756; {%endif%}
{%if veh.notes%}
{{veh.note_number}}, {{veh.notes | join(", ")}}
{%else%}
@ -35,7 +37,8 @@ sup { font-size: 75% ; }
{%endif%}
</div>
<td valign="top" style="padding:2px 5px;">
{%for cap in veh.capabilities%} <div> {{cap}} </div> {%endfor%}
{%for cap in veh.capabilities%} <div class="capability"> {{cap}} </div> {%endfor%}
{%for cmnt in veh.comments%} <div class="comment"> {{cmnt}} </div> {%endfor%}
{%endfor%}
</table>

@ -4,6 +4,8 @@
<meta charset="utf-8">
<style>
.ma-note .key { font-weight: bold ; }
.ma-note table { margin-left: 10px ; }
.ma-note td { padding: 0 ; }
.extra-notes-caption { border: 1px solid #e0e0e0 ; background: #fcfcfc ; font-weight: bold ; padding: 2px 5px ; }
ul { margin: 0 0 0 15px ; padding: 0 ; }
sup { font-size: 75% ; }

@ -10,6 +10,22 @@
"name": "76* INF FRC",
"front_images": [ "al/gun/alINF76", "al/gun/alINF76u" ],
"back_images": "al/gun/alINF76b"
},
"adf:1828": {
"name": "105 ART wz.29",
"front_images": "po/gun/poARTwz29-BFP.png",
"back_images": [ "po/gun/poARTwz29-BFP.png", "po/gun/poARTwz29-BFPb.png" ]
},
"adf:1829": {
"name": "120* ART wz09.31",
"front_images": "po/gun/poARTwz0931-BFP.png",
"back_images": [ "po/gun/poARTwz0931-BFP.png", "po/gun/poARTwz0931-BFPb.png" ]
},
"adf:1830": {
"name": "155 ART wz.17",
"front_images": "po/gun/poARTwz17-BFP.png",
"back_images": [ "po/gun/poARTwz17-BFP.png", "po/gun/poARTwz17-BFPb.png" ]
}
}

@ -0,0 +1,181 @@
{
"parentExtensionId": "adf",
"extensionId": "cobra",
"version": "4.03",
"id_range": [ 850, 899 ],
"comment": "These are F (flamethrower) and C (Culin) versions of the same vehicles (from Operation Cobra).",
"american": {
"vehicles": [
{ "name": "M5A1C",
"type": "LT",
"CS#": 4,
"capabilities": [ "C7\u2020<sup>2</sup>" ],
"note_number": "5\u2020",
"notes": [ "US C\u2020<sup>2</sup>", "US F\u2020<sup>1</sup>", "US G", "US N", "US Y", "A", "B" ],
"id": "am/v:850",
"gpid": "adf:154"
},
{ "name": "M4C",
"type": "MT",
"CS#": "5:brewup",
"capabilities2": { "s": [ [5,"J4+"] ], "WP": [ [7,"J4+"], "\u2020<sup>3</sup>" ], "sM": [ [5,"4+"] ] },
"note_number": "8\u2020",
"notes": [ "US F\u2020<sup>2</sup>", "US G", "US R\u2020<sup>1</sup>", "US Y", "US BB\u2020<sup>3</sup>", "A", "B" ],
"id": "am/v:851",
"gpid": "adf:160"
},
{ "name": "M4A1C",
"type": "MT",
"CS#": "5:brewup",
"capabilities2": { "s": [ [5,"J4+"] ], "WP": [ [7,"J4+"], "\u2020<sup>3</sup>" ], "sM": [ [5,"4+"] ] },
"note_number": "9\u2020",
"notes": [ "US F\u2020<sup>2</sup>", "US G", "US N", "US R\u2020<sup>1</sup>", "US Y", "US BB\u2020<sup>3</sup>", "A", "B" ],
"id": "am/v:852",
"gpid": "adf:164"
},
{ "name": "M4A3C",
"type": "MT",
"CS#": "5:brewup",
"capabilities2": { "s": [ [5,"J4+"] ], "WP": [ [7,"J4+"], "\u2020<sup>3</sup>" ], "sM": [ [4,"4+"] ] },
"note_number": "12\u2020",
"notes": [ "US F\u2020<sup>2</sup>", "US G", "US R\u2020<sup>1</sup>", "US Y", "US BB\u2020<sup>3</sup>", "A", "B" ],
"id": "am/v:853",
"gpid": "adf:172"
},
{ "name": "M4A3C(75)W",
"type": "MT",
"CS#": 6,
"capabilities2": { "s": 5, "WP": 7, "sM": 8 },
"note_number": "13\u2020",
"notes": [ "US F\u2020<sup>2</sup>", "US G", "US R\u2020<sup>1</sup>", "US Y", "A", "B" ],
"id": "am/v:854",
"gpid": "adf:176"
},
{ "name": "M4A1C(76)W",
"type": "MT",
"CS#": 6,
"capabilities2": { "A": [ [4,"A4"], [5,5], "\u2020<sup>2</sup>" ], "s": [ [5,5] ], "sM": 8 },
"note_number": "15\u2020",
"notes": [ "US A\u2020<sup>2</sup>", "US F\u2020<sup>1</sup>", "US G", "US <s>P</s>", "US Y", "A", "B" ],
"id": "am/v:855",
"gpid": "adf:180"
},
{ "name": "M4A3C(76)W",
"type": "MT",
"CS#": 6,
"capabilities2": { "A": [ [4,"A4"], [5,5], "\u2020<sup>2</sup>" ], "s": [ [5,5] ], "sM": 8 },
"note_number": "16\u2020",
"notes": [ "US A\u2020<sup>2</sup>", "US F\u2020<sup>1</sup>", "US G", "US <s>P</s>", "US Y", "A", "B" ],
"id": "am/v:856",
"gpid": "adf:184"
},
{ "name": "M4C(105)",
"type": "MT",
"CS#": 6,
"capabilities2": { "H": 9, "C": [ [7,"P"], "\u2020<sup>1</sup>" ], "s": 7, "WP": 9, "sM": 8 },
"note_number": "17\u2020",
"notes": [ "US C\u2020<sup>1</sup>", "US Y", "A", "B" ],
"id": "am/v:857",
"gpid": "adf:188"
},
{ "name": "M4A3C(105)",
"type": "MT",
"CS#": 6,
"capabilities2": { "H": 9, "C": [ [7,"P"], "\u2020<sup>1</sup>" ], "s": 7, "WP": 9, "sM": 8 },
"note_number": "17\u2020",
"notes": [ "US C\u2020<sup>1</sup>", "US Y", "A", "B" ],
"id": "am/v:858",
"gpid": "adf:190"
},
{ "name": "M10C GMC",
"type": "TD",
"CS#": 7,
"capabilities2": { "A": [ [5,"A4E"], [6,"5E"], "\u2020<sup>1</sup>" ], "s": [ [5,5] ], "sP": 5 },
"note_number": "23\u2020",
"notes": [ "US A\u2020<sup>1</sup>", "US N", "US Y", "A", "B" ],
"id": "am/v:859",
"gpid": "adf:192"
},
{ "name": "M8C HMC",
"type": "SPA",
"CS#": 5,
"capabilities2": { "H": 9, "C": [ [4,"4+"], "\u2020<sup>1</sup>" ], "WP": 9 },
"note_number": "43\u2020",
"notes": [ "US C\u2020<sup>1</sup>", "US Y", "A", "B" ],
"id": "am/v:860",
"gpid": "adf:194"
},
{ "name": "M5A1F",
"type": "LT",
"CS#": 4,
"capabilities": [ "C7\u2020<sup>2</sup>" ],
"note_number": "5\u2020",
"notes": [ "US C\u2020<sup>2</sup>", "US F\u2020<sup>1</sup>", "US G", "US N", "US Y", "C" ],
"id": "am/v:870",
"gpid": "adf:156"
},
{ "name": "M4F",
"type": "MT",
"CS#": "5:brewup",
"capabilities2": { "s": [ [5,"J4+"] ], "WP": [ [7,"J4+"], "\u2020<sup>3</sup>" ], "sM": [ [5,"4+"] ] },
"note_number": "8\u2020",
"notes": [ "US F\u2020<sup>2</sup>", "US G", "US R\u2020<sup>1</sup>", "US Y", "US BB\u2020<sup>3</sup>", "C" ],
"id": "am/v:871",
"gpid": "adf:162"
},
{ "name": "M4A1F",
"type": "MT",
"CS#": "5:brewup",
"capabilities2": { "s": [ [5,"J4+"] ], "WP": [ [7,"J4+"], "\u2020<sup>3</sup>" ], "sM": [ [5,"4+"] ] },
"note_number": "9\u2020",
"notes": [ "US F\u2020<sup>2</sup>", "US G", "US N", "US R\u2020<sup>1</sup>", "US Y", "US BB\u2020<sup>3</sup>", "C" ],
"id": "am/v:872",
"gpid": "adf:166"
},
{ "name": "M4A3F",
"type": "MT",
"CS#": "5:brewup",
"capabilities2": { "s": [ [5,"J4+"] ], "WP": [ [7,"J4+"], "\u2020<sup>3</sup>" ], "sM": [ [4,"4+"] ] },
"note_number": "12\u2020",
"notes": [ "US F\u2020<sup>2</sup>", "US G", "US R\u2020<sup>1</sup>", "US Y", "US BB\u2020<sup>3</sup>", "C" ],
"id": "am/v:873",
"gpid": "adf:174"
},
{ "name": "M4A3F(75)W",
"type": "MT",
"CS#": 6,
"capabilities2": { "s": 5, "WP": 7, "sM": 8 },
"note_number": "13\u2020",
"notes": [ "US F\u2020<sup>2</sup>", "US G", "US R\u2020<sup>1</sup>", "US Y", "C" ],
"id": "am/v:874",
"gpid": "adf:178"
},
{ "name": "M4A1F(76)W",
"type": "MT",
"CS#": 6,
"capabilities2": { "A": [ [4,"A4"], [5,5], "\u2020<sup>2</sup>" ], "s": [ [5,5] ], "sM": 8 },
"note_number": "15\u2020",
"notes": [ "US A\u2020<sup>2</sup>", "US F\u2020<sup>1</sup>", "US G", "US <s>P</s>", "US Y", "C" ],
"id": "am/v:875",
"gpid": "adf:182"
},
{ "name": "M4A3F(76)W",
"type": "MT",
"CS#": 6,
"capabilities2": { "A": [ [4,"A4"], [5,5], "\u2020<sup>2</sup>" ], "s": [ [5,5] ], "sM": 8 },
"note_number": "16\u2020",
"notes": [ "US A\u2020<sup>2</sup>", "US F\u2020<sup>1</sup>", "US G", "US <s>P</s>", "Y", "C" ],
"id": "am/v:876",
"gpid": "adf:186"
}
]
}
}

@ -0,0 +1,543 @@
{
"parentExtensionId": "adf",
"extensionId": "pif",
"version": "4.03",
"id_range": [ 800, 849 ],
"polish": {
"vehicles": [
{ "name": "TKS-AA",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "1\u2020<sup>2</sup>",
"notes": [ "A\u2020<sup>1</sup>", "C\u2020", "AllM D" ],
"id": "po/v:800",
"gpid": "adf:919"
},
{ "name": "FT-18C (f)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"capabilities2": { "AP": 9, "C": "5\u2020<sup>1</sup>" },
"comments": [ "Road Rate NA" ],
"note_number": "2\u2020",
"notes": [ "B", "D\u2020<sup>1</sup>", "Fr C" ],
"id": "po/v:801",
"gpid": "adf:907"
},
{ "name": "FT-17K (f)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"capabilities2": { "AP": 9, "C": "5\u2020<sup>1</sup>" },
"comments": [ "Road Rate NA", "+4 ESB" ],
"note_number": "3\u2020",
"notes": [ "B", "D\u2020<sup>1</sup>", "Fr C" ],
"id": "po/v:802",
"gpid": "adf:1732"
},
{ "name": "TKS-D",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"comments": [ "12: Immob, 11: Stall" ],
"note_number": "4",
"notes": [ "C\u2020", "AllM D" ],
"id": "po/v:803",
"gpid": "adf:927"
},
{ "name": "TKD",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"capabilities2": { "C": "5\u2020<sup>1</sup>" },
"comments": [ "12: Immob, 11: Stall" ],
"note_number": "5\u2020<sup>1</sup>",
"notes": [ "C\u2020", "D\u2020<sup>1</sup>", "AllM D" ],
"id": "po/v:804",
"gpid": "adf:1614"
},
{ "name": "H39(f)",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 2,
"capabilities2": { "AP": 10 },
"note_number": "6",
"notes": [ "B", "Fr A\u2020", "Fr C" ],
"id": "po/v:805",
"gpid": "adf:915"
},
{ "name": "7TPjw(L)",
"type": "LT",
"CS#": 3,
"note_number": "7",
"id": "po/v:806",
"gpid": "adf:891"
},
{ "name": "wz. 34 Half Track",
"type": "ht",
"cs#": 6,
"note_number": "8",
"id": "po/v:807",
"gpid": "adf:1065"
},
{ "name": "wz. 34 C4P",
"type": "ht",
"cs#": 5,
"note_number": "9",
"id": "po/v:808",
"gpid": "adf:1061"
},
{ "name": "PF621L",
"type": "tr",
"cs#": 6,
"note_number": "10",
"id": "po/v:809",
"gpid": "adf:1053"
},
{ "name": "PF621L AAtr",
"type": "AAtr",
"CS#": 6,
"comments": [ "MA: AA" ],
"note_number": "11\u2020",
"id": "po/v:810",
"gpid": "adf:1601"
},
{ "name": "Praga RV",
"type": "tr",
"CS#": 7,
"note_number": "12",
"id": "po/v:811",
"gpid": "adf:1057"
}
],
"ordnance": [
{ "name": "FK-A wz.38 Autocannon",
"type": "AT",
"capabilities": [ "T", "QSU" ],
"comments": [ "No Gunshield.", "Tow NA\u2020" ],
"note_number": "1",
"notes": [ "A", "AllM T\u2020" ],
"id": "po/o:800",
"gpid": "adf:833"
},
{ "name": "65mm wz.06",
"type": "INF",
"capabilities": [ "NT", "QSU", "C6\u2020", "h-d" ],
"comments": [ "No Gunshield." ],
"note_number": "2",
"notes": [ "B\u2020", "AllM A" ],
"id": "po/o:801",
"gpid": "adf:861"
},
{ "name": "75mm wz.02/26",
"type": "ART",
"capabilities": [ "NT", "QSU", "h-d" ],
"capabilities2": { "s": 6, "C": "6\u2020" },
"note_number": "3",
"notes": [ "B\u2020" ],
"id": "po/o:802",
"gpid": "adf:855"
},
{ "name": "75mm wz.97",
"type": "ART",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "s": 8, "C": "6\u2020" },
"note_number": "4",
"notes": [ "B\u2020" ],
"id": "po/o:803",
"gpid": "adf:854"
},
{ "name": "75mm wz.28",
"type": "ART",
"capabilities": [ "NT", "QSU", "h-d" ],
"capabilities2": { "s": 6, "AP": 5, "C": "6\u2020" },
"note_number": "5",
"notes": [ "B\u2020", "AllM A" ],
"id": "po/o:804",
"gpid": "adf:854"
},
{ "name": "76mm wz.02",
"type": "ART",
"capabilities": [ "NT", "QSU", "h-d" ],
"capabilities2": { "s": 8, "C": "6\u2020" },
"note_number": "6",
"notes": [ "B\u2020" ],
"id": "po/o:805",
"gpid": "adf:856"
},
{ "name": "100mm wz.14/19",
"type": "ART",
"capabilities": [ "NT" ],
"capabilities2": { "C": "6\u2020" },
"note_number": "7",
"notes": [ "B\u2020", "AllM A" ],
"id": "po/o:806",
"gpid": "adf:857"
},
{ "name": "100mm wz.29",
"type": "ART",
"capabilities": [ "NT" ],
"capabilities2": { "C": "4\u2020" },
"note_number": "8",
"notes": [ "B\u2020" ],
"id": "po/o:807",
"gpid": "adf:1828"
},
{ "name": "120mm wz.09/31",
"type": "ART",
"capabilities": [ "NT", "h-d" ],
"capabilities2": { "s": 6, "C": "5\u2020" },
"note_number": "9",
"notes": [ "B\u2020" ],
"id": "po/o:808",
"gpid": "adf:1829"
},
{ "name": "155mm wz.17",
"type": "ART",
"capabilities": [ "NT" ],
"capabilities2": { "s": 8 },
"note_number": "10",
"id": "po/o:809",
"gpid": "adf:1830"
}
]
},
"german": {
"vehicles": [
{ "name": "PzKpfw IA",
"type": "Tt",
"CS#": 2,
"capabilities2": { "sD": 6 },
"comments": [ "2 TK DR (MG)" ],
"note_number": "1\u2020",
"notes": [ "Ge N" ],
"id": "ge/v:800",
"gpid": "adf:1464"
},
{ "name": "PzKpfw ICV",
"type": "Tt",
"CS#": 3,
"capabilities2": { "sD": 5 },
"note_number": "2",
"notes": [ "A\u2020" ],
"id": "ge/v:801",
"gpid": "adf:1460"
},
{ "name": "PzKpfw IID",
"type": "LT",
"CS#": 3,
"capabilities2": { "sD": 6 },
"note_number": "3",
"id": "ge/v:802",
"gpid": "adf:1468"
},
{ "name": "PzKpfw II Bridgelayer",
"type": "LTv",
"CS#": 2,
"capabilities2": { "sD": 6 },
"note_number": "4\u2020",
"id": "ge/v:803",
"gpid": "adf:1833"
},
{ "name": "Pz-7TP",
"type": "LT",
"CS#": 3,
"note_number": "5",
"notes": [ "B\u2020" ],
"id": "ge/v:804",
"gpid": "adf:1456"
},
{ "name": "PSW M35",
"type": "AC",
"CS#": 5,
"comments": [ "REV x2" ],
"note_number": "6\u2020",
"id": "ge/v:805",
"gpid": "adf:1448"
},
{ "name": "SdKfz8 FlaK 18",
"type": "TDht",
"CS#": 6,
"capabilities2": { "A": [ [5,2], [4,3] ] },
"comments": [ "CE +3 VCA", "MA: Rear VCA NA" ],
"note_number": "7\u2020\u2020<sup>1</sup>",
"id": "ge/v:806",
"gpid": "adf:1472"
}
],
"ordnance": [
{ "name": "2cm Tankb&uuml;sche S-18",
"type": "ATR",
"capabilities_other": [ "5PP" ],
"comments": [ "No Long Range" ],
"note_number": "1\u2020",
"notes": [ "AxM A" ],
"id": "ge/o:800",
"gpid": "adf:1407"
},
{ "name": "4.7 cm PaK 36(t)",
"type": "AT",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "A": [ [5,1], [4,2] ] },
"note_number": "2\u2020",
"id": "ge/o:801",
"gpid": "adf:1480"
},
{ "name": "7.5 cm Geb G36",
"type": "ART",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "H": "7\u2020" },
"note_number": "3\u2020",
"notes": [ "Ge O" ],
"id": "ge/o:802",
"gpid": "adf:1481"
},
{ "name": "10.5 cm Geb H40",
"type": "ART",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "H": 8 },
"note_number": "4\u2020",
"notes": [ "Ge O" ],
"id": "ge/o:803",
"gpid": "adf:1482"
}
]
},
"russian": {
"vehicles": [
{ "name": "BT-2A",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"capabilities2": { "C": "5\u2020<sup>2</sup>" },
"comments": [ "CMG 2:00 from MA" ],
"note_number": "1\u2020",
"notes": [ "C\u2020<sup>2</sup>", "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:800",
"gpid": "adf:1691"
},
{ "name": "BT-2A(L)",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"capabilities2": { "C": "6\u2020<sup>2</sup>" },
"note_number": "2\u2020",
"notes": [ "C\u2020<sup>2</sup>", "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:801",
"gpid": "adf:1720"
},
{ "name": "BT-2B",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"comments": [ "2 TK DR (MG)" ],
"note_number": "3\u2020",
"notes": [ "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:802",
"gpid": "adf:1722"
},
{ "name": "OT-26",
"type": "LTv",
"no_radio": "\u00ae",
"CS#": "2:brewup",
"note_number": "4\u2020<sup>1</sup>",
"notes": [ "Ru M\u2020" ],
"id": "ru/v:903",
"gpid": "adf:1728"
},
{ "name": "T-26 M31",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"note_number": "5\u2020",
"notes": [ "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:804",
"gpid": "adf:1701"
},
{ "name": "T-26 M32",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"capabilities2": { "C": "5\u2020<sup>2</sup>" },
"comments": [ "37*: Stbd", "MG: Port" ],
"note_number": "6\u2020",
"notes": [ "C\u2020<sup>2</sup>", "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:805",
"gpid": "adf:1703"
},
{ "name": "T-26 M32U",
"type": "LT",
"CS#": 3,
"capabilities2": { "C": "5\u2020<sup>2</sup>" },
"comments": [ "37*: Stbd", "MG: Port" ],
"note_number": "7\u2020",
"notes": [ "C\u2020<sup>2</sup>", "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:806",
"gpid": "adf:1709"
},
{ "name": "T-26 M32(L)",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"capabilities2": { "C": "4\u2020<sup>2</sup>" },
"comments": [ "37*: Stbd", "MG: Port" ],
"note_number": "8\u2020",
"notes": [ "C\u2020<sup>2</sup>", "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:807",
"gpid": "adf:1707"
},
{ "name": "T-26 M32U(L)",
"type": "LT",
"CS#": 3,
"capabilities2": { "C": "4\u2020<sup>2</sup>" },
"comments": [ "37*: Stbd MG: Port" ],
"note_number": "9\u2020",
"notes": [ "C\u2020<sup>2</sup>", "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:808",
"gpid": "adf:1711"
},
{ "name": "T-26 M33",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"capabilities2": { "C": 5 },
"comments": [ "C4 applies if equipped with optional CMG." ],
"note_number": "10\u2020<sup>3</sup>",
"notes": [ "Ru D\u2020<sup>2</sup>", "Ru I\u2020", "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:809",
"gpid": "adf:1713"
},
{ "name": "T-26 M33U",
"type": "LT",
"CS#": 3,
"capabilities2": { "C": "4\u2020<sup>1</sup>" },
"note_number": "11",
"notes": [ "C\u2020<sup>1</sup>", "Ru M\u2020" ],
"id": "ru/v:810",
"gpid": "adf:1716"
},
{ "name": "T-26 M39U",
"type": "LT",
"CS#": 3,
"capabilities2": { "C": "4\u2020<sup>1</sup>" },
"note_number": "12",
"notes": [ "C\u2020<sup>1</sup>", "Ru M\u2020" ],
"id": "ru/v:811",
"gpid": "adf:1718"
},
{ "name": "BT-5 M34",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"capabilities2": { "C": "4\u2020<sup>2</sup>" },
"note_number": "13",
"notes": [ "C\u2020<sup>2</sup>", "Ru I\u2020", "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:812",
"gpid": "adf:1693"
},
{ "name": "BT-7 M37",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"capabilities2": { "C": "4\u2020<sup>3</sup>" },
"note_number": "14",
"notes": [ "C\u2020<sup>3</sup>", "Ru D\u2020<sup>2</sup>", "Ru I\u2020", "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:813",
"gpid": "adf:1685"
},
{ "name": "T-26A",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"capabilities2": { "AP": 7, "C": "6\u2020<sup>3</sup>", "s": 9 },
"note_number": "15\u2020",
"notes": [ "B", "C\u2020<sup>3</sup>", "Ru D\u2020<sup>2</sup>", "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:814",
"gpid": "adf:1695"
},
{ "name": "BT-7A",
"type": "LT",
"CS#": 3,
"capabilities2": { "AP": 7, "C": "6\u2020<sup>2</sup>", "s": 9 },
"note_number": "16\u2020",
"notes": [ "B", "C\u2020<sup>2</sup>", "Ru M\u2020<sup>1</sup>" ],
"id": "ru/v:815",
"gpid": "adf:1689"
},
{ "name": "BA-6",
"type": "AC",
"no_radio": "\u00ae",
"CS#": 4,
"capabilities2": { "A": [ [4,2], [5,3] ], "C": "4\u2020" },
"note_number": "17\u2020",
"id": "ru/v:816",
"gpid": "adf:1726"
},
{ "name": "SU-12",
"type": "SPAtr",
"CS#": 4,
"capabilities2": { "AP": 7, "C": "6\u2020<sup>2</sup>", "s": 8 },
"note_number": "18\u2020",
"notes": [ "B", "C\u2020<sup>2</sup>", "Ru F\u2020<sup>1</sup>" ],
"id": "ru/v:817",
"gpid": "adf:1724"
}
],
"ordnance": [
{ "name": "37mm PTP obr. 30",
"type": "AT",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "C": "5\u2020" },
"note_number": "1",
"notes": [ "B\u2020" ],
"id": "ru/o:800",
"gpid": "adf:1824"
},
{ "name": "37mm PP obr. 15R",
"type": "INF",
"capabilities": [ "NT", "QSU", "h-d" ],
"capabilities2": { "C": "5\u2020" },
"note_number": "2",
"notes": [ "B\u2020" ],
"id": "ru/o:801",
"gpid": "adf:1822"
},
{ "name": "76.2mm PP obr. 27",
"type": "INF",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "H": 6, "s": 8, "C": "6\u2020" },
"note_number": "3",
"notes": [ "A", "B\u2020", "Ru A" ],
"id": "ru/o:802",
"gpid": "adf:1823"
}
]
}
}

@ -0,0 +1,938 @@
{
"extensionId": "adf",
"version": "4.03",
"id_range": [ 900, 999 ],
"japanese": {
"vehicles": [
{ "name": "FT-17M Ko(f)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "1\u2020",
"notes": [ "A", "Fr C", "Ru M\u2020" ],
"comments": [ "1 MP minimum road movement rate, even if CE." ],
"id": "ja/v:900",
"gpid": "adf:278"
},
{ "name": "FT-17C Ko(f)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "2\u2020",
"notes": [ "A", "B", "Fr C", "Ru M\u2020" ],
"comments": [ "1 MP minimum road movement rate, even if CE." ],
"id": "ja/v:901",
"gpid": "adf:280"
},
{ "name": "NC-27M Otsu(f)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "3\u2020",
"notes": [ "A", "Fr C", "Ge H\u2020" ],
"comments": [ "1 MP minimum road movement rate, even if CE." ],
"id": "ja/v:902",
"gpid": "adf:282"
},
{ "name": "NC-27C Otsu(f)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "4\u2020",
"notes": [ "A", "B", "Fr C", "Ge H\u2020" ],
"comments": [ "1 MP minimum road movement rate, even if CE." ],
"id": "ja/v:903",
"gpid": "adf:284"
},
{ "name": "Type 88 LAV(b)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "5",
"notes": [ "A", "AllM D", "Ch H\u2020" ] ,
"id": "ja/v:904",
"gpid": "adf:286"
},
{ "name": "VCL(b)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "6\u2020",
"notes": [ "A", "C", "Ru M\u2020<sup>1</sup>" ],
"id": "ja/v:905",
"gpid": "adf:288"
},
{ "name": "Type 98 Ke-Ni",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"note_number": "7\u2020",
"notes": [ "Jp C" ],
"id": "ja/v:906",
"gpid": "adf:316"
},
{ "name": "Type 2 Ke-To",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"note_number": "8\u2020",
"notes": [ "Jp C" ],
"id": "ja/v:907",
"gpid": "adf:318"
},
{ "name": "M3(a)",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 4,
"note_number": "9",
"notes": [ "A", "B", "C", "Jp A\u2020", "US B\u2020<sup>1</sup>" ],
"id": "ja/v:908",
"gpid": "adf:320"
},
{ "name": "Stuart I(a)",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 4,
"capabilities2": { "sD": 4 },
"note_number": "10",
"notes": [ "A", "B", "C", "Jp A\u2020" ],
"id": "ja/v:909",
"gpid": "adf:322"
},
{ "name": "Type 97B Shi-Ki",
"type": "MT",
"CS#": 4,
"capabilities2": { "sD": 6 },
"note_number": "11\u2020",
"comments": [ "Moved/Motion: Fire NA" ],
"id": "ja/v:910",
"gpid": "adf:324"
},
{ "name": "Type 3 Ka-Chi",
"type": "MT",
"CS#": 5,
"capabilities2": { "sD": 5 },
"note_number": "12",
"notes": [ "Jp 6\u2020" ],
"comments": [ "Refer to Japanese Note 6 on Pontoons for amphibious data and wreck." ],
"id": "ja/v:911",
"gpid": "adf:326"
},
{ "name": "Type 3 Ka-Chi (without pontoons)",
"type": "MT",
"CS#": 5,
"capabilities2": { "sD": 5 },
"note_number": "12",
"notes": [ "Jp 6\u2020" ],
"id": "ja/v:912",
"gpid": "adf:328"
},
{ "name": "Armored Eng Veh SS",
"type": "MTv",
"no_radio": "\u00ae",
"CS#": 5,
"capabilities2": { "sD": 7 },
"note_number": "13\u2020",
"comments": [ "Has 2 side FT with limited traverse.", "May remove wire as if a Dozer (B24.7)." ],
"id": "ja/v:913",
"gpid": "adf:331"
},
{ "name": "Type 2587(b)",
"type": "AC",
"no_radio": "\u00ae",
"CS#": 5,
"capabilities": [ "2 TK DR's\u2020" ],
"note_number": "14\u2020",
"notes": [ "Ch F\u2020" ],
"comments": [ "REV x4" ],
"id": "ja/v:914",
"gpid": "adf:333"
},
{ "name": "Marmon-Herrington III(b)",
"type": "AC",
"no_radio": "\u00ae",
"CS#": 4,
"capabilities": [ "2 TK DR's\u2020" ],
"note_number": "15\u2020",
"notes": [ "C", "Ch F\u2020" ],
"id": "ja/v:915",
"gpid": "adf:335"
},
{ "name": "Type 1 Ho-Ha",
"type": "ht",
"CS#": 5,
"note_number": "16\u2020",
"comments": [ "2MA&amp;2&amp;2" ],
"id": "ja/v:916",
"gpid": "adf:337"
},
{ "name": "M3A1 Scout Car(a)",
"no_radio": "\u00ae",
"CS#": 4,
"note_number": "17",
"notes": [ "A", "C", "AllM 34\u2020<sup>2</sup>", "Jp A\u2020<sup>1</sup>", "Ch F\u2020" ],
"comments": [ "Refer to Allied Minor Vehicle Note 34 [EXC: does not come with an inherent HS]." ],
"id": "ja/v:917",
"gpid": "adf:339"
},
{ "name": "Carrier A(b)",
"type": "APC",
"no_radio": "\u00ae",
"CS#": 3,
"note_number": "18",
"notes": [ "A", "C", "Br Note 64\u2020" ],
"comments": [ "The Inherent Crew is a 2-3-7 HS (D6.82).", "Refer to British Vehicle Note 64 for switching the BMG to an AAMG." ],
"id": "ja/v:918",
"gpid": "adf:341"
},
{ "name": "Type 2 Ho-I",
"type": "SPA",
"CS#": 5,
"capabilities2": { "WP": 5, "sD": 5 },
"note_number": "19",
"id": "ja/v:919",
"gpid": "adf:343"
},
{ "name": "Type 1 Ho-Ni II",
"type": "SPA",
"CS#": 5,
"capabilities2": { "H": 5 },
"note_number": "20\u2020",
"id": "ja/v:920",
"gpid": "adf:345"
},
{ "name": "M3 75 SPA(a)",
"type": "SPAht",
"no_radio": "\u00ae",
"CS#": 4,
"note_number": "21",
"notes": [ "B", "C", "US U", "Ru M\u2020" ],
"id": "ja/v:921",
"gpid": "adf:347"
},
{ "name": "Type 97B Chi-Ha",
"type": "SPA",
"CS#": 4,
"capabilities2": { "H": 9 },
"note_number": "22",
"id": "ja/v:922",
"gpid": "adf:349"
},
{ "name": "Type 3 Ho-Ni III",
"type": "TD",
"CS#": 5,
"capabilities2": { "WP": 5 },
"note_number": "23",
"id": "ja/v:923",
"gpid": "adf:351"
},
{ "name": "Type 97 AA Truck",
"type": "AAtr",
"CS#": 7,
"note_number": "24\u2020",
"comments": [ "MA: AA" ],
"id": "ja/v:924",
"gpid": "adf:353"
},
{ "name": "Type 98 MCT",
"type": "AAtr",
"CS#": 5,
"note_number": "25",
"notes": [ "Br H", "Ge A\u2020" ],
"comments": [ "Bnd FF NA VCA", "MA: AA", "(Un)load: Portee" ],
"id": "ja/v:925",
"gpid": "adf:355"
}
],
"ordnance": [
{ "name": "Type 45 (1912) 24cm Howitzer",
"type": "ART",
"capabilities": [ "NT", "NM", "No IF", "HE TK# 23", "Tow NA" ],
"note_number": "1\u2020",
"notes": [ "Jp D\u2020<sup>1</sup>" ],
"id": "ja/o:900",
"gpid": "adf:274"
},
{ "name": "Type 91 Vickers AA Gun",
"type": "AA",
"capabilities": [ "AP TK# 8" ],
"capabilities2": { "LF": [ "40(4)", "1 ROF", "B10"] },
"note_number": "2\u2020",
"id": "ja/o:901",
"gpid": "adf:275"
},
{ "name": "Type 91 Twin-mount Vickers AA Gun",
"type": "AA",
"capabilities": [ "AP TK# 8", "2 TK DR's\u2020" ],
"capabilities2": { "LF": [ "40(8)", "1 ROF", "B10" ] },
"note_number": "3\u2020",
"id": "ja/o:902",
"gpid": "adf:276"
},
{ "name": "Type 4 75mm AA",
"type": "AA",
"capabilities": [ "T" ],
"capabilities2": { "LF": [ "75", "1 ROF", "B11" ], "AP": [ [6,"44-"] ] },
"note_number": "4\u2020",
"notes": [ "Ch G"],
"id": "ja/o:903",
"gpid": "adf:277"
}
]
},
"chinese": {
"vehicles": [
{ "name": "FT-17(f)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "1\u2020",
"notes": [ "A", "Fr C", "Ru M\u2020" ],
"id": "ch/v:900",
"gpid": "adf:233"
},
{ "name": "Type 94 Lt Armored Vehicle(j)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "2",
"notes": [ "A", "D", "Ru M\u2020" ],
"id": "ch/v:901",
"gpid": "adf:235"
},
{ "name": "Type 97A Te-Ke(j)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "3",
"notes": [ "A", "D" ],
"id": "ch/v:902",
"gpid": "adf:237"
},
{ "name": "Type 97B Te-Ke(j)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "4",
"notes": [ "A", "C", "D" ],
"id": "ch/v:903",
"gpid": "adf:239"
},
{ "name": "Type 95 Ha-Go(j)",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"note_number": "5",
"notes": [ "A", "B\u2020", "C", "D", "Jp 5\u2020<sup>1</sup>" ],
"id": "ch/v:904",
"gpid": "adf:241"
},
{ "name": "BT-5(r)",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"note_number": "6",
"notes": [ "A", "B\u2020<sup>1</sup>", "Ru M\u2020" ],
"id": "ch/v:905",
"gpid": "adf:243"
},
{ "name": "Type 89A Chi-Ro(j)",
"type": "MT",
"no_radio": "\u00ae",
"CS#": 4,
"note_number": "7",
"notes": [ "A", "B\u2020", "C", "D" ],
"id": "ch/v:906",
"gpid": "adf:245"
},
{ "name": "Type 97A Chi-Ha(j)",
"type": "MT",
"no_radio": "\u00ae",
"CS#": 4,
"note_number": "8",
"notes": [ "A", "B\u2020", "C", "D" ],
"id": "ch/v:907",
"gpid": "adf:247"
},
{ "name": "Type 31 Armored Car",
"type": "AC",
"no_radio": "\u00ae",
"CS#": 3,
"note_number": "9\u2020",
"notes": [ "B\u2020<sup>1</sup>", "Ch F\u2020" ],
"id": "ch/v:908",
"gpid": "adf:249"
}
]
},
"dutch": {
"vehicles": [
{ "name": "Alvis-Straussler AC3D",
"type": "AC",
"no_radio": "\u00ae",
"CS#": 4,
"note_number": "1\u2020<sup>2</sup>",
"notes": [ "AllM V\u2020", "Ch F\u2020<sup>1</sup>" ],
"comments": [ "CMG uses AP TK 12.7 column." ],
"id": "du/v:900",
"gpid": "adf:10"
},
{ "name": "Braat Overvalwagen APC",
"type": "AC",
"no_radio": "\u00ae",
"CS#": 5,
"note_number": "2\u2020<sup>2</sup>",
"notes": [ "A\u2020<sup>1</sup>", "Ch F\u2020" ],
"comments": [ "CMG: VCA only", "Mounted Fire: Full FP" ],
"id": "du/v:901",
"gpid": "adf:12"
},
{ "name": "Braat Overvalwagen AA",
"type": "AC",
"no_radio": "\u00ae",
"CS#": 4,
"note_number": "3\u2020<sup>1</sup>",
"notes": [ "AllM AA\u2020<sup>2</sup>", "Ch F\u2020" ],
"comments": [ "AAMG uses AP TK 12.7 column." ],
"id": "du/v:902",
"gpid": "adf:14"
},
{ "name": "Kanonwagen Armored Car",
"type": "AC",
"no_radio": "\u00ae",
"CS#": 4,
"note_number": "4\u2020\u2020<sup>1</sup>",
"notes": [ "A\u2020<sup>2</sup>", "AllM V\u2020", "Ch F\u2020<sup>1</sup>" ],
"comments": [ "VCA MA: VCA &le; level NA", "CMG may only fire within VCA.", "Rear turret is unarmored when TCA = VCA." ],
"id": "du/v:903",
"gpid": "adf:16"
},
{ "name": "Stadswacht Overvalwagen APC",
"type": "AC",
"CS#": 6,
"note_number": "5\u2020<sup>1</sup>",
"notes": [ "Ch F\u2020" ],
"comments": [ "Mounted Fire: Full FP", "Passengers may fire 2 LMG's without losing inherent FP." ],
"id": "du/v:904",
"gpid": "adf:18"
},
{ "name": "PLA Wagen",
"type": "AAtr",
"CS#": 5,
"note_number": "6\u2020",
"notes": [ "AllM AA\u2020<sup>1</sup>" ],
"comments": [ "AP TK: use 12.7 column." ],
"id": "du/v:905",
"gpid": "adf:20"
}
],
"ordnance": [
{ "name": "Brandt 47mm Mortar",
"type": "MTR",
"note_number": "1",
"id": "du/o:900",
"gpid": "adf:1948"
},
{ "name": "Krupp 75mm M1933 Field Gun",
"type": "ART",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "C": "4\u2020" },
"note_number": "2",
"notes": [ "US C\u2020" ],
"id": "du/o:901",
"gpid": "adf:5"
},
{ "name": "Bofors 105mm M1924 Howitzer",
"type": "ART",
"capabilities": [ "T" ],
"capabilities2": { "LF": [ "NT", "B11" ] },
"note_number": "3",
"id": "du/o:902",
"gpid": "adf:6"
},
{ "name": "20mm Rheinmetall AA",
"type": "AA",
"capabilities": [ "T" ],
"capabilities2": { "LF": [ "20\u2020", "2 ROF", "B11", "NT" ] },
"note_number": "4",
"notes": [ "Gr C\u2020" ],
"id": "du/o:903",
"gpid": "adf:7"
},
{ "name": "Bofors 80mm M29/38",
"type": "AA",
"capabilities": [ "T" ],
"capabilities2": { "LF": [ "80\u2020", "1 ROF", "B11" ] },
"capabilities_other": [ "AP TK# 17" ],
"note_number": "6",
"notes": [ "AxM G\u2020" ],
"id": "du/o:904",
"gpid": "adf:9"
}
]
},
"thai": {
"vehicles": [
{ "name": "VCL Mk VI(b)",
"type": "Tt",
"no_radio": "\u00ae",
"CS#": 2,
"note_number": "1",
"notes": [ "A", "Ch H", "AllM D" ],
"id": "th/v:900",
"gpid": "adf:92"
},
{ "name": "Vickers 6-Ton MkE-B(b)",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"note_number": "2",
"notes": [ "A" ],
"id": "th/v:901",
"gpid": "adf:94"
},
{ "name": "Type 83(j)",
"type": "LT",
"no_radio": "\u00ae",
"CS#": 3,
"note_number": "3",
"notes": [ "A", "E\u2020" ],
"comments": [ "Refer to Japanese Vehicle Note 5 for Rear MG CA restrictions." ],
"id": "th/v:902",
"gpid": "adf:96"
},
{ "name": "Vickers 6-Ton AA(b)",
"type": "SPAA",
"no_radio": "\u00ae",
"CS#": 3,
"capabilities": [ "AP TK# 8" ],
"note_number": "4",
"notes": [ "A", "AllM AA\u2020" ],
"id": "th/v:903",
"gpid": "adf:98"
},
{ "name": "Citroen-Kegresse P17(f)",
"type": "ht",
"CS#": 3,
"note_number": "5\u2020",
"notes": [ "A" ],
"id": "th/v:904",
"gpid": "adf:100"
},
{ "name": "Vickers Morris M1930(b)",
"type": "AC",
"no_radio": "\u00ae",
"CS#": 4,
"note_number": "6",
"notes": [ "Br X\u2020", "Ch F\u2020" ],
"comments": [ "REV x4" ],
"id": "th/v:905",
"gpid": "adf:102"
}
],
"ordnance": [
{ "name": "50mm Krupp M1906",
"type": "INF",
"capabilities": [ "NT", "QSU", "h-d" ],
"comments": [ "No Gunshield." ],
"note_number": "4",
"id": "th/o:900",
"gpid": "adf:81"
},
{ "name": "75mm Krupp M1908",
"type": "INF",
"capabilities": [ "NT", "QSU", "h-d" ],
"capabilities2": { "AP": 8, "WP": 5 },
"note_number": "5",
"id": "th/o:901",
"gpid": "adf:82"
},
{ "name": "Vickers 12.7mm AA Class D",
"type": "AA",
"capabilities": [ "T", "QSU" ],
"note_number": "8",
"id": "th/o:902",
"gpid": "adf:85"
},
{ "name": "Bofors M30 75mm AA",
"type": "AA",
"capabilities": [ "T" ],
"capabilities2": { "LF": [ "75", "1 ROF", "B11" ], "AP":6 },
"note_number": "9",
"notes": [ "Ch G\u2020"],
"id": "th/o:902",
"gpid": "adf:86"
}
]
},
"indonesian": {
"vehicles": [
{ "name": "Type 94 Light Armoured Vehicle (j)",
"type": "Tt",
"CS#": 2,
"note_number": "1",
"notes": [ "C", "Ru M\u2020" ],
"id": "ina/v:900",
"gpid": "adf:123"
},
{ "name": "Type 97A Te-Ke Light Armored Vehicle (j)",
"type": "Tt",
"CS#": 2,
"note_number": "2",
"notes": [ "C" ],
"id": "ina/v:901",
"gpid": "adf:125"
},
{ "name": "Type 97B Te-Ke Light Armored Vehicle (j)",
"type": "Tt",
"CS#": 2,
"note_number": "3",
"notes": [ "C" ],
"id": "ina/v:902",
"gpid": "adf:127"
},
{ "name": "Universal Carrier (b)",
"type": "Tt",
"CS#": 3,
"note_number": "4",
"notes": [ "C" ],
"id": "ina/v:903",
"gpid": "adf:129"
},
{ "name": "Type 95 Ha-Go(j)",
"type": "LT",
"CS#": 3,
"note_number": "5",
"notes": [ "B", "C", "D\u2020", "E\u2020<sup>1</sup>" ],
"comments": [ "Refer to Japanese Vehicle Note 5 for Rear MG CA restrictions." ],
"id": "ina/v:904",
"gpid": "adf:131"
},
{ "name": "VCL M1936 (b)",
"type": "aTt",
"CS#": 2,
"note_number": "6",
"notes": [ "C" ],
"id": "ina/v:905",
"gpid": "adf:133"
},
{ "name": "CTLS-4 (a)",
"type": "Tt",
"CS#": 2,
"note_number": "7",
"notes": [ "C", "Ru M\u2020", "AllM 26\u2020<sup>1</sup>" ],
"comments": [ "Port VCA NA (see Allied Minor Vehicle Note 26)." ],
"id": "ina/v:906",
"gpid": "adf:135"
},
{ "name": "Marmon-Herrington III Armored Car (b)",
"type": "AC",
"CS#": 4,
"capabilities": [ "2 TK DR's\u2020" ],
"note_number": "8",
"notes": [ "Ch F\u2020" ],
"id": "ina/v:907",
"gpid": "adf:137"
},
{ "name": "M3A1 Scout Car (a)",
"type": "SC",
"CS#": 4,
"note_number": "8",
"capabilities_other": [ "9PP" ],
"note_number": "9\u2020",
"notes": [ "D\u2020<sup>1</sup>", "AllM 34\u2020<sup>2</sup>" ],
"comments": [ "AP TK: use 12.7 column.", "Refer to Allied Minor Vehicle Note 34 [EXC: does not come with an inherent HS]." ],
"id": "ina/v:908",
"gpid": "adf:139"
},
{ "name": "Braat Overvalwagen AA",
"type": "AC",
"CS#": 4,
"note_number": "8",
"note_number": "10\u2020<sup>1</sup>",
"notes": [ "Ch F\u2020", "AllM AA\u2020<sup>1</sup>" ],
"comments": [ "AP TK: use 12.7 column." ],
"id": "ina/v:909",
"gpid": "adf:14"
},
{ "name": "Braat Overvalwagen APC",
"type": "AC",
"CS#": 5,
"note_number": "8",
"capabilities_other": [ "12PP" ],
"note_number": "11\u2020<sup>2</sup>",
"notes": [ "D\u2020<sup>1</sup>", "Ch F\u2020" ],
"comments": [ "CMG: VCA only", "Mounted Fire: Full FP" ],
"id": "ina/v:910",
"gpid": "adf:12"
},
{ "name": "Alvis-Straussler AC3D",
"type": "AC",
"CS#": 4,
"note_number": "8",
"note_number": "12\u2020<sup>1</sup>",
"notes": [ "D\u2020<sup>2</sup>", "Ru M\u2020" ],
"comments": [ "AP TK: use 12.7 column." ],
"id": "ina/v:911",
"gpid": "adf:10"
},
{ "name": "PLA Wagen",
"type": "AAtr",
"CS#": 5,
"note_number": "13\u2020<sup>1</sup>",
"notes": [ "AllM AA\u2020<sup>1</sup>", "Ch F\u2020" ],
"comments": [ "AP TK: use 12.7 column." ],
"id": "ina/v:912",
"gpid": "adf:147"
}
],
"ordnance": [
{ "name": "Type 89 Heavy Grenade Launcher",
"type": "MTR",
"capabilities2": { "WP": [ [5,5] ], "S": [ [6,5] ] },
"capabilities_other": [ "4PP" ],
"note_number": "1",
"id": "ina/o:900",
"gpid": "adf:75"
},
{ "name": "Type 97 Automatic Gun",
"type": "ATR",
"capabilities": [ "Long Range is NA" ],
"capabilities_other": [ "5PP" ],
"note_number": "2",
"notes": [ "Jp A" ],
"id": "ina/o:901",
"gpid": "adf:77"
},
{ "name": "Year-11 Flat-Trajectory INF Gun",
"type": "INF",
"capabilities_other": [ "5PP (3PP dm)" ],
"note_number": "3",
"notes": [ "Jp A" ],
"id": "ina/o:902",
"gpid": "adf:76"
},
{ "name": "Type 94 Rapid-Fire Gun",
"type": "AT",
"capabilities": [ "NT", "QSU", "h-d" ],
"note_number": "4",
"notes": [ "Jp A" ],
"id": "ina/o:903",
"gpid": "adf:87"
},
{ "name": "Type 1 Machine-Moved Gun",
"type": "AT",
"capabilities_other": [ "NT", "QSU" ],
"note_number": "5",
"id": "ina/o:904",
"gpid": "adf:88"
},
{ "name": "Year-38 Type Field Gun (Improved)",
"type": "ART",
"capabilities2": { "WP": [ [5,5] ] },
"capabilities_other": [ "NT", "QSU", "h-d", "AP TK#12" ],
"note_number": "6",
"id": "ina/o:905",
"gpid": "adf:89"
}
]
},
"anzac": {
"vehicles": [
{ "name": "Matilda Frog",
"type": "HTv",
"CS#": 5,
"capabilities2": { "sD": "6" },
"note_number": "1\u2020",
"id": "anz/v:900",
"gpid": "adf:211"
},
{ "name": "Matilda II(L)",
"type": "HT",
"CS#": 5,
"capabilities2": { "sD": "6" },
"note_number": "2\u2020",
"notes": [ "Br B\u2020<sup>1</sup>" ],
"id": "anz/v:901",
"gpid": [ "adf:213", "adf:215" ]
},
{ "name": "Matilda II CS(L)",
"type": "HT",
"CS#": 5,
"capabilities2": { "s": "9", "sD": "6" },
"note_number": "3\u2020",
"notes": [ "Br S\u2020<sup>1</sup>" ],
"id": "anz/v:902",
"gpid": [ "adf:217", "adf:219" ]
},
{ "name": "Valentine III CS",
"type": "HT",
"CS#": 5,
"capabilities2": { "s": "9", "sM": "8" },
"note_number": "4\u2020",
"notes": [ "Br S\u2020<sup>1</sup>" ],
"id": "anz/v:903",
"gpid": "adf:221"
}
]
},
"american": {
"vehicles": [
{ "name": "LVT(A)1(L)",
"type": "aLT",
"CS#": 6,
"capabilities2": { "C": [ [10,"P"], "\u2020<sup>2</sup>" ] },
"note_number": "1",
"notes": [ "US 46\u2020<sup>3</sup>", "C\u2020<sup>2</sup>", "G", "H", "P", "T\u2020", "X" ],
"comments": [ "Refer to U.S. Vehicle Note 46 and diagram for the AAMG." ],
"id": "am/v:900",
"gpid": "adf:196"
},
{ "name": "LVT(A)2F",
"type": "aAPCv",
"CS#": 7,
"note_number": "2",
"notes": [ "US H", "P", "Q\u2020<sup>1</sup>", "T\u2020<sup>1</sup>"],
"id": "am/v:901",
"gpid": "adf:198"
},
{ "name": "LVT4F",
"type": "aAPCv",
"cs#": 7,
"note_number": "3\u2020<sup>2</sup>",
"notes": [ "US 51\u2020", "D\u2020<sup>3</sup>", "H", "P", "T\u2020<sup>1</sup>"],
"id": "am/v:902",
"gpid": "adf:200"
},
{ "name": "LVT(A)2FS",
"type": "aAPCv",
"CS#": 7,
"note_number": "4\u2020<sup>1</sup>",
"notes": [ "US D\u2020<sup>2</sup>", "H", "P", "T\u2020"],
"id": "am/v:903",
"gpid": "adf:202"
},
{ "name": "LVT4(L)",
"type": "aAPC",
"CS#": 7,
"note_number": "5",
"notes": [ "US 51\u2020", "D\u2020<sup>4</sup>", "H", "Q\u2020<sup>3</sup>", "T\u2020<sup>1</sup>", "X\u2020<sup>2</sup>"],
"id": "am/v:904",
"gpid": "adf:205"
},
{ "name": "LVT(A)4(L)",
"type": "aLT",
"CS#": 6,
"capabilities2": { "C": [ [7,"P"], "\u2020<sup>3</sup>" ], "H": 8, "WP": 9 },
"note_number": "6",
"notes": [ "US 46\u2020<sup>2</sup>", "C\u2020<sup>3</sup>", "G", "H", "P", "T\u2020", "X\u2020<sup>1</sup>"],
"id": "am/v:905",
"gpid": "adf:207"
},
{ "name": "M3A1F",
"type": "LTv",
"CS#": 4,
"capabilities2": { "C": [ [7,"P"], "\u2020" ] },
"note_number": "7",
"notes": [ "US C\u2020", "G", "P" ],
"id": "am/v:906",
"gpid": "adf:152"
},
{ "name": "M5A1 Satan",
"CS#": 4,
"note_number": "8\u2020",
"notes": [ "US P" ],
"id": "am/v:907",
"gpid": "adf:158"
},
{ "name": "M4A2F",
"type": "MTv",
"cs#": 5,
"capabilities2": { "s": 5, "WP": 7, "sM": 5 },
"note_number": "9",
"notes": [ "US G", "P", "R" ],
"id": "am/v:908",
"gpid": "adf:168"
},
{ "name": "M4A2(L)F",
"type": "MTv",
"cs#": 6,
"capabilities2": { "s": 5, "WP": 7, "sM": 8 },
"note_number": "10",
"notes": [ "US G", "P", "R" ],
"id": "am/v:909",
"gpid": "adf:170"
},
{ "name": "Carrier .50cal(b)",
"type": "APC",
"CS#": 3,
"note_number": "11\u2020",
"id": "am/v:910",
"gpid": "adf:209"
}
],
"ordnance": [
{ "name": "20mm Oerlikon Mk4",
"type": "AA",
"capabilities": [ "T", "2 TK DR's\u2020" ],
"comments": [ "Multiple Hits (C3.8) are NA." ],
"note_number": "1\u2020",
"notes": [ "US P" ],
"id": "am/o:900",
"gpid": "adf:34"
}
]
}
}

@ -3,6 +3,8 @@
"extensionId": "f97",
"version": "v1.1",
"russian": {
"vehicles": [
{
@ -19,3 +21,5 @@
]
}
}

@ -2,7 +2,8 @@
{ "name": "DBT",
"type": "MTR",
"capabilities_other": [ "3PP", "\u2020" ],
"capabilities_other": [ "3PP" ],
"comments": [ "\u2020" ],
"note_number": "6\u2020",
"notes": [ "A", "B", "D" ],
"id": "be/o:000",
@ -29,7 +30,7 @@
{ "name": "7.6cm FRC",
"type": "INF",
"capabilities": [ "NT", "QSU" ],
"capabilities_other": [ "\u2020" ],
"comments": [ "\u2020" ],
"note_number": "8\u2020",
"notes": [ "A", "B" ],
"id": "be/o:003",

@ -35,7 +35,8 @@
},
{ "name": "65mm wz.06",
"type": "INF",
"capabilities": [ "NT", "QSU", "no Gunshield", "h-d" ],
"capabilities": [ "NT", "QSU", "h-d" ],
"comments": [ "No Gunshield." ],
"note_number": "27\u2020",
"notes": [ "A", "Gr", "P", "Y" ],
"id": "alc/o:004",
@ -95,7 +96,8 @@
},
{ "name": "Mitrailleuse de 13.2 CAJ mle 30",
"type": "AA",
"capabilities": [ "T", "2 TK DR\u2020", "Towing NA\u2020<sup>1</sup>" ],
"capabilities": [ "T", "2 TK DR\u2020" ],
"comments": [ "Towing NA\u2020<sup>1</sup>" ],
"note_number": "34\u2020",
"notes": [ "T\u2020<sup>1</sup>", "B", "Gr", "Y" ],
"id": "alc/o:011",

@ -162,8 +162,9 @@
},
{ "name": "M1918M1 155mm Gun",
"type": "ART",
"capabilities": [ "NT", "RFNM", "AP4\u2020<sup>1</sup>", "no IF" ],
"capabilities": [ "NT", "RFNM", "AP4\u2020<sup>1</sup>" ],
"capabilities2": { "WP": 8 },
"comments": [ "No IF." ],
"note_number": "19\u2020",
"notes": [ "A\u2020<sup>1</sup>", "N" ],
"id": "am/o:018",
@ -171,8 +172,9 @@
},
{ "name": "M1A1 155mm Gun",
"type": "ART",
"capabilities": [ "NT", "RFNM", "AP4\u2020<sup>1</sup>", "no IF" ],
"capabilities": [ "NT", "RFNM", "AP4\u2020<sup>1</sup>" ],
"capabilities2": { "s": [ [7,5] ], "WP": 8 },
"comments": [ "No IF." ],
"note_number": "20\u2020",
"notes": [ "A\u2020<sup>1</sup>" ],
"id": "am/o:019",
@ -180,7 +182,8 @@
},
{ "name": "M1 8-in. Howitzer",
"type": "ART",
"capabilities": [ "NT", "RFNM", "no IF" ],
"capabilities": [ "NT", "RFNM" ],
"comments": [ "No IF." ],
"note_number": "21\u2020",
"id": "am/o:020",
"gpid": 898

@ -10,8 +10,9 @@
},
{ "name": "Madsen M-35",
"type": "AT",
"capabilities": [ "NT", "QSU", "no Gunshield" ],
"capabilities": [ "NT", "QSU" ],
"capabilities_other": [ "R2", "IFE=B10\u2020" ],
"comments": [ "No Gunshield." ],
"note_number": "38\u2020",
"notes": [ "T\u2020<sup>1</sup>" ],
"id": "bu/o:001",
@ -58,7 +59,8 @@
},
{ "name": "D/30 Krupp",
"type": "ART",
"capabilities": [ "NT", "RFNM", "no IF" ],
"capabilities": [ "NT", "RFNM" ],
"comments": [ "No IF." ],
"note_number": "43",
"id": "bu/o:007",
"gpid": 3781

@ -70,7 +70,8 @@
},
{ "name": "Bohler M35",
"type": "AT",
"capabilities": [ "NT", "QSU", "no Gunshield" ],
"capabilities": [ "NT", "QSU" ],
"comments": [ "No Gunshield." ],
"note_number": "52\u2020",
"notes": [ "A", "R", "H", "S" ],
"id": "axc/o:008",
@ -200,8 +201,9 @@
},
{ "name": "Skoda M15/16",
"type": "ART",
"capabilities": [ "NT", "no IF" ],
"capabilities": [ "NT" ],
"capabilities2": { "s": 6 },
"comments": [ "No IF." ],
"note_number": "67\u2020",
"notes": [ "S", "C" ],
"id": "axc/o:023",

@ -2,7 +2,8 @@
{ "name": "Canonne da 65/17",
"type": "INF",
"capabilities": [ "NT", "no Gunshield" ],
"capabilities": [ "NT" ],
"comments": [ "No Gunshield." ],
"note_number": "35",
"notes": [ "A" ],
"id": "cr/o:000",

@ -27,7 +27,8 @@
{ "name": "Resita M43",
"type": "AT",
"capabilities": [ "NT", "QSU" ],
"capabilities_other": [ "Blk TH", "AP TK#18\u2020" ],
"capabilities_other": [ "AP TK#18\u2020" ],
"comments": [ "Blk TH" ],
"note_number": "4\u2020",
"id": "ro/o:003",
"gpid": 3742
@ -43,7 +44,8 @@
},
{ "name": "Breda 47",
"type": "INF",
"capabilities": [ "NT", "QSU", "no Gunshield" ],
"capabilities": [ "NT", "QSU" ],
"comments": [ "No Gunshield." ],
"note_number": "6\u2020",
"notes": [ "A" ],
"id": "ro/o:005",
@ -142,8 +144,9 @@
},
{ "name": "Skoda M28 NOa",
"type": "ART",
"capabilities": [ "NM", "no IF" ],
"capabilities": [ "NM" ],
"capabilities_other": [ "ST" ],
"comments": [ "No IF." ],
"note_number": "18",
"id": "ro/o:017",
"gpid": 3756

@ -37,7 +37,7 @@
{ "name": "Skoda 47L40(t)",
"type": "AA",
"capabilities": [ "T", "QSU" ],
"capabilities_other": [ "AA Fire ROF 2\u2020" ],
"comments": [ "AA Fire ROF 2\u2020" ],
"note_number": "32\u2020",
"notes": [ "E" ],
"id": "sl/o:004",

@ -31,7 +31,7 @@
"type": "MTR",
"capabilities": [ "NT" ],
"capabilities2": { "s": 8, "WP": 7 },
"capabilities_other": [ "Towed\u2020" ],
"comments": [ "Towed\u2020" ],
"note_number": "3\u2020",
"notes": [ "N", "P" ],
"id": "br/o:003",
@ -168,8 +168,8 @@
},
{ "name": "OBL 7.2-in. Howitzer Mk I",
"type": "ART",
"capabilities": [ "NT", "no IF" ],
"capabilities_other": [ "Acq. NA\u2020" ],
"capabilities": [ "NT" ],
"comments": [ "No IF.", "Acq. NA\u2020" ],
"note_number": "18\u2020",
"notes": [ "N", "P" ],
"id": "br/o:019",
@ -177,7 +177,8 @@
},
{ "name": "OBL 7.2-in. Howitzer Mk VI",
"type": "ART",
"capabilities": [ "NT", "RFNM", "no IF" ],
"capabilities": [ "NT", "RFNM" ],
"comments": [ "No IF." ],
"note_number": "19\u2020",
"notes": [ "P" ],
"id": "br/o:020",

@ -2,7 +2,8 @@
{ "name": "Type 27 Grenade Launcher",
"type": "MTR",
"capabilities_other": [ "2PP", "Air Bursts NA\u2020" ],
"capabilities_other": [ "2PP" ],
"comments": [ "Air Bursts NA\u2020" ],
"note_number": "1\u2020",
"notes": [ "A" ],
"id": "ch/o:000",
@ -115,7 +116,7 @@
{ "name": "37mm PP obr. 15R",
"type": "ART",
"capabilities": [ "NT", "QSU", "h-d" ],
"capabilities_other": [ "Low Ammo\u2020" ],
"comments": [ "Low Ammo\u2020" ],
"note_number": "7\u2020",
"notes": [ "<s>B</s>" ],
"id": "ch/o:013",
@ -123,7 +124,8 @@
},
{ "name": "Cannone da 70/15",
"type": "ART",
"capabilities": [ "NT", "QSU", "Acq. NA\u2020", "Low Ammo\u2020", "h-d" ],
"capabilities": [ "NT", "QSU", "h-d" ],
"comments": [ "Acq. NA\u2020", "Low Ammo\u2020" ],
"note_number": "7\u2020",
"notes": [ "A", "<s>B</s>" ],
"id": "ch/o:014",

@ -81,7 +81,8 @@
{ "name": "57mm Type 36 Recoilless Rifle",
"type": "RCL",
"capabilities2": { "H": 6, "WP": 5 },
"capabilities_other": [ "3PP", "crewed\u2020" ],
"capabilities_other": [ "3PP" ],
"comments": [ "crewed\u2020" ],
"note_number": "26\u2020<sup>1</sup>",
"notes": [ "R\u2020" ],
"id": "cvpa/o:010",
@ -90,7 +91,8 @@
{ "name": "75mm Type 52 Recoilless Rifle",
"type": "RCL",
"capabilities2": { "H": 6, "WP": 5 },
"capabilities_other": [ "5PP", "crewed\u2020" ],
"capabilities_other": [ "5PP" ],
"comments": [ "crewed\u2020" ],
"note_number": "27",
"notes": [ "R\u2020" ],
"id": "cvpa/o:011",
@ -133,7 +135,8 @@
{ "name": "Type 93 Twin-Mount High-Angle Machine Gun",
"type": "AA",
"capabilities": [ "T" ],
"capabilities_other": [ "2 TK DR\u2020", "Towing NA\u2020" ],
"capabilities_other": [ "2 TK DR\u2020" ],
"comments": [ "Towing NA\u2020" ],
"note_number": "32\u2020",
"notes": [ "A" ],
"id": "cvpa/o:016",

@ -45,14 +45,16 @@
},
{ "name": "Boys ATR(b)",
"type": "ATR",
"capabilities_other": [ "1PP", "\"British\"\u2020" ],
"capabilities_other": [ "1PP" ],
"comments": [ "\"British\"\u2020" ],
"note_number": "6\u2020",
"id": "fi/o:005",
"gpid": null
},
{ "name": "Lahti ATR",
"type": "ATR",
"capabilities_other": [ "4PP", "Light AA fire in 44+\u2020", "B30.35\u2020" ],
"capabilities_other": [ "4PP", "B30.35\u2020" ],
"comments": [ "Light AA fire in 44+\u2020" ],
"note_number": "7\u2020",
"notes": [ "A" ],
"id": "fi/o:006",
@ -60,8 +62,9 @@
},
{ "name": "20 PstK/40",
"type": "AT",
"capabilities": [ "NT", "QSU", "Towing NA\u2020<sup>1</sup>" ],
"capabilities": [ "NT", "QSU" ],
"capabilities_other": [ "R2", "IFE=B10" ],
"comments": [ "Towing NA\u2020<sup>1</sup>" ],
"note_number": "8\u2020",
"notes": [ "C\u2020<sup>1</sup>" ],
"id": "fi/o:007",
@ -174,8 +177,8 @@
},
{ "name": "87 K/95",
"type": "ART",
"capabilities": [ "NT", "QSU", "no IF", "h-d" ],
"capabilities_other": [ "Acq. NA\u2020" ],
"capabilities": [ "NT", "QSU", "h-d" ],
"comments": [ "No IF.", "Acq. NA\u2020" ],
"note_number": "21",
"notes": [ "F\u2020" ],
"id": "fi/o:020",
@ -183,7 +186,8 @@
},
{ "name": "90 K/77",
"type": "ART",
"capabilities": [ "NT", "QSU", "no IF", "Acq. NA\u2020<sup>1</sup>", "h-d" ],
"capabilities": [ "NT", "QSU", "h-d" ],
"comments": [ "No IF.", "Acq. NA\u2020<sup>1</sup>" ],
"note_number": "22\u2020",
"notes": [ "F\u2020<sup>1</sup>" ],
"id": "fi/o:021",
@ -225,7 +229,8 @@
},
{ "name": "107 K/77(r)",
"type": "ART",
"capabilities": [ "NT", "no IF", "Acq. NA\u2020<sup>1</sup>", "h-d" ],
"capabilities": [ "NT", "h-d" ],
"comments": [ "No IF.", "Acq. NA\u2020<sup>1</sup>" ],
"note_number": "27\u2020",
"notes": [ "B", "F\u2020<sup>1</sup>" ],
"id": "fi/o:026",
@ -268,8 +273,9 @@
},
{ "name": "7.62 ItKK/31-40",
"type": "AA",
"capabilities": [ "T", "QSU", "Towing NA\u2020<sup>1</sup>" ],
"capabilities": [ "T", "QSU" ],
"capabilities_other": [ "2 TK DR\u2020" ],
"comments": [ "Towing NA\u2020<sup>1</sup>" ],
"note_number": "32\u2020",
"notes": [ "C\u2020<sup>1</sup>" ],
"id": "fi/o:031",
@ -297,7 +303,7 @@
"type": "AA",
"capabilities": [ "T" ],
"capabilities2": { "LF": [ "NT", "20\u2020<sup>1</sup>", "2 ROF" ] },
"capabilities_other": [ "Road MP = 1\u2020" ],
"comments": [ "Road MP = 1\u2020" ],
"note_number": "35\u2020",
"notes": [ "A", "D", "G\u2020<sup>1</sup>" ],
"id": "fi/o:034",

@ -2,7 +2,8 @@
{ "name": "LG de 50 mle 37(f)",
"type": "MTR",
"capabilities_other": [ "2PP", "crewed\u2020" ],
"capabilities_other": [ "2PP" ],
"comments": [ "crewed\u2020" ],
"note_number": "1",
"notes": [ "A", "B", "C\u2020", "E" ],
"id": "fr/o:000",
@ -54,7 +55,8 @@
"type": "AT",
"capabilities": [ "h-d" ],
"capabilities2": { "LF": [ "NT" ], "HE": 7, "s": 6 },
"capabilities_other": [ "ST", "no shield" ],
"capabilities_other": [ "ST" ],
"comments": [ "no shield" ],
"note_number": "7",
"notes": [ "E" ],
"id": "fr/o:006",
@ -62,7 +64,8 @@
},
{ "name": "Canon de 37 mle 16 TR",
"type": "INF",
"capabilities_other": [ "5PP (3PP dm)", "crewed\u2020" ],
"capabilities_other": [ "5PP (3PP dm)" ],
"comments": [ "crewed\u2020" ],
"note_number": "8\u2020<sup>1</sup>",
"notes": [ "A", "C\u2020" ],
"id": "fr/o:007",
@ -70,7 +73,8 @@
},
{ "name": "Canon de 65 M mle 06",
"type": "INF",
"capabilities": [ "NT", "QSU", "no Gunshield", "h-d" ],
"capabilities": [ "NT", "QSU", "h-d" ],
"comments": [ "No Gunshield." ],
"note_number": "9\u2020",
"notes": [ "A", "P" ],
"id": "fr/o:008",
@ -136,14 +140,16 @@
},
{ "name": "Canon de 155 GPF",
"type": "ART",
"capabilities": [ "NT", "RFNM", "no IF" ],
"capabilities": [ "NT", "RFNM" ],
"comments": [ "No IF." ],
"note_number": "17\u2020",
"id": "fr/o:016",
"gpid": 1685
},
{ "name": "Mitrailleuse de 13.2 CAJ mle 30",
"type": "AA",
"capabilities": [ "T", "2 TK DR\u2020<sup>1</sup>", "Towing NA\u2020<sup>1</sup>" ],
"capabilities": [ "T", "2 TK DR\u2020<sup>1</sup>" ],
"comments": [ "Towing NA\u2020<sup>1</sup>" ],
"note_number": "18\u2020<sup>1</sup>",
"notes": [ "B", "G\u2020", "V" ],
"id": "fr/o:017",

@ -37,7 +37,7 @@
{ "name": "2.8cm sPzB 41",
"type": "AT",
"capabilities": [ "NT", "QSU" ],
"capabilities_other": [ "uses APCR TK Table\u2020" ],
"comments": [ "uses APCR TK Table\u2020" ],
"note_number": "5\u2020",
"notes": [ "A\u2020", "N", "P" ],
"id": "ge/o:004",
@ -55,7 +55,7 @@
{ "name": "4.2cm lePaK 41",
"type": "AT",
"capabilities": [ "NT", "QSU" ],
"capabilities_other": [ "uses APCR TK Table\u2020" ],
"comments": [ "uses APCR TK Table\u2020" ],
"note_number": "7",
"notes": [ "A\u2020", "N<sup>T</sup>" ],
"id": "ge/o:006",
@ -202,8 +202,9 @@
},
{ "name": "17cm K 18",
"type": "ART",
"capabilities": [ "NT", "RFNM", "no IF" ],
"capabilities": [ "NT", "RFNM" ],
"capabilities2": { "AP": 6 },
"comments": [ "No IF." ],
"note_number": "24",
"notes": [ "N" ],
"id": "ge/o:023",

@ -35,8 +35,9 @@
},
{ "name": "Cannone da 47/32",
"type": "AT",
"capabilities": [ "NT", "QSU", "no Gunshield" ],
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "Towed": [ [null,"A1+"], "\u2020" ] },
"comments": [ "No Gunshield." ],
"note_number": "5\u2020",
"notes": [ "A", "C", "N" ],
"id": "it/o:004",
@ -44,8 +45,9 @@
},
{ "name": "Cannone da 65/17",
"type": "INF",
"capabilities": [ "NT", "no Gunshield" ],
"capabilities": [ "NT" ],
"capabilities2": { "H": [ [6,"S2+"], "\u2020<sup>1</sup>" ] },
"comments": [ "No Gunshield." ],
"note_number": "6\u2020",
"notes": [ "A", "C", "H\u2020<sup>1</sup>", "N" ],
"id": "it/o:005",
@ -53,7 +55,8 @@
},
{ "name": "Cannone da 70/15",
"type": "INF",
"capabilities": [ "NT", "QSU", "Acq. NA\u2020<sup>1</sup>", "no Gunshield", "h-d" ],
"capabilities": [ "NT", "QSU", "h-d" ],
"comments": [ "Acq. NA\u2020<sup>1</sup>", "No Gunshield." ],
"note_number": "7\u2020",
"notes": [ "A", "B\u2020<sup>1</sup>", "<s>R</s>" ],
"id": "it/o:006",
@ -122,8 +125,9 @@
},
{ "name": "Cannone da 149/35",
"type": "ART",
"capabilities": [ "NT", "RFNM", "no IF", "Acq. NA\u2020<sup>1</sup>" ],
"capabilities": [ "NT", "RFNM" ],
"capabilities2": { "s": 8 },
"comments": [ "No IF.", "Acq. NA\u2020<sup>1</sup>" ],
"note_number": "15\u2020",
"notes": [ "B\u2020<sup>1</sup>", "N", "<s>R</s>" ],
"id": "it/o:014",

@ -38,7 +38,8 @@
},
{ "name": "Type 97 Medium Close-Attack Gun",
"type": "MTR",
"capabilities": [ "NT", "Towing NA\u2020<sup>1</sup>" ],
"capabilities": [ "NT" ],
"comments": [ "Towing NA\u2020<sup>1</sup>" ],
"note_number": "5\u2020",
"notes": [ "A", "C\u2020<sup>1</sup>" ],
"id": "ja/o:004",
@ -46,7 +47,8 @@
},
{ "name": "Type 97 Automatic Gun",
"type": "ATR",
"capabilities_other": [ "5PP", "crew\u2020" ],
"capabilities_other": [ "5PP" ],
"comments": [ "crew\u2020" ],
"note_number": "6\u2020",
"notes": [ "A" ],
"id": "ja/o:005",
@ -69,7 +71,8 @@
},
{ "name": "Year-11 Type Flat-Trajectory Infantry Gun",
"type": "INF",
"capabilities_other": [ "5PP (3PP dm)", "crewed\u2020" ],
"capabilities_other": [ "5PP (3PP dm)" ],
"comments": [ "crewed\u2020" ],
"note_number": "9\u2020",
"notes": [ "A" ],
"id": "ja/o:008",
@ -146,7 +149,7 @@
"type": "ART",
"capabilities": [ "NT" ],
"capabilities2": { "AP": 5, "WP": 5 },
"capabilities_other": [ "Towing risk\u2020" ],
"comments": [ "Towing risk\u2020" ],
"note_number": "18\u2020",
"id": "ja/o:017",
"gpid": 3297
@ -162,7 +165,8 @@
},
{ "name": "Type 93 Twin-Mount High-Angle Machine Gun",
"type": "AA",
"capabilities": [ "T", "2 TK DR\u2020", "Towing NA\u2020<sup>1</sup>" ],
"capabilities": [ "T", "2 TK DR\u2020" ],
"comments": [ "Towing NA\u2020<sup>1</sup>" ],
"note_number": "20\u2020",
"notes": [ "A", "C\u2020<sup>1</sup>", "E" ],
"id": "ja/o:019",

@ -9,7 +9,8 @@
},
{ "name": "37mm PM-39",
"type": "MTR",
"capabilities_other": [ "1PP", "Air Bursts & Acq. NA" ],
"capabilities_other": [ "1PP" ],
"comments": [ "Air Bursts & Acq. NA" ],
"note_number": "1.1",
"notes": [ "A" ],
"id": "ru/o:001",
@ -42,7 +43,8 @@
},
{ "name": "160mm PM obr. 43",
"type": "MTR",
"capabilities": [ "NT", "no IF" ],
"capabilities": [ "NT" ],
"comments": [ "No IF." ],
"note_number": "5",
"id": "ru/o:005",
"gpid": 512
@ -189,7 +191,8 @@
},
{ "name": "203mm B-4 obr. 1931",
"type": "ART",
"capabilities": [ "NT", "RFNM", "no IF" ],
"capabilities": [ "NT", "RFNM" ],
"comments": [ "No IF." ],
"note_number": "23.1",
"id": "ru/o:024",
"gpid": 6995

@ -33,7 +33,7 @@
"type": "MTR",
"capabilities": [ "NT" ],
"capabilities2": { "s": 8, "WP": 7 },
"capabilities_other": [ "Towed\u2020" ],
"comments": [ "Towed\u2020" ],
"note_number": "17\u2020",
"notes": [ "N" ],
"id": "bcfk/o:003",

@ -40,7 +40,8 @@
{ "name": "M20(L) 75mm Recoilless Rifle",
"type": "RCL",
"capabilities2": { "WP": 7 },
"capabilities_other": [ "5PP", "H\u2020", "crewed\u2020" ],
"capabilities_other": [ "5PP", "H\u2020" ],
"comments": [ "crewed\u2020" ],
"note_number": "25\u2020",
"notes": [ "K", "M", "O", "P", "R" ],
"id": "unc/o:004",

@ -38,7 +38,8 @@
{ "name": "M18(L) 57mm Recoilless Rifle",
"type": "RCL",
"capabilities2": { "H": 7, "WP": 6, "C": 7 },
"capabilities_other": [ "3PP", "non-crewed\u2020" ],
"capabilities_other": [ "3PP" ],
"comments": [ "non-crewed\u2020" ],
"note_number": "5\u2020",
"notes": [ "C", "K", "O" ],
"id": "uro/o:004",
@ -73,8 +74,9 @@
},
{ "name": "M1A1 155mm Gun",
"type": "ART",
"capabilities": [ "NT", "RFNM", "no IF" ],
"capabilities": [ "NT", "RFNM" ],
"capabilities2": { "AP": 4, "s": 7, "WP": 8 },
"comments": [ "No IF." ],
"note_number": "9",
"notes": [ "Y" ],
"id": "uro/o:008",
@ -82,7 +84,8 @@
},
{ "name": "M1 8-in. Howitzer",
"type": "ART",
"capabilities": [ "NT", "RFNM", "no IF" ],
"capabilities": [ "NT", "RFNM" ],
"comments": [ "No IF." ],
"note_number": "10\u2020",
"notes": [ "Y" ],
"id": "uro/o:009",

@ -99,6 +99,37 @@
"updated": {
"back_images": "fiAA76LB.png"
}
},
"adf:1824": {
"expected": {
"name": "37L AT PTP obr. 30",
"front_images": "ru/gun/ruAT37L",
"back_images": "ru/gun/ruAT37Lb"
},
"updated": {
"front_images": "ru/gun/ru37LPTPobr30.png"
}
},
"adf:1822": {
"expected": {
"name": "37* INF PP obr. 15R",
"front_images": "ru/gun/ruINF37s",
"back_images": "ru/gun/ruINF37sb"
},
"updated": {
"front_images": "ru/gun/ru37PPobr15R.png"
}
},
"adf:1823": {
"expected": {
"name": "76* INF PP obr. 27",
"front_images": "ru/gun/ruINF76s",
"back_images": "ru/gun/ruINF76sb"
},
"updated": {
"front_images": "ru/gun/ru76PPobr27.png"
}
}
}

@ -31,14 +31,18 @@ def get_vo_gpids( data_dir, extns ): #pylint: disable=too-many-locals,too-many-b
gpids.add( get_effective_gpid( str(gpid) ) )
# process any extensions
if extns:
if extns: #pylint: disable=too-many-nested-blocks
for extn in extns:
extn_info = extn[1]
for vo_type in ["vehicles","ordnance"]:
if vo_type not in extn_info:
for nat in extn_info:
if not isinstance( extn_info[nat], dict ):
continue
for piece in extn_info[vo_type]:
gpids.update( piece["gpid"] )
for vo_type in ("vehicles","ordnance"):
for piece in extn_info[ nat ].get( vo_type, [] ):
if isinstance( piece["gpid"], list ):
gpids.update( piece["gpid"] )
else:
gpids.add( piece["gpid"] )
return gpids

@ -65,7 +65,7 @@ def set_vasl_mod( vmod_fname, msg_store ):
else:
_vasl_mod = None
def _load_vasl_extns( extn_dir ): #pylint: disable=too-many-locals,too-many-statements
def _load_vasl_extns( extn_dir ): #pylint: disable=too-many-locals,too-many-statements,too-many-branches
"""Locate VASL extensions and their corresponding vehicle/ordnance info files."""
if not extn_dir:
@ -90,7 +90,7 @@ def _load_vasl_extns( extn_dir ): #pylint: disable=too-many-locals,too-many-stat
_logger.debug( "- id=%s ; version=%s", extn_info["extensionId"], extn_info["version"] )
# figure out what filename extensions we will recognize
valid_fname_extns = app.config.get( "VASL_EXTENSION_FILENAME_EXTNS", ".mdx .zip" )
valid_fname_extns = app.config.get( "VASL_EXTENSION_FILENAME_EXTNS", ".mdx .vmdx .zip" )
valid_fname_extns = valid_fname_extns.replace( ";", " " ).replace( ",", " " ).split()
# process each VASL extension
@ -143,6 +143,12 @@ def _load_vasl_extns( extn_dir ): #pylint: disable=too-many-locals,too-many-stat
_logger.info( "Accepting VASL extension: %s (%s/%s)", os.path.split(extn_fname)[1], extn_id, extn_version )
extns.append( ( extn_fname, extn_info ) )
# add any child extensions
for extn_info2 in all_extn_info.values():
if extn_info2.get( "parentExtensionId" ) == extn_info["extensionId"] \
and extn_info2["version"] == extn_info["version"]:
extns.append( ( extn_fname, extn_info2 ) )
return extns
# ---------------------------------------------------------------------
@ -297,6 +303,9 @@ class VaslMod:
del vasl_overrides[ gpid ]
# save the loaded entry
for attr in ("front_images","back_images"):
if isinstance( piece[attr], list ) and not piece[attr]:
piece[attr] = None
self._pieces[ gpid ] = piece
target_gpids.remove( gpid )
_logger.debug( "- Loaded piece: %s", piece )
@ -327,6 +336,8 @@ class VaslMod:
def is_image_path( val ): #pylint: disable=missing-docstring
if val == "white X 60.png": # nb: a lot of Finnish pieces have this
return False
if "-malf-" in val:
return False
if val.endswith( (".gif",".png") ):
return True
if val.startswith( ("ru/","ge/","am/","br/","it/","ja/","ch/","sh/","fr/","al/","ax/","hu/","fi/") ):
@ -382,6 +393,13 @@ class VaslMod:
)
front_images.pop()
assert not back_images
elif front_images[-1].endswith( "-BFPb.png" ) and front_images[0] == front_images[-1][:-9]+"-BFP.png":
# nb: this is for Polish Guns (Poland In Flames)
_logger.debug( "Ignoring limbered images: gpid=%s, front=%s, back=%s",
gpid, front_images, back_images
)
front_images.pop()
assert not back_images
def delistify( val ): #pylint: disable=missing-docstring
if val is None:

@ -138,33 +138,41 @@ def make_snippet_image():
# ---------------------------------------------------------------------
_flag_image_cache = {}
_flag_image_cache_lock = threading.Lock()
@app.route( "/flags/<nat>" )
def get_flag( nat ):
"""Get a flag image."""
return _get_small_image(
"static/images/flags/", nat,
app.config.get( "DEFAULT_FLAG_HEIGHT", 11 )
)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_small_image_cache = {}
_small_image_cache_lock = threading.Lock()
def _get_small_image( base_dir, key, default_height ):
"""Get a small image (cached)."""
# validate the nationality
if not re.search( "^[-a-z]+$", nat ):
# locate the image file
if not re.search( "^[-a-z~]+$", key ):
abort( 404 )
fname = os.path.join( base_dir, key+".png" )
# check how we should resize the image
# NOTE: Resizing images in the HTML snippets looks dreadful (presumably
# because VASSAL's HTML engine is so ancient), so we do it ourself :-/
default_height = app.config.get( "DEFAULT_FLAG_HEIGHT", 11 )
height = int( request.args.get( "height", default_height ) )
if height <= 0:
abort( 400 )
with _flag_image_cache_lock:
with _small_image_cache_lock:
# check if we have the image in the cache
cache_key = ( nat, height )
if cache_key not in _flag_image_cache:
cache_key = ( key, height )
if cache_key not in _small_image_cache:
# nope - load it
fname = "static/images/flags/{}.png".format( nat )
with app.open_resource( fname, "rb" ) as fp:
img = Image.open( fp )
# resize the image
@ -177,8 +185,8 @@ def get_flag( nat ):
buf = io.BytesIO()
img.save( buf, format="PNG" )
buf.seek( 0 )
_flag_image_cache[ cache_key ] = buf.read()
_small_image_cache[ cache_key ] = buf.read()
# return the flag image
img_data =_flag_image_cache[ cache_key ]
img_data =_small_image_cache[ cache_key ]
return send_file( io.BytesIO(img_data), mimetype="image/png" )

@ -1,23 +1,24 @@
.ui-dialog.edit-vo .ui-dialog-content { overflow: hidden ; display: flex ; }
.ui-dialog.edit-vo .ui-dialog-content { overflow: hidden ; display: flex ; flex-direction: column ; }
.ui-dialog.edit-vo .ui-dialog-buttonpane { border: none ; margin-top: 0 !important ; padding-top: 0 !important ; }
.ui-dialog.edit-vo .capabilities { flex-grow: 1 ; display: flex ; flex-direction: column ; }
.ui-dialog.edit-vo .header { display: flex ; align-items: center ; margin-bottom: 0.5em ; }
.ui-dialog.edit-vo .header img.vasl-image { height: 3.5em ; margin-right: 0.5em ; }
.ui-dialog.edit-vo .header img.vasl-image.small-piece { height: 2.7em ; margin-left: 0.4em ; margin-right: 0.9em ; }
.ui-dialog.edit-vo .header .content { display: flex ; flex-direction: column ; justify-content: center ; }
.ui-dialog.edit-vo .header .content .vo-name { font-size: 125% ; }
.ui-dialog.edit-vo .header .content input.select-vo-image { width: 15px ; position: relative ; top: 10px ; }
.ui-dialog.edit-vo .capabilities .header { display: flex ; align-items: center ; margin-bottom: 0.5em ; }
.ui-dialog.edit-vo .capabilities .header img.vasl-image { height: 3.5em ; margin-right: 0.5em ; }
.ui-dialog.edit-vo .capabilities .header img.vasl-image.small-piece { height: 2.7em ; margin-left: 0.4em ; margin-right: 0.9em ; }
.ui-dialog.edit-vo .capabilities .header .content { display: flex ; flex-direction: column ; justify-content: center ; }
.ui-dialog.edit-vo .capabilities .header .content .vo-name { font-size: 125% ; }
.ui-dialog.edit-vo .capabilities .header .content input.select-vo-image { width: 15px ; position: relative ; top: 10px ; }
.ui-dialog.edit-vo .capabilities { flex-grow: 1 ; }
.ui-dialog.edit-vo .comments { flex-grow: 1 ; }
.ui-dialog.edit-vo .capabilities div.fieldset { flex-grow: 1 ; display: flex ; flex-direction: column ; align-items: stretch ; }
.ui-dialog.edit-vo .capabilities div.fieldset { margin: 0 ; padding: 5px 8px 8px 8px ; border: 1px solid #aaa ; }
.ui-dialog.edit-vo .capabilities div.fieldset-legend { color: #666 ; }
.ui-dialog.edit-vo .capabilities div.fieldset ul { flex-grow: 1 ; margin: 0 0 5px 0 ; list-style-type: none ; overflow-y: auto ; }
.ui-dialog.edit-vo .capabilities div.fieldset li { height: 1.5em ; margin: 2px ; padding: 2px 0px 2px 5px ; background: #eee ; }
.ui-dialog.edit-vo .capabilities div.fieldset li div { display: flex ; align-items: center ; }
.ui-dialog.edit-vo .capabilities div.fieldset li img.dragger { height: 1em ; margin-right: 5px ; }
.ui-dialog.edit-vo .capabilities div.fieldset li input[type='text'] { flex-grow: 1 ; margin-right: 1em ; }
.ui-dialog.edit-vo .fieldset { height: calc(100% - 40px) ; display: flex ; flex-direction: column ; align-items: stretch ; }
.ui-dialog.edit-vo .fieldset { margin: 0 ; padding: 5px 8px 8px 8px ; border: 1px solid #aaa ; }
.ui-dialog.edit-vo .fieldset-legend { color: #666 ; }
.ui-dialog.edit-vo .fieldset ul { flex-grow: 1 ; margin: 0 0 5px 0 ; list-style-type: none ; overflow-y: auto ; }
.ui-dialog.edit-vo .fieldset li { margin: 2px ; padding: 2px 0px 2px 5px ; background: #eee ; }
.ui-dialog.edit-vo .fieldset li div { display: flex ; align-items: center ; }
.ui-dialog.edit-vo .fieldset li img.dragger { height: 1em ; margin-right: 5px ; }
.ui-dialog.edit-vo .fieldset li input[type='text'] { flex-grow: 1 ; margin-right: 1em ; }
.ui-dialog.edit-vo .capabilities div.fieldset .footer { display: flex ; align-items: center ; }
.ui-dialog.edit-vo .capabilities div.fieldset .footer img.trash { margin: 3px 5px ; height: 24px ; }
.ui-dialog.edit-vo .fieldset .footer { display: flex ; align-items: center ; }
.ui-dialog.edit-vo .fieldset .footer img.trash { margin: 3px 5px ; height: 24px ; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

@ -186,21 +186,23 @@ $(document).ready( function () {
restrict_droplist_height( $sel ) ;
}
function format_player_droplist_item( opt ) {
var url = gImagesBaseUrl + "/flags/" + opt.id + ".png" ;
if ( ! opt.id )
return opt.text ;
var url = make_player_flag_url( opt.id ) ;
return $( "<div style='display:flex;align-items:center;'>" +
"<img src='" + url + "' style='height:0.9em;margin-right:0.25em;'>" +
" " + opt.text +
"</div>" ) ;
}
init_select2( $( "select[name='PLAYER_1']" ),
"9em", false, format_player_droplist_item
"9.5em", false, format_player_droplist_item
).on( "select2:open", function() {
on_player_droplist_open( $(this) ) ;
} ).on( "change", function() {
on_player_change_with_confirm( 1 ) ;
} ) ;
init_select2( $( "select[name='PLAYER_2']" ),
"9em", false, format_player_droplist_item
"9.5em", false, format_player_droplist_item
).on( "select2:open", function() {
on_player_droplist_open( $(this) ) ;
} ).on( "change", function() {
@ -648,7 +650,7 @@ function update_ob_tab_header( player_no )
// update the OB tab header for the specified player
var player_nat = $( "select[name='PLAYER_" + player_no + "']" ).val() ;
var display_name = get_nationality_display_name( player_nat ) ;
var image_url = gImagesBaseUrl + "/flags/" + player_nat + ".png" ;
var image_url = make_player_flag_url( player_nat ) ;
var $elem = $( "#tabs .ui-tabs-nav a[href='#tabs-ob" + player_no + "']" ) ;
$elem.html(
"<img src='" + image_url + "'>&nbsp;" +

@ -14,6 +14,20 @@ var _DAY_OF_MONTH_POSTFIXES = { // nb: we assume English :-/
11: "th", 12: "th", 13: "th"
} ;
// 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 = {
"Br": "british",
"Ch": "chinese",
"Fr": "french",
"Ge": "german",
"Jp": "japanese",
"Ru": "russian",
"US": "american",
"AllM": "allied-minor",
"AxM": "axis-minor",
} ;
var gDefaultScenario = null ;
var gLastSavedScenario = null ;
var gLastSavedScenarioFilename = null ;
@ -158,16 +172,42 @@ function make_snippet( $btn, params, extra_params, show_date_warnings )
set_vo_note( "ordnance" ) ;
// generate snippets for multi-applicable vehicle/ordnance notes
var pos ;
function redirect_ma_note( target, vo_type ) {
pos = target.indexOf( " " ) ;
var nat_redirect = BFP_MA_NOTE_REDIRECTS[ target.substring( 0, pos ) ] ;
if ( nat_redirect )
return get_ma_notes_for_nat( nat_redirect, vo_type )[ target.substring(pos+1 ) ] ;
return null ;
}
function add_ma_notes( ma_notes, keys, param_name, nat, vo_type ) {
if ( ! keys )
return ;
params[ param_name ] = [] ;
for ( var i=0 ; i < keys.length ; ++i ) {
var ma_note = ma_notes[ keys[i] ] ;
var ma_note = null ;
if ( keys[i].substring( 0, 4 ) == "adf:" )
ma_note = redirect_ma_note( keys[i].substring(4), vo_type ) ;
else if ( keys[i].substring( 0, 6 ) == "cobra:" )
ma_note = redirect_ma_note( keys[i].substring(6), vo_type ) ;
else if ( keys[i].substring( 0, 4 ) == "pif:" )
ma_note = redirect_ma_note( keys[i].substring(4), vo_type ) ;
if ( ! ma_note )
ma_note = ma_notes[ keys[i] ] ;
var key = keys[i] ;
var extn_marker = "" ;
if ( nat === "italian" && vo_type === "ordnance" && keys[i] === "R" )
key = "<s>R</s>" ;
else {
pos = key.indexOf( ":" ) ;
if ( pos !== -1 ) {
extn_marker = "&#x2756; " ;
key = key.substring( pos+1 ) ;
}
}
params[ param_name ].push(
"<span class='key'>" +
(nat === "italian" && vo_type === "ordnance" && keys[i] === "R" ? "<s>R</s>" : keys[i]) + ":" +
"</span> " +
extn_marker +
"<span class='key'>" + key + ":" + "</span> " +
(ma_note || "Unavailable.")
) ;
}
@ -304,6 +344,7 @@ function make_snippet( $btn, params, extra_params, show_date_warnings )
// add in any extra parameters
if ( extra_params )
$.extend( true, params, extra_params ) ;
params.IMAGES_BASE_URL = APP_URL_BASE + gImagesBaseUrl ;
// check that the players have different nationalities
if ( params.PLAYER_1 === params.PLAYER_2 )
@ -361,7 +402,12 @@ function get_vo_note_key( vo_entry )
return null ;
// nb: there are some note numbers of the form "1.2" :-/
var match = vo_entry.note_number.match( new RegExp( "^([0-9.]+)" ) ) ;
return match ? match[1] : null ;
if ( ! match )
return null ;
var key = match[1] ;
if ( vo_entry.extn_id )
key = vo_entry.extn_id + ":" + key ;
return key ;
}
function is_known_vo_note_key( vo_type, nat, key )
@ -389,6 +435,9 @@ 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>)?)?$" ),
] ;
var EXTRA_NOTES_INFO = {
"alc/v": [ "allied-minor", "Allied Minor Common Vehicles" ],
@ -404,6 +453,10 @@ function get_ma_notes_keys( nat, vo_entries, vo_type )
if ( ! vo_entry.notes )
continue ;
for ( j=0 ; j < vo_entry.notes.length ; ++j ) {
if ( vo_entry.notes[j] === "US <s>P</s>" ) { // nb: can't do this with a regex
keys[0][ vo_entry.extn_id + ":US P" ] = true ;
continue ;
}
var rc = false ;
for ( k=0 ; k < regexes.length ; ++k ) {
var match = vo_entry.notes[j].match( regexes[k] ) ;
@ -411,7 +464,14 @@ function get_ma_notes_keys( nat, vo_entries, vo_type )
var vo_id = vo_entry.id.split( ":", 1 )[0] ;
var is_extra = ["allied-minor","axis-minor","landing-craft"].indexOf( nat ) === -1 &&
["alc/v","alc/o","axc/v","axc/o","sh/v"].indexOf( vo_id ) !== -1 ;
keys[ is_extra?1:0 ][ match[1] ] = true ;
var key = match[1] ;
if ( vo_entry.extn_id && !( vo_entry.extn_id === "adf" && nat === "american" && key.length === 1 ) ) {
// NOTE: We include the extension ID as part of the key, except for BFP American vehicles,
// whose multi-applicable notes refer to the main American multi-applicable notes,
// not the BFP ones (there aren't any).
key = vo_entry.extn_id + ":" + key ;
}
keys[ is_extra?1:0 ][ key ] = true ;
if ( is_extra ) {
// NOTE: Only the Americans/British and Japanese have landing craft, while Axis Minor Powers
// will never have Allied Minor common vehicles/ordnance (and vice versa), so if we have
@ -552,6 +612,8 @@ function unload_snippet_params( unpack_scenario_date, template_id )
note_number: vo_entry.note_number,
notes: vo_entry.notes
} ;
if ( vo_entry.extn_id )
obj.extn_id = vo_entry.extn_id ;
if ( gUserSettings["include-vasl-images-in-snippets"] ) {
var url = get_vo_image_url( vo_entry, vo_image_id ) ;
if ( url )
@ -589,6 +651,13 @@ function unload_snippet_params( unpack_scenario_date, template_id )
) ;
if ( capabilities )
obj.raw_capabilities = capabilities ;
var comments = $(this).data( "sortable2-data" ).custom_comments ;
if ( comments ) {
obj.comments = comments ;
obj.custom_comments = comments.slice() ;
} else {
obj.comments = vo_entry.comments ;
}
objs.push( obj ) ;
} ) ;
if ( objs.length > 0 )
@ -652,7 +721,7 @@ function make_capabilities( raw, vo_entry, nat, scenario_theater, scenario_year,
capabilities[ capabilities.length-1 ] += " [" + caps.join(", ") + "]" ;
continue ;
}
if ( $.inArray( key, ["HE","AP","A","D","C","H","B","s","sM","sD","sN","WP","IR","Towed"] ) === -1 ) {
if ( $.inArray( key, ["HE","AP","A","D","C","H","B","S","s","sM","sD","sN","WP","IR","Towed"] ) === -1 ) {
unexpected_caps.push( key ) ;
continue ;
}
@ -825,6 +894,13 @@ function _check_capability_timestamp( capabilities, timestamp, nat, scenario_the
}
// parse the month/year the capability becomes available
var match = timestamp.match( /^(\d+)-$/ ) ;
if ( match ) {
if ( scenario_year < 1900 + parseInt(match[1]) )
return capabilities[0] ;
else
return "" ;
}
var month = MONTH_NAMES[ timestamp.substring(0,1) ] ;
if ( month )
timestamp = timestamp.substring( 1 ) ;
@ -1127,7 +1203,7 @@ function do_load_scenario_data( params )
warnings.push( "Invalid V/O image ID for '" + params[key][i].name + "': " + params[key][i].image_id ) ;
}
if ( vo_entry )
do_add_vo( vo_type, player_no, vo_entry, vo_image_id, params[key][i].custom_capabilities, params[key][i].seq_id ) ;
do_add_vo( vo_type, player_no, vo_entry, vo_image_id, params[key][i].custom_capabilities, params[key][i].custom_comments, params[key][i].seq_id ) ;
else
unknown_vo.push( vo_id || "(not set)" ) ;
}
@ -1286,6 +1362,8 @@ function unload_params_for_save( user_requested )
entry.image_id = params[key][i].image_id ;
if ( params[key][i].custom_capabilities )
entry.custom_capabilities = params[key][i].custom_capabilities ;
if ( params[key][i].custom_comments )
entry.custom_comments = params[key][i].custom_comments ;
entries.push( entry ) ;
}
params[key] = entries ;

@ -6,6 +6,7 @@ SORTABLE_DISPLAY_NAMES = {
ob_vehicles: [ "vehicle", "vehicles", "a" ],
ob_ordnance: [ "ordnance", "ordnance", "an" ],
vo_capabilities: [ "capability", "capabilities", "a" ],
vo_comments: [ "comment", "comments", "a" ],
} ;
SORTABLE_HINTS = {

@ -316,7 +316,7 @@ function add_flag_to_dialog_titlebar( $dlg, player_no )
if ( ! player_nat )
return ;
var $titlebar = $dlg.dialog( "instance" ).uiDialogTitlebar ;
var url = gImagesBaseUrl + "/flags/" + player_nat + ".png" ;
var url = make_player_flag_url( player_nat ) ;
$titlebar.find( ".ui-dialog-title" ).prepend(
$( "<img src='" + url + "' class='flag'>" )
).css( { display: "flex", "align-items": "center" } ) ;

@ -15,7 +15,7 @@ function add_vo( vo_type, player_no )
var nat = $( "select[name='PLAYER_" + player_no + "']" ).val() ;
var entries = gVehicleOrdnanceListings[vo_type][nat] ;
if ( entries === undefined ) {
showErrorMsg( "There are no " + get_nationality_display_name(nat) + " " + vo_type + " listings." ) ;
showWarningMsg( "There are no " + get_nationality_display_name(nat) + " " + vo_type + " listings." ) ;
return ;
}
var buf = [] ;
@ -117,7 +117,7 @@ function add_vo( vo_type, player_no )
usedIds[ $(this).data( "sortable2-data" ).id ] = true ;
} ) ;
var seq_id = auto_assign_id( usedIds, "seq_id" ) ;
do_add_vo( vo_type, player_no, entries[sel_index], vo_image_id, null, seq_id ) ;
do_add_vo( vo_type, player_no, entries[sel_index], vo_image_id, null, null, seq_id ) ;
$(this).dialog( "close" ) ;
},
Cancel: function() { $(this).dialog( "close" ) ; },
@ -127,7 +127,7 @@ function add_vo( vo_type, player_no )
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function do_add_vo( vo_type, player_no, vo_entry, vo_image_id, custom_capabilities, seq_id )
function do_add_vo( vo_type, player_no, vo_entry, vo_image_id, custom_capabilities, custom_comments, seq_id )
{
// add the specified vehicle/ordnance
// NOTE: We set a fixed height for the sortable2 entries (based on the CSS settings in tabs-ob.css),
@ -149,6 +149,8 @@ function do_add_vo( vo_type, player_no, vo_entry, vo_image_id, custom_capabiliti
} ;
if ( custom_capabilities )
data.custom_capabilities = custom_capabilities ;
if ( custom_comments )
data.custom_comments = custom_comments ;
data.id = seq_id ;
var buf = [ div_tag,
"<img class='vasl-image'>",
@ -177,7 +179,8 @@ function do_add_vo( vo_type, player_no, vo_entry, vo_image_id, custom_capabiliti
"<img src='" + gImagesBaseUrl + "/snippet.png'",
" class='snippet' data-id='" + template_id + "' title='" + GENERATE_SNIPPET_HINT + "'>"
) ;
data.vo_note_url = APP_URL_BASE + "/" + vo_type + "/" + vo_nat + "/note/" + vo_note_key ;
var url = APP_URL_BASE + "/" + vo_type + "/" + vo_nat + "/note/" ;
data.vo_note_url = url + vo_note_key ;
}
buf.push( "</div>" ) ;
var $content = $( buf.join("") ) ;

@ -15,13 +15,34 @@ function _do_edit_ob_vo( $entry, player_no, vo_type )
show_warnings
) ;
}
function get_default_comments( vo_entry ) {
return vo_entry.comments ? vo_entry.comments : [] ;
}
// get the vehicle/ordnance's capabilities
function load_entries( $sortable, entries ) {
$sortable.sortable2( "delete-all" ) ;
for ( var i=0 ; i < entries.length ; ++i )
add_entry( $sortable, entries[i], false ) ;
}
function unload_entries( $sortable ) {
var entries = [] ;
$sortable.find( "input[type='text']" ).each( function() {
var val = $(this).val().trim() ;
if ( val )
entries.push( val ) ;
} ) ;
return entries ;
}
// get the vehicle/ordnance's capabilities/comments
var params = unload_snippet_params( true, null ) ;
var vo_entry = $entry.data( "sortable2-data" ).vo_entry ;
var capabilities = $entry.data( "sortable2-data" ).custom_capabilities ;
if ( ! capabilities )
capabilities = get_default_capabilities( vo_entry, params, true ).slice() ;
var comments = $entry.data( "sortable2-data" ).custom_comments ;
if ( ! comments )
comments = get_default_comments( vo_entry ) ;
// load the dialog
var vo_image_id = $entry.data( "sortable2-data" ).vo_image_id ;
@ -50,7 +71,8 @@ function _do_edit_ob_vo( $entry, player_no, vo_type )
// initialize
var $capabilities = $( "#vo_capabilities-sortable" ) ;
function add_capability( val ) {
var $comments = $( "#vo_comments-sortable" ) ;
function add_entry( $sortable, val, visible ) {
var $elem = $( "<div>" +
"<img class='dragger' src='" + gImagesBaseUrl + "/dragger.png'>" +
"<input type='text'>" +
@ -59,42 +81,53 @@ function _do_edit_ob_vo( $entry, player_no, vo_type )
$elem.children( "input[type='text']" ).val( val ).keydown( function(evt) {
auto_dismiss_dialog( $dlg, evt, "OK" ) ;
} ) ;
return $capabilities.sortable2( "add", {
var $entry = $sortable.sortable2( "add", {
content: $elem,
data: { fixed_height: "1.4em" },
data: { fixed_height: "1.5em" },
} ) ;
if ( visible ) {
$entry.find( "input[type='text']" ).focus() ;
$entry[0].scrollIntoView() ;
}
}
// NOTE: on_reset_capabilities() gets bound when the sortable2 is *created*, so it needs some way
// to get the *current* vo_entry and params, otherwise it will use the values active when it was bound.
var $reset = $( "#vo_capabilities-reset" ) ;
$reset.data( { vo_entry: vo_entry, params: params } ) ;
// NOTE: on_reset_capabilities/comments() get bound when the sortable2 is *created*, so they need some way
// to get the *current* vo_entry and params, otherwise they will use the values active when they were bound.
var $reset_capabilities = $( "#vo_capabilities-reset" ) ;
$reset_capabilities.data( { vo_entry: vo_entry, params: params } ) ;
function on_reset_capabilities() {
$capabilities.sortable2( "delete-all" ) ;
var capabilities = get_default_capabilities( $reset.data("vo_entry"), $reset.data("params"), false ) ;
for ( var i=0 ; i < capabilities.length ; ++i )
add_capability( capabilities[i] ) ;
load_entries( $capabilities,
get_default_capabilities( $reset_capabilities.data("vo_entry"), $reset_capabilities.data("params"), false )
) ;
}
var $reset_comments = $( "#vo_comments-reset" ) ;
$reset_comments.data( { vo_entry: vo_entry, params: params } ) ;
function on_reset_comments() {
load_entries( $comments,
get_default_comments( $reset_comments.data("vo_entry") )
) ;
}
// show the dialog
var $dlg = $( "#edit-vo" ).dialog( {
dialogClass: "edit-vo",
title: "Edit "+vo_type,
minWidth: 350,
minHeight: 340,
minWidth: 550,
minHeight: 470,
modal: true,
create: function() {
// initialize the dialog
init_dialog( $(this), "OK", false ) ;
$capabilities.sortable2( "init", {
add: function() {
$elem = add_capability( "" ) ;
$elem.find( "input[type='text']" ).focus() ;
$elem[0].scrollIntoView() ;
},
add: function() { add_entry( $capabilities, "", true ) ; },
reset: on_reset_capabilities,
no_confirm_delete: true,
} ) ;
$comments.sortable2( "init", {
add: function() { add_entry( $comments, "", true ) ; },
reset: on_reset_comments,
no_confirm_delete: true,
} ) ;
},
open: function() {
// initialize
@ -107,9 +140,8 @@ function _do_edit_ob_vo( $entry, player_no, vo_type )
border: "1px solid "+colors[2],
} ) ;
// load the dialog
$capabilities.sortable2( "delete-all" ) ;
for ( var i=0 ; i < capabilities.length ; ++i )
add_capability( capabilities[i] ) ;
load_entries( $capabilities, capabilities ) ;
load_entries( $comments, comments ) ;
},
buttons: {
OK: function() {
@ -119,18 +151,22 @@ function _do_edit_ob_vo( $entry, player_no, vo_type )
if ( vo_image_id )
$entry.data( "sortable2-data" ).vo_image_id = vo_image_id ;
// unload the capabilities
var capabilities = [] ;
$capabilities.find( "input[type='text']" ).each( function() {
var val = $(this).val().trim() ;
if ( val )
capabilities.push( val ) ;
} ) ;
var capabilities = unload_entries( $capabilities ) ;
if ( capabilities.join() !== get_default_capabilities( vo_entry, params, false ).join() )
$entry.data( "sortable2-data" ).custom_capabilities = capabilities ;
else {
// the capabilities are the same as the default - no need to retain these custom settings
delete $entry.data( "sortable2-data" ).custom_capabilities ;
}
// unload the comments
var comments = unload_entries( $comments ) ;
if ( comments.join() !== get_default_comments( vo_entry ).join() ) {
$entry.data( "sortable2-data" ).custom_comments = comments ;
}
else {
// the comments are the same as the default - no need to retain these custom settings
delete $entry.data( "sortable2-data" ).custom_comments ;
}
// update the original V/O entry to reflect the changes
update_vo_sortable2_entry( $entry ) ;
$(this).dialog( "close" ) ;

@ -1,9 +1,8 @@
<div id="edit-vo" style="display:none;">
<div class="capabilities">
<div class="header"></div>
<div class="header"></div>
<div class="capabilities">
<div class="fieldset-legend">Capabilities:</div>
<div class="fieldset">
<ul id="vo_capabilities-sortable" class="sortable"></ul>
@ -14,7 +13,19 @@
<button id="vo_capabilities-reset" class="sortable-reset"></button>
</div>
</div>
</div>
<div class="comments">
<div class="fieldset-legend">Comments:</div>
<div class="fieldset">
<ul id="vo_comments-sortable" class="sortable"></ul>
<div class="footer">
<button id="vo_comments-add" class="sortable-add"></button>
<img id="vo_comments-trash" class="sortable-trash">
<span class="spacer"></span>
<button id="vo_comments-reset" class="sortable-reset"></button>
</div>
</div>
</div>
</div>

@ -68,6 +68,12 @@ $(document).ready( function () {
function load_vo_notes( vo_notes, vo_entries )
{
var $results = $("#results") ;
if ( !vo_notes && !vo_entries ) {
$results.html( "No results." ).show() ;
return ;
}
// initialize
var vo_type2 = (vo_type === "vehicles" ? "vehicle" : vo_type ) ;
var header = nat[0].toUpperCase() + nat.substring(1) + " " + vo_type2[0].toUpperCase() + vo_type2.substring(1) + " Notes" ;
@ -94,6 +100,26 @@ function load_vo_notes( vo_notes, vo_entries )
return +1 ;
else if ( rhs === "multi-applicable" )
return -1 ;
// check if we have keys from an extension module (these always sort larger)
var lhsPos = lhs.indexOf( ":" ) ;
var rhsPos = rhs.indexOf( ":" ) ;
if ( lhsPos === -1 && rhsPos !== -1 )
return -1 ;
else if ( lhsPos !== -1 && rhsPos === -1 )
return +1 ;
else if ( lhsPos !== -1 && rhsPos !== -1 ) {
// both keys are from an extensions module, compare the extension ID's
var lhsExtnId = lhs.substring( 0, lhsPos ) ;
var rhsExtnId = rhs.substring( 0, rhsPos ) ;
if ( lhsExtnId < rhsExtnId )
return -1 ;
else if ( lhsExtnId > rhsExtnId )
return +1 ;
// both keys are from the same extension module, remove the extension ID and sort normally
lhs = lhs.substring( lhsPos+1 ) ;
rhs = rhs.substring( rhsPos+1 ) ;
}
// compare the two keys
var lhs = parse_key( lhs ) ;
var rhs = parse_key( rhs ) ;
if ( lhs[0] < rhs[0] )
@ -160,7 +186,6 @@ function load_vo_notes( vo_notes, vo_entries )
}
buf.push( "</table>" ) ;
var $results = $("#results") ;
$results.html( buf.join("") ).show() ;
}

@ -60,8 +60,7 @@ function load_vo_listings( objs )
// load the vehicles/ordnance
var buf = [] ;
buf.push( "<table>" ) ;
buf.push( "<tr>", "<th>Name" ) ;
buf.push( "<th colspan='2'>Capabilities", "<th colspan='2'>Notes" ) ;
buf.push( "<tr>", "<th>Name", "<th colspan='2'>Capabilities", "<th colspan='2'>Notes", "<th>Comments" ) ;
for ( var i=0 ; i < objs[nat].length ; ++i ) {
var obj = objs[nat][i] ;
if ( vo_name && obj.name.toLowerCase() != vo_name )
@ -74,6 +73,7 @@ function load_vo_listings( objs )
buf.push( "<td>", listval(capabilities) ) ;
buf.push( "<td>", "<span class='val'>" + fmtval(obj.note_number) + "</span>" ) ;
buf.push( "<td>", listval(obj.notes) ) ;
buf.push( "<td>", obj.comments ? listval(obj.comments) : "" ) ;
}
buf.push( "</table>" ) ;
$results.html( buf.join("") ).show() ;

@ -2,4 +2,5 @@
[*] {{ord.name}}: #={{ord.note_number}}{%if ord.notes%}
- notes:{%for n in ord.notes%} "{{n}}"{%endfor%}{%endif%}{%if ord.capabilities%}
- capabilities:{%for c in ord.capabilities%} "{{c}}"{%endfor%}{%endif%}{%if ord.raw_capabilities%}
- raw capabilities:{%for c in ord.capabilities%} "{{c}}"{%endfor%}{%endif%}{%endfor%}
- raw capabilities:{%for c in ord.capabilities%} "{{c}}"{%endfor%}{%endif%}{%if ord.comments%}
- comments:{%for c in ord.comments%} "{{c}}"{%endfor%}{%endif%}{%endfor%}

@ -2,4 +2,5 @@
[*] {{veh.name}}: #={{veh.note_number}}{%if veh.notes%}
- notes:{%for n in veh.notes%} "{{n}}"{%endfor%}{%endif%}{%if veh.capabilities%}
- capabilities:{%for c in veh.capabilities%} "{{c}}"{%endfor%}{%endif%}{%if veh.raw_capabilities%}
- raw capabilities:{%for c in veh.raw_capabilities%} "{{c}}"{%endfor%}{%endif%}{%endfor%}
- raw capabilities:{%for c in veh.raw_capabilities%} "{{c}}"{%endfor%}{%endif%}{%if veh.comments%}
- comments:{%for c in veh.comments%} "{{c}}"{%endfor%}{%endif%}{%endfor%}

@ -22,6 +22,10 @@
"notes": [ "A", "C" ],
"id": "ge/v:992"
},
{ "name": "a commented german vehicle",
"comments": [ "a comment", "another comment" ],
"id": "ge/v:993"
},
{ "name": "name only",
"id": "ge/v:999"
}

@ -1,7 +1,7 @@
=== landing craft ===
Name Capabilities (effective) # Notes
-------- -------------- ------------- --- ------------------------------------------------
Name Capabilities (effective) # Notes Comments
-------- -------------- ------------- --- ------------------------------------------------ ----------
LCP(L) DP 2 CS 4 DP 2 CS 4 1† A†<sup>1</sup> B†<sup>3</sup> C†<sup>2</sup> D
LCA DP 3 CS 6 DP 3 CS 6 2† n/a
LCVP DP 3 CS 5 DP 3 CS 5 3† B†<sup>2</sup> C†<sup>1</sup>

@ -1,18 +1,18 @@
=== ordnance/allied-minor-common/1940 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- -----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ----------------------- ----------------------
Brandt Medium Mortar NT QSU s8 NT QSU s8 23† A B Gr N P Y
37mm Bofors AT NT QSU NT QSU 24† A De P
3.7cm PaK 35/36 NT QSU NT QSU 25† Gr Ne Y
Bohler M35 47mm NT QSU NT QSU 26† A Gr Ne Y
65mm wz.06 NT QSU no Gunshield h-d NT QSU no Gunshield h-d 27† A Gr P Y
65mm wz.06 NT QSU h-d NT QSU h-d 27† A Gr P Y No Gunshield.
75mm wz.97 NT QSU s8 NT QSU s8 28† A Gr N P
Bofors M34 NT QSU NT QSU 29† A B Gr Ne N
75M 19S NT QSU h-d AP5 s6 NT QSU h-d AP5 s6 30† A Gr P Y
C105 L 13 S NT NT 31† B P Y
120mm wz. 09/31 NT h-d s6 NT h-d s6 32† N P
155mm 17 S NT s8 NT s8 33 B Gr P Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† Towing NA†[1] T 2 TK DR† Towing NA†[1] 34† T†<sup>1</sup> B Gr Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 34† T†<sup>1</sup> B Gr Y Towing NA†<sup>1</sup>
20mm Oerlikon T LF [NT, 20†[1], 2 ROF, B11] T LF [NT, 20†[1], 2 ROF, B11] 35† C†<sup>1</sup> Gr Ne Y
40mm Bofors AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 36† C†<sup>1</sup> B N Ne P

@ -1,18 +1,18 @@
=== ordnance/allied-minor-common/1941 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- -----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ----------------------- ----------------------
Brandt Medium Mortar NT QSU s8 NT QSU s8 23† A B Gr N P Y
37mm Bofors AT NT QSU NT QSU 24† A De P
3.7cm PaK 35/36 NT QSU NT QSU 25† Gr Ne Y
Bohler M35 47mm NT QSU NT QSU 26† A Gr Ne Y
65mm wz.06 NT QSU no Gunshield h-d NT QSU no Gunshield h-d 27† A Gr P Y
65mm wz.06 NT QSU h-d NT QSU h-d 27† A Gr P Y No Gunshield.
75mm wz.97 NT QSU s8 NT QSU s8 28† A Gr N P
Bofors M34 NT QSU NT QSU 29† A B Gr Ne N
75M 19S NT QSU h-d AP5 s6 NT QSU h-d AP5 s6 30† A Gr P Y
C105 L 13 S NT NT 31† B P Y
120mm wz. 09/31 NT h-d s6 NT h-d s6 32† N P
155mm 17 S NT s8 NT s8 33 B Gr P Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† Towing NA†[1] T 2 TK DR† Towing NA†[1] 34† T†<sup>1</sup> B Gr Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 34† T†<sup>1</sup> B Gr Y Towing NA†<sup>1</sup>
20mm Oerlikon T LF [NT, 20†[1], 2 ROF, B11] T LF [NT, 20†[1], 2 ROF, B11] 35† C†<sup>1</sup> Gr Ne Y
40mm Bofors AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 36† C†<sup>1</sup> B N Ne P

@ -1,18 +1,18 @@
=== ordnance/allied-minor-common/1942 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- -----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ----------------------- ----------------------
Brandt Medium Mortar NT QSU s8 NT QSU s8 23† A B Gr N P Y
37mm Bofors AT NT QSU NT QSU 24† A De P
3.7cm PaK 35/36 NT QSU NT QSU 25† Gr Ne Y
Bohler M35 47mm NT QSU NT QSU 26† A Gr Ne Y
65mm wz.06 NT QSU no Gunshield h-d NT QSU no Gunshield h-d 27† A Gr P Y
65mm wz.06 NT QSU h-d NT QSU h-d 27† A Gr P Y No Gunshield.
75mm wz.97 NT QSU s8 NT QSU s8 28† A Gr N P
Bofors M34 NT QSU NT QSU 29† A B Gr Ne N
75M 19S NT QSU h-d AP5 s6 NT QSU h-d AP5 s6 30† A Gr P Y
C105 L 13 S NT NT 31† B P Y
120mm wz. 09/31 NT h-d s6 NT h-d s6 32† N P
155mm 17 S NT s8 NT s8 33 B Gr P Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† Towing NA†[1] T 2 TK DR† Towing NA†[1] 34† T†<sup>1</sup> B Gr Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 34† T†<sup>1</sup> B Gr Y Towing NA†<sup>1</sup>
20mm Oerlikon T LF [NT, 20†[1], 2 ROF, B11] T LF [NT, 20†[1], 2 ROF, B11] 35† C†<sup>1</sup> Gr Ne Y
40mm Bofors AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 36† C†<sup>1</sup> B N Ne P

@ -1,18 +1,18 @@
=== ordnance/allied-minor-common/1943 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- -----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ----------------------- ----------------------
Brandt Medium Mortar NT QSU s8 NT QSU s8 23† A B Gr N P Y
37mm Bofors AT NT QSU NT QSU 24† A De P
3.7cm PaK 35/36 NT QSU NT QSU 25† Gr Ne Y
Bohler M35 47mm NT QSU NT QSU 26† A Gr Ne Y
65mm wz.06 NT QSU no Gunshield h-d NT QSU no Gunshield h-d 27† A Gr P Y
65mm wz.06 NT QSU h-d NT QSU h-d 27† A Gr P Y No Gunshield.
75mm wz.97 NT QSU s8 NT QSU s8 28† A Gr N P
Bofors M34 NT QSU NT QSU 29† A B Gr Ne N
75M 19S NT QSU h-d AP5 s6 NT QSU h-d AP5 s6 30† A Gr P Y
C105 L 13 S NT NT 31† B P Y
120mm wz. 09/31 NT h-d s6 NT h-d s6 32† N P
155mm 17 S NT s8 NT s8 33 B Gr P Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† Towing NA†[1] T 2 TK DR† Towing NA†[1] 34† T†<sup>1</sup> B Gr Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 34† T†<sup>1</sup> B Gr Y Towing NA†<sup>1</sup>
20mm Oerlikon T LF [NT, 20†[1], 2 ROF, B11] T LF [NT, 20†[1], 2 ROF, B11] 35† C†<sup>1</sup> Gr Ne Y
40mm Bofors AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 36† C†<sup>1</sup> B N Ne P

@ -1,18 +1,18 @@
=== ordnance/allied-minor-common/1944 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- -----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ----------------------- ----------------------
Brandt Medium Mortar NT QSU s8 NT QSU s8 23† A B Gr N P Y
37mm Bofors AT NT QSU NT QSU 24† A De P
3.7cm PaK 35/36 NT QSU NT QSU 25† Gr Ne Y
Bohler M35 47mm NT QSU NT QSU 26† A Gr Ne Y
65mm wz.06 NT QSU no Gunshield h-d NT QSU no Gunshield h-d 27† A Gr P Y
65mm wz.06 NT QSU h-d NT QSU h-d 27† A Gr P Y No Gunshield.
75mm wz.97 NT QSU s8 NT QSU s8 28† A Gr N P
Bofors M34 NT QSU NT QSU 29† A B Gr Ne N
75M 19S NT QSU h-d AP5 s6 NT QSU h-d AP5 s6 30† A Gr P Y
C105 L 13 S NT NT 31† B P Y
120mm wz. 09/31 NT h-d s6 NT h-d s6 32† N P
155mm 17 S NT s8 NT s8 33 B Gr P Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† Towing NA†[1] T 2 TK DR† Towing NA†[1] 34† T†<sup>1</sup> B Gr Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 34† T†<sup>1</sup> B Gr Y Towing NA†<sup>1</sup>
20mm Oerlikon T LF [NT, 20†[1], 2 ROF, B11] T LF [NT, 20†[1], 2 ROF, B11] 35† C†<sup>1</sup> Gr Ne Y
40mm Bofors AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 36† C†<sup>1</sup> B N Ne P

@ -1,18 +1,18 @@
=== ordnance/allied-minor-common/1945 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- -----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ----------------------- ----------------------
Brandt Medium Mortar NT QSU s8 NT QSU s8 23† A B Gr N P Y
37mm Bofors AT NT QSU NT QSU 24† A De P
3.7cm PaK 35/36 NT QSU NT QSU 25† Gr Ne Y
Bohler M35 47mm NT QSU NT QSU 26† A Gr Ne Y
65mm wz.06 NT QSU no Gunshield h-d NT QSU no Gunshield h-d 27† A Gr P Y
65mm wz.06 NT QSU h-d NT QSU h-d 27† A Gr P Y No Gunshield.
75mm wz.97 NT QSU s8 NT QSU s8 28† A Gr N P
Bofors M34 NT QSU NT QSU 29† A B Gr Ne N
75M 19S NT QSU h-d AP5 s6 NT QSU h-d AP5 s6 30† A Gr P Y
C105 L 13 S NT NT 31† B P Y
120mm wz. 09/31 NT h-d s6 NT h-d s6 32† N P
155mm 17 S NT s8 NT s8 33 B Gr P Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† Towing NA†[1] T 2 TK DR† Towing NA†[1] 34† T†<sup>1</sup> B Gr Y
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 34† T†<sup>1</sup> B Gr Y Towing NA†<sup>1</sup>
20mm Oerlikon T LF [NT, 20†[1], 2 ROF, B11] T LF [NT, 20†[1], 2 ROF, B11] 35† C†<sup>1</sup> Gr Ne Y
40mm Bofors AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 36† C†<sup>1</sup> B N Ne P

@ -1,7 +1,7 @@
=== ordnance/american/1940 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
Name Capabilities (effective) # Notes Comments
-------------------------------- ---------------------------------- ---------------------------------- ------ ------------------------------- ----------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
@ -20,12 +20,13 @@ M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT H7 WP
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M1918M1 155mm Gun NT RFNM AP4†[1] WP8 NT RFNM AP4†[1] WP8 19† A†<sup>1</sup> N No IF.
M1A1 155mm Gun NT RFNM AP4†[1] WP8 s7[5] NT RFNM AP4†[1] WP8 20† A†<sup>1</sup> No IF.
M1 8-in. Howitzer NT RFNM NT RFNM 21† n/a No IF.
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†
20mm Oerlikon Mk4 T 2 TK DR's† T 2 TK DR's† 1† US P Multiple Hits (C3.8) are NA.

@ -1,7 +1,7 @@
=== ordnance/american/1941 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
Name Capabilities (effective) # Notes Comments
-------------------------------- ---------------------------------- ---------------------------------- ------ ------------------------------- ----------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
@ -20,12 +20,13 @@ M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT H7 WP
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M1918M1 155mm Gun NT RFNM AP4†[1] WP8 NT RFNM AP4†[1] WP8 19† A†<sup>1</sup> N No IF.
M1A1 155mm Gun NT RFNM AP4†[1] WP8 s7[5] NT RFNM AP4†[1] WP8 20† A†<sup>1</sup> No IF.
M1 8-in. Howitzer NT RFNM NT RFNM 21† n/a No IF.
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†
20mm Oerlikon Mk4 T 2 TK DR's† T 2 TK DR's† 1† US P Multiple Hits (C3.8) are NA.

@ -1,7 +1,7 @@
=== ordnance/american/1942 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
Name Capabilities (effective) # Notes Comments
-------------------------------- ---------------------------------- ---------------------------------- ------ ------------------------------- ----------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
@ -20,12 +20,13 @@ M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT H7 WP
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M1918M1 155mm Gun NT RFNM AP4†[1] WP8 NT RFNM AP4†[1] WP8 19† A†<sup>1</sup> N No IF.
M1A1 155mm Gun NT RFNM AP4†[1] WP8 s7[5] NT RFNM AP4†[1] WP8 20† A†<sup>1</sup> No IF.
M1 8-in. Howitzer NT RFNM NT RFNM 21† n/a No IF.
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†
20mm Oerlikon Mk4 T 2 TK DR's† T 2 TK DR's† 1† US P Multiple Hits (C3.8) are NA.

@ -1,7 +1,7 @@
=== ordnance/american/1943 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
Name Capabilities (effective) # Notes Comments
-------------------------------- ---------------------------------- ---------------------------------- ------ ------------------------------- ----------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
@ -20,12 +20,13 @@ M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT H7 WP
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 s7 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M1918M1 155mm Gun NT RFNM AP4†[1] WP8 NT RFNM AP4†[1] WP8 19† A†<sup>1</sup> N No IF.
M1A1 155mm Gun NT RFNM AP4†[1] WP8 s7[5] NT RFNM AP4†[1] WP8 20† A†<sup>1</sup> No IF.
M1 8-in. Howitzer NT RFNM NT RFNM 21† n/a No IF.
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†
20mm Oerlikon Mk4 T 2 TK DR's† T 2 TK DR's† 1† US P Multiple Hits (C3.8) are NA.

@ -1,7 +1,7 @@
=== ordnance/american/1944 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
Name Capabilities (effective) # Notes Comments
-------------------------------- ---------------------------------- ---------------------------------- ------ ------------------------------- ----------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
@ -20,12 +20,13 @@ M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT H7 WP
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 s7 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M1918M1 155mm Gun NT RFNM AP4†[1] WP8 NT RFNM AP4†[1] WP8 19† A†<sup>1</sup> N No IF.
M1A1 155mm Gun NT RFNM AP4†[1] WP8 s7[5] NT RFNM AP4†[1] WP8 20† A†<sup>1</sup> No IF.
M1 8-in. Howitzer NT RFNM NT RFNM 21† n/a No IF.
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†
20mm Oerlikon Mk4 T 2 TK DR's† T 2 TK DR's† 1† US P Multiple Hits (C3.8) are NA.

@ -1,7 +1,7 @@
=== ordnance/american/1945 ===
Name Capabilities (effective) # Notes
-------------------------------- ---------------------------------- ---------------------------------- ------ -------------------------------
Name Capabilities (effective) # Notes Comments
-------------------------------- ---------------------------------- ---------------------------------- ------ ------------------------------- ----------------------------
M2 60mm Mortar IR WP7[5] 5PP OBA† IR WP7 5PP OBA† 1† F N
M19 60mm Mortar IR WP6[5] 4PP IR WP6 4PP 2 F
M1 81mm Mortar NT QSU WP8 NT QSU WP8 3 F N
@ -20,12 +20,13 @@ M3 105mm Howitzer NT C7[P]†[1] H7 WP8 s7 NT H7 WP
M1 4.5-in. Gun NT NT 16† <s>P</s>
M1918 155mm Howitzer NT WP8 s7[3+] NT WP8 s7 17† N
M1 155mm Howitzer NT WP8 s7 NT WP8 s7 18† N
M1918M1 155mm Gun NT RFNM AP4†[1] no IF WP8 NT RFNM AP4†[1] no IF WP8 19† A†<sup>1</sup> N
M1A1 155mm Gun NT RFNM AP4†[1] no IF WP8 s7[5] NT RFNM AP4†[1] no IF WP8 s7 20† A†<sup>1</sup>
M1 8-in. Howitzer NT RFNM no IF NT RFNM no IF 21† n/a
M1918M1 155mm Gun NT RFNM AP4†[1] WP8 NT RFNM AP4†[1] WP8 19† A†<sup>1</sup> N No IF.
M1A1 155mm Gun NT RFNM AP4†[1] WP8 s7[5] NT RFNM AP4†[1] WP8 s7 20† A†<sup>1</sup> No IF.
M1 8-in. Howitzer NT RFNM NT RFNM 21† n/a No IF.
M51 Multiple .50-cal MG Carriage T LF [2 ROF, 20 IFE, B11] 4 TK DR† T LF [2 ROF, 20 IFE, B11] 4 TK DR† 22† n/a
M1A2 37mm AA Gun T T 23† N
M1 40mm AA Gun T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 24† B†<sup>1</sup>
M3 3-in. AA Gun T NM T NM 25 P
M1A1 90mm AA Gun T NM T NM 26† N
M2 90mm AA Gun T LF [90†, 1 ROF, B11] T LF [90†, 1 ROF, B11] 27†[1] B†
20mm Oerlikon Mk4 T 2 TK DR's† T 2 TK DR's† 1† US P Multiple Hits (C3.8) are NA.

@ -1,7 +1,7 @@
=== ordnance/axis-minor-common/1940 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- ----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ---------------------- -------------
5cm leGrW 36 5PP 5PP 44 A H S C B
50mm RM obr. 40 4PP 4PP 45 A R H S C
8cm GrW 34 NT QSU IR s7 NT QSU IR s7 46† A C B
@ -10,7 +10,7 @@ PM obr. 38 NT QSU h-d s8 NT QSU h-d s8
Ur wz. 35 1PP 1PP 49 R H S C B
s18-1100 5PP 5PP 50 A R H
Kanon PUV vz. 37(t) NT QSU A4[1S] NT QSU 51† E H S B
Bohler M35 NT QSU no Gunshield NT QSU no Gunshield 52† A R H S
Bohler M35 NT QSU NT QSU 52† A R H S No Gunshield.
5cm PaK 38(g) NT QSU A4[3]3[4] NT QSU 53† E R H S B
7.5cm PaK 97/38(g) NT QSU H5[3+] s6 NT QSU s6 54† E R B
7.5cm PaK 40(g) NT QSU A4[3]3[4] NT QSU 55† E R H S B
@ -25,7 +25,7 @@ Skoda M35 NT AP7 C7[CS]† NT AP7
G obr. 10/30 NT h-d s7 NT h-d s7 64† R B
G obr. 38 NT s5[1-2R]† NT 65 R B
Skoda M14 NT NT 66† R H S
Skoda M15/16 NT no IF s6 NT no IF s6 67† S C
Skoda M15/16 NT s6 NT s6 67† S C No IF.
C mle 17 S NT s7 NT s7 68† R B
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 69† T†<sup>1</sup> R B
Oerlikon FF T LF [NT, 20†, 2 ROF, B11] T LF [NT, 20†, 2 ROF, B11] 70 G† R H S C B

@ -1,7 +1,7 @@
=== ordnance/axis-minor-common/1941 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- ----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ---------------------- -------------
5cm leGrW 36 5PP 5PP 44 A H S C B
50mm RM obr. 40 4PP 4PP 45 A R H S C
8cm GrW 34 NT QSU IR s7 NT QSU IR s7 46† A C B
@ -10,7 +10,7 @@ PM obr. 38 NT QSU h-d s8 NT QSU h-d s8
Ur wz. 35 1PP 1PP 49 R H S C B
s18-1100 5PP 5PP 50 A R H
Kanon PUV vz. 37(t) NT QSU A4[1S] NT QSU 51† E H S B
Bohler M35 NT QSU no Gunshield NT QSU no Gunshield 52† A R H S
Bohler M35 NT QSU NT QSU 52† A R H S No Gunshield.
5cm PaK 38(g) NT QSU A4[3]3[4] NT QSU 53† E R H S B
7.5cm PaK 97/38(g) NT QSU H5[3+] s6 NT QSU s6 54† E R B
7.5cm PaK 40(g) NT QSU A4[3]3[4] NT QSU 55† E R H S B
@ -25,7 +25,7 @@ Skoda M35 NT AP7 C7[CS]† NT AP7
G obr. 10/30 NT h-d s7 NT h-d s7 64† R B
G obr. 38 NT s5[1-2R]† NT 65 R B
Skoda M14 NT NT 66† R H S
Skoda M15/16 NT no IF s6 NT no IF s6 67† S C
Skoda M15/16 NT s6 NT s6 67† S C No IF.
C mle 17 S NT s7 NT s7 68† R B
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 69† T†<sup>1</sup> R B
Oerlikon FF T LF [NT, 20†, 2 ROF, B11] T LF [NT, 20†, 2 ROF, B11] 70 G† R H S C B

@ -1,7 +1,7 @@
=== ordnance/axis-minor-common/1942 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- ----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ---------------------- -------------
5cm leGrW 36 5PP 5PP 44 A H S C B
50mm RM obr. 40 4PP 4PP 45 A R H S C
8cm GrW 34 NT QSU IR s7 NT QSU IR s7 46† A C B
@ -10,7 +10,7 @@ PM obr. 38 NT QSU h-d s8 NT QSU h-d s8
Ur wz. 35 1PP 1PP 49 R H S C B
s18-1100 5PP 5PP 50 A R H
Kanon PUV vz. 37(t) NT QSU A4[1S] NT QSU 51† E H S B
Bohler M35 NT QSU no Gunshield NT QSU no Gunshield 52† A R H S
Bohler M35 NT QSU NT QSU 52† A R H S No Gunshield.
5cm PaK 38(g) NT QSU A4[3]3[4] NT QSU 53† E R H S B
7.5cm PaK 97/38(g) NT QSU H5[3+] s6 NT QSU s6 54† E R B
7.5cm PaK 40(g) NT QSU A4[3]3[4] NT QSU 55† E R H S B
@ -25,7 +25,7 @@ Skoda M35 NT AP7 C7[CS]† NT AP7
G obr. 10/30 NT h-d s7 NT h-d s7 64† R B
G obr. 38 NT s5[1-2R]† NT 65 R B
Skoda M14 NT NT 66† R H S
Skoda M15/16 NT no IF s6 NT no IF s6 67† S C
Skoda M15/16 NT s6 NT s6 67† S C No IF.
C mle 17 S NT s7 NT s7 68† R B
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 69† T†<sup>1</sup> R B
Oerlikon FF T LF [NT, 20†, 2 ROF, B11] T LF [NT, 20†, 2 ROF, B11] 70 G† R H S C B

@ -1,7 +1,7 @@
=== ordnance/axis-minor-common/1943 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- ----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ---------------------- -------------
5cm leGrW 36 5PP 5PP 44 A H S C B
50mm RM obr. 40 4PP 4PP 45 A R H S C
8cm GrW 34 NT QSU IR s7 NT QSU IR s7 46† A C B
@ -10,7 +10,7 @@ PM obr. 38 NT QSU h-d s8 NT QSU h-d s8
Ur wz. 35 1PP 1PP 49 R H S C B
s18-1100 5PP 5PP 50 A R H
Kanon PUV vz. 37(t) NT QSU A4[1S] NT QSU 51† E H S B
Bohler M35 NT QSU no Gunshield NT QSU no Gunshield 52† A R H S
Bohler M35 NT QSU NT QSU 52† A R H S No Gunshield.
5cm PaK 38(g) NT QSU A4[3]3[4] NT QSU A4 53† E R H S B
7.5cm PaK 97/38(g) NT QSU H5[3+] s6 NT QSU H5 s6 54† E R B
7.5cm PaK 40(g) NT QSU A4[3]3[4] NT QSU A4 55† E R H S B
@ -25,7 +25,7 @@ Skoda M35 NT AP7 C7[CS]† NT AP7
G obr. 10/30 NT h-d s7 NT h-d s7 64† R B
G obr. 38 NT s5[1-2R]† NT 65 R B
Skoda M14 NT NT 66† R H S
Skoda M15/16 NT no IF s6 NT no IF s6 67† S C
Skoda M15/16 NT s6 NT s6 67† S C No IF.
C mle 17 S NT s7 NT s7 68† R B
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 69† T†<sup>1</sup> R B
Oerlikon FF T LF [NT, 20†, 2 ROF, B11] T LF [NT, 20†, 2 ROF, B11] 70 G† R H S C B

@ -1,7 +1,7 @@
=== ordnance/axis-minor-common/1944 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- ----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ---------------------- -------------
5cm leGrW 36 5PP 5PP 44 A H S C B
50mm RM obr. 40 4PP 4PP 45 A R H S C
8cm GrW 34 NT QSU IR s7 NT QSU IR s7 46† A C B
@ -10,7 +10,7 @@ PM obr. 38 NT QSU h-d s8 NT QSU h-d s8
Ur wz. 35 1PP 1PP 49 R H S C B
s18-1100 5PP 5PP 50 A R H
Kanon PUV vz. 37(t) NT QSU A4[1S] NT QSU 51† E H S B
Bohler M35 NT QSU no Gunshield NT QSU no Gunshield 52† A R H S
Bohler M35 NT QSU NT QSU 52† A R H S No Gunshield.
5cm PaK 38(g) NT QSU A4[3]3[4] NT QSU A3 53† E R H S B
7.5cm PaK 97/38(g) NT QSU H5[3+] s6 NT QSU H5 s6 54† E R B
7.5cm PaK 40(g) NT QSU A4[3]3[4] NT QSU A3 55† E R H S B
@ -25,7 +25,7 @@ Skoda M35 NT AP7 C7[CS]† NT AP7
G obr. 10/30 NT h-d s7 NT h-d s7 64† R B
G obr. 38 NT s5[1-2R]† NT 65 R B
Skoda M14 NT NT 66† R H S
Skoda M15/16 NT no IF s6 NT no IF s6 67† S C
Skoda M15/16 NT s6 NT s6 67† S C No IF.
C mle 17 S NT s7 NT s7 68† R B
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 69† T†<sup>1</sup> R B
Oerlikon FF T LF [NT, 20†, 2 ROF, B11] T LF [NT, 20†, 2 ROF, B11] 70 G† R H S C B

@ -1,7 +1,7 @@
=== ordnance/axis-minor-common/1945 ===
Name Capabilities (effective) # Notes
------------------------------- ----------------------------- ----------------------------- --- ----------------------
Name Capabilities (effective) # Notes Comments
------------------------------- ----------------------------- ----------------------------- --- ---------------------- -------------
5cm leGrW 36 5PP 5PP 44 A H S C B
50mm RM obr. 40 4PP 4PP 45 A R H S C
8cm GrW 34 NT QSU IR s7 NT QSU IR s7 46† A C B
@ -10,7 +10,7 @@ PM obr. 38 NT QSU h-d s8 NT QSU h-d s8
Ur wz. 35 1PP 1PP 49 R H S C B
s18-1100 5PP 5PP 50 A R H
Kanon PUV vz. 37(t) NT QSU A4[1S] NT QSU 51† E H S B
Bohler M35 NT QSU no Gunshield NT QSU no Gunshield 52† A R H S
Bohler M35 NT QSU NT QSU 52† A R H S No Gunshield.
5cm PaK 38(g) NT QSU A4[3]3[4] NT QSU A3 53† E R H S B
7.5cm PaK 97/38(g) NT QSU H5[3+] s6 NT QSU H5 s6 54† E R B
7.5cm PaK 40(g) NT QSU A4[3]3[4] NT QSU A3 55† E R H S B
@ -25,7 +25,7 @@ Skoda M35 NT AP7 C7[CS]† NT AP7
G obr. 10/30 NT h-d s7 NT h-d s7 64† R B
G obr. 38 NT s5[1-2R]† NT 65 R B
Skoda M14 NT NT 66† R H S
Skoda M15/16 NT no IF s6 NT no IF s6 67† S C
Skoda M15/16 NT s6 NT s6 67† S C No IF.
C mle 17 S NT s7 NT s7 68† R B
Mitrailleuse de 13.2 CAJ mle 30 T 2 TK DR† T 2 TK DR† 69† T†<sup>1</sup> R B
Oerlikon FF T LF [NT, 20†, 2 ROF, B11] T LF [NT, 20†, 2 ROF, B11] 70 G† R H S C B

@ -1,11 +1,11 @@
=== ordnance/belgian/1940 ===
Name Capabilities (effective) # Notes
------------ ------------------- ------------------- --- -------
DBT 3PP † 3PP † 6† A B D
Name Capabilities (effective) # Notes Comments
------------ ------------------- ------------------- --- ------- ----------
DBT 3PP 3PP 6† A B D †
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
7.6cm FRC NT QSU † NT QSU † 8† A B
7.6cm FRC NT QSU NT QSU 8† A B †
C47 FRC M 32 NT QSU NT QSU 9 B
C75 TR NT QSU h-d s5 NT QSU h-d s5 10 B
C75 GP NT LF [75*, B10] s5 NT LF [75*, B10] s5 11 B

@ -1,11 +1,11 @@
=== ordnance/belgian/1941 ===
Name Capabilities (effective) # Notes
------------ ------------------- ------------------- --- -------
DBT 3PP † 3PP † 6† A B D
Name Capabilities (effective) # Notes Comments
------------ ------------------- ------------------- --- ------- ----------
DBT 3PP 3PP 6† A B D †
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
7.6cm FRC NT QSU † NT QSU † 8† A B
7.6cm FRC NT QSU NT QSU 8† A B †
C47 FRC M 32 NT QSU NT QSU 9 B
C75 TR NT QSU h-d s5 NT QSU h-d s5 10 B
C75 GP NT LF [75*, B10] s5 NT LF [75*, B10] s5 11 B

@ -1,11 +1,11 @@
=== ordnance/belgian/1942 ===
Name Capabilities (effective) # Notes
------------ ------------------- ------------------- --- -------
DBT 3PP † 3PP † 6† A B D
Name Capabilities (effective) # Notes Comments
------------ ------------------- ------------------- --- ------- ----------
DBT 3PP 3PP 6† A B D †
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
7.6cm FRC NT QSU † NT QSU † 8† A B
7.6cm FRC NT QSU NT QSU 8† A B †
C47 FRC M 32 NT QSU NT QSU 9 B
C75 TR NT QSU h-d s5 NT QSU h-d s5 10 B
C75 GP NT LF [75*, B10] s5 NT LF [75*, B10] s5 11 B

@ -1,11 +1,11 @@
=== ordnance/belgian/1943 ===
Name Capabilities (effective) # Notes
------------ ------------------- ------------------- --- -------
DBT 3PP † 3PP † 6† A B D
Name Capabilities (effective) # Notes Comments
------------ ------------------- ------------------- --- ------- ----------
DBT 3PP 3PP 6† A B D †
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
7.6cm FRC NT QSU † NT QSU † 8† A B
7.6cm FRC NT QSU NT QSU 8† A B †
C47 FRC M 32 NT QSU NT QSU 9 B
C75 TR NT QSU h-d s5 NT QSU h-d s5 10 B
C75 GP NT LF [75*, B10] s5 NT LF [75*, B10] s5 11 B

@ -1,11 +1,11 @@
=== ordnance/belgian/1944 ===
Name Capabilities (effective) # Notes
------------ ------------------- ------------------- --- -------
DBT 3PP † 3PP † 6† A B D
Name Capabilities (effective) # Notes Comments
------------ ------------------- ------------------- --- ------- ----------
DBT 3PP 3PP 6† A B D †
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
7.6cm FRC NT QSU † NT QSU † 8† A B
7.6cm FRC NT QSU NT QSU 8† A B †
C47 FRC M 32 NT QSU NT QSU 9 B
C75 TR NT QSU h-d s5 NT QSU h-d s5 10 B
C75 GP NT LF [75*, B10] s5 NT LF [75*, B10] s5 11 B

@ -1,11 +1,11 @@
=== ordnance/belgian/1945 ===
Name Capabilities (effective) # Notes
------------ ------------------- ------------------- --- -------
DBT 3PP † 3PP † 6† A B D
Name Capabilities (effective) # Notes Comments
------------ ------------------- ------------------- --- ------- ----------
DBT 3PP 3PP 6† A B D †
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
M76 A NT h-d LF† [INF] NT h-d LF† [INF] 7† A B D
7.6cm FRC NT QSU † NT QSU † 8† A B
7.6cm FRC NT QSU NT QSU 8† A B †
C47 FRC M 32 NT QSU NT QSU 9 B
C75 TR NT QSU h-d s5 NT QSU h-d s5 10 B
C75 GP NT LF [75*, B10] s5 NT LF [75*, B10] s5 11 B

@ -1,11 +1,11 @@
=== ordnance/british/1940 ===
Name Capabilities (effective) # Notes
--------------------------- --------------------------------- ----------------------------- --- --------------------
Name Capabilities (effective) # Notes Comments
--------------------------- --------------------------------- ----------------------------- --- -------------------- ---------------
OML 2-in. Mortar 4PP IR[2+]† s7 4PP s7 1 A† N P
OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU WP7 2† A†<sup>1</sup> D N P
OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
OSB 4.2-in. Mortar NT WP7 s8 NT WP7 s8 3† N P Towed†
OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†<sup>1</sup> N P
OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU 6† B N P
@ -21,8 +21,8 @@ OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8
OBL 4.5-in. Gun NT NT 16† N
OBL 5.5-in. Gun-Howitzer NT NT 16† N P
OBL 6-in. Howitzer NT NT 17† N P
OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
OBL 7.2-in. Howitzer Mk I NT NT 18† N P No IF. Acq. NA†
OBL 7.2-in. Howitzer Mk VI NT RFNM NT RFNM 19† P No IF.
OQF 20mm AA T T 20 n/a
OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†<sup>1</sup> N P
OQF 3-in. 20-cwt AA T T 22† E P

@ -1,11 +1,11 @@
=== ordnance/british/1941 ===
Name Capabilities (effective) # Notes
--------------------------- --------------------------------- ----------------------------- --- --------------------
Name Capabilities (effective) # Notes Comments
--------------------------- --------------------------------- ----------------------------- --- -------------------- ---------------
OML 2-in. Mortar 4PP IR[2+]† s7 4PP s7 1 A† N P
OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU WP7 s8† 2† A†<sup>1</sup> D N P
OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
OSB 4.2-in. Mortar NT WP7 s8 NT WP7 s8 3† N P Towed†
OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†<sup>1</sup> N P
OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU 6† B N P
@ -21,8 +21,8 @@ OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8
OBL 4.5-in. Gun NT NT 16† N
OBL 5.5-in. Gun-Howitzer NT NT 16† N P
OBL 6-in. Howitzer NT NT 17† N P
OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
OBL 7.2-in. Howitzer Mk I NT NT 18† N P No IF. Acq. NA†
OBL 7.2-in. Howitzer Mk VI NT RFNM NT RFNM 19† P No IF.
OQF 20mm AA T T 20 n/a
OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†<sup>1</sup> N P
OQF 3-in. 20-cwt AA T T 22† E P

@ -1,11 +1,11 @@
=== ordnance/british/1942 ===
Name Capabilities (effective) # Notes
--------------------------- --------------------------------- ----------------------------- --- --------------------
Name Capabilities (effective) # Notes Comments
--------------------------- --------------------------------- ----------------------------- --- -------------------- ---------------
OML 2-in. Mortar 4PP IR[2+]† s7 4PP IR† s7 1 A† N P
OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU IR†[1] WP7 s8† 2† A†<sup>1</sup> D N P
OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
OSB 4.2-in. Mortar NT WP7 s8 NT WP7 s8 3† N P Towed†
OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†<sup>1</sup> N P
OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU 6† B N P
@ -21,8 +21,8 @@ OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8
OBL 4.5-in. Gun NT NT 16† N
OBL 5.5-in. Gun-Howitzer NT NT 16† N P
OBL 6-in. Howitzer NT NT 17† N P
OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
OBL 7.2-in. Howitzer Mk I NT NT 18† N P No IF. Acq. NA†
OBL 7.2-in. Howitzer Mk VI NT RFNM NT RFNM 19† P No IF.
OQF 20mm AA T T 20 n/a
OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†<sup>1</sup> N P
OQF 3-in. 20-cwt AA T T 22† E P

@ -1,11 +1,11 @@
=== ordnance/british/1943 ===
Name Capabilities (effective) # Notes
--------------------------- --------------------------------- ----------------------------- --- --------------------
Name Capabilities (effective) # Notes Comments
--------------------------- --------------------------------- ----------------------------- --- -------------------- ---------------
OML 2-in. Mortar 4PP IR[2+]† s7 4PP IR† s7 1 A† N P
OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU IR†[1] WP7 s8† 2† A†<sup>1</sup> D N P
OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
OSB 4.2-in. Mortar NT WP7 s8 NT WP7 s8 3† N P Towed†
OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†<sup>1</sup> N P
OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU 6† B N P
@ -21,8 +21,8 @@ OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8
OBL 4.5-in. Gun NT NT 16† N
OBL 5.5-in. Gun-Howitzer NT NT 16† N P
OBL 6-in. Howitzer NT NT 17† N P
OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
OBL 7.2-in. Howitzer Mk I NT NT 18† N P No IF. Acq. NA†
OBL 7.2-in. Howitzer Mk VI NT RFNM NT RFNM 19† P No IF.
OQF 20mm AA T T 20 n/a
OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†<sup>1</sup> N P
OQF 3-in. 20-cwt AA T T 22† E P

@ -1,11 +1,11 @@
=== ordnance/british/1944 ===
Name Capabilities (effective) # Notes
--------------------------- --------------------------------- ----------------------------- --- --------------------
Name Capabilities (effective) # Notes Comments
--------------------------- --------------------------------- ----------------------------- --- -------------------- ---------------
OML 2-in. Mortar 4PP IR[2+]† s7 4PP IR† s7 1 A† N P
OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU IR†[1] WP7 s8† 2† A†<sup>1</sup> D N P
OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
OSB 4.2-in. Mortar NT WP7 s8 NT WP7 s8 3† N P Towed†
OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†<sup>1</sup> N P
OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU HE8† 6† B N P
@ -21,8 +21,8 @@ OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8
OBL 4.5-in. Gun NT NT 16† N
OBL 5.5-in. Gun-Howitzer NT NT 16† N P
OBL 6-in. Howitzer NT NT 17† N P
OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
OBL 7.2-in. Howitzer Mk I NT NT 18† N P No IF. Acq. NA†
OBL 7.2-in. Howitzer Mk VI NT RFNM NT RFNM 19† P No IF.
OQF 20mm AA T T 20 n/a
OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†<sup>1</sup> N P
OQF 3-in. 20-cwt AA T T 22† E P

@ -1,11 +1,11 @@
=== ordnance/british/1945 ===
Name Capabilities (effective) # Notes
--------------------------- --------------------------------- ----------------------------- --- --------------------
Name Capabilities (effective) # Notes Comments
--------------------------- --------------------------------- ----------------------------- --- -------------------- ---------------
OML 2-in. Mortar 4PP IR[2+]† s7 4PP IR† s7 1 A† N P
OML 2-in. Airborne Mortar IR s7 3PP IR s7 3PP 1 n/a
OML 3-in. Mortar NT QSU IR[2+]†[1] WP7 s8[1+]† NT QSU IR†[1] WP7 s8† 2† A†<sup>1</sup> D N P
OSB 4.2-in. Mortar NT WP7 s8 Towed† NT WP7 s8 Towed† 3† N P
OSB 4.2-in. Mortar NT WP7 s8 NT WP7 s8 3† N P Towed†
OQF 25mm Hotchkiss NT QSU NT QSU 4† B N
OQF 2-Pounder T LF [NT, 40†[1], 2 ROF, B11] T LF [NT, 40†[1], 2 ROF, B11] 5† B C†<sup>1</sup> N P
OQF 6-Pounder 7-cwt NT QSU D6[J4E]7[5]† HE7[F3]8[4+]† NT QSU D7† HE8† 6† B N P
@ -21,8 +21,8 @@ OQF 4.5-in. Howitzer NT WP7 s8 NT WP7 s8
OBL 4.5-in. Gun NT NT 16† N
OBL 5.5-in. Gun-Howitzer NT NT 16† N P
OBL 6-in. Howitzer NT NT 17† N P
OBL 7.2-in. Howitzer Mk I NT no IF Acq. NA† NT no IF Acq. NA† 18† N P
OBL 7.2-in. Howitzer Mk VI NT RFNM no IF NT RFNM no IF 19† P
OBL 7.2-in. Howitzer Mk I NT NT 18† N P No IF. Acq. NA†
OBL 7.2-in. Howitzer Mk VI NT RFNM NT RFNM 19† P No IF.
OQF 20mm AA T T 20 n/a
OQF 40mm AA T LF [40†[1], 2 ROF] T LF [40†[1], 2 ROF] 21† C†<sup>1</sup> N P
OQF 3-in. 20-cwt AA T T 22† E P

@ -1,12 +1,12 @@
=== ordnance/bulgarian/1940 ===
Name Capabilities (effective) # Notes
------------------ ------------------------------- ------------------------------- --- --------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU no Gunshield R2 IFE=B10† NT QSU no Gunshield R2 IFE=B10† 38† T†<sup>1</sup>
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM no IF NT RFNM no IF 43 n/a
Name Capabilities (effective) # Notes Comments
------------------ ------------------- ------------------- --- -------------- -------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU R2 IFE=B10† NT QSU R2 IFE=B10† 38† T†<sup>1</sup> No Gunshield.
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM NT RFNM 43 n/a No IF.

@ -1,12 +1,12 @@
=== ordnance/bulgarian/1941 ===
Name Capabilities (effective) # Notes
------------------ ------------------------------- ------------------------------- --- --------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU no Gunshield R2 IFE=B10† NT QSU no Gunshield R2 IFE=B10† 38† T†<sup>1</sup>
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM no IF NT RFNM no IF 43 n/a
Name Capabilities (effective) # Notes Comments
------------------ ------------------- ------------------- --- -------------- -------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU R2 IFE=B10† NT QSU R2 IFE=B10† 38† T†<sup>1</sup> No Gunshield.
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM NT RFNM 43 n/a No IF.

@ -1,12 +1,12 @@
=== ordnance/bulgarian/1942 ===
Name Capabilities (effective) # Notes
------------------ ------------------------------- ------------------------------- --- --------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU no Gunshield R2 IFE=B10† NT QSU no Gunshield R2 IFE=B10† 38† T†<sup>1</sup>
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM no IF NT RFNM no IF 43 n/a
Name Capabilities (effective) # Notes Comments
------------------ ------------------- ------------------- --- -------------- -------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU R2 IFE=B10† NT QSU R2 IFE=B10† 38† T†<sup>1</sup> No Gunshield.
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM NT RFNM 43 n/a No IF.

@ -1,12 +1,12 @@
=== ordnance/bulgarian/1943 ===
Name Capabilities (effective) # Notes
------------------ ------------------------------- ------------------------------- --- --------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU no Gunshield R2 IFE=B10† NT QSU no Gunshield R2 IFE=B10† 38† T†<sup>1</sup>
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM no IF NT RFNM no IF 43 n/a
Name Capabilities (effective) # Notes Comments
------------------ ------------------- ------------------- --- -------------- -------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU R2 IFE=B10† NT QSU R2 IFE=B10† 38† T†<sup>1</sup> No Gunshield.
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM NT RFNM 43 n/a No IF.

@ -1,12 +1,12 @@
=== ordnance/bulgarian/1944 ===
Name Capabilities (effective) # Notes
------------------ ------------------------------- ------------------------------- --- --------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU no Gunshield R2 IFE=B10† NT QSU no Gunshield R2 IFE=B10† 38† T†<sup>1</sup>
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM no IF NT RFNM no IF 43 n/a
Name Capabilities (effective) # Notes Comments
------------------ ------------------- ------------------- --- -------------- -------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU R2 IFE=B10† NT QSU R2 IFE=B10† 38† T†<sup>1</sup> No Gunshield.
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM NT RFNM 43 n/a No IF.

@ -1,12 +1,12 @@
=== ordnance/bulgarian/1945 ===
Name Capabilities (effective) # Notes
------------------ ------------------------------- ------------------------------- --- --------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU no Gunshield R2 IFE=B10† NT QSU no Gunshield R2 IFE=B10† 38† T†<sup>1</sup>
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM no IF NT RFNM no IF 43 n/a
Name Capabilities (effective) # Notes Comments
------------------ ------------------- ------------------- --- -------------- -------------
LG de 50 mle 37 2PP 2PP 37 A
Madsen M-35 NT QSU R2 IFE=B10† NT QSU R2 IFE=B10† 38† T†<sup>1</sup> No Gunshield.
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Skoda Infantry Gun NT QSU h-d NT QSU h-d 39† n/a
Bofors 75mm M36 NT QSU h-d NT QSU h-d 40† A
75mm K-S NT QSU h-d s5 NT QSU h-d s5 41† n/a
Ob 105mm GP NT LF [105*†[1]] s5 NT LF [105*†[1]] s5 42† G†<sup>1</sup>
D/30 Krupp NT RFNM NT RFNM 43 n/a No IF.

@ -1,8 +1,8 @@
=== ordnance/chinese/1940 ===
Name Capabilities (effective) # Notes
------------------------------ ------------------------------ ------------------------------ ------ --------------------------
Type 27 Grenade Launcher 2PP Air Bursts NA† 2PP Air Bursts NA† 1† A
Name Capabilities (effective) # Notes Comments
------------------------------ ------------------------------ ------------------------------ ------ -------------------------- ------------------
Type 27 Grenade Launcher 2PP 2PP 1† A Air Bursts NA†
Mortaio da 45 "Brixia" 4PP 4PP 2 A D†
5cm leGrW 36 5PP 5PP 2 A
50mm RM obr. 38 5PP 5PP 2 A
@ -15,8 +15,8 @@ M1 81mm NT QSU WP7 NT QSU WP7
M2 4.2-in. NT QSU WP9 NT QSU WP9 5† B
3.7cm PaK 35/36 NT QSU NT QSU 6 E†
M3A1 37mm NT QSU C7†[1] NT QSU C7†[1] 6† C†<sup>1</sup>
37mm PP obr. 15R NT QSU h-d Low Ammo† NT QSU h-d Low Ammo† 7† <s>B</s>
Cannone da 70/15 NT QSU Acq. NA† Low Ammo† h-d NT QSU Acq. NA† Low Ammo† h-d 7† A <s>B</s>
37mm PP obr. 15R NT QSU h-d NT QSU h-d 7† <s>B</s> Low Ammo†
Cannone da 70/15 NT QSU h-d NT QSU h-d 7† A <s>B</s> Acq. NA† Low Ammo†
7.5cm Krupp M08 NT QSU h-d AP5 s5 NT QSU h-d AP5 s5 8 A F†
Obice da 75/13 NT QSU h-d NT QSU h-d 8 A D† F†<sup>1</sup>
7.5cm leIG 18 NT QSU h-d NT QSU h-d 9† n/a

@ -1,8 +1,8 @@
=== ordnance/chinese/1941 ===
Name Capabilities (effective) # Notes
------------------------------ ------------------------------ ------------------------------ ------ --------------------------
Type 27 Grenade Launcher 2PP Air Bursts NA† 2PP Air Bursts NA† 1† A
Name Capabilities (effective) # Notes Comments
------------------------------ ------------------------------ ------------------------------ ------ -------------------------- ------------------
Type 27 Grenade Launcher 2PP 2PP 1† A Air Bursts NA†
Mortaio da 45 "Brixia" 4PP 4PP 2 A D†
5cm leGrW 36 5PP 5PP 2 A
50mm RM obr. 38 5PP 5PP 2 A
@ -15,8 +15,8 @@ M1 81mm NT QSU WP7 NT QSU WP7
M2 4.2-in. NT QSU WP9 NT QSU WP9 5† B
3.7cm PaK 35/36 NT QSU NT QSU 6 E†
M3A1 37mm NT QSU C7†[1] NT QSU C7†[1] 6† C†<sup>1</sup>
37mm PP obr. 15R NT QSU h-d Low Ammo† NT QSU h-d Low Ammo† 7† <s>B</s>
Cannone da 70/15 NT QSU Acq. NA† Low Ammo† h-d NT QSU Acq. NA† Low Ammo† h-d 7† A <s>B</s>
37mm PP obr. 15R NT QSU h-d NT QSU h-d 7† <s>B</s> Low Ammo†
Cannone da 70/15 NT QSU h-d NT QSU h-d 7† A <s>B</s> Acq. NA† Low Ammo†
7.5cm Krupp M08 NT QSU h-d AP5 s5 NT QSU h-d AP5 s5 8 A F†
Obice da 75/13 NT QSU h-d NT QSU h-d 8 A D† F†<sup>1</sup>
7.5cm leIG 18 NT QSU h-d NT QSU h-d 9† n/a

@ -1,8 +1,8 @@
=== ordnance/chinese/1942 ===
Name Capabilities (effective) # Notes
------------------------------ ------------------------------ ------------------------------ ------ --------------------------
Type 27 Grenade Launcher 2PP Air Bursts NA† 2PP Air Bursts NA† 1† A
Name Capabilities (effective) # Notes Comments
------------------------------ ------------------------------ ------------------------------ ------ -------------------------- ------------------
Type 27 Grenade Launcher 2PP 2PP 1† A Air Bursts NA†
Mortaio da 45 "Brixia" 4PP 4PP 2 A D†
5cm leGrW 36 5PP 5PP 2 A
50mm RM obr. 38 5PP 5PP 2 A
@ -15,8 +15,8 @@ M1 81mm NT QSU WP7 NT QSU WP7
M2 4.2-in. NT QSU WP9 NT QSU WP9 5† B
3.7cm PaK 35/36 NT QSU NT QSU 6 E†
M3A1 37mm NT QSU C7†[1] NT QSU C7†[1] 6† C†<sup>1</sup>
37mm PP obr. 15R NT QSU h-d Low Ammo† NT QSU h-d Low Ammo† 7† <s>B</s>
Cannone da 70/15 NT QSU Acq. NA† Low Ammo† h-d NT QSU Acq. NA† Low Ammo† h-d 7† A <s>B</s>
37mm PP obr. 15R NT QSU h-d NT QSU h-d 7† <s>B</s> Low Ammo†
Cannone da 70/15 NT QSU h-d NT QSU h-d 7† A <s>B</s> Acq. NA† Low Ammo†
7.5cm Krupp M08 NT QSU h-d AP5 s5 NT QSU h-d AP5 s5 8 A F†
Obice da 75/13 NT QSU h-d NT QSU h-d 8 A D† F†<sup>1</sup>
7.5cm leIG 18 NT QSU h-d NT QSU h-d 9† n/a

@ -1,8 +1,8 @@
=== ordnance/chinese/1943 ===
Name Capabilities (effective) # Notes
------------------------------ ------------------------------ ------------------------------ ------ --------------------------
Type 27 Grenade Launcher 2PP Air Bursts NA† 2PP Air Bursts NA† 1† A
Name Capabilities (effective) # Notes Comments
------------------------------ ------------------------------ ------------------------------ ------ -------------------------- ------------------
Type 27 Grenade Launcher 2PP 2PP 1† A Air Bursts NA†
Mortaio da 45 "Brixia" 4PP 4PP 2 A D†
5cm leGrW 36 5PP 5PP 2 A
50mm RM obr. 38 5PP 5PP 2 A
@ -15,8 +15,8 @@ M1 81mm NT QSU WP7 NT QSU WP7
M2 4.2-in. NT QSU WP9 NT QSU WP9 5† B
3.7cm PaK 35/36 NT QSU NT QSU 6 E†
M3A1 37mm NT QSU C7†[1] NT QSU C7†[1] 6† C†<sup>1</sup>
37mm PP obr. 15R NT QSU h-d Low Ammo† NT QSU h-d Low Ammo† 7† <s>B</s>
Cannone da 70/15 NT QSU Acq. NA† Low Ammo† h-d NT QSU Acq. NA† Low Ammo† h-d 7† A <s>B</s>
37mm PP obr. 15R NT QSU h-d NT QSU h-d 7† <s>B</s> Low Ammo†
Cannone da 70/15 NT QSU h-d NT QSU h-d 7† A <s>B</s> Acq. NA† Low Ammo†
7.5cm Krupp M08 NT QSU h-d AP5 s5 NT QSU h-d AP5 s5 8 A F†
Obice da 75/13 NT QSU h-d NT QSU h-d 8 A D† F†<sup>1</sup>
7.5cm leIG 18 NT QSU h-d NT QSU h-d 9† n/a

@ -1,8 +1,8 @@
=== ordnance/chinese/1944 ===
Name Capabilities (effective) # Notes
------------------------------ ------------------------------ ------------------------------ ------ --------------------------
Type 27 Grenade Launcher 2PP Air Bursts NA† 2PP Air Bursts NA† 1† A
Name Capabilities (effective) # Notes Comments
------------------------------ ------------------------------ ------------------------------ ------ -------------------------- ------------------
Type 27 Grenade Launcher 2PP 2PP 1† A Air Bursts NA†
Mortaio da 45 "Brixia" 4PP 4PP 2 A D†
5cm leGrW 36 5PP 5PP 2 A
50mm RM obr. 38 5PP 5PP 2 A
@ -15,8 +15,8 @@ M1 81mm NT QSU WP7 NT QSU WP7
M2 4.2-in. NT QSU WP9 NT QSU WP9 5† B
3.7cm PaK 35/36 NT QSU NT QSU 6 E†
M3A1 37mm NT QSU C7†[1] NT QSU C7†[1] 6† C†<sup>1</sup>
37mm PP obr. 15R NT QSU h-d Low Ammo† NT QSU h-d Low Ammo† 7† <s>B</s>
Cannone da 70/15 NT QSU Acq. NA† Low Ammo† h-d NT QSU Acq. NA† Low Ammo† h-d 7† A <s>B</s>
37mm PP obr. 15R NT QSU h-d NT QSU h-d 7† <s>B</s> Low Ammo†
Cannone da 70/15 NT QSU h-d NT QSU h-d 7† A <s>B</s> Acq. NA† Low Ammo†
7.5cm Krupp M08 NT QSU h-d AP5 s5 NT QSU h-d AP5 s5 8 A F†
Obice da 75/13 NT QSU h-d NT QSU h-d 8 A D† F†<sup>1</sup>
7.5cm leIG 18 NT QSU h-d NT QSU h-d 9† n/a

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save