diff --git a/vasl_templates/webapp/data/expected-multiple-images.json b/vasl_templates/webapp/data/expected-multiple-images.json index fcc9ef1..63294c8 100644 --- a/vasl_templates/webapp/data/expected-multiple-images.json +++ b/vasl_templates/webapp/data/expected-multiple-images.json @@ -2,14 +2,14 @@ "1555": { "name": "2pdr Portee", - "front_images": [ "br/vehicles/portee", "br/vehicles/portee0" ], + "front_images": [ "br/vehicles/portee.gif", "br/vehicles/portee0.gif" ], "back_images": null }, "2212": { "name": "76* INF FRC", - "front_images": [ "al/gun/alINF76", "al/gun/alINF76u" ], - "back_images": "al/gun/alINF76b" + "front_images": [ "al/gun/alINF76.gif", "al/gun/alINF76u.gif" ], + "back_images": "al/gun/alINF76b.gif" }, "adf:1828": { diff --git a/vasl_templates/webapp/data/vasl-overrides.json b/vasl_templates/webapp/data/vasl-overrides.json index 472841b..bb073ef 100644 --- a/vasl_templates/webapp/data/vasl-overrides.json +++ b/vasl_templates/webapp/data/vasl-overrides.json @@ -3,22 +3,22 @@ "2474": { "expected": { "name": "Goliath", - "front_images": [ "ge/gegol", "ge/gegolb" ], + "front_images": [ "ge/gegol.gif", "ge/gegolb.gif" ], "back_images": null }, "updated": { - "front_images": "ge/gegol" + "front_images": "ge/gegol.gif" } }, "1555": { "expected": { "name": "2pdr Portee", - "front_images": "br/vehicles/portee", - "back_images": [ "br/vehicles/portee", "br/vehicles/portee0" ] + "front_images": "br/vehicles/portee.gif", + "back_images": [ "br/vehicles/portee.gif", "br/vehicles/portee0.gif" ] }, "updated": { - "front_images": [ "br/vehicles/portee", "br/vehicles/portee0" ], + "front_images": [ "br/vehicles/portee.gif", "br/vehicles/portee0.gif" ], "back_images": null } }, @@ -26,34 +26,34 @@ "3463": { "expected": { "name": "75L AA 75/46", - "front_images": [ "it/gun/itAA7546", "it/gun/itAA7546b" ], - "back_images": [ "it/gun/itAA7546b", "it/gun/itAA7546lb" ] + "front_images": [ "it/gun/itAA7546.gif", "it/gun/itAA7546b.gif" ], + "back_images": [ "it/gun/itAA7546b.gif", "it/gun/itAA7546lb.gif" ] }, "updated": { - "front_images": "it/gun/itAA7546", - "back_images": "it/gun/itAA7546b" + "front_images": "it/gun/itAA7546.gif", + "back_images": "it/gun/itAA7546b.gif" } }, "3776": { "expected": { "name": "37* INF Skoda IG", - "front_images": [ "ax/gun/buIN37s", "ax/gun/buIN37s2" ], - "back_images": "ax/gun/buIN37sb" + "front_images": [ "ax/gun/buIN37s.gif", "ax/gun/buIN37s2.gif" ], + "back_images": "ax/gun/buIN37sb.gif" }, "updated": { - "front_images": "ax/gun/buIN37s" + "front_images": "ax/gun/buIN37s.gif" } }, "3777": { "expected": { "name": "70* INF Skoda IG", - "front_images": [ "ax/gun/buIN37s", "ax/gun/buIN37s2" ], - "back_images": "ax/gun/buIN37sb" + "front_images": [ "ax/gun/buIN37s.gif", "ax/gun/buIN37s2.gif" ], + "back_images": "ax/gun/buIN37sb.gif" }, "updated": { - "front_images": "ax/gun/buIN37s2" + "front_images": "ax/gun/buIN37s2.gif" } }, @@ -104,8 +104,8 @@ "adf:1824": { "expected": { "name": "37L AT PTP obr. 30", - "front_images": "ru/gun/ruAT37L", - "back_images": "ru/gun/ruAT37Lb" + "front_images": "ru/gun/ruAT37L.gif", + "back_images": "ru/gun/ruAT37Lb.gif" }, "updated": { "front_images": "ru/gun/ru37LPTPobr30.png" @@ -114,8 +114,8 @@ "adf:1822": { "expected": { "name": "37* INF PP obr. 15R", - "front_images": "ru/gun/ruINF37s", - "back_images": "ru/gun/ruINF37sb" + "front_images": "ru/gun/ruINF37s.gif", + "back_images": "ru/gun/ruINF37sb.gif" }, "updated": { "front_images": "ru/gun/ru37PPobr15R.png" @@ -124,8 +124,8 @@ "adf:1823": { "expected": { "name": "76* INF PP obr. 27", - "front_images": "ru/gun/ruINF76s", - "back_images": "ru/gun/ruINF76sb" + "front_images": "ru/gun/ruINF76s.gif", + "back_images": "ru/gun/ruINF76sb.gif" }, "updated": { "front_images": "ru/gun/ru76PPobr27.png" diff --git a/vasl_templates/webapp/files.py b/vasl_templates/webapp/files.py index a4f1a72..d88714e 100644 --- a/vasl_templates/webapp/files.py +++ b/vasl_templates/webapp/files.py @@ -6,7 +6,7 @@ import urllib.request import urllib.parse import mimetypes -from flask import send_file, send_from_directory, jsonify, redirect, url_for, abort +from flask import send_file, send_from_directory, jsonify, redirect, url_for, abort, render_template from vasl_templates.webapp import app, globvars from vasl_templates.webapp.utils import resize_image_response, is_empty_file @@ -99,3 +99,14 @@ def get_vasl_piece_info(): # return the VASL piece info return jsonify( globvars.vasl_mod.get_piece_info() ) + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +@app.route( "/counter-image-urls//" ) +def get_counter_image_urls( nat, vo_type ): + """Get the URL's for each counter image (for testing porpoises).""" + return render_template( "counter-image-urls.html", + NATIONALITY = nat, + VO_TYPE = vo_type, + VO_TYPE0 = vo_type[:-1] if vo_type.endswith("s") else vo_type, + ) diff --git a/vasl_templates/webapp/main.py b/vasl_templates/webapp/main.py index 7784532..0e67b11 100644 --- a/vasl_templates/webapp/main.py +++ b/vasl_templates/webapp/main.py @@ -48,6 +48,26 @@ def get_startup_msgs(): # --------------------------------------------------------------------- +_APP_CONFIG_DEFAULTS = { # Bodhgaya, India (APR/19) + # NOTE: We use HTTP for static images, since VASSAL is already insanely slow loading images (done in serial?), + # so I don't even want to think about what it might be doing during a TLS handshake... :-/ + "ONLINE_IMAGES_URL_BASE": "http://vasl-templates.org/services/static-images", + # NOTE: We would rather use https://github.com/vasl-developers/vasl/raw/develop/dist/images/ in the template, + # but VASSAL is already so slow to load images, and doing everything twice would make it that much worse :-/ + "ONLINE_COUNTER_IMAGES_URL_TEMPLATE": "https://raw.githubusercontent.com/vasl-developers/vasl/develop/dist/images/{{PATH}}", #pylint: disable=line-too-long + "ONLINE_EXTN_COUNTER_IMAGES_URL_TEMPLATE": "http://vasl-templates.org/services/counter/{{EXTN_ID}}/{{PATH}}", +} + +@app.route( "/app-config" ) +def get_app_config(): + """Get the application config.""" + return jsonify( { + key: app.config.get( key, default ) + for key,default in _APP_CONFIG_DEFAULTS.items() + } ) + +# --------------------------------------------------------------------- + @app.route( "/help" ) def show_help(): """Show the help page.""" diff --git a/vasl_templates/webapp/static/css/user-settings-dialog.css b/vasl_templates/webapp/static/css/user-settings-dialog.css index 57a2323..b7f1e49 100644 --- a/vasl_templates/webapp/static/css/user-settings-dialog.css +++ b/vasl_templates/webapp/static/css/user-settings-dialog.css @@ -1,6 +1,8 @@ .ui-dialog.user-settings .ui-dialog-titlebar { background: #80d0ff ; } .ui-dialog.user-settings .ui-dialog-buttonpane { border: none ; margin-top: 0 !important ; padding-top: 0 !important ; } -.ui-dialog.user-settings fieldset { margin: 1em 0 0 0 ; padding-top: 0.25em ; border-radius: 0 ; } -.ui-dialog.user-settings .run-as-server-note { margin-bottom: 0.5em ; font-size: 80% ; font-style: italic ; color: #666 ; } -.ui-dialog.user-settings .run-as-server-note img { float: left ; margin-right: 0.25em ; } +.ui-dialog.user-settings fieldset { margin: 0.5em 0 0 0 ; padding-top: 0.5em ; border-radius: 0 ; } + +.ui-dialog.user-settings img.need-localhost { display: inline-block ; height: 0.75em ; } +.ui-dialog.user-settings div.need-localhost { float: left ; width: 290px ; font-size: 80% ; font-style: italic ; color: #c02020 ; } +.ui-dialog.user-settings div.need-localhost img { float: left ; height: 1.5em ; margin-right: 0.25em ; } diff --git a/vasl_templates/webapp/static/images/bullet.png b/vasl_templates/webapp/static/images/bullet.png old mode 100755 new mode 100644 diff --git a/vasl_templates/webapp/static/images/warning.gif b/vasl_templates/webapp/static/images/warning.gif new file mode 100644 index 0000000..4a0f577 Binary files /dev/null and b/vasl_templates/webapp/static/images/warning.gif differ diff --git a/vasl_templates/webapp/static/main.js b/vasl_templates/webapp/static/main.js index 8e47ecd..e029917 100644 --- a/vasl_templates/webapp/static/main.js +++ b/vasl_templates/webapp/static/main.js @@ -1,5 +1,6 @@ APP_URL_BASE = window.location.origin ; +gAppConfig = {} ; gDefaultTemplatePack = null ; gTemplatePack = {} ; gValidTemplateIds = [] ; @@ -198,7 +199,7 @@ $(document).ready( function () { function format_player_droplist_item( opt ) { if ( ! opt.id ) return opt.text ; - var url = make_player_flag_url( opt.id ) ; + var url = make_player_flag_url( opt.id, false ) ; return $( "
" + "" + " " + opt.text + @@ -241,6 +242,14 @@ $(document).ready( function () { $sel.data( "select2" ).$results.css( "max-height", "15em" ) ; } + // get the application config + $.getJSON( gAppConfigUrl, function(data) { + gAppConfig = data ; + update_page_load_status( "app-config" ) ; + } ).fail( function( xhr, status, errorMsg ) { + showErrorMsg( "Can't get the application config:
" + escapeHTML(errorMsg) + "
" ) ; + } ) ; + // get the vehicle/ordnance listings $.getJSON( gVehicleListingsUrl, function(data) { gVehicleOrdnanceListings.vehicles = data ; @@ -452,7 +461,7 @@ function init_snippet_button( $btn ) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - gPageLoadStatus = [ - "main", + "main", "app-config", "vehicle-listings", "ordnance-listings", "reset-scenario", "vehicle-notes", "ordnance-notes", "vasl-piece-info", "template-pack", "default-scenario" @@ -519,7 +528,7 @@ function update_page_load_status( id ) // preload the flag images (so that the player droplist renders immediately) for ( var nat in gTemplatePack.nationalities ) { $("body").append( $( - "" + "" ) ) ; } } @@ -716,7 +725,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 = make_player_flag_url( player_nat ) ; + var image_url = make_player_flag_url( player_nat, false ) ; var $elem = $( "#tabs .ui-tabs-nav a[href='#tabs-ob" + player_no + "']" ) ; $elem.html( " " + diff --git a/vasl_templates/webapp/static/snippets.js b/vasl_templates/webapp/static/snippets.js index 159c1a6..04df056 100644 --- a/vasl_templates/webapp/static/snippets.js +++ b/vasl_templates/webapp/static/snippets.js @@ -125,7 +125,9 @@ function make_snippet( $btn, params, extra_params, show_date_warnings ) var snippet_save_name = null ; // add simple parameters - params.IMAGES_BASE_URL = APP_URL_BASE + gImagesBaseUrl ; + params.IMAGES_BASE_URL = gUserSettings["use-online-images"] ? + gAppConfig.ONLINE_IMAGES_URL_BASE : + APP_URL_BASE + gImagesBaseUrl ; if ( gUserSettings["custom-list-bullets"] ) params.CUSTOM_LIST_BULLETS = true ; @@ -137,7 +139,7 @@ function make_snippet( $btn, params, extra_params, show_date_warnings ) params.OB_COLOR = colors[0] ; params.OB_COLOR_2 = colors[2] ; if ( gUserSettings["include-flags-in-snippets"] ) - params.PLAYER_FLAG = make_player_flag_url( get_player_nat( player_no ) ) ; + params.PLAYER_FLAG = make_player_flag_url( get_player_nat(player_no), true ) ; } // set the snippet ID @@ -288,8 +290,8 @@ function make_snippet( $btn, params, extra_params, show_date_warnings ) params.PLAYER_1_NAME = get_nationality_display_name( params.PLAYER_1 ) ; params.PLAYER_2_NAME = get_nationality_display_name( params.PLAYER_2 ) ; if ( gUserSettings["include-flags-in-snippets"] ) { - params.PLAYER_FLAG_1 = make_player_flag_url( get_player_nat( 1 ) ) ; - params.PLAYER_FLAG_2 = make_player_flag_url( get_player_nat( 2 ) ) ; + params.PLAYER_FLAG_1 = make_player_flag_url( get_player_nat(1), true ) ; + params.PLAYER_FLAG_2 = make_player_flag_url( get_player_nat(2), true ) ; } // pass through all the player colors and names @@ -300,7 +302,7 @@ function make_snippet( $btn, params, extra_params, show_date_warnings ) params.PLAYER_NAMES[nat] = gTemplatePack.nationalities[nat].display_name ; params.PLAYER_COLORS[nat] = gTemplatePack.nationalities[nat].ob_colors ; if ( gUserSettings["include-flags-in-snippets"] ) - params.PLAYER_FLAGS[nat] = make_player_flag_url( nat ) ; + params.PLAYER_FLAGS[nat] = make_player_flag_url( nat, true ) ; } ) ; // generate PF parameters @@ -746,9 +748,9 @@ function unload_snippet_params( unpack_scenario_date, template_id ) 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 ) ; + var url = get_vo_image_url( vo_entry, vo_image_id, false, true ) ; if ( url ) - obj.image = APP_URL_BASE + url ; + obj.image = url ; if ( $(this).find( ".vo-entry" ).hasClass( "small-piece" ) ) obj.small_piece = true ; } diff --git a/vasl_templates/webapp/static/user_settings.js b/vasl_templates/webapp/static/user_settings.js index 2c4b718..2086bbf 100644 --- a/vasl_templates/webapp/static/user_settings.js +++ b/vasl_templates/webapp/static/user_settings.js @@ -2,6 +2,7 @@ gUserSettings = Cookies.getJSON( "user-settings" ) || {} ; USER_SETTINGS = { "date-format": "droplist", + "use-online-images": "checkbox", "hide-unavailable-ma-notes": "checkbox", "include-vasl-images-in-snippets": "checkbox", "include-flags-in-snippets": "checkbox", @@ -20,6 +21,7 @@ function user_settings() var func = handlers[ "load_" + USER_SETTINGS[name] ] ; func( $elem, gUserSettings[name] ) ; } + update_ui() ; } function unload_settings() { @@ -33,6 +35,27 @@ function user_settings() return settings ; } + function update_ui() { + // update the UI + var use_online_images = $( ".ui-dialog.user-settings input[name='use-online-images']" ).prop( "checked" ) ; + $( ".ui-dialog.user-settings img.need-localhost.sometimes" ).css( + "display", use_online_images ? "none" : "inline-block" + ) ; + // update the UI + var rc = false ; + $( ".ui-dialog.user-settings input.need-localhost:checked" ).each( function() { + if ( $(this).hasClass( "sometimes" ) ) { + if ( ! use_online_images ) + rc = true ; + } + else + rc = true ; + } ) ; + $( ".ui-dialog.user-settings div.need-localhost" ).css( + "display", rc ? "block" : "none" + ) ; + } + var handlers = { load_checkbox: function( $elem, val ) { $elem.prop( "checked", val?true:false ) ; }, unload_checkbox: function( $elem ) { return $elem.prop( "checked" ) ; }, @@ -46,10 +69,30 @@ function user_settings() dialogClass: "user-settings", modal: true, width: 440, - height: 315, + height: 305, resizable: false, create: function() { init_dialog( $(this), "OK", true ) ; + // initialize the "this program must be running" warnings + $( "input.need-localhost" ).each( function() { + var $img = $( "" ) ; + if ( $(this).hasClass( "sometimes" ) ) + $img.addClass( "sometimes" ) ; + $img.attr( "title", "If you turn this option on, this program must be running\nbefore you load the scenario into VASSAL." ) ; + $(this).next().before( $img ) ; + } ) ; + var $btn_pane = $(".ui-dialog.user-settings .ui-dialog-buttonpane") ; + $btn_pane.prepend( $( + "
" + + "This program must be running before
you load the scenario into VASSAL.
" + ) ) ; + // install handlers to keep the UI updated + for ( var name in USER_SETTINGS ) { + if ( USER_SETTINGS[name] === "checkbox" ) { + var $elem = $( ".ui-dialog.user-settings [name='" + name + "']" ) ; + $elem.click( update_ui ) ; + } + } }, open: function() { on_dialog_open( $(this) ) ; diff --git a/vasl_templates/webapp/static/utils.js b/vasl_templates/webapp/static/utils.js index f6b3e51..1d7d2c6 100644 --- a/vasl_templates/webapp/static/utils.js +++ b/vasl_templates/webapp/static/utils.js @@ -33,8 +33,11 @@ function get_player_colors_for_element( $elem ) return get_player_colors( player_no ) ; } -function make_player_flag_url( player_nat ) { - return APP_URL_BASE + "/flags/" + player_nat ; +function make_player_flag_url( nat, for_snippet ) { + if ( for_snippet && gUserSettings["use-online-images"] ) + return gAppConfig.ONLINE_IMAGES_URL_BASE + "/flags/" + nat + ".png" ; + else + return APP_URL_BASE + "/flags/" + nat ; } function get_player_no_for_element( $elem ) @@ -334,7 +337,7 @@ function add_flag_to_dialog_titlebar( $dlg, player_no ) if ( ! player_nat ) return ; var $titlebar = $dlg.dialog( "instance" ).uiDialogTitlebar ; - var url = make_player_flag_url( player_nat ) ; + var url = make_player_flag_url( player_nat, false ) ; $titlebar.find( ".ui-dialog-title" ).prepend( $( "" ) ).css( { display: "flex", "align-items": "center" } ) ; diff --git a/vasl_templates/webapp/static/vo.js b/vasl_templates/webapp/static/vo.js index 55bf7e1..386095c 100644 --- a/vasl_templates/webapp/static/vo.js +++ b/vasl_templates/webapp/static/vo.js @@ -21,7 +21,7 @@ function add_vo( vo_type, player_no ) if ( is_small_vasl_piece( vo_entry ) ) div_class += " small-piece" ; var buf2 = [ "
", - "", + "", "
", vo_entry.name, vo_entry.type ? " ("+vo_entry.type+")" : "", @@ -230,7 +230,7 @@ function update_vo_sortable2_entry( $entry, snippet_params ) } // update the vehicle/ordnance's sortable2 entry - var url = get_vo_image_url( vo_entry, vo_image_id, true ) ; + var url = get_vo_image_url( vo_entry, vo_image_id, true, false ) ; var $content = $entry.children( ".vo-entry" ) ; $content.find( "img.vasl-image" ).attr( "src", url ) ; var name = vo_entry.name ; @@ -318,7 +318,7 @@ function on_select_vo_image( $btn, on_ok ) { for ( var i=0 ; i < vo_images.length ; ++i ) { var $elem = $( "" ) .bind( "load", on_image_loaded ) - .attr( "src", get_vo_image_url( null, vo_images[i], true ) ) ; + .attr( "src", get_vo_image_url( null, vo_images[i], true, false ) ) ; $images.append( $elem ) ; } @@ -344,7 +344,7 @@ function on_select_vo_image( $btn, on_ok ) { // handle image selection $images.children( "img" ).click( function() { vo_image_id = vo_images[ $(this).data("index") ] ; - $img.attr( "src", get_vo_image_url(null,vo_image_id,true) ) ; + $img.attr( "src", get_vo_image_url(null,vo_image_id,true,false) ) ; $img.data( "vo-image-id", vo_image_id ) ; $dlg.dialog( "close" ) ; if ( on_ok ) @@ -379,18 +379,64 @@ function _find_vo_image_id( vo_images, vo_image_id ) return -1 ; } -function get_vo_image_url( vo_entry, vo_image_id, allow_missing_image ) +function get_vo_image_url( vo_entry, vo_image_id, allow_missing_image, for_snippet ) { - if ( vo_image_id ) - return "/counter/" + vo_image_id[0] + "/front/" + vo_image_id[1] ; - else { + // generate the image URL for the specified vehicle/ordnance + var gpid, index=null ; + if ( vo_image_id ) { + gpid = vo_image_id[0] ; + index = vo_image_id[1] ; + } else { // no V/O image ID was provided, just use the first available image - if ( $.isArray( vo_entry.gpid ) ) - return "/counter/" + vo_entry.gpid[0] + "/front" ; - if ( vo_entry.gpid ) - return "/counter/" + vo_entry.gpid + "/front" ; + gpid = $.isArray( vo_entry.gpid ) ? vo_entry.gpid[0] : vo_entry.gpid ; + } + if ( gpid ) { + if ( for_snippet && gUserSettings["use-online-images"] ) + return make_online_counter_image_url( gpid, index ) ; + else + return make_local_counter_image_url( gpid, index ) ; + } + + // couldn't find an image + if ( allow_missing_image ) { + if ( for_snippet && gUserSettings["use-online-images"] ) + return gAppConfig.ONLINE_IMAGES_URL_BASE + "/missing-image.png" ; + else + return gImagesBaseUrl + "/missing-image.png" ; } - return allow_missing_image ? gImagesBaseUrl + "/missing-image.png" : null ; + return null ; +} + +function make_local_counter_image_url( gpid, index ) +{ + url = APP_URL_BASE + "/counter/" + gpid + "/front" ; + if ( index !== null ) + url += "/" + index ; + return url ; +} + +function make_online_counter_image_url( gpid, index ) +{ + // check if we have a piece from the core VASL module or an extension + var url, extn_id ; + var pos = gpid.toString().indexOf( ":" ) ; + if ( pos === -1 ) + url = gAppConfig.ONLINE_COUNTER_IMAGES_URL_TEMPLATE ; + else { + url = gAppConfig.ONLINE_EXTN_COUNTER_IMAGES_URL_TEMPLATE ; + extn_id = gpid.substr( 0, pos ) ; + } + + // generate the URL + url = strReplaceAll( url, "{{GPID}}", gpid ) ; + if ( index === null ) + index = 0 ; + url = strReplaceAll( url, "{{INDEX}}", index ) ; + url = strReplaceAll( url, "{{PATH}}", gVaslPieceInfo[gpid].paths[index] ) ; + if ( extn_id ) + url = strReplaceAll( url, "{{EXTN_ID}}", extn_id ) ; + + return url ; } function is_small_vasl_piece( vo_entry ) diff --git a/vasl_templates/webapp/static/vo2.js b/vasl_templates/webapp/static/vo2.js index 64986e7..515451b 100644 --- a/vasl_templates/webapp/static/vo2.js +++ b/vasl_templates/webapp/static/vo2.js @@ -58,7 +58,7 @@ function _do_edit_ob_vo( $entry, player_no, vo_type ) // load the dialog var vo_image_id = $entry.data( "sortable2-data" ).vo_image_id ; - var url = get_vo_image_url( vo_entry, vo_image_id, true ) ; + var url = get_vo_image_url( vo_entry, vo_image_id, true, false ) ; var buf = [ "
", "", "
", diff --git a/vasl_templates/webapp/templates/counter-image-urls.html b/vasl_templates/webapp/templates/counter-image-urls.html new file mode 100644 index 0000000..b4df76c --- /dev/null +++ b/vasl_templates/webapp/templates/counter-image-urls.html @@ -0,0 +1,121 @@ + + + + + + Counter image URL's ({{NATIONALITY}}) + + + + + + + + + + + + + + diff --git a/vasl_templates/webapp/templates/index.html b/vasl_templates/webapp/templates/index.html index 05f199c..90b0542 100644 --- a/vasl_templates/webapp/templates/index.html +++ b/vasl_templates/webapp/templates/index.html @@ -92,6 +92,7 @@ gAppName = "{{APP_NAME}}" ; gAppVersion = "{{APP_VERSION}}" ; gImagesBaseUrl = "{{url_for('static',filename='images')}}" ; +gAppConfigUrl = "{{url_for('get_app_config')}}" ; gGetStartupMsgsUrl = "{{url_for('get_startup_msgs')}}" ; gGetTemplatePackUrl = "{{url_for('get_template_pack')}}" ; gGetDefaultScenarioUrl = "{{url_for('get_default_scenario')}}" ; diff --git a/vasl_templates/webapp/templates/user-settings-dialog.html b/vasl_templates/webapp/templates/user-settings-dialog.html index 83bcb88..c5681c9 100644 --- a/vasl_templates/webapp/templates/user-settings-dialog.html +++ b/vasl_templates/webapp/templates/user-settings-dialog.html @@ -6,21 +6,18 @@ - -
-  Hide unavailable multi-applicable notes
+
+ Hide unavailable multi-applicable notes
-
Provide services to VASL -
- - If you enable any of these options, this program must be running before you load the scenario in VASL. -
-  Include VASL counter images in snippets
-  Include flags in snippets
-  Use custom list bullets
-
 
-  Show Chapter H vehicle/ordnance notes as images +
Images in scenarios + Get images from the internet
+
+ Include VASL counter images in snippets
+ Include flags in snippets
+ Use custom list bullets
+
+ Show Chapter H vehicle/ordnance notes as images
diff --git a/vasl_templates/webapp/tests/fixtures/vasl-pieces.txt b/vasl_templates/webapp/tests/fixtures/vasl-pieces.txt index 8619685..6605fc0 100644 --- a/vasl_templates/webapp/tests/fixtures/vasl-pieces.txt +++ b/vasl_templates/webapp/tests/fixtures/vasl-pieces.txt @@ -1,1145 +1,1145 @@ - GPID Name Front images Back images ------- ---------------------------- --------------------------------------------- -------------------------- - 397 LCP(L)b sh/LCPL2 - 399 LCP(L) sh/LCPL - 401 LCA sh/LCA sh/lcrampdn - 403 LCVP <6/43 sh/LCVP2 sh/lcrampdn - 405 LCVP sh/LCVP sh/lcrampdn - 407 LCM(3) <11/42 sh/LCM32 sh/lcrampdn - 409 LCM(3) sh/LCM3 sh/lcrampdn - 411 LCI(S) sh/LCIS - 413 LCT(4) <7/43 sh/LCT42 sh/lcrampdn - 415 LCT(4) sh/LCT4 sh/lcrampdn - 417 Daihatsu sh/LCdaihat sh/lcrampdn - 419 Shohatsu sh/LCshohat - 485 50* MTR ru/ruMTR ru/ruMTRb - 508 82* MTR BM obr. 37 ru/gun/ruMTR82s ru/gun/ruMTR82sb - 510 107* MTR GVPM obr. 38 ru/gun/ruMTR107s ru/gun/ruMTR107sb - 511 120* MTR PM obr. 38 ru/gun/ruMTR120s ru/gun/ruMTR120sb - 512 160* MTR PM obr. 43 ru/gun/ruMTR160s ru/gun/ruMTR160sb - 514 37L AT PTP obr. 30 ru/gun/ruAT37L ru/gun/ruAT37Lb - 515 45L AT PTP obr. 32 ru/gun/ruAT45L ru/gun/ruAT45Lb - 516 45LL AT PTP obr. 42 ru/gun/ruAT45LL ru/gun/ruAT45LLb - 517 57LL AT PTP obr. 43 ru/gun/ruAT57LL ru/gun/ruAT57LLb - 518 100L AT PTP obr. 44 ru/gun/ruAT100L ru/gun/ruAT100Lb - 520 37* INF PP obr. 15R ru/gun/ruINF37s ru/gun/ruINF37sb - 521 76* INF PP obr. 27 ru/gun/ruINF76s ru/gun/ruINF76sb - 523 76* ART obr. 00/02P ru/gun/ruAR76s ru/gun/ruAR76sb - 524 76 ART obr. 02/30 ru/gun/ruAR76 ru/gun/ruAR76b - 525 76L ART obr. 39 ru/gun/ruAR76L ru/gun/ruAR76Lb - 526 76LL ART obr. 36 ru/gun/ruAR76LL ru/gun/ruAR76LLb - 527 85L ART obr. 44 ru/gun/ruAR85L ru/gun/ruAR85Lb - 528 107 ART obr. 10/30 ru/gun/ruAR107 ru/gun/ruAR107b - 529 122* ART G obr. 10/30 ru/gun/ruAR122s ru/gun/ruAR122sb - 530 122 ART obr. 38 ru/gun/ruAR122 ru/gun/ruAR122l-b - 531 122L ART obr. 31 ru/gun/ruAR122-L ru/gun/ruAR122Lb - 532 152* ART G obr. 38 ru/gun/ruAR152s ru/gun/ruAR152sb - 533 152 ART GP obr. 37 ru/gun/ruAR152 ru/gun/ruAR152b - 536 25LL AA ZP obr. 40 ru/gun/ruAA25LL ru/gun/ruAA25LLb - 537 37L AA ZP obr. 39 ru/gun/ruAA37L ru/gun/ruAA37Lb - 538 76LL AA ZP obr. 38 ru/gun/ruAA76LL ru/gun/ruAA76LLb - 539 85L AA ZP obr. 39 ru/gun/ruAA85L ru/gun/ruAA85Lb - 541 T-37 ru/veh/T37 - 543 T-40 ru/veh/T40 - 545 T-50 ru/veh/T50 - 547 T-60 M40 ru/veh/T60M40 - 549 T-60 M42 ru/veh/T60M42 - 551 T-70 ru/veh/T70 - 553 T-26 M33 ru/veh/T26M33 - 555 T-26 M33 ru/veh/T26M332 - 557 T-26 M33 ru/veh/T26M333 - 559 T-26 M33 ru/veh/T26M334 - 561 T-26 M33 ru/veh/T26M335 - 563 T-26S M37/39 ru/veh/T26M37 - 565 T-26S M37/39 ru/veh/T26M372 - 567 T-26S M37/39 ru/veh/T26M373 - 569 T-26S M37/39 ru/veh/T26M374 - 571 OT-133 ru/veh/OT133 - 573 BT-2A ru/veh/bt2a - 575 BT-5 M34 ru/veh/BT5M34 - 577 BT-7 M37 ru/veh/BT7M37 - 579 BT-7 M37 ru/veh/BT7M372 - 581 BT-7 M37 ru/veh/BT7M373 - 583 BT-7 M37 ru/veh/BT7M374 - 585 BT-7A ru/veh/BT7A - 587 T-28 M34 ru/veh/T28M34 - 589 T-28E M40 ru/veh/T28EM40 - 591 T-34 M40 ru/veh/T34M40 - 593 T-34 M41 ru/veh/T34M41 - 595 OT-34 ru/veh/OT34 - 597 T-34 M43 ru/veh/T34M43 - 599 T-43 ru/veh/T43 - 601 T-34/85 ru/veh/T3485 - 603 M4/76(a) ru/veh/M476 - 605 T-44 ru/veh/T44 - 607 T-35 ru/veh/T35 - 609 KV-1 M39/40 ru/veh/KV1M39 - 611 KV-1E ru/veh/KV1E - 613 KV-1E ru/veh/KV1E2 - 615 KV-1 M41 ru/veh/KV1M41 - 617 KV-1 M41 ru/veh/KV1M412 - 619 KV-1 M42 ru/veh/KV1M42 - 621 KV-1 M42 ru/veh/KV1M422 - 623 KV-2 ru/veh/KV2 - 625 KV-8 ru/veh/KV8 - 627 KV-8 ru/veh/KV82 - 629 KV-1S ru/veh/KV1S - 631 KV-85 ru/veh/KV85 - 633 IS-2 ru/veh/IS2 - 635 IS-2m ru/veh/IS2m - 637 IS-2m ru/veh/IS2m2 - 639 IS-3 ru/veh/IS3 - 641 IS-3 ru/veh/IS32 - 645 SU-76M ru/veh/SU76M - 647 SU-76i(g) ru/veh/SU76i - 649 SU-122 ru/veh/SU122 - 651 SU-152 ru/veh/SU152 - 653 ISU-122 ru/veh/ISU122 - 655 ISU-122 ru/veh/ISU1222 - 657 ISU-152 ru/veh/ISU152 - 659 ISU-152 ru/veh/ISU1522 - 661 SU-85 ru/veh/SU85 - 663 SU-100 ru/veh/SU100 - 665 SU-57(a) ru/veh/SU57 - 669 BA-20 ru/veh/ba20 - 671 BA-6 ru/veh/ba6 - 673 BA-64B ru/veh/BA64B - 677 ZSU-37 ru/veh/ZSU37 - 679 SU-12 ru/veh/SU12 - 681 GAZ-4M-AA ru/veh/GAZ4MM - 683 ZIS-42-AA ru/veh/ZIS42 - 685 IAG-10-AA ru/veh/IAG10 - 687 Komsomolets ru/veh/kom - 693 GAZ-67B ru/veh/GAZ67B - 694 GAZ-MM ru/veh/GAZMM - 696 ZIS-5 ru/veh/ZIS5 - 698 IAG-6 ru/veh/IAG6 - 704 Lee(a) br/vehicles/lee - 708 Sherman III(a) br/vehicles/sheriiia - 710 Sherman III(a) br/vehicles/sheriiia2 - 712 Sherman III(L)(a) ru/veh/sheriiila - 724 Valentine II br/vehicles/valii - 726 Valentine V br/vehicles/valv - 728 Valentine V br/vehicles/valv2 - 730 Valentine VIII br/vehicles/valviii - 732 Churchill III br/vehicles/churiv - 758 Jeep(a) br/vehicles/jeep - 759 Jeep(a) MMG br/vehicles/jeep2 - 849 60* MTR M2 am/amMTR am/amMTRb - 850 60* MTR M19 am/amMTRa am/amMTRab - 879 81* MTR M1 am/gun/amMTR81s am/gun/amMTR81sb - 881 107* MTR M2 am/gun/amMTR107 am/gun/amMTR107b - 882 155* MTR T25 am/gun/amMT155s am/gun/amMT155sb - 884 37L AT M3A1 am/gun/amAT37LL am/gun/amAT37LLb - 885 57L AT M1 am/gun/amAT57L am/gun/amAT57Lb - 886 76L AT M5 am/gun/amAT76L am/gun/amAT76Lb - 888 75* ART M1A1 am/gun/amAR75s am/gun/amAR75sb - 890 75 ART M1897A2 am/gun/amAR75 am/gun/amAR75b - 891 105 ART M2A1 am/gun/amAR105 am/gun/amAR105b - 892 105* ART M3 am/gun/amAR105s am/gun/amAR105sb - 893 114 ART M1 am/gun/amAR114 am/gun/amAR114b - 894 155* ART M1918 am/gun/amAR155s am/gun/amAR155sb - 895 155 ART M1 am/gun/amAR155_ am/gun/amAR155_b - 896 155 ART M1918M1 am/gun/amAR155 am/gun/amAR155b - 897 155L ART M1A1 am/gun/amAR155L am/gun/amAR155Lb - 898 203 ART M1 am/gun/amAR203 am/gun/amAR203b - 900 12.7 AA M51 am/gun/amAA12 am/gun/amAA12b - 901 37L AA M1A2 am/gun/amAA37L am/gun/amAA37Lb - 902 40L AA M1 am/gun/amAA40L am/gun/amAA40Lb - 903 76L AA M3 am/gun/amAA76L am/gun/amAA76Lb - 904 90L AA M1A1 am/gun/amAA90L am/gun/amAA90Lb - 905 90L AA M2 am/gun/amAA90 am/gun/amAA90b - 907 M2A4 am/veh/M2A4 - 909 M3 LT am/veh/M3LT - 913 M3A1 Satan am/veh/M3A1sat - 917 M24 am/veh/M24 - 919 M3 MT am/veh/M3MT - 941 M4(105) am/veh/M4105 - 943 M4A3(105) am/veh/M4A3105 - 945 M4 Tankdozer am/veh/M4doz - 947 T1E3 am/veh/T1E3 - 949 Sherman Crab am/veh/M4cra - 951 POA-CWS-H1 am/veh/M4poa - 955 M26 am/veh/M26 - 957 M10 GMC am/veh/M10GMC - 959 M18 GMC am/veh/M18GMC - 961 M36 GMC am/veh/M36GMC - 963 M36B1 GMC am/veh/M36B1GMC - 965 M2 ht am/veh/M2ht - 967 M3 ht am/veh/M3ht - 969 M3A1 ht am/veh/M3A1ht - 971 M3(MMG) am/veh/M3htMMG - 973 M3(HMG) am/veh/M3htHMG - 975 M4 MC am/veh/M4MC - 977 M4A1 MC am/veh/M4A1MC - 979 M21 MC am/veh/M21MC - 981 M3 GMC am/veh/M3GMC - 983 M3 GMC am/veh/M3GMC2 - 985 T30 HMC am/veh/T30HMC - 987 T19 HMC am/veh/T19HMC - 990 M15A1 am/veh/M15A1MGMC - 992 M16 am/veh/M16MGMC - 996 M3A1 SC am/veh/M3A1SC - 998 M20 am/veh/M20SC - 1000 T8 am/veh/T8SC - 1002 M8 AC am/veh/M8AC - 1004 M8 HMC am/veh/M8HMC - 1006 M7 HMC am/veh/M7HMC - 1011 M12 GMC unlimbered am/veh/M12GMC2 - 1014 LVT(A)1 am/veh/LVTA1 - 1016 LVT(A)4 am/veh/LVTA4 - 1018 LVT(A)4 am/veh/LVTA42 - 1020 M4 DD am/veh/M4dd - 1022 LVT2 am/veh/LVT2 - 1024 LVT2(m) am/veh/LVT2m - 1026 LVT(A)2 am/veh/LVTA2 - 1028 LVT4 am/veh/LVT4 - 1030 LVT4 am/veh/LVT42 - 1032 DUKW am/veh/DUKW - 1036 Jeep GPA am/veh/JeepGPA - 1039 Jeep am/veh/Jeep - 1040 Jeep MMG am/veh/Jeep2 - 1041 Jeep HMG am/veh/Jeep4 - 1042 3/4 ton truck am/veh/ton34 - 1044 1-1/2 ton truck am/veh/ton112 - 1046 2-1/2 ton truck am/veh/ton212 - 1048 7-1/2 ton truck am/veh/ton712 - 1050 M4 HST am/veh/M4hst - 1149 51 MTR abn br/brMTR2 br/brMTR2b - 1153 51 MTR br/brMTR br/brMTRb - 1177 76* MTR OML 3" (pre 9/42) br/guns/brMTR76s br/guns/brMTR76sb - 1179 76* MTR OML 3" br/guns/brMTR76 br/guns/brMTR76sb - 1181 107* MTR OSB 4.2" br/guns/brM107s br/guns/brM107sb - 1183 25LL AT OQF Hotchkiss br/guns/brAT25LL br/guns/brAT25LLb - 1184 40L AT OQF 2pdr br/guns/brAT40L br/guns/brAT40Lb - 1185 57L AT OQF 6pdr 7cwt br/guns/brAT57L br/guns/brAT57Lb - 1186 76LL AT OQF 17/25pdr br/guns/brAT7625 br/guns/brAT7625b - 1187 76LL AT OQF 17pdr br/guns/brAT76LL br/guns/brAT76LLb - 1189 75* ART M1A1 br/guns/brAR75s br/guns/brAR75sb - 1191 75 ART mle 1897 br/guns/brAR75 br/guns/brAR75b - 1192 84* ART OQF 18pdr br/guns/brAR84s br/guns/brAR84sb - 1193 88* ART OQF 25pdr S br/guns/brAR88s br/guns/brAR88sb - 1194 88 ART OQF 25pdr br/guns/brAR88 br/guns/brAR88b - 1195 94* ART OQF 3.7" br/guns/brAR94s br/guns/brAR94sb - 1196 114* ART OQF 4.5" br/guns/brAR114s br/guns/brAR114sb - 1197 114 ART OBL 4.5" br/guns/brAR114 br/guns/brAR114b - 1198 140 ART OBL 5.5" br/guns/brAR140 br/guns/brAR140b - 1199 152* ART OBL 6" br/guns/brAR152s br/guns/brAR152sb - 1200 183* ART OBL 7.2" Mk I br/guns/brAR183s br/guns/brAR183sb - 1201 183 ART OBL 7.2" Mk VI br/guns/brAR183 br/guns/brAR183b - 1203 20L AA OQF br/guns/brAA20L br/guns/brAA20Lb - 1204 40L AA OQF br/guns/brAA40L br/guns/brAA40Lb - 1205 76* AA OQF 3" 20cwt br/guns/brAA76s br/guns/brAA76sb - 1206 94* AA OQF 3.7" br/guns/brAA94s br/guns/brAA94sb - 1208 Mark VIB br/vehicles/mkvib - 1210 Mark VIC br/vehicles/mkvic - 1212 Tetrarch br/vehicles/tet - 1214 Tetrarch CS br/vehicles/tetcs - 1216 Stuart I(a) br/vehicles/stuia - 1218 Stuart III(a) br/vehicles/stuiiia - 1220 Stuart V(a) br/vehicles/stuva - 1222 Locust(a) br/vehicles/locust - 1224 A9 br/vehicles/a9 - 1226 A9 br/vehicles/a92 - 1228 A9 CS br/vehicles/a9cs - 1230 A9 CS br/vehicles/a9cs2 - 1232 A10 Mk IA br/vehicles/a10ia - 1234 A10 Mk IA br/vehicles/a10ia2 - 1236 A10 Mk IA br/vehicles/a10ia3 - 1238 A10 Mk IA br/vehicles/a10ia4 - 1240 A10 Mk IA br/vehicles/a10ia5 - 1242 A10 Mk IA CS br/vehicles/a10iacs - 1244 A10 Mk IA CS br/vehicles/a10iacs2 - 1246 A10 Mk IA CS br/vehicles/a10iacs3 - 1248 A13 Mk I br/vehicles/a13i - 1250 A13 Mk I br/vehicles/a13i2 - 1252 A13 Mk II br/vehicles/a13ii - 1254 A13 Mk II br/vehicles/a13ii2 - 1256 A13 Mk II br/vehicles/a13ii3 - 1258 A13 Mk II br/vehicles/a13ii4 - 1260 A13 Mk II CS br/vehicles/a13iics - 1262 Crusader I br/vehicles/crusi - 1264 Crusader I br/vehicles/crusi2 - 1266 Crusader I CS br/vehicles/crusics - 1268 Crusader I CS br/vehicles/crusics2 - 1270 Crusader II br/vehicles/crusii - 1272 Crusader II br/vehicles/crusii2 - 1274 Crusader II CS br/vehicles/crusiics - 1276 Crusader II CS br/vehicles/crusiics2 - 1278 Crusader III br/vehicles/crusiii - 1280 Grant(a) br/vehicles/grant - 1282 Lee(a) br/vehicles/lee - 1284 Lee(a) br/vehicles/lee2 - 1286 Sherman II(a) br/vehicles/sheriia - 1288 Sherman II(a) br/vehicles/sheriia2 - 1290 Sherman III(a) br/vehicles/sheriiia - 1292 Sherman III(a) br/vehicles/sheriiia2 - 1294 Sherman V(a) br/vehicles/sherva - 1296 Sherman V(a) br/vehicles/sherva2 - 1298 Sherman IIA(a) br/vehicles/sheriiaa - 1300 Sherman IIA(a) br/vehicles/sheriiaa2 - 1302 Sherman IIC(a) br/vehicles/sheriica - 1304 Sherman IIC(a) br/vehicles/sheriica2 - 1306 Sherman VC(a) br/vehicles/shervca - 1308 Sherman VC(a) br/vehicles/shervca2 - 1310 Sherman IB(a) br/vehicles/sheriba - 1312 Sherman IB(a) br/vehicles/sheriba2 - 1314 Centaur IV br/vehicles/centiv - 1316 Cromwell IV br/vehicles/cromiv - 1318 Cromwell VI br/vehicles/cromvi - 1320 Cromwell VII br/vehicles/cromvii - 1322 Cromwell VIII br/vehicles/cromviii - 1324 Challenger br/vehicles/chall - 1326 Comet br/vehicles/comet - 1328 Sherman Dozer(a) br/vehicles/sherdoz - 1330 Sherman Dozer(a) br/vehicles/sherdoz2 - 1332 Sherman Crab(a) br/vehicles/shercrab - 1334 Sherman Crab(a) br/vehicles/shercrab2 - 1338 Matilda I br/vehicles/mati - 1340 Matilda I br/vehicles/mati2 - 1342 Matilda II br/vehicles/matii - 1344 Matilda II br/vehicles/matii2 - 1346 Matilda II br/vehicles/matii3 - 1348 Matilda II br/vehicles/matii4 - 1350 Matilda II CS br/vehicles/matiics - 1352 Matilda II CS br/vehicles/matiics2 - 1354 Valentine II br/vehicles/valii - 1356 Valentine V br/vehicles/valv - 1358 Valentine V br/vehicles/valv2 - 1360 Valentine VIII br/vehicles/valviii - 1362 Valentine XI br/vehicles/valxi - 1364 Churchill I br/vehicles/churi - 1366 Churchill IV br/vehicles/churiv - 1368 Churchill V br/vehicles/churv - 1370 Churchill VI br/vehicles/churvi - 1372 Churchill VII br/vehicles/churvii - 1374 Churchill VIII br/vehicles/churviii - 1376 Valentine Bridgelayer br/vehicles/valbrid - 1380 Churchill Bridgelayer br/vehicles/churbrid - 1384 Churchill AVRE br/vehicles/churavre - 1386 Churchill AVRE br/vehicles/churavref - 1390 Churchill Crocodile br/vehicles/churcroc - 1393 Deacon br/vehicles/deacon - 1395 Wolverine(a) br/vehicles/wolv - 1397 Achilles(a) br/vehicles/achil - 1399 Archer br/vehicles/archer - 1401 Daimler SC br/vehicles/daimsc - 1403 Lynx SC br/vehicles/lynx - 1405 Humber SC br/vehicles/humber - 1407 Stuart Recce(a) br/vehicles/sturecce - 1409 Humber III LRC br/vehicles/humblrc - 1411 Otter SC br/vehicles/otter + GPID Name Front images Back images +------ ---------------------------- ----------------------------------------------------- -------------------------- + 397 LCP(L)b sh/LCPL2.gif + 399 LCP(L) sh/LCPL.gif + 401 LCA sh/LCA.gif sh/lcrampdn.gif + 403 LCVP <6/43 sh/LCVP2.gif sh/lcrampdn.gif + 405 LCVP sh/LCVP.gif sh/lcrampdn.gif + 407 LCM(3) <11/42 sh/LCM32.gif sh/lcrampdn.gif + 409 LCM(3) sh/LCM3.gif sh/lcrampdn.gif + 411 LCI(S) sh/LCIS.gif + 413 LCT(4) <7/43 sh/LCT42.gif sh/lcrampdn.gif + 415 LCT(4) sh/LCT4.gif sh/lcrampdn.gif + 417 Daihatsu sh/LCdaihat.gif sh/lcrampdn.gif + 419 Shohatsu sh/LCshohat.gif + 485 50* MTR ru/ruMTR.gif ru/ruMTRb.gif + 508 82* MTR BM obr. 37 ru/gun/ruMTR82s.gif ru/gun/ruMTR82sb.gif + 510 107* MTR GVPM obr. 38 ru/gun/ruMTR107s.gif ru/gun/ruMTR107sb.gif + 511 120* MTR PM obr. 38 ru/gun/ruMTR120s.gif ru/gun/ruMTR120sb.gif + 512 160* MTR PM obr. 43 ru/gun/ruMTR160s.gif ru/gun/ruMTR160sb.gif + 514 37L AT PTP obr. 30 ru/gun/ruAT37L.gif ru/gun/ruAT37Lb.gif + 515 45L AT PTP obr. 32 ru/gun/ruAT45L.gif ru/gun/ruAT45Lb.gif + 516 45LL AT PTP obr. 42 ru/gun/ruAT45LL.gif ru/gun/ruAT45LLb.gif + 517 57LL AT PTP obr. 43 ru/gun/ruAT57LL.gif ru/gun/ruAT57LLb.gif + 518 100L AT PTP obr. 44 ru/gun/ruAT100L.gif ru/gun/ruAT100Lb.gif + 520 37* INF PP obr. 15R ru/gun/ruINF37s.gif ru/gun/ruINF37sb.gif + 521 76* INF PP obr. 27 ru/gun/ruINF76s.gif ru/gun/ruINF76sb.gif + 523 76* ART obr. 00/02P ru/gun/ruAR76s.gif ru/gun/ruAR76sb.gif + 524 76 ART obr. 02/30 ru/gun/ruAR76.gif ru/gun/ruAR76b.gif + 525 76L ART obr. 39 ru/gun/ruAR76L.gif ru/gun/ruAR76Lb.gif + 526 76LL ART obr. 36 ru/gun/ruAR76LL.gif ru/gun/ruAR76LLb.gif + 527 85L ART obr. 44 ru/gun/ruAR85L.gif ru/gun/ruAR85Lb.gif + 528 107 ART obr. 10/30 ru/gun/ruAR107.gif ru/gun/ruAR107b.gif + 529 122* ART G obr. 10/30 ru/gun/ruAR122s.gif ru/gun/ruAR122sb.gif + 530 122 ART obr. 38 ru/gun/ruAR122.gif ru/gun/ruAR122l-b.gif + 531 122L ART obr. 31 ru/gun/ruAR122-L.gif ru/gun/ruAR122Lb.gif + 532 152* ART G obr. 38 ru/gun/ruAR152s.gif ru/gun/ruAR152sb.gif + 533 152 ART GP obr. 37 ru/gun/ruAR152.gif ru/gun/ruAR152b.gif + 536 25LL AA ZP obr. 40 ru/gun/ruAA25LL.gif ru/gun/ruAA25LLb.gif + 537 37L AA ZP obr. 39 ru/gun/ruAA37L.gif ru/gun/ruAA37Lb.gif + 538 76LL AA ZP obr. 38 ru/gun/ruAA76LL.gif ru/gun/ruAA76LLb.gif + 539 85L AA ZP obr. 39 ru/gun/ruAA85L.gif ru/gun/ruAA85Lb.gif + 541 T-37 ru/veh/T37.gif + 543 T-40 ru/veh/T40.gif + 545 T-50 ru/veh/T50.gif + 547 T-60 M40 ru/veh/T60M40.gif + 549 T-60 M42 ru/veh/T60M42.gif + 551 T-70 ru/veh/T70.gif + 553 T-26 M33 ru/veh/T26M33.gif + 555 T-26 M33 ru/veh/T26M332.gif + 557 T-26 M33 ru/veh/T26M333.gif + 559 T-26 M33 ru/veh/T26M334.gif + 561 T-26 M33 ru/veh/T26M335.gif + 563 T-26S M37/39 ru/veh/T26M37.gif + 565 T-26S M37/39 ru/veh/T26M372.gif + 567 T-26S M37/39 ru/veh/T26M373.gif + 569 T-26S M37/39 ru/veh/T26M374.gif + 571 OT-133 ru/veh/OT133.gif + 573 BT-2A ru/veh/bt2a.gif + 575 BT-5 M34 ru/veh/BT5M34.gif + 577 BT-7 M37 ru/veh/BT7M37.gif + 579 BT-7 M37 ru/veh/BT7M372.gif + 581 BT-7 M37 ru/veh/BT7M373.gif + 583 BT-7 M37 ru/veh/BT7M374.gif + 585 BT-7A ru/veh/BT7A.gif + 587 T-28 M34 ru/veh/T28M34.gif + 589 T-28E M40 ru/veh/T28EM40.gif + 591 T-34 M40 ru/veh/T34M40.gif + 593 T-34 M41 ru/veh/T34M41.gif + 595 OT-34 ru/veh/OT34.gif + 597 T-34 M43 ru/veh/T34M43.gif + 599 T-43 ru/veh/T43.gif + 601 T-34/85 ru/veh/T3485.gif + 603 M4/76(a) ru/veh/M476.gif + 605 T-44 ru/veh/T44.gif + 607 T-35 ru/veh/T35.gif + 609 KV-1 M39/40 ru/veh/KV1M39.gif + 611 KV-1E ru/veh/KV1E.gif + 613 KV-1E ru/veh/KV1E2.gif + 615 KV-1 M41 ru/veh/KV1M41.gif + 617 KV-1 M41 ru/veh/KV1M412.gif + 619 KV-1 M42 ru/veh/KV1M42.gif + 621 KV-1 M42 ru/veh/KV1M422.gif + 623 KV-2 ru/veh/KV2.gif + 625 KV-8 ru/veh/KV8.gif + 627 KV-8 ru/veh/KV82.gif + 629 KV-1S ru/veh/KV1S.gif + 631 KV-85 ru/veh/KV85.gif + 633 IS-2 ru/veh/IS2.gif + 635 IS-2m ru/veh/IS2m.gif + 637 IS-2m ru/veh/IS2m2.gif + 639 IS-3 ru/veh/IS3.gif + 641 IS-3 ru/veh/IS32.gif + 645 SU-76M ru/veh/SU76M.gif + 647 SU-76i(g) ru/veh/SU76i.gif + 649 SU-122 ru/veh/SU122.gif + 651 SU-152 ru/veh/SU152.gif + 653 ISU-122 ru/veh/ISU122.gif + 655 ISU-122 ru/veh/ISU1222.gif + 657 ISU-152 ru/veh/ISU152.gif + 659 ISU-152 ru/veh/ISU1522.gif + 661 SU-85 ru/veh/SU85.gif + 663 SU-100 ru/veh/SU100.gif + 665 SU-57(a) ru/veh/SU57.gif + 669 BA-20 ru/veh/ba20.gif + 671 BA-6 ru/veh/ba6.gif + 673 BA-64B ru/veh/BA64B.gif + 677 ZSU-37 ru/veh/ZSU37.gif + 679 SU-12 ru/veh/SU12.gif + 681 GAZ-4M-AA ru/veh/GAZ4MM.gif + 683 ZIS-42-AA ru/veh/ZIS42.gif + 685 IAG-10-AA ru/veh/IAG10.gif + 687 Komsomolets ru/veh/kom.gif + 693 GAZ-67B ru/veh/GAZ67B.gif + 694 GAZ-MM ru/veh/GAZMM.gif + 696 ZIS-5 ru/veh/ZIS5.gif + 698 IAG-6 ru/veh/IAG6.gif + 704 Lee(a) br/vehicles/lee.gif + 708 Sherman III(a) br/vehicles/sheriiia.gif + 710 Sherman III(a) br/vehicles/sheriiia2.gif + 712 Sherman III(L)(a) ru/veh/sheriiila.gif + 724 Valentine II br/vehicles/valii.gif + 726 Valentine V br/vehicles/valv.gif + 728 Valentine V br/vehicles/valv2.gif + 730 Valentine VIII br/vehicles/valviii.gif + 732 Churchill III br/vehicles/churiv.gif + 758 Jeep(a) br/vehicles/jeep.gif + 759 Jeep(a) MMG br/vehicles/jeep2.gif + 849 60* MTR M2 am/amMTR.gif am/amMTRb.gif + 850 60* MTR M19 am/amMTRa.gif am/amMTRab.gif + 879 81* MTR M1 am/gun/amMTR81s.gif am/gun/amMTR81sb.gif + 881 107* MTR M2 am/gun/amMTR107.gif am/gun/amMTR107b.gif + 882 155* MTR T25 am/gun/amMT155s.gif am/gun/amMT155sb.gif + 884 37L AT M3A1 am/gun/amAT37LL.gif am/gun/amAT37LLb.gif + 885 57L AT M1 am/gun/amAT57L.gif am/gun/amAT57Lb.gif + 886 76L AT M5 am/gun/amAT76L.gif am/gun/amAT76Lb.gif + 888 75* ART M1A1 am/gun/amAR75s.gif am/gun/amAR75sb.gif + 890 75 ART M1897A2 am/gun/amAR75.gif am/gun/amAR75b.gif + 891 105 ART M2A1 am/gun/amAR105.gif am/gun/amAR105b.gif + 892 105* ART M3 am/gun/amAR105s.gif am/gun/amAR105sb.gif + 893 114 ART M1 am/gun/amAR114.gif am/gun/amAR114b.gif + 894 155* ART M1918 am/gun/amAR155s.gif am/gun/amAR155sb.gif + 895 155 ART M1 am/gun/amAR155_.gif am/gun/amAR155_b.gif + 896 155 ART M1918M1 am/gun/amAR155.gif am/gun/amAR155b.gif + 897 155L ART M1A1 am/gun/amAR155L.gif am/gun/amAR155Lb.gif + 898 203 ART M1 am/gun/amAR203.gif am/gun/amAR203b.gif + 900 12.7 AA M51 am/gun/amAA12.gif am/gun/amAA12b.gif + 901 37L AA M1A2 am/gun/amAA37L.gif am/gun/amAA37Lb.gif + 902 40L AA M1 am/gun/amAA40L.gif am/gun/amAA40Lb.gif + 903 76L AA M3 am/gun/amAA76L.gif am/gun/amAA76Lb.gif + 904 90L AA M1A1 am/gun/amAA90L.gif am/gun/amAA90Lb.gif + 905 90L AA M2 am/gun/amAA90.gif am/gun/amAA90b.gif + 907 M2A4 am/veh/M2A4.gif + 909 M3 LT am/veh/M3LT.gif + 913 M3A1 Satan am/veh/M3A1sat.gif + 917 M24 am/veh/M24.gif + 919 M3 MT am/veh/M3MT.gif + 941 M4(105) am/veh/M4105.gif + 943 M4A3(105) am/veh/M4A3105.gif + 945 M4 Tankdozer am/veh/M4doz.gif + 947 T1E3 am/veh/T1E3.gif + 949 Sherman Crab am/veh/M4cra.gif + 951 POA-CWS-H1 am/veh/M4poa.gif + 955 M26 am/veh/M26.gif + 957 M10 GMC am/veh/M10GMC.gif + 959 M18 GMC am/veh/M18GMC.gif + 961 M36 GMC am/veh/M36GMC.gif + 963 M36B1 GMC am/veh/M36B1GMC.gif + 965 M2 ht am/veh/M2ht.gif + 967 M3 ht am/veh/M3ht.gif + 969 M3A1 ht am/veh/M3A1ht.gif + 971 M3(MMG) am/veh/M3htMMG.gif + 973 M3(HMG) am/veh/M3htHMG.gif + 975 M4 MC am/veh/M4MC.gif + 977 M4A1 MC am/veh/M4A1MC.gif + 979 M21 MC am/veh/M21MC.gif + 981 M3 GMC am/veh/M3GMC.gif + 983 M3 GMC am/veh/M3GMC2.gif + 985 T30 HMC am/veh/T30HMC.gif + 987 T19 HMC am/veh/T19HMC.gif + 990 M15A1 am/veh/M15A1MGMC.gif + 992 M16 am/veh/M16MGMC.gif + 996 M3A1 SC am/veh/M3A1SC.gif + 998 M20 am/veh/M20SC.gif + 1000 T8 am/veh/T8SC.gif + 1002 M8 AC am/veh/M8AC.gif + 1004 M8 HMC am/veh/M8HMC.gif + 1006 M7 HMC am/veh/M7HMC.gif + 1011 M12 GMC unlimbered am/veh/M12GMC2.gif + 1014 LVT(A)1 am/veh/LVTA1.gif + 1016 LVT(A)4 am/veh/LVTA4.gif + 1018 LVT(A)4 am/veh/LVTA42.gif + 1020 M4 DD am/veh/M4dd.gif + 1022 LVT2 am/veh/LVT2.gif + 1024 LVT2(m) am/veh/LVT2m.gif + 1026 LVT(A)2 am/veh/LVTA2.gif + 1028 LVT4 am/veh/LVT4.gif + 1030 LVT4 am/veh/LVT42.gif + 1032 DUKW am/veh/DUKW.gif + 1036 Jeep GPA am/veh/JeepGPA.gif + 1039 Jeep am/veh/Jeep.gif + 1040 Jeep MMG am/veh/Jeep2.gif + 1041 Jeep HMG am/veh/Jeep4.gif + 1042 3/4 ton truck am/veh/ton34.gif + 1044 1-1/2 ton truck am/veh/ton112.gif + 1046 2-1/2 ton truck am/veh/ton212.gif + 1048 7-1/2 ton truck am/veh/ton712.gif + 1050 M4 HST am/veh/M4hst.gif + 1149 51 MTR abn br/brMTR2.gif br/brMTR2b.gif + 1153 51 MTR br/brMTR.gif br/brMTRb.gif + 1177 76* MTR OML 3" (pre 9/42) br/guns/brMTR76s.gif br/guns/brMTR76sb.gif + 1179 76* MTR OML 3" br/guns/brMTR76.gif br/guns/brMTR76sb.gif + 1181 107* MTR OSB 4.2" br/guns/brM107s.gif br/guns/brM107sb.gif + 1183 25LL AT OQF Hotchkiss br/guns/brAT25LL.gif br/guns/brAT25LLb.gif + 1184 40L AT OQF 2pdr br/guns/brAT40L.gif br/guns/brAT40Lb.gif + 1185 57L AT OQF 6pdr 7cwt br/guns/brAT57L.gif br/guns/brAT57Lb.gif + 1186 76LL AT OQF 17/25pdr br/guns/brAT7625.gif br/guns/brAT7625b.gif + 1187 76LL AT OQF 17pdr br/guns/brAT76LL.gif br/guns/brAT76LLb.gif + 1189 75* ART M1A1 br/guns/brAR75s.gif br/guns/brAR75sb.gif + 1191 75 ART mle 1897 br/guns/brAR75.gif br/guns/brAR75b.gif + 1192 84* ART OQF 18pdr br/guns/brAR84s.gif br/guns/brAR84sb.gif + 1193 88* ART OQF 25pdr S br/guns/brAR88s.gif br/guns/brAR88sb.gif + 1194 88 ART OQF 25pdr br/guns/brAR88.gif br/guns/brAR88b.gif + 1195 94* ART OQF 3.7" br/guns/brAR94s.gif br/guns/brAR94sb.gif + 1196 114* ART OQF 4.5" br/guns/brAR114s.gif br/guns/brAR114sb.gif + 1197 114 ART OBL 4.5" br/guns/brAR114.gif br/guns/brAR114b.gif + 1198 140 ART OBL 5.5" br/guns/brAR140.gif br/guns/brAR140b.gif + 1199 152* ART OBL 6" br/guns/brAR152s.gif br/guns/brAR152sb.gif + 1200 183* ART OBL 7.2" Mk I br/guns/brAR183s.gif br/guns/brAR183sb.gif + 1201 183 ART OBL 7.2" Mk VI br/guns/brAR183.gif br/guns/brAR183b.gif + 1203 20L AA OQF br/guns/brAA20L.gif br/guns/brAA20Lb.gif + 1204 40L AA OQF br/guns/brAA40L.gif br/guns/brAA40Lb.gif + 1205 76* AA OQF 3" 20cwt br/guns/brAA76s.gif br/guns/brAA76sb.gif + 1206 94* AA OQF 3.7" br/guns/brAA94s.gif br/guns/brAA94sb.gif + 1208 Mark VIB br/vehicles/mkvib.gif + 1210 Mark VIC br/vehicles/mkvic.gif + 1212 Tetrarch br/vehicles/tet.gif + 1214 Tetrarch CS br/vehicles/tetcs.gif + 1216 Stuart I(a) br/vehicles/stuia.gif + 1218 Stuart III(a) br/vehicles/stuiiia.gif + 1220 Stuart V(a) br/vehicles/stuva.gif + 1222 Locust(a) br/vehicles/locust.gif + 1224 A9 br/vehicles/a9.gif + 1226 A9 br/vehicles/a92.gif + 1228 A9 CS br/vehicles/a9cs.gif + 1230 A9 CS br/vehicles/a9cs2.gif + 1232 A10 Mk IA br/vehicles/a10ia.gif + 1234 A10 Mk IA br/vehicles/a10ia2.gif + 1236 A10 Mk IA br/vehicles/a10ia3.gif + 1238 A10 Mk IA br/vehicles/a10ia4.gif + 1240 A10 Mk IA br/vehicles/a10ia5.gif + 1242 A10 Mk IA CS br/vehicles/a10iacs.gif + 1244 A10 Mk IA CS br/vehicles/a10iacs2.gif + 1246 A10 Mk IA CS br/vehicles/a10iacs3.gif + 1248 A13 Mk I br/vehicles/a13i.gif + 1250 A13 Mk I br/vehicles/a13i2.gif + 1252 A13 Mk II br/vehicles/a13ii.gif + 1254 A13 Mk II br/vehicles/a13ii2.gif + 1256 A13 Mk II br/vehicles/a13ii3.gif + 1258 A13 Mk II br/vehicles/a13ii4.gif + 1260 A13 Mk II CS br/vehicles/a13iics.gif + 1262 Crusader I br/vehicles/crusi.gif + 1264 Crusader I br/vehicles/crusi2.gif + 1266 Crusader I CS br/vehicles/crusics.gif + 1268 Crusader I CS br/vehicles/crusics2.gif + 1270 Crusader II br/vehicles/crusii.gif + 1272 Crusader II br/vehicles/crusii2.gif + 1274 Crusader II CS br/vehicles/crusiics.gif + 1276 Crusader II CS br/vehicles/crusiics2.gif + 1278 Crusader III br/vehicles/crusiii.gif + 1280 Grant(a) br/vehicles/grant.gif + 1282 Lee(a) br/vehicles/lee.gif + 1284 Lee(a) br/vehicles/lee2.gif + 1286 Sherman II(a) br/vehicles/sheriia.gif + 1288 Sherman II(a) br/vehicles/sheriia2.gif + 1290 Sherman III(a) br/vehicles/sheriiia.gif + 1292 Sherman III(a) br/vehicles/sheriiia2.gif + 1294 Sherman V(a) br/vehicles/sherva.gif + 1296 Sherman V(a) br/vehicles/sherva2.gif + 1298 Sherman IIA(a) br/vehicles/sheriiaa.gif + 1300 Sherman IIA(a) br/vehicles/sheriiaa2.gif + 1302 Sherman IIC(a) br/vehicles/sheriica.gif + 1304 Sherman IIC(a) br/vehicles/sheriica2.gif + 1306 Sherman VC(a) br/vehicles/shervca.gif + 1308 Sherman VC(a) br/vehicles/shervca2.gif + 1310 Sherman IB(a) br/vehicles/sheriba.gif + 1312 Sherman IB(a) br/vehicles/sheriba2.gif + 1314 Centaur IV br/vehicles/centiv.gif + 1316 Cromwell IV br/vehicles/cromiv.gif + 1318 Cromwell VI br/vehicles/cromvi.gif + 1320 Cromwell VII br/vehicles/cromvii.gif + 1322 Cromwell VIII br/vehicles/cromviii.gif + 1324 Challenger br/vehicles/chall.gif + 1326 Comet br/vehicles/comet.gif + 1328 Sherman Dozer(a) br/vehicles/sherdoz.gif + 1330 Sherman Dozer(a) br/vehicles/sherdoz2.gif + 1332 Sherman Crab(a) br/vehicles/shercrab.gif + 1334 Sherman Crab(a) br/vehicles/shercrab2.gif + 1338 Matilda I br/vehicles/mati.gif + 1340 Matilda I br/vehicles/mati2.gif + 1342 Matilda II br/vehicles/matii.gif + 1344 Matilda II br/vehicles/matii2.gif + 1346 Matilda II br/vehicles/matii3.gif + 1348 Matilda II br/vehicles/matii4.gif + 1350 Matilda II CS br/vehicles/matiics.gif + 1352 Matilda II CS br/vehicles/matiics2.gif + 1354 Valentine II br/vehicles/valii.gif + 1356 Valentine V br/vehicles/valv.gif + 1358 Valentine V br/vehicles/valv2.gif + 1360 Valentine VIII br/vehicles/valviii.gif + 1362 Valentine XI br/vehicles/valxi.gif + 1364 Churchill I br/vehicles/churi.gif + 1366 Churchill IV br/vehicles/churiv.gif + 1368 Churchill V br/vehicles/churv.gif + 1370 Churchill VI br/vehicles/churvi.gif + 1372 Churchill VII br/vehicles/churvii.gif + 1374 Churchill VIII br/vehicles/churviii.gif + 1376 Valentine Bridgelayer br/vehicles/valbrid.gif + 1380 Churchill Bridgelayer br/vehicles/churbrid.gif + 1384 Churchill AVRE br/vehicles/churavre.gif + 1386 Churchill AVRE br/vehicles/churavref.gif + 1390 Churchill Crocodile br/vehicles/churcroc.gif + 1393 Deacon br/vehicles/deacon.gif + 1395 Wolverine(a) br/vehicles/wolv.gif + 1397 Achilles(a) br/vehicles/achil.gif + 1399 Archer br/vehicles/archer.gif + 1401 Daimler SC br/vehicles/daimsc.gif + 1403 Lynx SC br/vehicles/lynx.gif + 1405 Humber SC br/vehicles/humber.gif + 1407 Stuart Recce(a) br/vehicles/sturecce.gif + 1409 Humber III LRC br/vehicles/humblrc.gif + 1411 Otter SC br/vehicles/otter.gif 1413 Morris CS9 morris.gif - 1415 Rolls Royce br/vehicles/rolls - 1417 Marmon-H II ME br/vehicles/marmii - 1419 Marmon-H IIv br/vehicles/marmiiv - 1421 Marmon-H III MFF br/vehicles/marmiiif - 1423 Marmon-H III ME br/vehicles/marmiiie - 1425 Marmon-H IIIv br/vehicles/marmiiiv - 1427 Marmon-H IIIv br/vehicles/marmiiiv2 - 1429 Humber II AC br/vehicles/humbii - 1431 Humber III AC br/vehicles/humbiii - 1433 Humber III AC br/vehicles/humbiii2 - 1435 Humber IV AC br/vehicles/humbiv - 1437 Daimler AC br/vehicles/daimac - 1439 Daimler AC br/vehicles/daimac2 - 1441 AEC I AC br/vehicles/aeci - 1443 AEC II AC br/vehicles/aecii - 1445 AEC III AC br/vehicles/aeciii - 1447 Staghound I(a) br/vehicles/stagi - 1449 Staghound I(a) br/vehicles/stagi2 - 1451 Staghound II(a) br/vehicles/stagii - 1453 Staghound II(a) br/vehicles/stagii2 - 1457 Bishop br/vehicles/bishop - 1459 Bishop br/vehicles/bishop2 - 1461 Priest(a) br/vehicles/priest - 1463 Sexton(a) br/vehicles/sexton - 1465 Sexton(a) br/vehicles/sexton2 - 1467 M3 GMC(a) br/vehicles/m3gmc - 1469 Mark VI AA br/vehicles/markviaa - 1471 Crusader AA br/vehicles/crusaa - 1473 Crusader AA br/vehicles/crusaa2 - 1475 M17 MGMC(a) br/vehicles/m17mgmc - 1477 Humber AA br/vehicles/humbaa - 1479 Staghound AA(a) br/vehicles/stagaa - 1481 M5(a) br/vehicles/m5a - 1483 M5(a) br/vehicles/m5a2 - 1485 M5A1(a) br/vehicles/m5a1a - 1487 M5A1(a) br/vehicles/m5a1a2 - 1489 M9(a) br/vehicles/m9a - 1491 M9(a) br/vehicles/m9a2 - 1493 M9A1(a) br/vehicles/m9a1a - 1495 M9A1(a) br/vehicles/m9a1a2 - 1497 Carrier A br/vehicles/carra - 1499 Carrier B br/vehicles/carrb - 1501 Carrier C br/vehicles/carrc - 1503 Carrier MMG A br/vehicles/carrmmga - 1505 Carrier MMG A br/vehicles/carrmmga2 - 1507 Carrier MMG B br/vehicles/carrmmgb - 1509 Carrier 2-in MTR br/vehicles/carr2in - 1511 Carrier 3-in MTR br/vehicles/carr3in - 1513 Priest Kangaroo(a) br/vehicles/prkang - 1515 Ram Kangaroo(a) br/vehicles/ramkang - 1517 Ram Kangaroo(a) br/vehicles/ramkang2 - 1519 White(a) SC br/vehicles/white - 1521 White(a) SC br/vehicles/white2 - 1523 IP Carrier Mk IIS br/vehicles/ipciia - 1525 IP Carrier Mk IIB br/vehicles/ipciib - 1527 IP Carrier AOV br/vehicles/ipcaov - 1529 IP Carrier 3-in MTR br/vehicles/ipc3in - 1531 IP Carrier 3-in MTR br/vehicles/ipc3in2 - 1533 Wasp br/vehicles/waspapc - 1535 Wasp br/vehicles/waspapc2 - 1537 Badger(a) br/vehicles/badapc - 1539 Badger(a) br/vehicles/badapc2 - 1541 Buffalo Mk II(a) br/vehicles/buffiia - 1543 Buffalo Mk IV(a) br/vehicles/buffiva - 1545 Sherman III DD(a) br/vehicles/sherdd - 1547 Sherman III DD(a) br/vehicles/sherdd2 - 1549 DUKW(a) br/vehicles/dukw - 1553 Terrapin br/vehicles/terra - 1555 2pdr Portee ['br/vehicles/portee', 'br/vehicles/portee0'] - 1557 Morris C9/B br/vehicles/morrc9b - 1559 Loyd Carrier br/vehicles/loyd - 1561 Quad FAT br/vehicles/quad - 1563 15-cwt Truck br/vehicles/cwt15 - 1565 30-cwt Lorry br/vehicles/cwt30 - 1567 3-ton Lorry br/vehicles/ton3 - 1569 Jeep(a) br/vehicles/jeep - 1570 Jeep(a) MMG br/vehicles/jeep2 - 1571 3/4 ton Truck(a) br/vehicles/ton34 - 1573 1-1/2 ton Truck(a) br/vehicles/ton112 - 1575 2-1/2 ton Truck(a) br/vehicles/ton212 - 1577 7-1/2 ton Truck(a) br/vehicles/ton712 - 1632 37* INF fr/frINF fr/frINFb - 1636 50 MTR(f) fr/frMTR fr/frMTRb - 1641 60* MTR(a) br/brMTRa br/brMTRab - 1667 81* MTR(f) mle 27/31 fr/gun/frMTR81sf fr/gun/frMTR81sfb - 1669 25LL AT SA-L mle 34 fr/gun/frAT25LL fr/gun/frAT25LLb - 1670 47L AT SA mle 37 APX <41 fr/gun/frAT47L-40 fr/gun/frAT47Lb - 1671 47L AT SA mle 37 APX fr/gun/frAT47L fr/gun/frAT47Lb - 1672 47L AT SA mle 37 APX fr/gun/frAT47Lf fr/gun/frAT47Lfb - 1673 75 AT mle 97/35 fr/gun/frAT75 fr/gun/frAT75b - 1674 65* INF M mle 06 fr/gun/frINF65s fr/gun/frINF65sb - 1678 75* ART M mle 28 fr/gun/frAR75s fr/gun/frAR75sb - 1679 75 ART mle 1897 fr/gun/frAR75 fr/gun/frAR75b - 1680 105* ART M mle 28 fr/gun/frAR105 fr/gun/frAR105-b - 1681 105 ART C mle 35B fr/gun/frAR105B fr/gun/frAR105Bb - 1682 105 ART M mle 13S fr/gun/frAR105S fr/gun/frAR105Sb - 1683 105L ART L mle 36S fr/gun/frAR105L fr/gun/frAR105Lb - 1684 155* ART C mle 17S fr/gun/frAR155s fr/gun/frAR155sb - 1685 155 ART GPF fr/gun/frAR155 fr/gun/frAR155b - 1687 12.7 AA CAJ mle 30 <41 fr/gun/frAA12-40 fr/gun/frAA12b - 1688 12.7 AA CAJ mle 30 fr/gun/frAA12 fr/gun/frAA12b - 1689 12.7 AA CAJ mle 30 fr/gun/frAA12f fr/gun/frAA12fb - 1690 20L AA CA mle 39 O fr/gun/frAA20L fr/gun/frAA20Lb - 1691 25LL AA CA mle 38 <41 fr/gun/frAA25LL-40 fr/gun/frAA25LLb - 1692 25LL AA CA mle 38 fr/gun/frAA25LL fr/gun/frAA25LLb - 1693 75L AA CA mle 32 fr/gun/frAA75L fr/gun/frAA75Lb - 1704 75 ART mle 1897 br/guns/brAR75 br/guns/brAR75b - 1713 FT-17M fr/veh/ft17m - 1715 FT-17C fr/veh/ft17c - 1717 FT-17 75BS fr/veh/ft1775 - 1719 AMR 33 fr/veh/amr33 - 1721 AMR 35 fr/veh/amr35 - 1723 AMR 35(L) fr/veh/amr35l - 1725 R35 fr/veh/r35 - 1727 R35(L) fr/veh/r35l - 1729 R35(L) fr/veh/r35l-a - 1731 H35 fr/veh/h35 - 1733 H35(L) fr/veh/h35l - 1735 FCM 36 fr/veh/fcm36 - 1737 H39 fr/veh/h39 - 1739 H39 fr/veh/h39-b - 1741 H39(L) fr/veh/h39l - 1743 H39(L) fr/veh/h39l-a - 1745 R40 fr/veh/r40 - 1747 D1 fr/veh/d1 - 1749 D2 fr/veh/d2 - 1751 D2(L) fr/veh/d2l - 1753 S35 fr/veh/s35 - 1755 S35 fr/veh/s35-a - 1757 B1-bis fr/veh/b1bis - 1759 B1-bis fr/veh/b1bis-a - 1761 Valentine V(b) fr/veh/valv - 1763 Valentine V(b) fr/veh/valv2 - 1767 AM Dodge(a) fr/veh/amd - 1769 AM Dodge(a) fr/veh/amd-b - 1771 AM Dodge(a) fr/veh/amd-b2 - 1773 AMD 20 cv TOE fr/veh/amd20 - 1775 AMD 50 AM fr/veh/amd50 - 1777 AMD 80 AM fr/veh/amd80 - 1779 AMD 35 fr/veh/amd35 - 1781 AMD 35 fr/veh/amd352 - 1785 Laffly W15T fr/veh/laffw15 - 1787 Ac de 75 Conus(b) fr/veh/ac75con - 1789 Ac de 75 mle 97 fr/veh/ac7597 - 1791 Cam. de Mitr. CA fr/veh/cammitr - 1793 Cam. de 13.2 CAJ fr/veh/cam132 - 1795 Cam. de 20 CA fr/veh/cam20 - 1797 Ac de 25 CA fr/veh/ac25 - 1801 Ac de 40 CA(a) fr/veh/ac40 - 1803 Ac de 75 mle 13/34 fr/veh/ac75 - 1807 AMC 29 fr/veh/amc29 - 1809 C-K P17 fr/veh/ckp17 - 1811 C-K P19 fr/veh/ckp19 - 1813 SOMUA MCG fr/veh/somua - 1815 Unic P107 fr/veh/unic - 1817 Renault UE fr/veh/renaue - 1819 Renault UE MG fr/veh/renaue2 - 1821 Lorraine 38L fr/veh/lorr38tr - 1824 Lorraine 37L 44 fr/veh/lorr37 - 1826 Carrier AC(b) fr/veh/carrac - 1828 Latil TAR H2 fr/veh/latil - 1830 Laffly S15T fr/veh/laffs15 - 1832 Laffly S20TL fr/veh/laffs20 - 1834 Laffly V15T fr/veh/laffv15 - 1836 Peugeot 202 fr/veh/peugeot - 1837 Citroen 23 fr/veh/citroen - 1839 Renault AGR2 fr/veh/renagr - 1895 M5 ht fr/veh/m5 - 1897 M5A1 ht fr/veh/m5a1 - 1903 M9 ht fr/veh/m9 - 1982 40 MTR ch/chM40 ch/chM40b - 1983 45* MTR(i) <41 ch/chM45 ch/chM45b - 1984 45* MTR(i) ch/chM452 ch/chM45b - 1985 50* MTR(g) ch/chM50g ch/chM50gb - 1986 50* MTR(r) ch/chM50r ch/chM50rb - 1987 50* MTR(j) ch/chM50j ch/chM50jb - 1988 60* MTR(a) ch/chM60 ch/chM60b - 2016 76* MTR Stokes ch/gun/chM76s ch/gun/chM76sb - 2018 81* MTR GrW 34 ch/gun/chM81s ch/gun/chM81sb - 2020 82* MTR BM obr. 37 ch/gun/chM82s ch/gun/chM82sb - 2022 81* MTR M1 ch/gun/chM81M1 ch/gun/chM81M1b - 2024 107* MTR M2 ch/gun/chM107 ch/gun/chM107b - 2026 37L AT Pak 35/36 ch/gun/chAT37L ch/gun/chAT37Lb - 2027 37LL AT M3A1 ch/gun/chAT37LL ch/gun/chAT37LLb - 2029 37* ART PP obr. 15R ch/gun/chAR37s ch/gun/chAR37sb - 2030 70* ART 70/15 ch/gun/chAR70s ch/gun/chAR70sb - 2031 75* ART Krupp M08 ch/gun/chAR75K ch/gun/chAR75Kb - 2032 75* ART 75/13 <41 ch/gun/chAR75O ch/gun/chAR75Ob - 2033 75* ART 75/13 ch/gun/chAR75O2 ch/gun/chAR75Ob - 2034 75* ART leIG 18 ch/gun/chAR75I ch/gun/chAR75Ib - 2035 76* ART PP obr. 27 <41 ch/gun/chAR76s ch/gun/chAR76sb - 2036 76* ART PP obr. 27 ch/gun/chAR76s2 ch/gun/chAR76sb - 2037 75* ART M1A1 ch/gun/chAR75M ch/gun/chAR75Mb - 2039 75 ART FK 16 ch/gun/chAR75F ch/gun/chAR75Fb - 2040 76 ART P obr. 02/30 <41 ch/gun/chAR76 ch/gun/chAR76b - 2041 76 ART P obr. 02/30 ch/gun/chAR762 ch/gun/chAR76b - 2042 84* ART 18-lber ch/gun/chAR84s ch/gun/chAR84sb - 2043 105* ART leFH 16 ch/gun/chAR105s ch/gun/chAR105sb - 2044 105 ART 105/28 ch/gun/chAR105 ch/gun/chAR105b - 2045 105 ART M2A1 ch/gun/chAR105_ ch/gun/chAR105_b - 2046 122* ART obr. 10/30 <41 ch/gun/chAR122s ch/gun/chAR122sb - 2048 122 ART G obr. 38 <41 ch/gun/chAR122 ch/gun/chAR122b - 2050 150* ART 149/13 ch/gun/chAR150s ch/gun/chAR150sb - 2052 20L AA Oerlikon FF ch/gun/chAA20LO ch/gun/chAA20LOb - 2053 20L AA 20/65 <41 ch/gun/chAA20LC ch/gun/chAA20LCb - 2055 20L AA FlaK 30 ch/gun/chAA20LF ch/gun/chAA20LFb - 2056 37L AA FlaK 36/37 ch/gun/chAA37L ch/gun/chAA37Lb - 2057 40L AA Bofors L/60 ch/gun/chAA40L ch/gun/chAA40Lb - 2058 75L AA Bofors M29 <41 ch/gun/chAA75L ch/gun/chAA75Lb - 2060 88L AA FlaK 18 <41 ch/gun/chAA88L ch/gun/chAA88Lb - 2063 VCL M1931(b) ch/veh/vclm1931 - 2065 L3/35(i) ch/veh/chl335 - 2067 PzKw IA(g) ch/veh/chpzia - 2069 Vickers 6t Mk E(b) ch/veh/chvick - 2071 T-26TU M33(r) ch/veh/cht26 - 2073 T-26TU M33(r) ch/veh/cht262 - 2075 M3A3(a) ch/veh/chm3a3 - 2077 M3A3(a) ch/veh/chm3a32 - 2079 M4A4(a) ch/veh/chm4a4 - 2081 M4A4(a) ch/veh/chm4a42 - 2085 M3A1(a) SC ch/veh/chm3a1 - 2087 Stuart Recon(a) ch/veh/chstuart - 2089 Type 22 AC ch/veh/ch22ac - 2091 PSW 221(g) ch/veh/chpsw221 - 2093 PSW 222(g) ch/veh/chpsw222 - 2095 BA-20(r) ch/veh/chba20 - 2097 BA-6(r) ch/veh/chba6 - 2101 VCL Mk VI Carrier(b) ch/veh/chvcl - 2103 VCL Mk VI Carrier(b) ch/veh/chvcl2 - 2105 Carrier A(b) ch/veh/chcarra - 2107 Carrier B(b) ch/veh/chcarrb - 2109 Carrier C(b) ch/veh/chcarrc - 2111 Henschel 33(g) ch/veh/chhensch - 2113 Jeep(a) ch/veh/chjeep - 2116 2-1/2 ton truck(a) ch/veh/chton212 - 2172 46* MTR al/alMTR46 al/alMTR46B - 2173 50* MTR al/alMTR50 al/alMTR50B - 2176 ATR al/alATR al/alATRb - 2179 20L ATR al/alATR20 al/alATR20b - 2193 81* MTR Brandt al/gun/alMTR81 al/gun/alMTR81b - 2195 37L AT Bofors al/gun/alAT37 al/gun/alAT37b - 2196 37L AT PaK 35/36 al/gun/alAT37L al/gun/alAT37Lb - 2197 47 AT Bohler M35 al/gun/alAT47 al/gun/alAT47b - 2198 65* INF wz. 06 al/gun/alINF65 al/gun/alINF65b - 2199 75 ART wz. 97 al/gun/alART75fr al/gun/alART75frb - 2200 75* ART Bofors M34 al/gun/alART75 al/gun/alART75b - 2201 75* ART 75M 19S al/gun/alART75s al/gun/alART75sb - 2202 105 ART C105 L 13 S al/gun/alART105 al/gun/alART105b - 2203 120* ART wz. 09/31 al/gun/alART120 al/gun/alART120b - 2204 155* ART 17S al/gun/alART155 al/gun/alART155b - 2205 12.7 AA CAJ al/gun/alAA127 al/gun/alAA127b - 2206 20L AA Oerlikon al/gun/alAA20 al/gun/alAA20b - 2207 40L AA Bofors al/gun/alAA40 al/gun/alAA40b - 2208 75 ART wz. 02/26 al/gun/alART75p al/gun/alART75pb - 2209 100* ART wz. 14/19 al/gun/alART100p al/gun/alART100pb - 2210 75L AA wz. 97/25 al/gun/alAA75p al/gun/alAA75pb - 2211 76* MTR M76 A al/gun/alMTR76 al/gun/alMTR76b - 2212 76* INF FRC ['al/gun/alINF76', 'al/gun/alINF76u'] al/gun/alINF76b - 2213 47 AT C47 FRC M 32 al/gun/alATb47 al/gun/alATb47b - 2214 75 ART C75 TR al/gun/alARTb75 al/gun/alARTb75b - 2215 75 ART C75 GP al/gun/alART75gp al/gun/alART75gpb - 2216 105 ART Ob 105 GP al/gun/alARTb105 al/gun/alARTb105b - 2217 120 ART C120 M31 al/gun/alARTb120 al/gun/alARTb120b - 2218 75L AA M27 FRC al/gun/alAA75 al/gun/alAA75b - 2219 85 ART Vari 85/24 M al/gun/alART85 al/gun/alART85b - 2220 105* ART OR 105/19 al/gun/alART105g al/gun/alART105gb - 2221 37L AA Bofors al/gun/alAA37 al/gun/alAA37b - 2222 20L AT M-35 al/gun/alAT20 al/gun/alAT20b - 2223 37* INF al/gun/alINF37 al/gun/alINF37b - 2224 80* ART M28/M33 al/gun/alART80 al/gun/alART80b - 2225 100* ART M14/19 al/gun/alART100 al/gun/alART100b - 2231 L5/30(i) al/veh/L530 - 2233 L3/35(i) al/veh/L335 - 2235 L6/40(i) al/veh/L640 - 2237 M13/40(i) al/veh/M1340 - 2239 FT-17M(f) al/veh/FT17M + 1415 Rolls Royce br/vehicles/rolls.gif + 1417 Marmon-H II ME br/vehicles/marmii.gif + 1419 Marmon-H IIv br/vehicles/marmiiv.gif + 1421 Marmon-H III MFF br/vehicles/marmiiif.gif + 1423 Marmon-H III ME br/vehicles/marmiiie.gif + 1425 Marmon-H IIIv br/vehicles/marmiiiv.gif + 1427 Marmon-H IIIv br/vehicles/marmiiiv2.gif + 1429 Humber II AC br/vehicles/humbii.gif + 1431 Humber III AC br/vehicles/humbiii.gif + 1433 Humber III AC br/vehicles/humbiii2.gif + 1435 Humber IV AC br/vehicles/humbiv.gif + 1437 Daimler AC br/vehicles/daimac.gif + 1439 Daimler AC br/vehicles/daimac2.gif + 1441 AEC I AC br/vehicles/aeci.gif + 1443 AEC II AC br/vehicles/aecii.gif + 1445 AEC III AC br/vehicles/aeciii.gif + 1447 Staghound I(a) br/vehicles/stagi.gif + 1449 Staghound I(a) br/vehicles/stagi2.gif + 1451 Staghound II(a) br/vehicles/stagii.gif + 1453 Staghound II(a) br/vehicles/stagii2.gif + 1457 Bishop br/vehicles/bishop.gif + 1459 Bishop br/vehicles/bishop2.gif + 1461 Priest(a) br/vehicles/priest.gif + 1463 Sexton(a) br/vehicles/sexton.gif + 1465 Sexton(a) br/vehicles/sexton2.gif + 1467 M3 GMC(a) br/vehicles/m3gmc.gif + 1469 Mark VI AA br/vehicles/markviaa.gif + 1471 Crusader AA br/vehicles/crusaa.gif + 1473 Crusader AA br/vehicles/crusaa2.gif + 1475 M17 MGMC(a) br/vehicles/m17mgmc.gif + 1477 Humber AA br/vehicles/humbaa.gif + 1479 Staghound AA(a) br/vehicles/stagaa.gif + 1481 M5(a) br/vehicles/m5a.gif + 1483 M5(a) br/vehicles/m5a2.gif + 1485 M5A1(a) br/vehicles/m5a1a.gif + 1487 M5A1(a) br/vehicles/m5a1a2.gif + 1489 M9(a) br/vehicles/m9a.gif + 1491 M9(a) br/vehicles/m9a2.gif + 1493 M9A1(a) br/vehicles/m9a1a.gif + 1495 M9A1(a) br/vehicles/m9a1a2.gif + 1497 Carrier A br/vehicles/carra.gif + 1499 Carrier B br/vehicles/carrb.gif + 1501 Carrier C br/vehicles/carrc.gif + 1503 Carrier MMG A br/vehicles/carrmmga.gif + 1505 Carrier MMG A br/vehicles/carrmmga2.gif + 1507 Carrier MMG B br/vehicles/carrmmgb.gif + 1509 Carrier 2-in MTR br/vehicles/carr2in.gif + 1511 Carrier 3-in MTR br/vehicles/carr3in.gif + 1513 Priest Kangaroo(a) br/vehicles/prkang.gif + 1515 Ram Kangaroo(a) br/vehicles/ramkang.gif + 1517 Ram Kangaroo(a) br/vehicles/ramkang2.gif + 1519 White(a) SC br/vehicles/white.gif + 1521 White(a) SC br/vehicles/white2.gif + 1523 IP Carrier Mk IIS br/vehicles/ipciia.gif + 1525 IP Carrier Mk IIB br/vehicles/ipciib.gif + 1527 IP Carrier AOV br/vehicles/ipcaov.gif + 1529 IP Carrier 3-in MTR br/vehicles/ipc3in.gif + 1531 IP Carrier 3-in MTR br/vehicles/ipc3in2.gif + 1533 Wasp br/vehicles/waspapc.gif + 1535 Wasp br/vehicles/waspapc2.gif + 1537 Badger(a) br/vehicles/badapc.gif + 1539 Badger(a) br/vehicles/badapc2.gif + 1541 Buffalo Mk II(a) br/vehicles/buffiia.gif + 1543 Buffalo Mk IV(a) br/vehicles/buffiva.gif + 1545 Sherman III DD(a) br/vehicles/sherdd.gif + 1547 Sherman III DD(a) br/vehicles/sherdd2.gif + 1549 DUKW(a) br/vehicles/dukw.gif + 1553 Terrapin br/vehicles/terra.gif + 1555 2pdr Portee ['br/vehicles/portee.gif', 'br/vehicles/portee0.gif'] + 1557 Morris C9/B br/vehicles/morrc9b.gif + 1559 Loyd Carrier br/vehicles/loyd.gif + 1561 Quad FAT br/vehicles/quad.gif + 1563 15-cwt Truck br/vehicles/cwt15.gif + 1565 30-cwt Lorry br/vehicles/cwt30.gif + 1567 3-ton Lorry br/vehicles/ton3.gif + 1569 Jeep(a) br/vehicles/jeep.gif + 1570 Jeep(a) MMG br/vehicles/jeep2.gif + 1571 3/4 ton Truck(a) br/vehicles/ton34.gif + 1573 1-1/2 ton Truck(a) br/vehicles/ton112.gif + 1575 2-1/2 ton Truck(a) br/vehicles/ton212.gif + 1577 7-1/2 ton Truck(a) br/vehicles/ton712.gif + 1632 37* INF fr/frINF.gif fr/frINFb.gif + 1636 50 MTR(f) fr/frMTR.gif fr/frMTRb.gif + 1641 60* MTR(a) br/brMTRa.gif br/brMTRab.gif + 1667 81* MTR(f) mle 27/31 fr/gun/frMTR81sf.gif fr/gun/frMTR81sfb.gif + 1669 25LL AT SA-L mle 34 fr/gun/frAT25LL.gif fr/gun/frAT25LLb.gif + 1670 47L AT SA mle 37 APX <41 fr/gun/frAT47L-40.gif fr/gun/frAT47Lb.gif + 1671 47L AT SA mle 37 APX fr/gun/frAT47L.gif fr/gun/frAT47Lb.gif + 1672 47L AT SA mle 37 APX fr/gun/frAT47Lf.gif fr/gun/frAT47Lfb.gif + 1673 75 AT mle 97/35 fr/gun/frAT75.gif fr/gun/frAT75b.gif + 1674 65* INF M mle 06 fr/gun/frINF65s.gif fr/gun/frINF65sb.gif + 1678 75* ART M mle 28 fr/gun/frAR75s.gif fr/gun/frAR75sb.gif + 1679 75 ART mle 1897 fr/gun/frAR75.gif fr/gun/frAR75b.gif + 1680 105* ART M mle 28 fr/gun/frAR105.gif fr/gun/frAR105-b.gif + 1681 105 ART C mle 35B fr/gun/frAR105B.gif fr/gun/frAR105Bb.gif + 1682 105 ART M mle 13S fr/gun/frAR105S.gif fr/gun/frAR105Sb.gif + 1683 105L ART L mle 36S fr/gun/frAR105L.gif fr/gun/frAR105Lb.gif + 1684 155* ART C mle 17S fr/gun/frAR155s.gif fr/gun/frAR155sb.gif + 1685 155 ART GPF fr/gun/frAR155.gif fr/gun/frAR155b.gif + 1687 12.7 AA CAJ mle 30 <41 fr/gun/frAA12-40.gif fr/gun/frAA12b.gif + 1688 12.7 AA CAJ mle 30 fr/gun/frAA12.gif fr/gun/frAA12b.gif + 1689 12.7 AA CAJ mle 30 fr/gun/frAA12f.gif fr/gun/frAA12fb.gif + 1690 20L AA CA mle 39 O fr/gun/frAA20L.gif fr/gun/frAA20Lb.gif + 1691 25LL AA CA mle 38 <41 fr/gun/frAA25LL-40.gif fr/gun/frAA25LLb.gif + 1692 25LL AA CA mle 38 fr/gun/frAA25LL.gif fr/gun/frAA25LLb.gif + 1693 75L AA CA mle 32 fr/gun/frAA75L.gif fr/gun/frAA75Lb.gif + 1704 75 ART mle 1897 br/guns/brAR75.gif br/guns/brAR75b.gif + 1713 FT-17M fr/veh/ft17m.gif + 1715 FT-17C fr/veh/ft17c.gif + 1717 FT-17 75BS fr/veh/ft1775.gif + 1719 AMR 33 fr/veh/amr33.gif + 1721 AMR 35 fr/veh/amr35.gif + 1723 AMR 35(L) fr/veh/amr35l.gif + 1725 R35 fr/veh/r35.gif + 1727 R35(L) fr/veh/r35l.gif + 1729 R35(L) fr/veh/r35l-a.gif + 1731 H35 fr/veh/h35.gif + 1733 H35(L) fr/veh/h35l.gif + 1735 FCM 36 fr/veh/fcm36.gif + 1737 H39 fr/veh/h39.gif + 1739 H39 fr/veh/h39-b.gif + 1741 H39(L) fr/veh/h39l.gif + 1743 H39(L) fr/veh/h39l-a.gif + 1745 R40 fr/veh/r40.gif + 1747 D1 fr/veh/d1.gif + 1749 D2 fr/veh/d2.gif + 1751 D2(L) fr/veh/d2l.gif + 1753 S35 fr/veh/s35.gif + 1755 S35 fr/veh/s35-a.gif + 1757 B1-bis fr/veh/b1bis.gif + 1759 B1-bis fr/veh/b1bis-a.gif + 1761 Valentine V(b) fr/veh/valv.gif + 1763 Valentine V(b) fr/veh/valv2.gif + 1767 AM Dodge(a) fr/veh/amd.gif + 1769 AM Dodge(a) fr/veh/amd-b.gif + 1771 AM Dodge(a) fr/veh/amd-b2.gif + 1773 AMD 20 cv TOE fr/veh/amd20.gif + 1775 AMD 50 AM fr/veh/amd50.gif + 1777 AMD 80 AM fr/veh/amd80.gif + 1779 AMD 35 fr/veh/amd35.gif + 1781 AMD 35 fr/veh/amd352.gif + 1785 Laffly W15T fr/veh/laffw15.gif + 1787 Ac de 75 Conus(b) fr/veh/ac75con.gif + 1789 Ac de 75 mle 97 fr/veh/ac7597.gif + 1791 Cam. de Mitr. CA fr/veh/cammitr.gif + 1793 Cam. de 13.2 CAJ fr/veh/cam132.gif + 1795 Cam. de 20 CA fr/veh/cam20.gif + 1797 Ac de 25 CA fr/veh/ac25.gif + 1801 Ac de 40 CA(a) fr/veh/ac40.gif + 1803 Ac de 75 mle 13/34 fr/veh/ac75.gif + 1807 AMC 29 fr/veh/amc29.gif + 1809 C-K P17 fr/veh/ckp17.gif + 1811 C-K P19 fr/veh/ckp19.gif + 1813 SOMUA MCG fr/veh/somua.gif + 1815 Unic P107 fr/veh/unic.gif + 1817 Renault UE fr/veh/renaue.gif + 1819 Renault UE MG fr/veh/renaue2.gif + 1821 Lorraine 38L fr/veh/lorr38tr.gif + 1824 Lorraine 37L 44 fr/veh/lorr37.gif + 1826 Carrier AC(b) fr/veh/carrac.gif + 1828 Latil TAR H2 fr/veh/latil.gif + 1830 Laffly S15T fr/veh/laffs15.gif + 1832 Laffly S20TL fr/veh/laffs20.gif + 1834 Laffly V15T fr/veh/laffv15.gif + 1836 Peugeot 202 fr/veh/peugeot.gif + 1837 Citroen 23 fr/veh/citroen.gif + 1839 Renault AGR2 fr/veh/renagr.gif + 1895 M5 ht fr/veh/m5.gif + 1897 M5A1 ht fr/veh/m5a1.gif + 1903 M9 ht fr/veh/m9.gif + 1982 40 MTR ch/chM40.gif ch/chM40b.gif + 1983 45* MTR(i) <41 ch/chM45.gif ch/chM45b.gif + 1984 45* MTR(i) ch/chM452.gif ch/chM45b.gif + 1985 50* MTR(g) ch/chM50g.gif ch/chM50gb.gif + 1986 50* MTR(r) ch/chM50r.gif ch/chM50rb.gif + 1987 50* MTR(j) ch/chM50j.gif ch/chM50jb.gif + 1988 60* MTR(a) ch/chM60.gif ch/chM60b.gif + 2016 76* MTR Stokes ch/gun/chM76s.gif ch/gun/chM76sb.gif + 2018 81* MTR GrW 34 ch/gun/chM81s.gif ch/gun/chM81sb.gif + 2020 82* MTR BM obr. 37 ch/gun/chM82s.gif ch/gun/chM82sb.gif + 2022 81* MTR M1 ch/gun/chM81M1.gif ch/gun/chM81M1b.gif + 2024 107* MTR M2 ch/gun/chM107.gif ch/gun/chM107b.gif + 2026 37L AT Pak 35/36 ch/gun/chAT37L.gif ch/gun/chAT37Lb.gif + 2027 37LL AT M3A1 ch/gun/chAT37LL.gif ch/gun/chAT37LLb.gif + 2029 37* ART PP obr. 15R ch/gun/chAR37s.gif ch/gun/chAR37sb.gif + 2030 70* ART 70/15 ch/gun/chAR70s.gif ch/gun/chAR70sb.gif + 2031 75* ART Krupp M08 ch/gun/chAR75K.gif ch/gun/chAR75Kb.gif + 2032 75* ART 75/13 <41 ch/gun/chAR75O.gif ch/gun/chAR75Ob.gif + 2033 75* ART 75/13 ch/gun/chAR75O2.gif ch/gun/chAR75Ob.gif + 2034 75* ART leIG 18 ch/gun/chAR75I.gif ch/gun/chAR75Ib.gif + 2035 76* ART PP obr. 27 <41 ch/gun/chAR76s.gif ch/gun/chAR76sb.gif + 2036 76* ART PP obr. 27 ch/gun/chAR76s2.gif ch/gun/chAR76sb.gif + 2037 75* ART M1A1 ch/gun/chAR75M.gif ch/gun/chAR75Mb.gif + 2039 75 ART FK 16 ch/gun/chAR75F.gif ch/gun/chAR75Fb.gif + 2040 76 ART P obr. 02/30 <41 ch/gun/chAR76.gif ch/gun/chAR76b.gif + 2041 76 ART P obr. 02/30 ch/gun/chAR762.gif ch/gun/chAR76b.gif + 2042 84* ART 18-lber ch/gun/chAR84s.gif ch/gun/chAR84sb.gif + 2043 105* ART leFH 16 ch/gun/chAR105s.gif ch/gun/chAR105sb.gif + 2044 105 ART 105/28 ch/gun/chAR105.gif ch/gun/chAR105b.gif + 2045 105 ART M2A1 ch/gun/chAR105_.gif ch/gun/chAR105_b.gif + 2046 122* ART obr. 10/30 <41 ch/gun/chAR122s.gif ch/gun/chAR122sb.gif + 2048 122 ART G obr. 38 <41 ch/gun/chAR122.gif ch/gun/chAR122b.gif + 2050 150* ART 149/13 ch/gun/chAR150s.gif ch/gun/chAR150sb.gif + 2052 20L AA Oerlikon FF ch/gun/chAA20LO.gif ch/gun/chAA20LOb.gif + 2053 20L AA 20/65 <41 ch/gun/chAA20LC.gif ch/gun/chAA20LCb.gif + 2055 20L AA FlaK 30 ch/gun/chAA20LF.gif ch/gun/chAA20LFb.gif + 2056 37L AA FlaK 36/37 ch/gun/chAA37L.gif ch/gun/chAA37Lb.gif + 2057 40L AA Bofors L/60 ch/gun/chAA40L.gif ch/gun/chAA40Lb.gif + 2058 75L AA Bofors M29 <41 ch/gun/chAA75L.gif ch/gun/chAA75Lb.gif + 2060 88L AA FlaK 18 <41 ch/gun/chAA88L.gif ch/gun/chAA88Lb.gif + 2063 VCL M1931(b) ch/veh/vclm1931.gif + 2065 L3/35(i) ch/veh/chl335.gif + 2067 PzKw IA(g) ch/veh/chpzia.gif + 2069 Vickers 6t Mk E(b) ch/veh/chvick.gif + 2071 T-26TU M33(r) ch/veh/cht26.gif + 2073 T-26TU M33(r) ch/veh/cht262.gif + 2075 M3A3(a) ch/veh/chm3a3.gif + 2077 M3A3(a) ch/veh/chm3a32.gif + 2079 M4A4(a) ch/veh/chm4a4.gif + 2081 M4A4(a) ch/veh/chm4a42.gif + 2085 M3A1(a) SC ch/veh/chm3a1.gif + 2087 Stuart Recon(a) ch/veh/chstuart.gif + 2089 Type 22 AC ch/veh/ch22ac.gif + 2091 PSW 221(g) ch/veh/chpsw221.gif + 2093 PSW 222(g) ch/veh/chpsw222.gif + 2095 BA-20(r) ch/veh/chba20.gif + 2097 BA-6(r) ch/veh/chba6.gif + 2101 VCL Mk VI Carrier(b) ch/veh/chvcl.gif + 2103 VCL Mk VI Carrier(b) ch/veh/chvcl2.gif + 2105 Carrier A(b) ch/veh/chcarra.gif + 2107 Carrier B(b) ch/veh/chcarrb.gif + 2109 Carrier C(b) ch/veh/chcarrc.gif + 2111 Henschel 33(g) ch/veh/chhensch.gif + 2113 Jeep(a) ch/veh/chjeep.gif + 2116 2-1/2 ton truck(a) ch/veh/chton212.gif + 2172 46* MTR al/alMTR46.gif al/alMTR46B.gif + 2173 50* MTR al/alMTR50.gif al/alMTR50B.gif + 2176 ATR al/alATR.gif al/alATRb.gif + 2179 20L ATR al/alATR20.gif al/alATR20b.gif + 2193 81* MTR Brandt al/gun/alMTR81.gif al/gun/alMTR81b.gif + 2195 37L AT Bofors al/gun/alAT37.gif al/gun/alAT37b.gif + 2196 37L AT PaK 35/36 al/gun/alAT37L.gif al/gun/alAT37Lb.gif + 2197 47 AT Bohler M35 al/gun/alAT47.gif al/gun/alAT47b.gif + 2198 65* INF wz. 06 al/gun/alINF65.gif al/gun/alINF65b.gif + 2199 75 ART wz. 97 al/gun/alART75fr.gif al/gun/alART75frb.gif + 2200 75* ART Bofors M34 al/gun/alART75.gif al/gun/alART75b.gif + 2201 75* ART 75M 19S al/gun/alART75s.gif al/gun/alART75sb.gif + 2202 105 ART C105 L 13 S al/gun/alART105.gif al/gun/alART105b.gif + 2203 120* ART wz. 09/31 al/gun/alART120.gif al/gun/alART120b.gif + 2204 155* ART 17S al/gun/alART155.gif al/gun/alART155b.gif + 2205 12.7 AA CAJ al/gun/alAA127.gif al/gun/alAA127b.gif + 2206 20L AA Oerlikon al/gun/alAA20.gif al/gun/alAA20b.gif + 2207 40L AA Bofors al/gun/alAA40.gif al/gun/alAA40b.gif + 2208 75 ART wz. 02/26 al/gun/alART75p.gif al/gun/alART75pb.gif + 2209 100* ART wz. 14/19 al/gun/alART100p.gif al/gun/alART100pb.gif + 2210 75L AA wz. 97/25 al/gun/alAA75p.gif al/gun/alAA75pb.gif + 2211 76* MTR M76 A al/gun/alMTR76.gif al/gun/alMTR76b.gif + 2212 76* INF FRC ['al/gun/alINF76.gif', 'al/gun/alINF76u.gif'] al/gun/alINF76b.gif + 2213 47 AT C47 FRC M 32 al/gun/alATb47.gif al/gun/alATb47b.gif + 2214 75 ART C75 TR al/gun/alARTb75.gif al/gun/alARTb75b.gif + 2215 75 ART C75 GP al/gun/alART75gp.gif al/gun/alART75gpb.gif + 2216 105 ART Ob 105 GP al/gun/alARTb105.gif al/gun/alARTb105b.gif + 2217 120 ART C120 M31 al/gun/alARTb120.gif al/gun/alARTb120b.gif + 2218 75L AA M27 FRC al/gun/alAA75.gif al/gun/alAA75b.gif + 2219 85 ART Vari 85/24 M al/gun/alART85.gif al/gun/alART85b.gif + 2220 105* ART OR 105/19 al/gun/alART105g.gif al/gun/alART105gb.gif + 2221 37L AA Bofors al/gun/alAA37.gif al/gun/alAA37b.gif + 2222 20L AT M-35 al/gun/alAT20.gif al/gun/alAT20b.gif + 2223 37* INF al/gun/alINF37.gif al/gun/alINF37b.gif + 2224 80* ART M28/M33 al/gun/alART80.gif al/gun/alART80b.gif + 2225 100* ART M14/19 al/gun/alART100.gif al/gun/alART100b.gif + 2231 L5/30(i) al/veh/L530.gif + 2233 L3/35(i) al/veh/L335.gif + 2235 L6/40(i) al/veh/L640.gif + 2237 M13/40(i) al/veh/M1340.gif + 2239 FT-17M(f) al/veh/FT17M.gif 2241 FT-17C(f) FT17C.gif - 2243 R-35(f) al/veh/R35 - 2245 M3A1 SC(a) al/veh/M3A1sc - 2247 C-K P17(f) al/veh/CKP17 - 2249 C-K P19(f) al/veh/CKP19 - 2251 VCL Utility(b) al/veh/VCL - 2253 Lt truck al/veh/allttruck - 2255 Md truck al/veh/almdtruck - 2257 Hv truck al/veh/alhvytruck - 2259 TKS al/veh/TKS - 2261 TKS(L) al/veh/TKSL - 2263 Vickers Edw(b) al/veh/Edwb - 2265 Vickers Ejw(b) al/veh/Ejwb - 2267 7TPdw al/veh/7TPdw - 2269 7TPjw al/veh/7TPjw - 2271 H35(f) al/veh/H35f - 2273 Peugeot 1918(f) al/veh/1918f - 2275 wz. 29 Ursus al/veh/wz29 - 2277 wz. 34-I al/veh/wz34i - 2279 wz. 34-II al/veh/wz34ii - 2281 De Dion-Bouton wz. 24(f) al/veh/dion - 2283 PF 621L al/veh/PF621 - 2285 302T al/veh/302T - 2287 C2P al/veh/C2P - 2289 C4P al/veh/C4P - 2291 Taczanka al/veh/Tacz - 2292 VCL Mk VI/c47(b) al/veh/VCLmkVI - 2294 T-13 II(b) al/veh/T13ii - 2296 T-13 III(b) al/veh/T13iii - 2298 T-15(b) al/veh/T15 - 2300 ACG1(f) al/veh/ACG - 2302 T32 al/veh/T32 - 2304 M3A1(a) al/veh/M3A1 - 2306 M3A3(a) al/veh/M3A3 - 2308 M3A3(a) PaK 40 al/veh/M3A3pak - 2310 M3A3(a) FlaK 38 al/veh/M3A3flak - 2312 AEC II(b) al/veh/alaecii - 2314 Nimbus al/veh/Nimbus - 2315 VCL M1936(b) al/veh/VCLM1936 - 2317 CTLS-4(a) al/veh/CTLS4 - 2319 M.36 al/veh/M36 - 2321 M.38 al/veh/M38 - 2323 M.39 Lynx al/veh/M39 - 2325 Marm-Herr III(b) al/veh/almarmherr - 2327 Jeep(a) al/veh/aljeep - 2328 Jeep(a) MMG al/veh/aljeep2 - 2329 L5/30(i) al/veh/L530y - 2331 L3/35(i) al/veh/L335y - 2333 L6/40(i) al/veh/L640y - 2335 M13/40(i) al/veh/M1340y - 2465 50* MTR ge/geMTR ge/geMTRb - 2474 Goliath ge/gegol - 2488 81* MTR GrW 34 ge/gun/geMTR81s ge/gun/geMTR81sb - 2490 105* MTR NbW 35 ge/gun/geMT105s ge/gun/geMT105sb - 2491 120* MTR GrW 42 ge/gun/geMT120s ge/gun/geMT120sb - 2493 28LL AT sPzB 41 ge/gun/geAT28LL ge/gun/geAT28LLb - 2494 37L AT PaK 35/36 ge/gun/geAT37L ge/gun/geAT37Lb - 2495 40LL AT lePaK 41 ge/gun/geAT40LL ge/gun/geAT40LLb - 2496 50L AT PaK 38 ge/gun/geAT50L ge/gun/geAT50Lb - 2497 75 AT PaK 97/38 ge/gun/geAT75 ge/gun/geAT75b - 2498 75L AT PaK 40 ge/gun/geAT75L ge/gun/geAT75Lb - 2499 76L AT PaK 36r ge/gun/geAT76L ge/gun/geAT76Lb - 2500 88LL AT PaK 43 ge/gun/geAT88LL ge/gun/geAT88LLb - 2501 88LL AT PaK 43/41 ge/gun/geAT88NT ge/gun/geAT88NTb - 2502 128L AT K 81/1 ge/gun/geAT128L ge/gun/geAT128Lb - 2504 75* INF leIG 18 ge/gun/geINF75 ge/gun/geINF75b - 2505 150* INF sIG 33 ge/gun/geIN150s ge/gun/geIN150sb - 2506 75* RCL LG 40 ge/gun/geRCL75s ge/gun/geRCL75sb - 2507 105* RCL LG 42 ge/gun/geRCL105 ge/gun/geRCL105b - 2509 75 ART leFK 16nA ge/gun/geAR75 ge/gun/geAR75b - 2510 105 ART leFH 18 ge/gun/geAR105 ge/gun/geAR105b - 2511 105L ART sK 18 ge/gun/geAR105L ge/gun/geAR105Lb - 2512 150 ART sFH 18 ge/gun/geAR150 ge/gun/geAR150b - 2513 150L ART K 18 ge/gun/geAR150L ge/gun/geAR150Lb - 2514 170L ART K 18 ge/gun/geAR170L ge/gun/geAR170Lb - 2516 20L AA FlaK 30 ge/gun/geAA20L4 ge/gun/geAA20L4b - 2517 20L AA FlaK 38 ge/gun/geAA20L6 ge/gun/geAA20L6b - 2518 20L AA FlaKvierling 38 ge/gun/geAA2020 ge/gun/geAA2020b - 2519 37L AA FlaK 36 o. 37 ge/gun/geAA37L8 ge/gun/geAA37L8b - 2520 37L AA FlaK 43 ge/gun/geAA3712 ge/gun/geAA3712b - 2521 88L AA FlaK 18 o. 36 ge/gun/geAA88L ge/gun/geAA88Lb - 2524 PzKw IB ge/veh/pzib - 2526 PzKw IIA ge/veh/pziia - 2528 PzKw IIF ge/veh/pziif - 2530 PzKw II(Fl) ge/veh/pziifl - 2532 PzKw IIL ge/veh/pziil - 2534 PzKw 35t ge/veh/pz35t - 2536 PzKw 38(t)A ge/veh/pz38ta - 2538 PzKw 38(t)E ge/veh/pz38te - 2540 Aufklaerer 38(t) ge/veh/auf38t - 2542 FT-17 730m(f) ge/veh/ft17mf - 2544 FT-17 730(f) ge/veh/ft17f - 2546 38H 735(f) ge/veh/38hf - 2548 35-S 739(f) ge/veh/35sf - 2550 Pz 35R 731(f) ge/veh/pz35rf - 2552 PzKw IIID ge/veh/pziiid - 2554 PzKw IIIF ge/veh/pziiif - 2556 PzKw IIIG ge/veh/pziiig - 2558 PzKw IIIH ge/veh/pziiih - 2560 PzKw IIIJ ge/veh/pziiij - 2562 PzKw IIIL ge/veh/pziiil - 2564 PzKw IIIL ge/veh/pziiil2 - 2566 PzKw IIIN ge/veh/pziiin - 2568 PzKw IIIN ge/veh/pziiin2 - 2570 PzKw III(Fl) ge/veh/pziiifl - 2572 PzKw IVA ge/veh/pziva - 2574 PzKw IVC ge/veh/pzivc - 2576 PzKw IVD ge/veh/pzivd - 2578 PzKw IVE ge/veh/pzive - 2580 PzKw IVF1 ge/veh/pzivf1 - 2582 PzKw IVF2 ge/veh/pzivf2 - 2584 PzKw IVH ge/veh/pzivh - 2586 PzKw IVH ge/veh/pzivh2 - 2588 PzKw IVJ ge/veh/pzivj - 2590 PzKw VD ge/veh/pzvd - 2592 PzKw VG ge/veh/pzvg - 2594 PzKw M15/42(i) ge/veh/pzm1542 - 2596 PzKw P26/40(i) ge/veh/pzp2640 - 2598 PzKw VIE ge/veh/pzvie - 2600 PzKw VIE (L) ge/veh/pzviel - 2602 PzKw VIB ge/veh/pzvib - 2608 StuG IIIB ge/veh/stgiiib - 2610 StuG IIIG ge/veh/stgiiig - 2612 StuG IIIG (L) ge/veh/stgiiigl - 2614 StuH 42 ge/veh/stuh42 - 2616 StuH 42 (L) ge/veh/stuh42l - 2618 StuPz IV ge/veh/stupziv - 2620 StuPz IV ge/veh/stupziv2 - 2622 PzJg Tiger ge/veh/pzjg - 2624 PzJg Tiger ge/veh/pzjg2 - 2626 StuG 75/18(i) ge/veh/stg7518 - 2628 StuG 75/34(i) ge/veh/stg7534 - 2630 StuG 105/25(i) ge/veh/stg10525 - 2632 StuG 75/46(i) ge/veh/stg7546 - 2634 PzJg I ge/veh/pzjgi - 2636 PzJg 35R(f) ge/veh/pzjg35rf - 2638 GSW 39H(f) PaK ge/veh/gsw39hp - 2640 Marder I(f) ge/veh/mardi - 2642 Marder II ge/veh/mardii - 2644 Marder II ge/veh/mardii2 - 2646 Marder III(t)H ge/veh/mardiiih - 2648 Marder III(t)M ge/veh/mardiiim - 2650 PzJg III/IV ge/veh/pzjgiii - 2652 PzJg III/IV ge/veh/pzjgiii2 - 2654 JgdPz 38(t) ge/veh/jgpz38 - 2656 JgdPz 38(t) (Fl) ge/veh/jgpz38fl - 2658 JgdPz IV ge/veh/jgpziv - 2660 JgdPz IV (L) ge/veh/jgpzivl - 2662 JgPz IV/70 ge/veh/jgpziv70 - 2664 JgdPz V ge/veh/jgpzv - 2666 JgdPz VI ge/veh/jgpzvi - 2668 StuIG 33B ge/veh/sig33b - 2674 SPW 250/1 ge/veh/spw2501 - 2676 SPW 250/sMG ge/veh/spw250mg - 2678 SPW 250/7 ge/veh/spw2507 - 2680 SPW 250/8 ge/veh/spw2508 - 2682 SPW 250/8 ge/veh/spw25082 - 2684 SPW 250/9 ge/veh/spw2509 - 2686 SPW 250/10 ge/veh/spw25010 - 2688 SPW 251/1 ge/veh/spw2511 - 2690 SPW 251/sMG ge/veh/spw251mg - 2692 SPW 251/2 ge/veh/spw2512 - 2694 SPW 251/9 ge/veh/spw2519 - 2696 SPW 251/9 ge/veh/spw25192 - 2698 SPW 251/10 ge/veh/spw25110 - 2700 SPW 251/16 ge/veh/spw25116 - 2702 SPW 251/21 ge/veh/spw25121 - 2704 SPW 251/22 ge/veh/spw25122 - 2706 SPW S307(f) ge/veh/spws307 - 2708 mSPW S307(f) ge/veh/mspws307 - 2710 SdKfz 2 ge/veh/sdkfz2 - 2711 SdKfz 11 ge/veh/sdkfz11 - 2713 SdKfz 7 ge/veh/sdkfz7 - 2717 Kfz 13 ge/veh/kfz13 - 2719 PSW 221 ge/veh/psw221 - 2721 PSW 222 ge/veh/psw222 - 2723 PSW 222 (L) ge/veh/psw222l - 2725 PSW 231 (6 rad) ge/veh/psw2316 - 2727 PSW 231 (6 rad) ge/veh/psw23162 - 2729 PSW 231 (8 rad) ge/veh/psw2318 - 2731 PSW 232 (8 rad) ge/veh/psw2328 - 2733 PSW 233 ge/veh/psw233 - 2735 PSW 234/1 ge/veh/psw2341 - 2737 PSW 234/2 ge/veh/psw2342 - 2739 PSW 234/3 ge/veh/psw2343 - 2741 PSW 234/3 ge/veh/psw23432 - 2743 PSW 234/4 ge/veh/psw2344 - 2747 sIG IB ge/veh/sigib - 2749 sIG II ge/veh/sigii - 2751 sIG 38(t)M ge/veh/sig38m - 2753 PzA II ge/veh/pzaii - 2755 PzA II ge/veh/pzaii2 - 2757 PzA LrS(f) ge/veh/pzalrs - 2759 GSW 39H(f) ge/veh/gsw39hf - 2761 PzA III/IV ge/veh/pzaiii - 2763 FlaKPz 38(t) ge/veh/flakpz38 - 2765 37 FlaK/Pz IV [move] ge/veh/flakpz37 - 2768 FlaKPz IV/20 ge/veh/flakiv20 - 2770 FlaKPz IV/37 ge/veh/flakiv37 - 2772 SdKfz 10/4 ge/veh/sdkfz104 - 2775 SdKfz 10/5 ge/veh/sdkfz105 - 2778 SdKfz 6/2 ge/veh/sdkfz62 - 2781 SdKfz 7/1 ge/veh/sdkfz71 - 2784 Kfz 4 ge/veh/kfz4 - 2785 2cm FlaK LKW ge/veh/lkw2cm - 2787 3.7cm FlaK LKW ge/veh/lkw37cm - 2791 Kfz 1 ge/veh/kfz1 - 2793 Kfz 1/20 ge/veh/kfz120 - 2794 Opel 6700 ge/veh/opel - 2796 NAG 4500 ge/veh/nag4500 - 2798 SdKfz 2 ge/veh/sdkfz2 - 2799 SdKfz 11 ge/veh/sdkfz11 - 2801 SdKfz 7 ge/veh/sdkfz7 - 2805 SPW 251/1 ge/veh/spw2511 - 2807 PzKw IVH ge/veh/pzivh - 2809 PzKw IVH ge/veh/pzivh2 - 2811 PzKw IVJ ge/veh/pzivj - 2813 PzKw VG ge/veh/pzvg - 2815 JgdPz V ge/veh/jgpzv - 2817 FlaKPz IV/20 ge/veh/flakiv20 - 3252 37* INF ja/jaINF37 ja/jaINF37b - 3253 50* MTR ja/jaMTR ja/jaMTRB - 3263 20L ATR ja/jaATR20 ja/jaATR20b - 3277 70* MTR ja/gun/jaMTR70s ja/gun/jaMTR70sb - 3279 81* MTR ja/gun/jaMTR81s ja/gun/jaMTR81sb - 3281 90* MTR ja/gun/jaMTR90s ja/gun/jaMTR90sb - 3283 150* MTR ja/gun/jaMTR150s ja/gun/jaMTR150sb - 3285 37L AT ja/gun/jaAT37L ja/gun/jaAT37Lb - 3286 47L AT ja/gun/jaAT47L ja/gun/jaAT47Lb - 3287 70* INF ja/gun/jaINF70s ja/gun/jaINF70sb - 3288 75* INF ja/gun/jaINF75s ja/gun/jaINF75sb - 3291 75* ART ja/gun/jaAR75s ja/gun/jaAR75sb - 3292 75 ART ja/gun/jaAR75 ja/gun/jaAR75b - 3293 105 ART ja/gun/jaAR105 ja/gun/jaAR105b - 3294 105L ART ja/gun/jaAR105L ja/gun/jaAR105Lb - 3295 120* ART ja/gun/jaAR120s ja/gun/jaAR120sb - 3296 140L ART ja/gun/jaAR140L ja/gun/jaAR140Lb - 3297 150* ART ja/gun/jaAR150s ja/gun/jaAR150sb - 3298 150 ART ja/gun/jaAR150 ja/gun/jaAR150b - 3301 12.7 AA Twin ja/gun/jaAA127 ja/gun/jaAA127b - 3302 20L AA ja/gun/jaAA20L ja/gun/jaAA20Lb - 3303 25LL AA ja/gun/jaAA25LL ja/gun/jaAA25LLb - 3304 25LL AA Twin ja/gun/jaAA25L2 ja/gun/jaAA25L2b - 3305 25LL AA Triple ja/gun/jaAA25L3 ja/gun/jaAA25L3b - 3306 75 AA ja/gun/jaAA75 ja/gun/jaAA75b - 3307 76L AA ja/gun/jaAA76L ja/gun/jaAA76Lb - 3308 120L AA ja/gun/jaAA120L ja/gun/jaAA120Lb - 3310 Type 92A ja/veh/ty92A - 3312 Type 92B ja/veh/ty92B - 3314 Type 94 ja/veh/ty94 - 3316 Type 95 SO-KI ja/veh/ty95soki - 3318 Type 97A TE-KE ja/veh/ty97Ateke - 3320 Type 97B TE-KE ja/veh/ty97Bteke - 3322 Type 95 HA-GO ja/veh/ty95hago - 3324 Type 2 KA-MI ja/veh/ty2kami - 3326 Type 2 KA-MI amph ja/veh/ty2kamip - 3329 Type 89A CHI-RO ja/veh/ty89Achiro - 3331 Type 89B CHI-RO ja/veh/ty89Bchiro - 3333 Type 97A CHI-HA ja/veh/ty97Achiha - 3335 Type 97B CHI-HA ja/veh/ty97Bchiha - 3337 Type 1 CHI-HE ja/veh/ty1chihe - 3341 Type 91 AC ja/veh/ty91ac - 3343 Type 91 AC ja/veh/ty91ac2 - 3345 Type 91 AC ja/veh/ty91ac3 - 3347 Type 92 AC ja/veh/ty92ac - 3349 Type 92 AC ja/veh/ty92ac2 - 3353 Type 1 HO-NI ja/veh/ty1honi - 3355 Type 4 HO-RO ja/veh/ty4horo - 3357 Type 1 HO-KI ja/veh/ty1hoki - 3359 Type 98 SHI-KE ja/veh/ty98shike - 3361 Type 92 I-KE ja/veh/ty92ike - 3363 Type 95 tr ja/veh/ty95tr - 3364 Type 94 tr ja/veh/ty94tr - 3366 Type 97 tr ja/veh/ty97tr - 3422 45* MTR it/itMTR it/itMTRb - 3428 20L ATR it/itATR20 it/itATR20b - 3442 81* MTR 81/14 it/gun/itMTR81s it/gun/itMTR81sb - 3444 37L AT 37/45 it/gun/itAT37L it/gun/itAT37Lb - 3445 47 AT 47/32 it/gun/itAT47 it/gun/itAT47b - 3446 65* INF 65/17 it/gun/itINF65s it/gun/itINF65sb - 3447 70* INF 70/15 it/gun/itINF70s it/gun/itINF70sb - 3451 75* ART 75/13 it/gun/itAR75s_ it/gun/itAR75s_b - 3452 75* ART 75/27 it/gun/itAR75s it/gun/itAR75sb - 3453 75* ART 75/18 it/gun/itAR75sO it/gun/itAR75sOb - 3454 75 ART 75/32 it/gun/itAR75_ it/gun/itAR75_b - 3455 100* ART 100/17 it/gun/itAR100s it/gun/itAR100sb - 3456 105 ART 105/28 it/gun/itAR105 it/gun/itAR105b - 3457 150* ART 149/13 it/gun/itAR150s it/gun/itAR150sb - 3458 150 ART 149/35 it/gun/itAR150 it/gun/itAR150b - 3459 150L ART 149/40 it/gun/itAR150L it/gun/itAR150Lb - 3461 20L AA 20/65 it/gun/itAA20L it/gun/itAA20Lb - 3462 75L AA 75/39 it/gun/itAA75L it/gun/itAA75Lb - 3463 75L AA 75/46 it/gun/itAA7546 it/gun/itAA7546b - 3464 90L AA 90/53 it/gun/itAA90L it/gun/itAA90Lb - 3466 L5/21 it/veh/l521 - 3468 L5/30 it/veh/l530 - 3470 L3/35 it/veh/l335 - 3472 L3 aa it/veh/l3aa - 3474 L3 cc it/veh/l3cc - 3476 L3 Lf it/veh/l3lf - 3479 L6/40 it/veh/l640 - 3481 M11/39 it/veh/m1139 - 3483 M13/40 it/veh/m1340 - 3485 M13/40 it/veh/m13402 - 3487 M14/41 it/veh/m1441 - 3489 M14/41 it/veh/m14412 - 3491 M15/42 it/veh/m1542 - 3493 M15/42 it/veh/m15422 - 3495 MR/35(f) it/veh/mr35 - 3499 Semovente M40 75/18 it/veh/semm40 - 3501 Semovente M40 75/18 it/veh/semm402 - 3503 Semovente M41 75/18 it/veh/semm41 - 3505 Semovente M41 75/18 it/veh/semm412 - 3507 Semovente M42 75/18 it/veh/semm4218 - 3509 Semovente M42 75/32 it/veh/semm4232 - 3511 Semovente M43 105/25 it/veh/semm43 - 3513 Semovente L40 47/32 it/veh/seml40 - 3515 Semovente M41M 90/53 it/veh/semm41m - 3519 AS 42 it/veh/as42 - 3521 AS 42 aa it/veh/as42aa - 3523 AS 42 cc it/veh/as42cc - 3525 Lince it/veh/lince - 3527 Lancia 1ZM it/veh/lancia - 3529 Fiat 611A it/veh/fiat611a - 3531 Fiat 611B it/veh/fiat611b - 3533 AB 40 it/veh/ab40 - 3535 AB 41 it/veh/ab41 - 3539 Autoprotetto S37 it/veh/auts37 - 3541 Autocannone 65/17(b) it/veh/aut6517 - 3545 Autocannone 20/65(b) it/veh/aut2065 - 3547 Autocanonne 75/27 CK it/veh/aut7527 - 3549 Autocanonne 90/53 it/veh/aut9053 - 3551 TL 37 it/veh/tl37 - 3553 TM 40 it/veh/tm40 - 3555 TP 32 it/veh/tp32 - 3557 Autocarretta it/veh/autocarr - 3559 Autocarretta MG it/veh/autocarr2 - 3561 Fiat 508 MC it/veh/fiat508 it/veh/fiat508 - 3562 Fiat 508 MC Furgone it/veh/fiat508f it/veh/fiat508f - 3563 Autocarro Leggero it/veh/autleg - 3565 Autocarro Medio it/veh/autmed - 3567 Autocarro Pesante it/veh/autpes - 3605 50* MTR (g) fi/fiMTR fi/fiMTRb - 3608 20L ATR fi/fiATR fi/fiATRb - 3679 50 MTR(f) ax/axMTRf ax/axMTRfb - 3680 50* MTR ax/axMTR ax/axMTRb - 3681 50* MTR(r) ax/axMTRr ax/axMTRrb - 3682 60* MTR(f) ax/axMTR60f ax/axMTR60fb - 3709 81* MTR GrW 34 ax/gun/axMT81sg ax/gun/axMT81sgb - 3711 81* MTR Brandt M27/31 ax/gun/axMT81s ax/gun/axMT81sb - 3713 120* MTR PM obr. 38 ax/gun/axMT120s ax/gun/axMT120sb - 3714 37L AT Kanon PUV vz. 37(t) ax/gun/axAT37L ax/gun/axAT37Lb - 3715 47 AT Bohler M35 ax/gun/axAT47 ax/gun/axAT47b - 3716 50L AT PaK 38(g) ax/gun/axAT50L ax/gun/axAT50Lb - 3717 75 AT PaK 97/38(g) ax/gun/axAT75 ax/gun/axAT75b - 3718 75L AT PaK 40(g) ax/gun/axAT75L ax/gun/axAT75Lb - 3719 75* ART Skoda Model 15 ax/gun/axAR75s ax/gun/axAR75sb - 3720 75 ART Canon mle 1897 ax/gun/axAR75 ax/gun/axAR75b - 3721 75 ART Skoda M29 ax/gun/axAR752 ax/gun/axAR752b - 3722 76* ART Skoda M17 ax/gun/axAR76s ax/gun/axAR76sb - 3723 80* ART Skoda M28(80) ax/gun/axAR80s ax/gun/axAR80sb - 3724 100* ART Skoda M14/19 ax/gun/axAR100s ax/gun/axAR100sl - 3725 105 ART leFH 18(g) ax/gun/axAR105 ax/gun/axAR105b - 3726 105L ART Skoda M35 ax/gun/axAR105L ax/gun/axAR105Lb - 3727 122* ART G obr. 10/30 ax/gun/axAR122s ax/gun/axAR122sb - 3728 122 ART G obr. 38 ax/gun/axAR122 ax/gun/axAR122b - 3729 150* ART Skoda M14 ax/gun/axAR150s ax/gun/axAR150sb - 3730 152 ART Skoda M15/16 ax/gun/axAR152 ax/gun/axAR152b - 3731 155* ART C mle 17 S ax/gun/axAR155s ax/gun/axAR155sb - 3732 12.7 AA CAJ mle 30 ax/gun/axAA127 ax/gun/axAA127b - 3733 20L AA Oerlikon FF ax/gun/axAA20L ax/gun/axAA20Lb - 3734 20L AA FlaK 30(g) ax/gun/axAA20Lg1 ax/gun/axAA20Lg1b - 3735 20L AA FlaK 38(g) ax/gun/axAA20Lg2 ax/gun/axAA20Lg2b - 3736 37L AA FlaK 36(g) ax/gun/axAA37L ax/gun/axAA37Lb - 3737 40L AA Bofors ax/gun/axAA40L ax/gun/axAA40Lb - 3738 76L AA Skoda M33 ax/gun/axAA76L ax/gun/axAA76Lb - 3739 88L AA FlaK 18 o. 36 ax/gun/axAA88L ax/gun/axAA88Lb - 3740 37L AT Bofors ax/gun/roAT37L ax/gun/roAT37Lb - 3741 45L AT PTP obr. 32 ax/gun/roAT45L ax/gun/roAT45Lb - 3742 75L AT Resita M43 ax/gun/roAT75L ax/gun/roAT75Lb - 3743 76LL AT PaK 36(r) ax/gun/roAT76LL ax/gun/roAT76LLb - 3744 47 INF Breda ax/gun/roINF47 ax/gun/roINF47b - 3745 75* INF PP obr. 27 ax/gun/roINF75s ax/gun/roINF75sb - 3746 75* ART 75 M mle 28 ax/gun/roAR75s1 ax/gun/roAR75s1b - 3747 75* ART Skoda M14/34 ax/gun/roAR75s2 ax/gun/roAR75s2b - 3748 76* ART P obr. 00/02 ax/gun/roAR76s ax/gun/roAR76sb - 3749 76 ART P obr. 02/30 ax/gun/roAR76 ax/gun/roAR76b - 3750 76L ART P obr. 39(r) ax/gun/roAR76L ax/gun/roAR76Lb - 3751 105L ART s 10cm K 18(g) ax/gun/roAR105L1 ax/gun/roAR105L1b - 3752 105 ART Skoda M39(D9) ax/gun/roAR105 ax/gun/roAR105b - 3753 105L ART mle 36 S ax/gun/roAR105L2 ax/gun/roAR105L2b - 3754 107 ART mle 10/12 ax/gun/roAR107 ax/gun/roAR107b - 3755 114* ART OQF 4.5" Howitzer ax/gun/roAR114s ax/gun/roAR114sb - 3756 150L ART Skoda M28(NOa) ax/gun/roAR150L ax/gun/roAR150Lb - 3757 150 ART Skoda Model 33(K1) ax/gun/roAR150 ax/gun/roAR150b - 3758 25L AA CA mle 38 ax/gun/roAA25LL ax/gun/roAA25LLb - 3759 75L AA Vickers/Resita M36/39 ax/gun/roAA75L ax/gun/roAA75Lb - 3760 90L AA Kanon PL vz. 12/20 ax/gun/roAA90L ax/gun/roAA90Lb - 3761 81* MTR Minomet vz. 36 ax/gun/slMT81s ax/gun/slMT81sb - 3763 47L AT Kanon PUV vz. 36(t) ax/gun/slAT47L ax/gun/slAT47Lb - 3764 75* INF leIG 18(g) ax/gun/slIN75s ax/gun/slIN75sb - 3765 150L ART Skoda M37(K4) ax/gun/slAR150L ax/gun/slAR150Lb - 3766 47L AA Skoda 47L40(t) ax/gun/slAA47L ax/gun/slAA47Lb - 3767 75L AA Skoda PL vz. 37(t) ax/gun/slAA75L ax/gun/slAA75Lb - 3768 83L AA Kanon PL vz. 22/24 ax/gun/slAA83L ax/gun/slAA83Lb - 3772 65* INF Cannone da 65/17 ax/gun/crIN65s ax/gun/crIN65sb - 3774 100* ART Skoda Model 28(FE) ax/gun/crAR100s ax/gun/crAR100sb - 3775 20L AT Madsen M-35 ax/gun/buAT20L ax/gun/buAT20Lb - 3776 37* INF Skoda IG ax/gun/buIN37s ax/gun/buIN37sb - 3777 70* INF Skoda IG ax/gun/buIN37s2 ax/gun/buIN37sb - 3778 75* ART Bofors M36 ax/gun/buAR75s ax/gun/buAR75sb - 3779 75 ART K-S ax/gun/buAR75 ax/gun/buAR75b - 3780 105 ART Ob GP ax/gun/buAR105 ax/gun/buAR105b - 3781 150* ART D/30 Krupp ax/gun/buAR150s ax/gun/buAR150sb - 3787 L3/35(i) ax/veh/axL335 - 3789 FT-17M(f) ax/veh/axFT17M - 3791 FT-17C(f) ax/veh/axFT17C - 3793 H39(f) ax/veh/axH39 - 3795 R-35(f) ax/veh/axR35 - 3797 S-35(f) ax/veh/axS35 - 3799 LT vz 38(t)A ax/veh/axLT38A - 3801 LT vz 38(t)E ax/veh/axLT38E - 3803 JgdPz 38(t) ax/veh/axJgPz38 - 3805 OA vz 30(t) ax/veh/axOA30 - 3807 AB 41(i) ax/veh/axAB41 - 3809 Komsomolets(r) ax/veh/axKom - 3811 Komsomolets(r) MG ax/veh/axKom2 - 3813 Lt Tractor ax/veh/axTracL - 3815 Md Tractor ax/veh/axTracM - 3817 Hv Tractor ax/veh/axTracH - 3819 Lt Truck ax/veh/axTrkL - 3821 Md Truck ax/veh/axTrkM - 3823 Hv Truck ax/veh/axTrkH - 3825 LT vz 35(g) ax/veh/axLT35 - 3827 PzKw IB(g) ax/veh/axPziB - 3829 PzKw IIIL(g) ax/veh/axPziiiL - 3831 PzKw IIIL(g) ax/veh/axPziiiL2 - 3833 PzKw IIIN(g) ax/veh/axPziiiN - 3835 PzKw IIIN(g) ax/veh/axPziiiN2 - 3837 PzKw IVD(g) ax/veh/axPzivD - 3839 PzKw IVF1(g) ax/veh/axPzivF - 3841 PzKw IVH(g) ax/veh/axPzivH - 3843 PzKw IVH(g) ax/veh/axPzivH2 - 3845 StuG IIIG(g) ax/veh/axSGiiiG - 3847 SPW 250/1(g) ax/veh/axSPW2501 - 3849 SPW 251/1(g) ax/veh/axSPW2511 - 3851 SPW 251/9(g) ax/veh/axSPW2519 - 3853 PSW 222(g) ax/veh/axPSW222 - 3855 PSW 222(L)(g) ax/veh/axPSW222L - 3857 PSW 223(g) ax/veh/axPSW223 - 3859 RSO(g) ax/veh/axRSO - 3861 R-1(t) ax/veh/roR1 - 3863 R-35/45(f) ax/veh/roR35 - 3865 TACAM T-60(r) ax/veh/roT60 - 3867 TACAM T-60A(r) ax/veh/roT60A - 3869 TACAM R-2(r) ax/veh/roR2 - 3871 BA-6(r) ax/veh/roBA6 - 3873 BA-20(r) ax/veh/roBA20 - 3875 Malaxa UE2 ax/veh/roUE - 3877 Malaxa UE2 MG ax/veh/roUE2 - 3879 T vz 33(t) ax/veh/slT33 - 3881 LT vz 34 ax/veh/slLT34 - 3883 PzKw IIA(g) ax/veh/slPziiA - 3885 LT vz 40(t) ax/veh/slLT40 - 3887 Marder III(t)H ax/veh/slMiiiH - 3889 Kfz 1(g) ax/veh/slKfz1 - 3891 SdKfz 2(g) ax/veh/slSdKfz2 - 3892 TKS ax/veh/crTKS - 3894 TKS(L) ax/veh/crTKSL - 3896 L6/40(i) ax/veh/crL640 - 3898 wz. 34-I ax/veh/cr34i - 3900 wz. 34-II ax/veh/cr34ii - 3902 Semovente L40(i) ax/veh/crSemL40 - 3904 Vickers 6t Mk E ax/veh/buV6E - 3906 R-35(f) ax/veh/buR35 - 3993 40L AT MAVAG 40 M hu/gun/huAT40L hu/gun/huAT40Lb - 3999 76 ART Skoda M05/08 hu/gun/huAR76 hu/gun/huAR76b - 4001 105 ART MAVAG M40 hu/gun/huAR1052 hu/gun/huAR1052b - 4007 80L AA Bofors M29/38 hu/gun/huAA80L hu/gun/huAA80Lb - 4009 38M Toldi I hu/veh/hu38MTi - 4011 38M Toldi IIA hu/veh/hu38MTiiA - 4013 40M Turan I(r) hu/veh/hu40MTi - 4015 41M Turan II(r) hu/veh/hu41MTii - 4043 PzKw VG(g) hu/veh/huPzvG - 4045 PzKw VIE(L)(g) hu/veh/huPzviE - 4055 43M Zrinyi II hu/veh/hu43MZii - 4057 Marder II(g) hu/veh/huMii - 4059 40M Nimrod hu/veh/hu40MN - 4065 39M Csaba hu/veh/hu39MC - 4067 40M Csaba hu/veh/hu40MC - 5723 M3A1 am/veh/M3A1 - 5728 M5A1 am/veh/M5A1 - 5733 M4 am/veh/M4 - 5738 M4A1 am/veh/M4A1 - 5743 M4A2 am/veh/M4A2 - 5748 M4A2(L) am/veh/M4A2L - 5753 M4A3 am/veh/M4A3 - 5758 M4A3(75)W am/veh/M4A375W - 5763 M4A3E2 am/veh/M4A3E2 - 5768 M4A3E2(L) am/veh/M4A3E2L - 5773 M4A1(76)W am/veh/M4A176W - 5778 M4A3(76)W am/veh/M4A376W - 5852 122* ART obr. 10/30 ch/gun/chAR122s2 ch/gun/chAR122sb - 5853 122 ART G obr. 38 ch/gun/chAR1222 ch/gun/chAR122b - 5854 20L AA 20/65 ch/gun/chAA20LC2 ch/gun/chAA20LCb - 5855 75L AA Bofors M29 ch/gun/chAA75L2 ch/gun/chAA75Lb - 5856 88L AA FlaK 18 ch/gun/chAA88L2 ch/gun/chAA88Lb + 2243 R-35(f) al/veh/R35.gif + 2245 M3A1 SC(a) al/veh/M3A1sc.gif + 2247 C-K P17(f) al/veh/CKP17.gif + 2249 C-K P19(f) al/veh/CKP19.gif + 2251 VCL Utility(b) al/veh/VCL.gif + 2253 Lt truck al/veh/allttruck.gif + 2255 Md truck al/veh/almdtruck.gif + 2257 Hv truck al/veh/alhvytruck.gif + 2259 TKS al/veh/TKS.gif + 2261 TKS(L) al/veh/TKSL.gif + 2263 Vickers Edw(b) al/veh/Edwb.gif + 2265 Vickers Ejw(b) al/veh/Ejwb.gif + 2267 7TPdw al/veh/7TPdw.gif + 2269 7TPjw al/veh/7TPjw.gif + 2271 H35(f) al/veh/H35f.gif + 2273 Peugeot 1918(f) al/veh/1918f.gif + 2275 wz. 29 Ursus al/veh/wz29.gif + 2277 wz. 34-I al/veh/wz34i.gif + 2279 wz. 34-II al/veh/wz34ii.gif + 2281 De Dion-Bouton wz. 24(f) al/veh/dion.gif + 2283 PF 621L al/veh/PF621.gif + 2285 302T al/veh/302T.gif + 2287 C2P al/veh/C2P.gif + 2289 C4P al/veh/C4P.gif + 2291 Taczanka al/veh/Tacz.gif + 2292 VCL Mk VI/c47(b) al/veh/VCLmkVI.gif + 2294 T-13 II(b) al/veh/T13ii.gif + 2296 T-13 III(b) al/veh/T13iii.gif + 2298 T-15(b) al/veh/T15.gif + 2300 ACG1(f) al/veh/ACG.gif + 2302 T32 al/veh/T32.gif + 2304 M3A1(a) al/veh/M3A1.gif + 2306 M3A3(a) al/veh/M3A3.gif + 2308 M3A3(a) PaK 40 al/veh/M3A3pak.gif + 2310 M3A3(a) FlaK 38 al/veh/M3A3flak.gif + 2312 AEC II(b) al/veh/alaecii.gif + 2314 Nimbus al/veh/Nimbus.gif + 2315 VCL M1936(b) al/veh/VCLM1936.gif + 2317 CTLS-4(a) al/veh/CTLS4.gif + 2319 M.36 al/veh/M36.gif + 2321 M.38 al/veh/M38.gif + 2323 M.39 Lynx al/veh/M39.gif + 2325 Marm-Herr III(b) al/veh/almarmherr.gif + 2327 Jeep(a) al/veh/aljeep.gif + 2328 Jeep(a) MMG al/veh/aljeep2.gif + 2329 L5/30(i) al/veh/L530y.gif + 2331 L3/35(i) al/veh/L335y.gif + 2333 L6/40(i) al/veh/L640y.gif + 2335 M13/40(i) al/veh/M1340y.gif + 2465 50* MTR ge/geMTR.gif ge/geMTRb.gif + 2474 Goliath ge/gegol.gif + 2488 81* MTR GrW 34 ge/gun/geMTR81s.gif ge/gun/geMTR81sb.gif + 2490 105* MTR NbW 35 ge/gun/geMT105s.gif ge/gun/geMT105sb.gif + 2491 120* MTR GrW 42 ge/gun/geMT120s.gif ge/gun/geMT120sb.gif + 2493 28LL AT sPzB 41 ge/gun/geAT28LL.gif ge/gun/geAT28LLb.gif + 2494 37L AT PaK 35/36 ge/gun/geAT37L.gif ge/gun/geAT37Lb.gif + 2495 40LL AT lePaK 41 ge/gun/geAT40LL.gif ge/gun/geAT40LLb.gif + 2496 50L AT PaK 38 ge/gun/geAT50L.gif ge/gun/geAT50Lb.gif + 2497 75 AT PaK 97/38 ge/gun/geAT75.gif ge/gun/geAT75b.gif + 2498 75L AT PaK 40 ge/gun/geAT75L.gif ge/gun/geAT75Lb.gif + 2499 76L AT PaK 36r ge/gun/geAT76L.gif ge/gun/geAT76Lb.gif + 2500 88LL AT PaK 43 ge/gun/geAT88LL.gif ge/gun/geAT88LLb.gif + 2501 88LL AT PaK 43/41 ge/gun/geAT88NT.gif ge/gun/geAT88NTb.gif + 2502 128L AT K 81/1 ge/gun/geAT128L.gif ge/gun/geAT128Lb.gif + 2504 75* INF leIG 18 ge/gun/geINF75.gif ge/gun/geINF75b.gif + 2505 150* INF sIG 33 ge/gun/geIN150s.gif ge/gun/geIN150sb.gif + 2506 75* RCL LG 40 ge/gun/geRCL75s.gif ge/gun/geRCL75sb.gif + 2507 105* RCL LG 42 ge/gun/geRCL105.gif ge/gun/geRCL105b.gif + 2509 75 ART leFK 16nA ge/gun/geAR75.gif ge/gun/geAR75b.gif + 2510 105 ART leFH 18 ge/gun/geAR105.gif ge/gun/geAR105b.gif + 2511 105L ART sK 18 ge/gun/geAR105L.gif ge/gun/geAR105Lb.gif + 2512 150 ART sFH 18 ge/gun/geAR150.gif ge/gun/geAR150b.gif + 2513 150L ART K 18 ge/gun/geAR150L.gif ge/gun/geAR150Lb.gif + 2514 170L ART K 18 ge/gun/geAR170L.gif ge/gun/geAR170Lb.gif + 2516 20L AA FlaK 30 ge/gun/geAA20L4.gif ge/gun/geAA20L4b.gif + 2517 20L AA FlaK 38 ge/gun/geAA20L6.gif ge/gun/geAA20L6b.gif + 2518 20L AA FlaKvierling 38 ge/gun/geAA2020.gif ge/gun/geAA2020b.gif + 2519 37L AA FlaK 36 o. 37 ge/gun/geAA37L8.gif ge/gun/geAA37L8b.gif + 2520 37L AA FlaK 43 ge/gun/geAA3712.gif ge/gun/geAA3712b.gif + 2521 88L AA FlaK 18 o. 36 ge/gun/geAA88L.gif ge/gun/geAA88Lb.gif + 2524 PzKw IB ge/veh/pzib.gif + 2526 PzKw IIA ge/veh/pziia.gif + 2528 PzKw IIF ge/veh/pziif.gif + 2530 PzKw II(Fl) ge/veh/pziifl.gif + 2532 PzKw IIL ge/veh/pziil.gif + 2534 PzKw 35t ge/veh/pz35t.gif + 2536 PzKw 38(t)A ge/veh/pz38ta.gif + 2538 PzKw 38(t)E ge/veh/pz38te.gif + 2540 Aufklaerer 38(t) ge/veh/auf38t.gif + 2542 FT-17 730m(f) ge/veh/ft17mf.gif + 2544 FT-17 730(f) ge/veh/ft17f.gif + 2546 38H 735(f) ge/veh/38hf.gif + 2548 35-S 739(f) ge/veh/35sf.gif + 2550 Pz 35R 731(f) ge/veh/pz35rf.gif + 2552 PzKw IIID ge/veh/pziiid.gif + 2554 PzKw IIIF ge/veh/pziiif.gif + 2556 PzKw IIIG ge/veh/pziiig.gif + 2558 PzKw IIIH ge/veh/pziiih.gif + 2560 PzKw IIIJ ge/veh/pziiij.gif + 2562 PzKw IIIL ge/veh/pziiil.gif + 2564 PzKw IIIL ge/veh/pziiil2.gif + 2566 PzKw IIIN ge/veh/pziiin.gif + 2568 PzKw IIIN ge/veh/pziiin2.gif + 2570 PzKw III(Fl) ge/veh/pziiifl.gif + 2572 PzKw IVA ge/veh/pziva.gif + 2574 PzKw IVC ge/veh/pzivc.gif + 2576 PzKw IVD ge/veh/pzivd.gif + 2578 PzKw IVE ge/veh/pzive.gif + 2580 PzKw IVF1 ge/veh/pzivf1.gif + 2582 PzKw IVF2 ge/veh/pzivf2.gif + 2584 PzKw IVH ge/veh/pzivh.gif + 2586 PzKw IVH ge/veh/pzivh2.gif + 2588 PzKw IVJ ge/veh/pzivj.gif + 2590 PzKw VD ge/veh/pzvd.gif + 2592 PzKw VG ge/veh/pzvg.gif + 2594 PzKw M15/42(i) ge/veh/pzm1542.gif + 2596 PzKw P26/40(i) ge/veh/pzp2640.gif + 2598 PzKw VIE ge/veh/pzvie.gif + 2600 PzKw VIE (L) ge/veh/pzviel.gif + 2602 PzKw VIB ge/veh/pzvib.gif + 2608 StuG IIIB ge/veh/stgiiib.gif + 2610 StuG IIIG ge/veh/stgiiig.gif + 2612 StuG IIIG (L) ge/veh/stgiiigl.gif + 2614 StuH 42 ge/veh/stuh42.gif + 2616 StuH 42 (L) ge/veh/stuh42l.gif + 2618 StuPz IV ge/veh/stupziv.gif + 2620 StuPz IV ge/veh/stupziv2.gif + 2622 PzJg Tiger ge/veh/pzjg.gif + 2624 PzJg Tiger ge/veh/pzjg2.gif + 2626 StuG 75/18(i) ge/veh/stg7518.gif + 2628 StuG 75/34(i) ge/veh/stg7534.gif + 2630 StuG 105/25(i) ge/veh/stg10525.gif + 2632 StuG 75/46(i) ge/veh/stg7546.gif + 2634 PzJg I ge/veh/pzjgi.gif + 2636 PzJg 35R(f) ge/veh/pzjg35rf.gif + 2638 GSW 39H(f) PaK ge/veh/gsw39hp.gif + 2640 Marder I(f) ge/veh/mardi.gif + 2642 Marder II ge/veh/mardii.gif + 2644 Marder II ge/veh/mardii2.gif + 2646 Marder III(t)H ge/veh/mardiiih.gif + 2648 Marder III(t)M ge/veh/mardiiim.gif + 2650 PzJg III/IV ge/veh/pzjgiii.gif + 2652 PzJg III/IV ge/veh/pzjgiii2.gif + 2654 JgdPz 38(t) ge/veh/jgpz38.gif + 2656 JgdPz 38(t) (Fl) ge/veh/jgpz38fl.gif + 2658 JgdPz IV ge/veh/jgpziv.gif + 2660 JgdPz IV (L) ge/veh/jgpzivl.gif + 2662 JgPz IV/70 ge/veh/jgpziv70.gif + 2664 JgdPz V ge/veh/jgpzv.gif + 2666 JgdPz VI ge/veh/jgpzvi.gif + 2668 StuIG 33B ge/veh/sig33b.gif + 2674 SPW 250/1 ge/veh/spw2501.gif + 2676 SPW 250/sMG ge/veh/spw250mg.gif + 2678 SPW 250/7 ge/veh/spw2507.gif + 2680 SPW 250/8 ge/veh/spw2508.gif + 2682 SPW 250/8 ge/veh/spw25082.gif + 2684 SPW 250/9 ge/veh/spw2509.gif + 2686 SPW 250/10 ge/veh/spw25010.gif + 2688 SPW 251/1 ge/veh/spw2511.gif + 2690 SPW 251/sMG ge/veh/spw251mg.gif + 2692 SPW 251/2 ge/veh/spw2512.gif + 2694 SPW 251/9 ge/veh/spw2519.gif + 2696 SPW 251/9 ge/veh/spw25192.gif + 2698 SPW 251/10 ge/veh/spw25110.gif + 2700 SPW 251/16 ge/veh/spw25116.gif + 2702 SPW 251/21 ge/veh/spw25121.gif + 2704 SPW 251/22 ge/veh/spw25122.gif + 2706 SPW S307(f) ge/veh/spws307.gif + 2708 mSPW S307(f) ge/veh/mspws307.gif + 2710 SdKfz 2 ge/veh/sdkfz2.gif + 2711 SdKfz 11 ge/veh/sdkfz11.gif + 2713 SdKfz 7 ge/veh/sdkfz7.gif + 2717 Kfz 13 ge/veh/kfz13.gif + 2719 PSW 221 ge/veh/psw221.gif + 2721 PSW 222 ge/veh/psw222.gif + 2723 PSW 222 (L) ge/veh/psw222l.gif + 2725 PSW 231 (6 rad) ge/veh/psw2316.gif + 2727 PSW 231 (6 rad) ge/veh/psw23162.gif + 2729 PSW 231 (8 rad) ge/veh/psw2318.gif + 2731 PSW 232 (8 rad) ge/veh/psw2328.gif + 2733 PSW 233 ge/veh/psw233.gif + 2735 PSW 234/1 ge/veh/psw2341.gif + 2737 PSW 234/2 ge/veh/psw2342.gif + 2739 PSW 234/3 ge/veh/psw2343.gif + 2741 PSW 234/3 ge/veh/psw23432.gif + 2743 PSW 234/4 ge/veh/psw2344.gif + 2747 sIG IB ge/veh/sigib.gif + 2749 sIG II ge/veh/sigii.gif + 2751 sIG 38(t)M ge/veh/sig38m.gif + 2753 PzA II ge/veh/pzaii.gif + 2755 PzA II ge/veh/pzaii2.gif + 2757 PzA LrS(f) ge/veh/pzalrs.gif + 2759 GSW 39H(f) ge/veh/gsw39hf.gif + 2761 PzA III/IV ge/veh/pzaiii.gif + 2763 FlaKPz 38(t) ge/veh/flakpz38.gif + 2765 37 FlaK/Pz IV [move] ge/veh/flakpz37.gif + 2768 FlaKPz IV/20 ge/veh/flakiv20.gif + 2770 FlaKPz IV/37 ge/veh/flakiv37.gif + 2772 SdKfz 10/4 ge/veh/sdkfz104.gif + 2775 SdKfz 10/5 ge/veh/sdkfz105.gif + 2778 SdKfz 6/2 ge/veh/sdkfz62.gif + 2781 SdKfz 7/1 ge/veh/sdkfz71.gif + 2784 Kfz 4 ge/veh/kfz4.gif + 2785 2cm FlaK LKW ge/veh/lkw2cm.gif + 2787 3.7cm FlaK LKW ge/veh/lkw37cm.gif + 2791 Kfz 1 ge/veh/kfz1.gif + 2793 Kfz 1/20 ge/veh/kfz120.gif + 2794 Opel 6700 ge/veh/opel.gif + 2796 NAG 4500 ge/veh/nag4500.gif + 2798 SdKfz 2 ge/veh/sdkfz2.gif + 2799 SdKfz 11 ge/veh/sdkfz11.gif + 2801 SdKfz 7 ge/veh/sdkfz7.gif + 2805 SPW 251/1 ge/veh/spw2511.gif + 2807 PzKw IVH ge/veh/pzivh.gif + 2809 PzKw IVH ge/veh/pzivh2.gif + 2811 PzKw IVJ ge/veh/pzivj.gif + 2813 PzKw VG ge/veh/pzvg.gif + 2815 JgdPz V ge/veh/jgpzv.gif + 2817 FlaKPz IV/20 ge/veh/flakiv20.gif + 3252 37* INF ja/jaINF37.gif ja/jaINF37b.gif + 3253 50* MTR ja/jaMTR.gif ja/jaMTRB.gif + 3263 20L ATR ja/jaATR20.gif ja/jaATR20b.gif + 3277 70* MTR ja/gun/jaMTR70s.gif ja/gun/jaMTR70sb.gif + 3279 81* MTR ja/gun/jaMTR81s.gif ja/gun/jaMTR81sb.gif + 3281 90* MTR ja/gun/jaMTR90s.gif ja/gun/jaMTR90sb.gif + 3283 150* MTR ja/gun/jaMTR150s.gif ja/gun/jaMTR150sb.gif + 3285 37L AT ja/gun/jaAT37L.gif ja/gun/jaAT37Lb.gif + 3286 47L AT ja/gun/jaAT47L.gif ja/gun/jaAT47Lb.gif + 3287 70* INF ja/gun/jaINF70s.gif ja/gun/jaINF70sb.gif + 3288 75* INF ja/gun/jaINF75s.gif ja/gun/jaINF75sb.gif + 3291 75* ART ja/gun/jaAR75s.gif ja/gun/jaAR75sb.gif + 3292 75 ART ja/gun/jaAR75.gif ja/gun/jaAR75b.gif + 3293 105 ART ja/gun/jaAR105.gif ja/gun/jaAR105b.gif + 3294 105L ART ja/gun/jaAR105L.gif ja/gun/jaAR105Lb.gif + 3295 120* ART ja/gun/jaAR120s.gif ja/gun/jaAR120sb.gif + 3296 140L ART ja/gun/jaAR140L.gif ja/gun/jaAR140Lb.gif + 3297 150* ART ja/gun/jaAR150s.gif ja/gun/jaAR150sb.gif + 3298 150 ART ja/gun/jaAR150.gif ja/gun/jaAR150b.gif + 3301 12.7 AA Twin ja/gun/jaAA127.gif ja/gun/jaAA127b.gif + 3302 20L AA ja/gun/jaAA20L.gif ja/gun/jaAA20Lb.gif + 3303 25LL AA ja/gun/jaAA25LL.gif ja/gun/jaAA25LLb.gif + 3304 25LL AA Twin ja/gun/jaAA25L2.gif ja/gun/jaAA25L2b.gif + 3305 25LL AA Triple ja/gun/jaAA25L3.gif ja/gun/jaAA25L3b.gif + 3306 75 AA ja/gun/jaAA75.gif ja/gun/jaAA75b.gif + 3307 76L AA ja/gun/jaAA76L.gif ja/gun/jaAA76Lb.gif + 3308 120L AA ja/gun/jaAA120L.gif ja/gun/jaAA120Lb.gif + 3310 Type 92A ja/veh/ty92A.gif + 3312 Type 92B ja/veh/ty92B.gif + 3314 Type 94 ja/veh/ty94.gif + 3316 Type 95 SO-KI ja/veh/ty95soki.gif + 3318 Type 97A TE-KE ja/veh/ty97Ateke.gif + 3320 Type 97B TE-KE ja/veh/ty97Bteke.gif + 3322 Type 95 HA-GO ja/veh/ty95hago.gif + 3324 Type 2 KA-MI ja/veh/ty2kami.gif + 3326 Type 2 KA-MI amph ja/veh/ty2kamip.gif + 3329 Type 89A CHI-RO ja/veh/ty89Achiro.gif + 3331 Type 89B CHI-RO ja/veh/ty89Bchiro.gif + 3333 Type 97A CHI-HA ja/veh/ty97Achiha.gif + 3335 Type 97B CHI-HA ja/veh/ty97Bchiha.gif + 3337 Type 1 CHI-HE ja/veh/ty1chihe.gif + 3341 Type 91 AC ja/veh/ty91ac.gif + 3343 Type 91 AC ja/veh/ty91ac2.gif + 3345 Type 91 AC ja/veh/ty91ac3.gif + 3347 Type 92 AC ja/veh/ty92ac.gif + 3349 Type 92 AC ja/veh/ty92ac2.gif + 3353 Type 1 HO-NI ja/veh/ty1honi.gif + 3355 Type 4 HO-RO ja/veh/ty4horo.gif + 3357 Type 1 HO-KI ja/veh/ty1hoki.gif + 3359 Type 98 SHI-KE ja/veh/ty98shike.gif + 3361 Type 92 I-KE ja/veh/ty92ike.gif + 3363 Type 95 tr ja/veh/ty95tr.gif + 3364 Type 94 tr ja/veh/ty94tr.gif + 3366 Type 97 tr ja/veh/ty97tr.gif + 3422 45* MTR it/itMTR.gif it/itMTRb.gif + 3428 20L ATR it/itATR20.gif it/itATR20b.gif + 3442 81* MTR 81/14 it/gun/itMTR81s.gif it/gun/itMTR81sb.gif + 3444 37L AT 37/45 it/gun/itAT37L.gif it/gun/itAT37Lb.gif + 3445 47 AT 47/32 it/gun/itAT47.gif it/gun/itAT47b.gif + 3446 65* INF 65/17 it/gun/itINF65s.gif it/gun/itINF65sb.gif + 3447 70* INF 70/15 it/gun/itINF70s.gif it/gun/itINF70sb.gif + 3451 75* ART 75/13 it/gun/itAR75s_.gif it/gun/itAR75s_b.gif + 3452 75* ART 75/27 it/gun/itAR75s.gif it/gun/itAR75sb.gif + 3453 75* ART 75/18 it/gun/itAR75sO.gif it/gun/itAR75sOb.gif + 3454 75 ART 75/32 it/gun/itAR75_.gif it/gun/itAR75_b.gif + 3455 100* ART 100/17 it/gun/itAR100s.gif it/gun/itAR100sb.gif + 3456 105 ART 105/28 it/gun/itAR105.gif it/gun/itAR105b.gif + 3457 150* ART 149/13 it/gun/itAR150s.gif it/gun/itAR150sb.gif + 3458 150 ART 149/35 it/gun/itAR150.gif it/gun/itAR150b.gif + 3459 150L ART 149/40 it/gun/itAR150L.gif it/gun/itAR150Lb.gif + 3461 20L AA 20/65 it/gun/itAA20L.gif it/gun/itAA20Lb.gif + 3462 75L AA 75/39 it/gun/itAA75L.gif it/gun/itAA75Lb.gif + 3463 75L AA 75/46 it/gun/itAA7546.gif it/gun/itAA7546b.gif + 3464 90L AA 90/53 it/gun/itAA90L.gif it/gun/itAA90Lb.gif + 3466 L5/21 it/veh/l521.gif + 3468 L5/30 it/veh/l530.gif + 3470 L3/35 it/veh/l335.gif + 3472 L3 aa it/veh/l3aa.gif + 3474 L3 cc it/veh/l3cc.gif + 3476 L3 Lf it/veh/l3lf.gif + 3479 L6/40 it/veh/l640.gif + 3481 M11/39 it/veh/m1139.gif + 3483 M13/40 it/veh/m1340.gif + 3485 M13/40 it/veh/m13402.gif + 3487 M14/41 it/veh/m1441.gif + 3489 M14/41 it/veh/m14412.gif + 3491 M15/42 it/veh/m1542.gif + 3493 M15/42 it/veh/m15422.gif + 3495 MR/35(f) it/veh/mr35.gif + 3499 Semovente M40 75/18 it/veh/semm40.gif + 3501 Semovente M40 75/18 it/veh/semm402.gif + 3503 Semovente M41 75/18 it/veh/semm41.gif + 3505 Semovente M41 75/18 it/veh/semm412.gif + 3507 Semovente M42 75/18 it/veh/semm4218.gif + 3509 Semovente M42 75/32 it/veh/semm4232.gif + 3511 Semovente M43 105/25 it/veh/semm43.gif + 3513 Semovente L40 47/32 it/veh/seml40.gif + 3515 Semovente M41M 90/53 it/veh/semm41m.gif + 3519 AS 42 it/veh/as42.gif + 3521 AS 42 aa it/veh/as42aa.gif + 3523 AS 42 cc it/veh/as42cc.gif + 3525 Lince it/veh/lince.gif + 3527 Lancia 1ZM it/veh/lancia.gif + 3529 Fiat 611A it/veh/fiat611a.gif + 3531 Fiat 611B it/veh/fiat611b.gif + 3533 AB 40 it/veh/ab40.gif + 3535 AB 41 it/veh/ab41.gif + 3539 Autoprotetto S37 it/veh/auts37.gif + 3541 Autocannone 65/17(b) it/veh/aut6517.gif + 3545 Autocannone 20/65(b) it/veh/aut2065.gif + 3547 Autocanonne 75/27 CK it/veh/aut7527.gif + 3549 Autocanonne 90/53 it/veh/aut9053.gif + 3551 TL 37 it/veh/tl37.gif + 3553 TM 40 it/veh/tm40.gif + 3555 TP 32 it/veh/tp32.gif + 3557 Autocarretta it/veh/autocarr.gif + 3559 Autocarretta MG it/veh/autocarr2.gif + 3561 Fiat 508 MC it/veh/fiat508.gif it/veh/fiat508.gif + 3562 Fiat 508 MC Furgone it/veh/fiat508f.gif it/veh/fiat508f.gif + 3563 Autocarro Leggero it/veh/autleg.gif + 3565 Autocarro Medio it/veh/autmed.gif + 3567 Autocarro Pesante it/veh/autpes.gif + 3605 50* MTR (g) fi/fiMTR.gif fi/fiMTRb.gif + 3608 20L ATR fi/fiATR.gif fi/fiATRb.gif + 3679 50 MTR(f) ax/axMTRf.gif ax/axMTRfb.gif + 3680 50* MTR ax/axMTR.gif ax/axMTRb.gif + 3681 50* MTR(r) ax/axMTRr.gif ax/axMTRrb.gif + 3682 60* MTR(f) ax/axMTR60f.gif ax/axMTR60fb.gif + 3709 81* MTR GrW 34 ax/gun/axMT81sg.gif ax/gun/axMT81sgb.gif + 3711 81* MTR Brandt M27/31 ax/gun/axMT81s.gif ax/gun/axMT81sb.gif + 3713 120* MTR PM obr. 38 ax/gun/axMT120s.gif ax/gun/axMT120sb.gif + 3714 37L AT Kanon PUV vz. 37(t) ax/gun/axAT37L.gif ax/gun/axAT37Lb.gif + 3715 47 AT Bohler M35 ax/gun/axAT47.gif ax/gun/axAT47b.gif + 3716 50L AT PaK 38(g) ax/gun/axAT50L.gif ax/gun/axAT50Lb.gif + 3717 75 AT PaK 97/38(g) ax/gun/axAT75.gif ax/gun/axAT75b.gif + 3718 75L AT PaK 40(g) ax/gun/axAT75L.gif ax/gun/axAT75Lb.gif + 3719 75* ART Skoda Model 15 ax/gun/axAR75s.gif ax/gun/axAR75sb.gif + 3720 75 ART Canon mle 1897 ax/gun/axAR75.gif ax/gun/axAR75b.gif + 3721 75 ART Skoda M29 ax/gun/axAR752.gif ax/gun/axAR752b.gif + 3722 76* ART Skoda M17 ax/gun/axAR76s.gif ax/gun/axAR76sb.gif + 3723 80* ART Skoda M28(80) ax/gun/axAR80s.gif ax/gun/axAR80sb.gif + 3724 100* ART Skoda M14/19 ax/gun/axAR100s.gif ax/gun/axAR100sl.gif + 3725 105 ART leFH 18(g) ax/gun/axAR105.gif ax/gun/axAR105b.gif + 3726 105L ART Skoda M35 ax/gun/axAR105L.gif ax/gun/axAR105Lb.gif + 3727 122* ART G obr. 10/30 ax/gun/axAR122s.gif ax/gun/axAR122sb.gif + 3728 122 ART G obr. 38 ax/gun/axAR122.gif ax/gun/axAR122b.gif + 3729 150* ART Skoda M14 ax/gun/axAR150s.gif ax/gun/axAR150sb.gif + 3730 152 ART Skoda M15/16 ax/gun/axAR152.gif ax/gun/axAR152b.gif + 3731 155* ART C mle 17 S ax/gun/axAR155s.gif ax/gun/axAR155sb.gif + 3732 12.7 AA CAJ mle 30 ax/gun/axAA127.gif ax/gun/axAA127b.gif + 3733 20L AA Oerlikon FF ax/gun/axAA20L.gif ax/gun/axAA20Lb.gif + 3734 20L AA FlaK 30(g) ax/gun/axAA20Lg1.gif ax/gun/axAA20Lg1b.gif + 3735 20L AA FlaK 38(g) ax/gun/axAA20Lg2.gif ax/gun/axAA20Lg2b.gif + 3736 37L AA FlaK 36(g) ax/gun/axAA37L.gif ax/gun/axAA37Lb.gif + 3737 40L AA Bofors ax/gun/axAA40L.gif ax/gun/axAA40Lb.gif + 3738 76L AA Skoda M33 ax/gun/axAA76L.gif ax/gun/axAA76Lb.gif + 3739 88L AA FlaK 18 o. 36 ax/gun/axAA88L.gif ax/gun/axAA88Lb.gif + 3740 37L AT Bofors ax/gun/roAT37L.gif ax/gun/roAT37Lb.gif + 3741 45L AT PTP obr. 32 ax/gun/roAT45L.gif ax/gun/roAT45Lb.gif + 3742 75L AT Resita M43 ax/gun/roAT75L.gif ax/gun/roAT75Lb.gif + 3743 76LL AT PaK 36(r) ax/gun/roAT76LL.gif ax/gun/roAT76LLb.gif + 3744 47 INF Breda ax/gun/roINF47.gif ax/gun/roINF47b.gif + 3745 75* INF PP obr. 27 ax/gun/roINF75s.gif ax/gun/roINF75sb.gif + 3746 75* ART 75 M mle 28 ax/gun/roAR75s1.gif ax/gun/roAR75s1b.gif + 3747 75* ART Skoda M14/34 ax/gun/roAR75s2.gif ax/gun/roAR75s2b.gif + 3748 76* ART P obr. 00/02 ax/gun/roAR76s.gif ax/gun/roAR76sb.gif + 3749 76 ART P obr. 02/30 ax/gun/roAR76.gif ax/gun/roAR76b.gif + 3750 76L ART P obr. 39(r) ax/gun/roAR76L.gif ax/gun/roAR76Lb.gif + 3751 105L ART s 10cm K 18(g) ax/gun/roAR105L1.gif ax/gun/roAR105L1b.gif + 3752 105 ART Skoda M39(D9) ax/gun/roAR105.gif ax/gun/roAR105b.gif + 3753 105L ART mle 36 S ax/gun/roAR105L2.gif ax/gun/roAR105L2b.gif + 3754 107 ART mle 10/12 ax/gun/roAR107.gif ax/gun/roAR107b.gif + 3755 114* ART OQF 4.5" Howitzer ax/gun/roAR114s.gif ax/gun/roAR114sb.gif + 3756 150L ART Skoda M28(NOa) ax/gun/roAR150L.gif ax/gun/roAR150Lb.gif + 3757 150 ART Skoda Model 33(K1) ax/gun/roAR150.gif ax/gun/roAR150b.gif + 3758 25L AA CA mle 38 ax/gun/roAA25LL.gif ax/gun/roAA25LLb.gif + 3759 75L AA Vickers/Resita M36/39 ax/gun/roAA75L.gif ax/gun/roAA75Lb.gif + 3760 90L AA Kanon PL vz. 12/20 ax/gun/roAA90L.gif ax/gun/roAA90Lb.gif + 3761 81* MTR Minomet vz. 36 ax/gun/slMT81s.gif ax/gun/slMT81sb.gif + 3763 47L AT Kanon PUV vz. 36(t) ax/gun/slAT47L.gif ax/gun/slAT47Lb.gif + 3764 75* INF leIG 18(g) ax/gun/slIN75s.gif ax/gun/slIN75sb.gif + 3765 150L ART Skoda M37(K4) ax/gun/slAR150L.gif ax/gun/slAR150Lb.gif + 3766 47L AA Skoda 47L40(t) ax/gun/slAA47L.gif ax/gun/slAA47Lb.gif + 3767 75L AA Skoda PL vz. 37(t) ax/gun/slAA75L.gif ax/gun/slAA75Lb.gif + 3768 83L AA Kanon PL vz. 22/24 ax/gun/slAA83L.gif ax/gun/slAA83Lb.gif + 3772 65* INF Cannone da 65/17 ax/gun/crIN65s.gif ax/gun/crIN65sb.gif + 3774 100* ART Skoda Model 28(FE) ax/gun/crAR100s.gif ax/gun/crAR100sb.gif + 3775 20L AT Madsen M-35 ax/gun/buAT20L.gif ax/gun/buAT20Lb.gif + 3776 37* INF Skoda IG ax/gun/buIN37s.gif ax/gun/buIN37sb.gif + 3777 70* INF Skoda IG ax/gun/buIN37s2.gif ax/gun/buIN37sb.gif + 3778 75* ART Bofors M36 ax/gun/buAR75s.gif ax/gun/buAR75sb.gif + 3779 75 ART K-S ax/gun/buAR75.gif ax/gun/buAR75b.gif + 3780 105 ART Ob GP ax/gun/buAR105.gif ax/gun/buAR105b.gif + 3781 150* ART D/30 Krupp ax/gun/buAR150s.gif ax/gun/buAR150sb.gif + 3787 L3/35(i) ax/veh/axL335.gif + 3789 FT-17M(f) ax/veh/axFT17M.gif + 3791 FT-17C(f) ax/veh/axFT17C.gif + 3793 H39(f) ax/veh/axH39.gif + 3795 R-35(f) ax/veh/axR35.gif + 3797 S-35(f) ax/veh/axS35.gif + 3799 LT vz 38(t)A ax/veh/axLT38A.gif + 3801 LT vz 38(t)E ax/veh/axLT38E.gif + 3803 JgdPz 38(t) ax/veh/axJgPz38.gif + 3805 OA vz 30(t) ax/veh/axOA30.gif + 3807 AB 41(i) ax/veh/axAB41.gif + 3809 Komsomolets(r) ax/veh/axKom.gif + 3811 Komsomolets(r) MG ax/veh/axKom2.gif + 3813 Lt Tractor ax/veh/axTracL.gif + 3815 Md Tractor ax/veh/axTracM.gif + 3817 Hv Tractor ax/veh/axTracH.gif + 3819 Lt Truck ax/veh/axTrkL.gif + 3821 Md Truck ax/veh/axTrkM.gif + 3823 Hv Truck ax/veh/axTrkH.gif + 3825 LT vz 35(g) ax/veh/axLT35.gif + 3827 PzKw IB(g) ax/veh/axPziB.gif + 3829 PzKw IIIL(g) ax/veh/axPziiiL.gif + 3831 PzKw IIIL(g) ax/veh/axPziiiL2.gif + 3833 PzKw IIIN(g) ax/veh/axPziiiN.gif + 3835 PzKw IIIN(g) ax/veh/axPziiiN2.gif + 3837 PzKw IVD(g) ax/veh/axPzivD.gif + 3839 PzKw IVF1(g) ax/veh/axPzivF.gif + 3841 PzKw IVH(g) ax/veh/axPzivH.gif + 3843 PzKw IVH(g) ax/veh/axPzivH2.gif + 3845 StuG IIIG(g) ax/veh/axSGiiiG.gif + 3847 SPW 250/1(g) ax/veh/axSPW2501.gif + 3849 SPW 251/1(g) ax/veh/axSPW2511.gif + 3851 SPW 251/9(g) ax/veh/axSPW2519.gif + 3853 PSW 222(g) ax/veh/axPSW222.gif + 3855 PSW 222(L)(g) ax/veh/axPSW222L.gif + 3857 PSW 223(g) ax/veh/axPSW223.gif + 3859 RSO(g) ax/veh/axRSO.gif + 3861 R-1(t) ax/veh/roR1.gif + 3863 R-35/45(f) ax/veh/roR35.gif + 3865 TACAM T-60(r) ax/veh/roT60.gif + 3867 TACAM T-60A(r) ax/veh/roT60A.gif + 3869 TACAM R-2(r) ax/veh/roR2.gif + 3871 BA-6(r) ax/veh/roBA6.gif + 3873 BA-20(r) ax/veh/roBA20.gif + 3875 Malaxa UE2 ax/veh/roUE.gif + 3877 Malaxa UE2 MG ax/veh/roUE2.gif + 3879 T vz 33(t) ax/veh/slT33.gif + 3881 LT vz 34 ax/veh/slLT34.gif + 3883 PzKw IIA(g) ax/veh/slPziiA.gif + 3885 LT vz 40(t) ax/veh/slLT40.gif + 3887 Marder III(t)H ax/veh/slMiiiH.gif + 3889 Kfz 1(g) ax/veh/slKfz1.gif + 3891 SdKfz 2(g) ax/veh/slSdKfz2.gif + 3892 TKS ax/veh/crTKS.gif + 3894 TKS(L) ax/veh/crTKSL.gif + 3896 L6/40(i) ax/veh/crL640.gif + 3898 wz. 34-I ax/veh/cr34i.gif + 3900 wz. 34-II ax/veh/cr34ii.gif + 3902 Semovente L40(i) ax/veh/crSemL40.gif + 3904 Vickers 6t Mk E ax/veh/buV6E.gif + 3906 R-35(f) ax/veh/buR35.gif + 3993 40L AT MAVAG 40 M hu/gun/huAT40L.gif hu/gun/huAT40Lb.gif + 3999 76 ART Skoda M05/08 hu/gun/huAR76.gif hu/gun/huAR76b.gif + 4001 105 ART MAVAG M40 hu/gun/huAR1052.gif hu/gun/huAR1052b.gif + 4007 80L AA Bofors M29/38 hu/gun/huAA80L.gif hu/gun/huAA80Lb.gif + 4009 38M Toldi I hu/veh/hu38MTi.gif + 4011 38M Toldi IIA hu/veh/hu38MTiiA.gif + 4013 40M Turan I(r) hu/veh/hu40MTi.gif + 4015 41M Turan II(r) hu/veh/hu41MTii.gif + 4043 PzKw VG(g) hu/veh/huPzvG.gif + 4045 PzKw VIE(L)(g) hu/veh/huPzviE.gif + 4055 43M Zrinyi II hu/veh/hu43MZii.gif + 4057 Marder II(g) hu/veh/huMii.gif + 4059 40M Nimrod hu/veh/hu40MN.gif + 4065 39M Csaba hu/veh/hu39MC.gif + 4067 40M Csaba hu/veh/hu40MC.gif + 5723 M3A1 am/veh/M3A1.gif + 5728 M5A1 am/veh/M5A1.gif + 5733 M4 am/veh/M4.gif + 5738 M4A1 am/veh/M4A1.gif + 5743 M4A2 am/veh/M4A2.gif + 5748 M4A2(L) am/veh/M4A2L.gif + 5753 M4A3 am/veh/M4A3.gif + 5758 M4A3(75)W am/veh/M4A375W.gif + 5763 M4A3E2 am/veh/M4A3E2.gif + 5768 M4A3E2(L) am/veh/M4A3E2L.gif + 5773 M4A1(76)W am/veh/M4A176W.gif + 5778 M4A3(76)W am/veh/M4A376W.gif + 5852 122* ART obr. 10/30 ch/gun/chAR122s2.gif ch/gun/chAR122sb.gif + 5853 122 ART G obr. 38 ch/gun/chAR1222.gif ch/gun/chAR122b.gif + 5854 20L AA 20/65 ch/gun/chAA20LC2.gif ch/gun/chAA20LCb.gif + 5855 75L AA Bofors M29 ch/gun/chAA75L2.gif ch/gun/chAA75Lb.gif + 5856 88L AA FlaK 18 ch/gun/chAA88L2.gif ch/gun/chAA88Lb.gif 6364 Stuart III(a) ru/veh/ruM3A1.gif - 6730 47 MTR fi/fi47mtr.png fi/fi47mtrB.png - 6765 81* MTR Krh/32 fi81mmMTR.png fi/gun/fi81mmMTRB.png - 6782 81* MTR Savu M42 fi81mmMTR Savu.png fi/gun/fi81mmMTR SavuB.png - 6796 7.62 AA fi7.62AA.png fi/gun/fi7.62AAB.png + 6730 47 MTR fi/fi47mtr.png fi/fi47mtrB.png + 6765 81* MTR Krh/32 fi81mmMTR.png fi/gun/fi81mmMTRB.png + 6782 81* MTR Savu M42 fi81mmMTR Savu.png fi/gun/fi81mmMTR SavuB.png + 6796 7.62 AA fi7.62AA.png fi/gun/fi7.62AAB.png 6797 20L (4) AA (g) fi20L4.png 6801 20L (6) AA (g) fi20L6.png 6802 20L (4) AA fi/gun/fi20L4 _2.png 6803 20L VKT (12) AA fi/gun/fi20L12.png 6804 40L Bofors AA (s) fi/gun/fi40L.png 6805 76 ItK/31(r) fi/gun/fi76LLAA.png - 6806 120* MTR Krh/40 fi120MTR.png fi/gun/fi120MTRB.png - 6808 20L AT PstK/40 fi20LAT.gif fi/gun/fi20LATB.png - 6810 25LL AT PstK/47 (f) fi25LLAT.png fi/gun/fi25LLATB.png - 6811 37L AT PstK/36 (s) fi37LAT.png fi/gun/fi37LAT B.png - 6812 37L AT PstK/37 (g) fi37LAT H.png fi/gun/fi37LAT HB.png - 6813 45L AT PstK/32 (r) fi45LAT.png fi/gun/fi45LATB.png - 6814 50L AT PstK/38 (g) fi50LAT.png fi/gun/fi50LATB.png - 6815 75 AT PstK/97-38 (g) fi/gun/fi75AT.png fi/gun/fi75ATB.png - 6816 75L AT PstK/40 (g) fi75LAT.png fi/gun/fi75LATB.png - 6818 76 INF RK/27 (r) fi76INF.png fi/gun/fi76INFB.png - 6819 75 ART K/02 fi/gun/fi75ART.png fi/gun/fi75ARTB.png - 6820 76* ART LK/13 fi76ART.png fi/gun/fi76ARTB.png - 6821 76* ART K/02 (r) fi/gun/fi76ART2.png fi/gun/fi76ART2B.png - 6822 76LL ART K/36 (r) fi/gun/fi76LLART.png fi/gun/fi76LLARTB.png - 6823 87* ART K/95 fi/gun/fi87ART.png fi/gun/fi87ARTB.png - 6824 90* ART K/77 fi/gun/fi90ART.png fi/gun/fi76INFB.png + 6806 120* MTR Krh/40 fi120MTR.png fi/gun/fi120MTRB.png + 6808 20L AT PstK/40 fi20LAT.gif fi/gun/fi20LATB.png + 6810 25LL AT PstK/47 (f) fi25LLAT.png fi/gun/fi25LLATB.png + 6811 37L AT PstK/36 (s) fi37LAT.png fi/gun/fi37LAT B.png + 6812 37L AT PstK/37 (g) fi37LAT H.png fi/gun/fi37LAT HB.png + 6813 45L AT PstK/32 (r) fi45LAT.png fi/gun/fi45LATB.png + 6814 50L AT PstK/38 (g) fi50LAT.png fi/gun/fi50LATB.png + 6815 75 AT PstK/97-38 (g) fi/gun/fi75AT.png fi/gun/fi75ATB.png + 6816 75L AT PstK/40 (g) fi75LAT.png fi/gun/fi75LATB.png + 6818 76 INF RK/27 (r) fi76INF.png fi/gun/fi76INFB.png + 6819 75 ART K/02 fi/gun/fi75ART.png fi/gun/fi75ARTB.png + 6820 76* ART LK/13 fi76ART.png fi/gun/fi76ARTB.png + 6821 76* ART K/02 (r) fi/gun/fi76ART2.png fi/gun/fi76ART2B.png + 6822 76LL ART K/36 (r) fi/gun/fi76LLART.png fi/gun/fi76LLARTB.png + 6823 87* ART K/95 fi/gun/fi87ART.png fi/gun/fi87ARTB.png + 6824 90* ART K/77 fi/gun/fi90ART.png fi/gun/fi76INFB.png 6826 105 ART H/33 (g) fi/gun/fi105ART.png 6827 105 ART H/37 fi/gun/fi105ART2.png 6828 105L ART H/41 (t) fi/gun/fi105LART.png @@ -1147,7 +1147,7 @@ 6830 107 ART K/77 (r) fi/gun/fi107ART2.png 6831 114* ART H/18 (b) fi/gun/fi114ART.png 6832 122* ART H/10 (r) fi/gun/fi122ART.png - 6833 150 ART H/40 (g) fi/gun/fi150ART.png fi/gun/fi150ARTB.png + 6833 150 ART H/40 (g) fi/gun/fi150ART.png fi/gun/fi150ARTB.png 6834 155 ART H/17 (f) fi/gun/fi155ART.png 6841 T-37 (r) fi/veh/fiT-37r.png 6849 T-50 (r) fiT-50r.png @@ -1181,13 +1181,13 @@ 6981 Light Truck fi/veh/fiLight Truck.png 6985 Medium Truck fi/veh/fiMediumTruck.png 6991 Heavy Truck fi/veh/fiHeavy Truck.png - 6995 203 ART B-4 obr 1931 ru/gun/ru203ART.png ru/gun/ru203ARTbrk.png - 6996 37 MTR ru/ru37MTR.png ru/ru37MTRbrk.png + 6995 203 ART B-4 obr 1931 ru/gun/ru203ART.png ru/gun/ru203ARTbrk.png + 6996 37 MTR ru/ru37MTR.png ru/ru37MTRbrk.png 7032 T-27 ru/veh/ruT-27.png 7036 T-26 M31 ru/veh/ruT-26 M31.png 7040 T-26 M32 ru/veh/ruT-26 M32.png 7042 OT-26 ru/veh/ruOT-26.png - 7048 ST-26 ru/veh/ruST26.png ru/veh/ruST26B.png + 7048 ST-26 ru/veh/ruST26.png ru/veh/ruST26B.png 7056 SMK ru/veh/ruSMK.png 7060 T-100 ru/veh/ruT100.png 7064 LANO AT ru/veh/ruLANO AT.png @@ -1209,7 +1209,7 @@ 7132 38H 735(f) ge/veh/ge38H 735.png 7136 35-S 739(f) ge/veh/ge35S 739.png 7220 T-26B (r) fi/veh/fiT-26b2(r).png - 7409 76 ItK/28 B(s) fiAA76L.png fiAA76LB.png + 7409 76 ItK/28 B(s) fiAA76L.png fiAA76LB.png 7418 T-28 M34(L) T28M34L.gif 7420 T-28E M40(L) T28EM40L.gif 7423 Lee(a) Lee(a)RU.gif diff --git a/vasl_templates/webapp/tests/remote.py b/vasl_templates/webapp/tests/remote.py index 3eae5c7..0354233 100644 --- a/vasl_templates/webapp/tests/remote.py +++ b/vasl_templates/webapp/tests/remote.py @@ -104,7 +104,9 @@ class ControlTests: def _set_default_template_pack( self, dname=None ): """Set the default template pack.""" - if dname: + if dname == "real": + dname = os.path.join( os.path.split(__file__)[0], "../data/default-template-pack" ) + elif dname: dname2 = os.path.join( os.path.split(__file__)[0], "fixtures" ) dname = os.path.join( dname2, dname ) _logger.info( "Setting default template pack: %s", dname ) diff --git a/vasl_templates/webapp/tests/test_online_images.py b/vasl_templates/webapp/tests/test_online_images.py new file mode 100644 index 0000000..0292915 --- /dev/null +++ b/vasl_templates/webapp/tests/test_online_images.py @@ -0,0 +1,162 @@ +"""Test using online images in VASL scenarios.""" + +import re + +from selenium.webdriver.common.action_chains import ActionChains + +from vasl_templates.webapp.tests.utils import init_webapp, select_tab, \ + find_child, find_children, click_dialog_button, wait_for_clipboard, wait_for_elem +from vasl_templates.webapp.tests.test_user_settings import set_user_settings +from vasl_templates.webapp.tests.test_scenario_persistence import load_scenario + +# --------------------------------------------------------------------- + +def test_online_images( webapp, webdriver ): + """Test using online images in VASL scenarios.""" + + # initialize + init_webapp( webapp, webdriver, scenario_persistence=1, + reset = lambda ct: + ct.set_data_dir( dtype="real" ) \ + .set_vasl_mod( vmod="random" ) \ + .set_default_template_pack( dname="real" ) + ) + + # load the test scenario + load_scenario( { + "PLAYER_1": "german", + "OB_VEHICLES_1": [ { "name": "PzKpfw IVH" } ], + } ) + + # configure the user settings + set_user_settings( { + "include-flags-in-snippets": True, + "custom-list-bullets": True, + "include-vasl-images-in-snippets": True, + } ) + + def do_test( snippet_id, expected1, expected2 ): #pylint: disable=missing-docstring + # generate the snippet with online images enabled + set_user_settings( { "use-online-images": True } ) + btn = find_child( "button[data-id='{}']".format( snippet_id ) ) + btn.click() + wait_for_clipboard( 2, expected1 ) + # generate the snippet with online images disabled + set_user_settings( { "use-online-images": False } ) + btn.click() + wait_for_clipboard( 2, expected2 ) + + # test player flags + do_test( "players", + re.compile( r'' ), + re.compile( r'' ) + ) + + # test custom list bullets + do_test( "ssr", + re.compile( r'url\("http://vasl-templates.org/.+/bullet.png"\)' ), + re.compile( r'url\("http://[a-z0-9.]+:\d+/.+/bullet.png"\)') + ) + + # test VASL counter images + select_tab( "ob1" ) + do_test( "ob_vehicles_1", + re.compile( r'' ), + re.compile( r'' ) + ) + +# --------------------------------------------------------------------- + +def test_multiple_images( webapp, webdriver ): + """Test handling of VASL counters that have multiple images.""" + + # initialize + init_webapp( webapp, webdriver, scenario_persistence=1, + reset = lambda ct: + ct.set_data_dir( dtype="real" ) \ + .set_vasl_mod( vmod="random" ) \ + .set_default_template_pack( dname="real" ) + ) + + # load the test scenario + load_scenario( { + "PLAYER_1": "british", + "OB_VEHICLES_1": [ { "name": "2pdr Portee" } ], + } ) + + # configure the user settings + set_user_settings( { + "use-online-images": True, + "include-vasl-images-in-snippets": True, + } ) + + # generate a snippet for the vehicle (using the default image) + select_tab( "ob1" ) + btn = find_child( "button[data-id='ob_vehicles_1']" ) + btn.click() + wait_for_clipboard( 2, + re.compile( r'') + ) + + # select the second image for the vehicle + sortable = find_child( "#ob_vehicles-sortable_1" ) + elems = find_children( "li", sortable ) + assert len(elems) == 1 + ActionChains(webdriver).double_click( elems[0] ).perform() + btn = wait_for_elem( 2, "#edit-vo input.select-vo-image" ) + btn.click() + images = find_children( ".ui-dialog.select-vo-image .vo-images img" ) + assert len(images) == 2 + images[1].click() + click_dialog_button( "OK" ) + + # generate a snippet for the vehicle (using the new image) + btn = find_child( "button[data-id='ob_vehicles_1']" ) + btn.click() + wait_for_clipboard( 2, + re.compile( r'') + ) + +# --------------------------------------------------------------------- + +def test_extensions( webapp, webdriver ): + """Test handling of VASL counters in extensions.""" + + # initialize + init_webapp( webapp, webdriver, scenario_persistence=1, + reset = lambda ct: + ct.set_data_dir( dtype="real" ) \ + .set_vasl_mod( vmod="random", extns_dtype="real" ) \ + .set_default_template_pack( dname="real" ) + ) + + # load the test scenario + load_scenario( { + "PLAYER_1": "russian", + "OB_VEHICLES_1": [ + { "id": "ru/v:078", "image_id": "f97:178/0" }, # Matilda II(b) (4FP variant) + { "id": "ru/v:078", "image_id": "f97:184/0" }, # Matilda II(b) (6FP variant) + { "id": "ru/v:004", "image_id": "547/0" }, # T-60 M40 (core module) + { "id": "ru/v:004", "image_id": "f97:186/0" }, # T-60 M40 (KGS variant) + ], + } ) + + # configure the user settings + set_user_settings( { + "use-online-images": True, + "include-vasl-images-in-snippets": True, + } ) + + # generate a snippet for the vehicles + select_tab( "ob1" ) + btn = find_child( "button[data-id='ob_vehicles_1']" ) + btn.click() + wait_for_clipboard( 2, re.compile( + '' + '.+' + '' + '.+' + '' + '.+' + '' + , re.DOTALL ) ) diff --git a/vasl_templates/webapp/tests/test_user_settings.py b/vasl_templates/webapp/tests/test_user_settings.py index e26e779..04dbba8 100644 --- a/vasl_templates/webapp/tests/test_user_settings.py +++ b/vasl_templates/webapp/tests/test_user_settings.py @@ -284,6 +284,18 @@ def test_vo_notes_as_images( webapp, webdriver ): # --------------------------------------------------------------------- +def set_user_settings( opts ): + """Configure the user settings.""" + select_menu_option( "user_settings" ) + for key,val in opts.items(): + assert isinstance( val, bool ) # nb: we currently only support checkboxes + elem = find_child( ".ui-dialog.user-settings input[name='{}']".format( key ) ) + if (val and not elem.is_selected()) or (not val and elem.is_selected()): + elem.click() + click_dialog_button( "OK" ) + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + def _check_cookies( webdriver, name, expected ): """Check that a user setting was stored in the cookies correctly.""" cookies = [ c for c in webdriver.get_cookies() if c["name"] == "user-settings" ] diff --git a/vasl_templates/webapp/tests/utils.py b/vasl_templates/webapp/tests/utils.py index 1bc2b07..a2f5cdd 100644 --- a/vasl_templates/webapp/tests/utils.py +++ b/vasl_templates/webapp/tests/utils.py @@ -77,6 +77,9 @@ def init_webapp( webapp, webdriver, **options ): webdriver.get( webapp.url_for( "main", **options ) ) _wait_for_webapp() + # reset the user settings + webdriver.delete_all_cookies() + return control_tests # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -538,7 +541,7 @@ def wait_for_elem( timeout, elem_id, parent=None ): args = { "elem": None } def check_elem(): #pylint: disable=missing-docstring args["elem"] = find_child( elem_id, parent ) - return args["elem"] is not None + return args["elem"] is not None and args["elem"].is_displayed() wait_for( timeout, check_elem ) return args["elem"] diff --git a/vasl_templates/webapp/vasl_mod.py b/vasl_templates/webapp/vasl_mod.py index 70b2b58..0ec12dc 100644 --- a/vasl_templates/webapp/vasl_mod.py +++ b/vasl_templates/webapp/vasl_mod.py @@ -165,8 +165,6 @@ class VaslMod: if not isinstance( image_paths, list ): image_paths = [ image_paths ] image_path = image_paths[ index ] - if not os.path.splitext( image_path )[1]: - image_path += ".gif" # load the image data image_path = os.path.join( "images", image_path ) @@ -182,11 +180,16 @@ class VaslMod: if not piece[key]: return 0 return len(piece[key]) if isinstance( piece[key], list ) else 1 + def get_image_paths( piece ): + """Return the piece's image paths.""" + paths = piece[ "front_images" ] + return paths if isinstance(paths,list) else [paths] return { p["gpid"]: { "name": p["name"], "front_images": image_count( p, "front_images" ), "back_images": image_count( p, "back_images" ), + "paths": get_image_paths( p ), "is_small": p["is_small"], } for p in self._pieces.values() @@ -375,11 +378,18 @@ class VaslMod: front_images.pop() assert not back_images - def delistify( val ): #pylint: disable=missing-docstring - if val is None: + def tidy_paths( paths ): + """Tidy up image paths.""" + if paths is None: return None - return val[0] if len(val) == 1 else val - return delistify(front_images), delistify(back_images) + assert isinstance( paths, list ) + # ensure every path has an extension + for i,path in enumerate(paths): + if not os.path.splitext( path )[1]: + paths[i] += ".gif" + # de-listify the paths + return paths[0] if len(paths) == 1 else paths + return tidy_paths(front_images), tidy_paths(back_images) # --------------------------------------------------------------------- diff --git a/vasl_templates/webapp/vassal.py b/vasl_templates/webapp/vassal.py index 3e13a1b..15b2829 100644 --- a/vasl_templates/webapp/vassal.py +++ b/vasl_templates/webapp/vassal.py @@ -287,7 +287,9 @@ class VassalShim: args2.extend( args[1:] ) # figure out how long to the let the VASSAL shim run - timeout = int( app.config.get( "VASSAL_SHIM_TIMEOUT", 120 ) ) + # NOTE: This used to be 2 minutes, but adding the ability to load images from the internet + # slows the process down, since VASSAL loads images insanely slowly :-/ + timeout = int( app.config.get( "VASSAL_SHIM_TIMEOUT", 5*60 ) ) if timeout <= 0: timeout = None