diff --git a/client/demo.js b/client/demo.js index 1e2288d0..7eed71b4 100644 --- a/client/demo.js +++ b/client/demo.js @@ -15,7 +15,7 @@ const DEMO_UNIT_DATA = { radio: { frequency: 124000000, callsign: 1, callsignNumber: 1 }, generalSettings: { prohibitAA: false, prohibitAfterburner: false, prohibitAG: false, prohibitAirWpn: false, prohibitJettison: false }, ammo: [{ quantity: 2, name: "A cool missile\0Ciao", guidance: 0, category: 0, missileCategory: 0 }, { quantity: 2, name: "A cool missile with a longer name\0Ciao", guidance: 0, category: 0, missileCategory: 0 }, { quantity: 2, name: "A cool missile\0Ciao", guidance: 0, category: 0, missileCategory: 0 } , { quantity: 2, name: "A cool missile\0Ciao", guidance: 0, category: 0, missileCategory: 0 } , { quantity: 2, name: "A cool missile\0Ciao", guidance: 0, category: 0, missileCategory: 0 } , { quantity: 2, name: "A cool missile\0Ciao", guidance: 0, category: 0, missileCategory: 0 } , { quantity: 2, name: "A cool missile\0Ciao", guidance: 0, category: 0, missileCategory: 0 } , { quantity: 2, name: "A cool missile\0Ciao", guidance: 0, category: 0, missileCategory: 0 } , { quantity: 2, name: "A cool missile\0Ciao", guidance: 0, category: 0, missileCategory: 0 } ], - contacts: [{ID: 2, detectionMethod: 1}, {ID: 3, detectionMethod: 4}, {ID: 5, detectionMethod: 4}], + contacts: [{ID: 2, detectionMethod: 1}, {ID: 3, detectionMethod: 4}, {ID: 4, detectionMethod: 1}], activePath: [{lat: 38, lng: -115, alt: 0}, {lat: 38, lng: -114, alt: 0}] }, ["2"]:{ category: "Aircraft", alive: true, human: false, controlled: false, coalition: 1, country: 0, name: "B-52H", unitName: "Cool guy 1-2", groupName: "Cool group 2", state: 1, task: "Being cool", @@ -31,7 +31,7 @@ const DEMO_UNIT_DATA = { radio: { frequency: 124000000, callsign: 1, callsignNumber: 1 }, generalSettings: { prohibitAA: false, prohibitAfterburner: false, prohibitAG: false, prohibitAirWpn: false, prohibitJettison: false }, ammo: [{ quantity: 2, name: "A cool missile", guidance: 0, category: 0, missileCategory: 0 } ], - contacts: [{ID: 1, detectionMethod: 16}], + contacts: [{ID: 4, detectionMethod: 1}], activePath: [ ] }, ["3"]:{ category: "Helicopter", alive: true, human: false, controlled: false, coalition: 1, country: 0, name: "AH-64D_BLK_II", unitName: "Cool guy 1-4", groupName: "Cool group 3", state: 1, task: "Being cool", hasTask: false, position: { lat: 37.1, lng: -116.1, alt: 1000 }, speed: 200, heading: 315 * Math.PI / 180, isTanker: false, isAWACS: false, onOff: true, followRoads: false, fuel: 50, @@ -48,7 +48,7 @@ const DEMO_UNIT_DATA = { ammo: [{ quantity: 2, name: "A cool missile", guidance: 0, category: 0, missileCategory: 0 } ], contacts: [{ID: 1, detectionMethod: 16}], activePath: [ ] - }, ["4"]:{ category: "GroundUnit", alive: true, human: false, controlled: true, coalition: 0, country: 0, name: "Gepard", unitName: "Cool guy 2-1", groupName: "Cool group 4", state: 1, task: "Being cool", + }, ["4"]:{ category: "GroundUnit", alive: true, human: false, controlled: true, coalition: 2, country: 0, name: "Tor 9A331", unitName: "Cool guy 2-1", groupName: "Cool group 4", state: 1, task: "Being cool", hasTask: false, position: { lat: 37.2, lng: -116.1, alt: 1000 }, speed: 200, heading: 315 * Math.PI / 180, isTanker: false, isAWACS: false, onOff: true, followRoads: false, fuel: 50, desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, formationOffset: { x: 0, y: 0, z: 0 }, @@ -65,7 +65,7 @@ const DEMO_UNIT_DATA = { activePath: [ ], isLeader: true, operateAs: 2 - }, ["5"]:{ category: "GroundUnit", alive: true, human: false, controlled: true, coalition: 0, country: 0, name: "Gepard", unitName: "Cool guy 2-2", groupName: "Cool group 4", state: 1, task: "Being cool", + }, ["5"]:{ category: "GroundUnit", alive: true, human: false, controlled: true, coalition: 2, country: 0, name: "Gepard", unitName: "Cool guy 2-2", groupName: "Cool group 4", state: 1, task: "Being cool", hasTask: false, position: { lat: 37.21, lng: -116.1, alt: 1000 }, speed: 200, heading: 315 * Math.PI / 180, isTanker: false, isAWACS: false, onOff: true, followRoads: false, fuel: 50, desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, formationOffset: { x: 0, y: 0, z: 0 }, @@ -98,7 +98,7 @@ const DEMO_UNIT_DATA = { ammo: [{ quantity: 2, name: "A cool missile", guidance: 0, category: 0, missileCategory: 0 } ], contacts: [{ID: 1, detectionMethod: 16}], activePath: [ ] - }, ["7"]:{ category: "GroundUnit", alive: true, human: false, controlled: true, coalition: 1, country: 0, name: "T-55", unitName: "Cool guy 2-1", groupName: "Cool group 10", state: 1, task: "Being cool", + }, ["7"]:{ category: "GroundUnit", alive: true, human: false, controlled: true, coalition: 1, country: 0, name: "Tor 9A331", unitName: "Cool guy 2-1", groupName: "Cool group 10", state: 1, task: "Being cool", hasTask: false, position: { lat: 37.2, lng: -116.2, alt: 1000 }, speed: 200, heading: 315 * Math.PI / 180, isTanker: false, isAWACS: false, onOff: true, followRoads: false, fuel: 50, desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, formationOffset: { x: 0, y: 0, z: 0 }, diff --git a/client/plugins/controltips/src/controltipsplugin.ts b/client/plugins/controltips/src/controltipsplugin.ts index 63f0a068..20f9ab1d 100644 --- a/client/plugins/controltips/src/controltipsplugin.ts +++ b/client/plugins/controltips/src/controltipsplugin.ts @@ -58,7 +58,7 @@ export class ControlTipsPlugin implements OlympusPlugin { this.#updateTips(); }); - document.addEventListener("unitSelection", (ev: CustomEventInit ) => { + document.addEventListener("unitsSelection", (ev: CustomEventInit ) => { this.#updateTips(); }); diff --git a/client/plugins/databasemanager/index.js b/client/plugins/databasemanager/index.js index b780b875..859ff36d 100644 --- a/client/plugins/databasemanager/index.js +++ b/client/plugins/databasemanager/index.js @@ -1,22 +1,5 @@ (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i { + var _a; + if (this.visible) + (_a = __classPrivateFieldGet(this, _AirUnitEditor_loadoutEditor, "f")) === null || _a === void 0 ? void 0 : _a.show(); + }); + } + /** Sets a unit blueprint as the currently active one + * + * @param blueprint The blueprint to edit + */ + setBlueprint(blueprint) { + var _a, _b, _c, _d, _e, _f; + this.blueprint = blueprint; + if (this.blueprint !== null) { + this.contentDiv2.replaceChildren(); + var title = document.createElement("label"); + title.innerText = "Unit properties"; + this.contentDiv2.appendChild(title); + (0, utils_1.addStringInput)(this.contentDiv2, "Name", blueprint.name, "text", (value) => { blueprint.name = value; }, true); + (0, utils_1.addStringInput)(this.contentDiv2, "Label", blueprint.label, "text", (value) => { blueprint.label = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Short label", blueprint.shortLabel, "text", (value) => { blueprint.shortLabel = value; }); + (0, utils_1.addDropdownInput)(this.contentDiv2, "Coalition", blueprint.coalition, ["", "blue", "red"]); + (0, utils_1.addDropdownInput)(this.contentDiv2, "Era", blueprint.era, ["WW2", "Early Cold War", "Mid Cold War", "Late Cold War", "Modern"]); + (0, utils_1.addStringInput)(this.contentDiv2, "Filename", (_a = blueprint.filename) !== null && _a !== void 0 ? _a : "", "text", (value) => { blueprint.filename = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Cost", (_b = String(blueprint.cost)) !== null && _b !== void 0 ? _b : "", "number", (value) => { blueprint.cost = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Rufels from", (_c = String(blueprint.refuelsFrom)) !== null && _c !== void 0 ? _c : "", "text", (value) => { blueprint.refuelsFrom = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Refueling type", (_d = String(blueprint.refuelingType)) !== null && _d !== void 0 ? _d : "", "text", (value) => { blueprint.refuelingType = value; }); + /* Add a scrollable list of loadouts that the user can edit */ + var title = document.createElement("label"); + title.innerText = "Loadouts"; + this.contentDiv2.appendChild(title); + (0, utils_1.addLoadoutsScroll)(this.contentDiv2, (_e = blueprint.loadouts) !== null && _e !== void 0 ? _e : [], (loadout) => { + var _a, _b; + (_a = __classPrivateFieldGet(this, _AirUnitEditor_loadoutEditor, "f")) === null || _a === void 0 ? void 0 : _a.setLoadout(loadout); + (_b = __classPrivateFieldGet(this, _AirUnitEditor_loadoutEditor, "f")) === null || _b === void 0 ? void 0 : _b.show(); + }); + (0, utils_1.addNewElementInput)(this.contentDiv2, (ev, input) => { this.addLoadout(input.value); }); + (_f = __classPrivateFieldGet(this, _AirUnitEditor_loadoutEditor, "f")) === null || _f === void 0 ? void 0 : _f.hide(); + } + } + /** Add a new empty blueprint + * + * @param key Blueprint key + */ + addBlueprint(key) { + if (this.database != null) { + this.database.blueprints[key] = { + name: key, + coalition: "", + label: "", + shortLabel: "", + era: "", + loadouts: [] + }; + this.show(); + this.setBlueprint(this.database.blueprints[key]); + } + } + /** Add a new empty loadout to the currently active blueprint + * + * @param loadoutName The name of the new loadout + */ + addLoadout(loadoutName) { + var _a; + if (loadoutName && this.blueprint !== null) { + (_a = this.blueprint.loadouts) === null || _a === void 0 ? void 0 : _a.push({ + name: loadoutName, + code: "", + fuel: 1, + items: [], + roles: [] + }); + this.setBlueprint(this.blueprint); + } + } + /** Hide the editor + * + */ + hide() { + var _a; + super.hide(); + (_a = __classPrivateFieldGet(this, _AirUnitEditor_loadoutEditor, "f")) === null || _a === void 0 ? void 0 : _a.hide(); + } +} +exports.AirUnitEditor = AirUnitEditor; +_AirUnitEditor_loadoutEditor = new WeakMap(); + +},{"./loadouteditor":5,"./uniteditor":7,"./utils":8}],2:[function(require,module,exports){ +"use strict"; +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _DatabaseManagerPlugin_instances, _DatabaseManagerPlugin_app, _DatabaseManagerPlugin_element, _DatabaseManagerPlugin_mainContentContainer, _DatabaseManagerPlugin_contentDiv1, _DatabaseManagerPlugin_contentDiv2, _DatabaseManagerPlugin_contentDiv3, _DatabaseManagerPlugin_button1, _DatabaseManagerPlugin_button2, _DatabaseManagerPlugin_button3, _DatabaseManagerPlugin_button4, _DatabaseManagerPlugin_button5, _DatabaseManagerPlugin_button6, _DatabaseManagerPlugin_button7, _DatabaseManagerPlugin_button8, _DatabaseManagerPlugin_button9, _DatabaseManagerPlugin_aircraftEditor, _DatabaseManagerPlugin_helicopterEditor, _DatabaseManagerPlugin_groundUnitEditor, _DatabaseManagerPlugin_navyUnitEditor, _DatabaseManagerPlugin_hideAll, _DatabaseManagerPlugin_loadDatabases, _DatabaseManagerPlugin_saveDatabases, _DatabaseManagerPlugin_resetToDefaultDatabases, _DatabaseManagerPlugin_restoreToPreviousDatabases, _DatabaseManagerPlugin_uploadDatabase, _DatabaseManagerPlugin_resetToDefaultDatabase, _DatabaseManagerPlugin_restoreToPreviousDatabase; Object.defineProperty(exports, "__esModule", { value: true }); exports.DatabaseManagerPlugin = void 0; const airuniteditor_1 = require("./airuniteditor"); +const grounduniteditor_1 = require("./grounduniteditor"); +const navyuniteditor_1 = require("./navyuniteditor"); +/** Database Manager + * + * This database provides a user interface to allow easier and convenient unit databases manipulation. It allows to edit all the fields of the units databases, save them + * on the server, and restore the defaults. + * + * TODO: + * Add ability to manage liveries + * + */ class DatabaseManagerPlugin { constructor() { + _DatabaseManagerPlugin_instances.add(this); _DatabaseManagerPlugin_app.set(this, null); _DatabaseManagerPlugin_element.set(this, void 0); - _DatabaseManagerPlugin_scrollDiv.set(this, void 0); - _DatabaseManagerPlugin_contentDiv.set(this, void 0); + _DatabaseManagerPlugin_mainContentContainer.set(this, void 0); + _DatabaseManagerPlugin_contentDiv1.set(this, void 0); + _DatabaseManagerPlugin_contentDiv2.set(this, void 0); + _DatabaseManagerPlugin_contentDiv3.set(this, void 0); + /* Upper tab buttons */ + _DatabaseManagerPlugin_button1.set(this, void 0); + _DatabaseManagerPlugin_button2.set(this, void 0); + _DatabaseManagerPlugin_button3.set(this, void 0); + _DatabaseManagerPlugin_button4.set(this, void 0); + /* Lower operation buttons */ + _DatabaseManagerPlugin_button5.set(this, void 0); + _DatabaseManagerPlugin_button6.set(this, void 0); + _DatabaseManagerPlugin_button7.set(this, void 0); + _DatabaseManagerPlugin_button8.set(this, void 0); + _DatabaseManagerPlugin_button9.set(this, void 0); + /* Database editors */ _DatabaseManagerPlugin_aircraftEditor.set(this, void 0); + _DatabaseManagerPlugin_helicopterEditor.set(this, void 0); + _DatabaseManagerPlugin_groundUnitEditor.set(this, void 0); + _DatabaseManagerPlugin_navyUnitEditor.set(this, void 0); + /* Create main HTML element */ __classPrivateFieldSet(this, _DatabaseManagerPlugin_element, document.createElement("div"), "f"); __classPrivateFieldGet(this, _DatabaseManagerPlugin_element, "f").id = "database-manager-panel"; __classPrivateFieldGet(this, _DatabaseManagerPlugin_element, "f").oncontextmenu = () => { return false; }; __classPrivateFieldGet(this, _DatabaseManagerPlugin_element, "f").classList.add("ol-dialog"); document.body.appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_element, "f")); - __classPrivateFieldSet(this, _DatabaseManagerPlugin_scrollDiv, document.createElement("div"), "f"); - __classPrivateFieldGet(this, _DatabaseManagerPlugin_scrollDiv, "f").classList.add("dm-scroll-container"); - __classPrivateFieldGet(this, _DatabaseManagerPlugin_element, "f").appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_scrollDiv, "f")); - __classPrivateFieldSet(this, _DatabaseManagerPlugin_contentDiv, document.createElement("div"), "f"); - __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv, "f").classList.add("dm-content-container"); - __classPrivateFieldGet(this, _DatabaseManagerPlugin_element, "f").appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv, "f")); - __classPrivateFieldSet(this, _DatabaseManagerPlugin_aircraftEditor, new airuniteditor_1.AirUnitEditor(__classPrivateFieldGet(this, _DatabaseManagerPlugin_scrollDiv, "f"), __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv, "f")), "f"); + /* Start hidden */ + this.toggle(false); + /* Create the top tab buttons container and buttons */ + let topButtonContainer = document.createElement("div"); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_button1, document.createElement("button"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button1, "f").classList.add("tab-button"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button1, "f").textContent = "Aircraft database"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button1, "f").onclick = () => { __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_hideAll).call(this); __classPrivateFieldGet(this, _DatabaseManagerPlugin_aircraftEditor, "f").show(); __classPrivateFieldGet(this, _DatabaseManagerPlugin_button1, "f").classList.add("selected"); }; + topButtonContainer.appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_button1, "f")); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_button2, document.createElement("button"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button2, "f").classList.add("tab-button"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button2, "f").textContent = "Helicopter database"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button2, "f").onclick = () => { __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_hideAll).call(this); __classPrivateFieldGet(this, _DatabaseManagerPlugin_helicopterEditor, "f").show(); __classPrivateFieldGet(this, _DatabaseManagerPlugin_button2, "f").classList.add("selected"); }; + topButtonContainer.appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_button2, "f")); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_button3, document.createElement("button"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button3, "f").classList.add("tab-button"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button3, "f").textContent = "Ground Unit database"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button3, "f").onclick = () => { __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_hideAll).call(this); __classPrivateFieldGet(this, _DatabaseManagerPlugin_groundUnitEditor, "f").show(); __classPrivateFieldGet(this, _DatabaseManagerPlugin_button3, "f").classList.add("selected"); }; + topButtonContainer.appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_button3, "f")); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_button4, document.createElement("button"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button4, "f").classList.add("tab-button"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button4, "f").textContent = "Navy Unit database"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button4, "f").onclick = () => { __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_hideAll).call(this); __classPrivateFieldGet(this, _DatabaseManagerPlugin_navyUnitEditor, "f").show(); __classPrivateFieldGet(this, _DatabaseManagerPlugin_button4, "f").classList.add("selected"); }; + topButtonContainer.appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_button4, "f")); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_element, "f").appendChild(topButtonContainer); + /* Create the container for the database editor elements and the elements themselves */ + __classPrivateFieldSet(this, _DatabaseManagerPlugin_mainContentContainer, document.createElement("div"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_mainContentContainer, "f").classList.add("dm-container"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_element, "f").appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_mainContentContainer, "f")); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_contentDiv1, document.createElement("div"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv1, "f").classList.add("dm-content-container"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_mainContentContainer, "f").appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv1, "f")); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_contentDiv2, document.createElement("div"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv2, "f").classList.add("dm-content-container"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_mainContentContainer, "f").appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv2, "f")); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_contentDiv3, document.createElement("div"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv3, "f").classList.add("dm-content-container"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_mainContentContainer, "f").appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv3, "f")); + /* Create the database editors, which use the three divs created before */ + __classPrivateFieldSet(this, _DatabaseManagerPlugin_aircraftEditor, new airuniteditor_1.AirUnitEditor(__classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv1, "f"), __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv2, "f"), __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv3, "f")), "f"); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_helicopterEditor, new airuniteditor_1.AirUnitEditor(__classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv1, "f"), __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv2, "f"), __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv3, "f")), "f"); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_groundUnitEditor, new grounduniteditor_1.GroundUnitEditor(__classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv1, "f"), __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv2, "f"), __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv3, "f")), "f"); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_navyUnitEditor, new navyuniteditor_1.NavyUnitEditor(__classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv1, "f"), __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv2, "f"), __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv3, "f")), "f"); + /* Create the bottom buttons container. These buttons allow to save, restore, reset, and discard the changes */ + let bottomButtonContainer = document.createElement("div"); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_button5, document.createElement("button"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button5, "f").textContent = "Save"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button5, "f").title = "Save the changes on the server"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button5, "f").onclick = () => { __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_saveDatabases).call(this); }; + bottomButtonContainer.appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_button5, "f")); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_button6, document.createElement("button"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button6, "f").textContent = "Discard"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button6, "f").title = "Discard all changes and reload the database from the server"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button6, "f").onclick = () => { __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_loadDatabases).call(this); }; + bottomButtonContainer.appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_button6, "f")); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_button7, document.createElement("button"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button7, "f").textContent = "Reset defaults"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button7, "f").onclick = () => { __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_resetToDefaultDatabases).call(this); }; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button7, "f").title = "Reset the databases to the default values"; + bottomButtonContainer.appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_button7, "f")); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_button8, document.createElement("button"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button8, "f").textContent = "Restore previous"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button8, "f").onclick = () => { __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_restoreToPreviousDatabases).call(this); }; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button8, "f").title = "Restore the previously saved databases. Use this if you saved a database by mistake."; + bottomButtonContainer.appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_button8, "f")); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_button9, document.createElement("button"), "f"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button9, "f").textContent = "Close"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button9, "f").title = "Close the Database Manager"; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button9, "f").onclick = () => { this.toggle(false); }; + bottomButtonContainer.appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_button9, "f")); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_element, "f").appendChild(bottomButtonContainer); } + /** + * + * @returns The name of the plugin + */ getName() { return "Database Control Plugin"; } + /** Initialize the plugin + * + * @param app The OlympusApp singleton + * @returns True if successfull + */ initialize(app) { var _a; __classPrivateFieldSet(this, _DatabaseManagerPlugin_app, app, "f"); - var aircraftDatabase = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getAircraftDatabase(); - if (aircraftDatabase != null) { - __classPrivateFieldGet(this, _DatabaseManagerPlugin_aircraftEditor, "f").setDatabase(aircraftDatabase); - __classPrivateFieldGet(this, _DatabaseManagerPlugin_aircraftEditor, "f").show(); - } + /* Load the databases and initialize the editors */ + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_loadDatabases).call(this); + /* Add a button to the main Olympus App to allow the users to open the dialog */ + var mainButtonDiv = document.createElement("div"); + var mainButton = document.createElement("button"); + mainButton.textContent = "Database manager"; + mainButtonDiv.appendChild(mainButton); + var toolbar = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getToolbarsManager().get("primaryToolbar"); + var elements = toolbar.getMainDropdown().getOptionElements(); + var arr = Array.prototype.slice.call(elements); + arr.splice(arr.length - 1, 0, mainButtonDiv); + toolbar.getMainDropdown().setOptionsElements(arr); + mainButton.onclick = () => { + var _a; + toolbar.getMainDropdown().close(); + if (((_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getMissionManager().getCommandModeOptions().commandMode) === "Game master") + this.toggle(); + }; return true; } + /** + * + * @returns The main container element + */ getElement() { return __classPrivateFieldGet(this, _DatabaseManagerPlugin_element, "f"); } + /** Toggles the visibility of the dialog + * + * @param bool Force a specific visibility state + */ toggle(bool) { - this.getElement().classList.toggle("hide", bool); + if (bool) + this.getElement().classList.toggle("hide", !bool); + else + this.getElement().classList.toggle("hide"); } } exports.DatabaseManagerPlugin = DatabaseManagerPlugin; -_DatabaseManagerPlugin_app = new WeakMap(), _DatabaseManagerPlugin_element = new WeakMap(), _DatabaseManagerPlugin_scrollDiv = new WeakMap(), _DatabaseManagerPlugin_contentDiv = new WeakMap(), _DatabaseManagerPlugin_aircraftEditor = new WeakMap(); -},{"./airuniteditor":1}],3:[function(require,module,exports){ +_DatabaseManagerPlugin_app = new WeakMap(), _DatabaseManagerPlugin_element = new WeakMap(), _DatabaseManagerPlugin_mainContentContainer = new WeakMap(), _DatabaseManagerPlugin_contentDiv1 = new WeakMap(), _DatabaseManagerPlugin_contentDiv2 = new WeakMap(), _DatabaseManagerPlugin_contentDiv3 = new WeakMap(), _DatabaseManagerPlugin_button1 = new WeakMap(), _DatabaseManagerPlugin_button2 = new WeakMap(), _DatabaseManagerPlugin_button3 = new WeakMap(), _DatabaseManagerPlugin_button4 = new WeakMap(), _DatabaseManagerPlugin_button5 = new WeakMap(), _DatabaseManagerPlugin_button6 = new WeakMap(), _DatabaseManagerPlugin_button7 = new WeakMap(), _DatabaseManagerPlugin_button8 = new WeakMap(), _DatabaseManagerPlugin_button9 = new WeakMap(), _DatabaseManagerPlugin_aircraftEditor = new WeakMap(), _DatabaseManagerPlugin_helicopterEditor = new WeakMap(), _DatabaseManagerPlugin_groundUnitEditor = new WeakMap(), _DatabaseManagerPlugin_navyUnitEditor = new WeakMap(), _DatabaseManagerPlugin_instances = new WeakSet(), _DatabaseManagerPlugin_hideAll = function _DatabaseManagerPlugin_hideAll() { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_aircraftEditor, "f").hide(); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_helicopterEditor, "f").hide(); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_groundUnitEditor, "f").hide(); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_navyUnitEditor, "f").hide(); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button1, "f").classList.remove("selected"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button2, "f").classList.remove("selected"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button3, "f").classList.remove("selected"); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button4, "f").classList.remove("selected"); +}, _DatabaseManagerPlugin_loadDatabases = function _DatabaseManagerPlugin_loadDatabases() { + var _a, _b, _c, _d; + var aircraftDatabase = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getAircraftDatabase(); + if (aircraftDatabase != null) + __classPrivateFieldGet(this, _DatabaseManagerPlugin_aircraftEditor, "f").setDatabase(aircraftDatabase); + var helicopterDatabase = (_b = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _b === void 0 ? void 0 : _b.getHelicopterDatabase(); + if (helicopterDatabase != null) + __classPrivateFieldGet(this, _DatabaseManagerPlugin_helicopterEditor, "f").setDatabase(helicopterDatabase); + var groundUnitDatabase = (_c = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _c === void 0 ? void 0 : _c.getGroundUnitDatabase(); + if (groundUnitDatabase != null) + __classPrivateFieldGet(this, _DatabaseManagerPlugin_groundUnitEditor, "f").setDatabase(groundUnitDatabase); + var navyUnitDatabase = (_d = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _d === void 0 ? void 0 : _d.getNavyUnitDatabase(); + if (navyUnitDatabase != null) + __classPrivateFieldGet(this, _DatabaseManagerPlugin_navyUnitEditor, "f").setDatabase(navyUnitDatabase); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_hideAll).call(this); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_aircraftEditor, "f").show(); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button1, "f").classList.add("selected"); +}, _DatabaseManagerPlugin_saveDatabases = function _DatabaseManagerPlugin_saveDatabases() { + var aircraftDatabase = __classPrivateFieldGet(this, _DatabaseManagerPlugin_aircraftEditor, "f").getDatabase(); + if (aircraftDatabase) { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_uploadDatabase).call(this, aircraftDatabase, "aircraftdatabase", "Aircraft database", () => { + var helicopterDatabase = __classPrivateFieldGet(this, _DatabaseManagerPlugin_helicopterEditor, "f").getDatabase(); + if (helicopterDatabase) { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_uploadDatabase).call(this, helicopterDatabase, "helicopterDatabase", "Helicopter database", () => { + var groundUnitDatabase = __classPrivateFieldGet(this, _DatabaseManagerPlugin_groundUnitEditor, "f").getDatabase(); + if (groundUnitDatabase) { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_uploadDatabase).call(this, groundUnitDatabase, "groundUnitDatabase", "Ground Unit database", () => { + var navyUnitDatabase = __classPrivateFieldGet(this, _DatabaseManagerPlugin_navyUnitEditor, "f").getDatabase(); + if (navyUnitDatabase) { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_uploadDatabase).call(this, navyUnitDatabase, "navyUnitDatabase", "Navy Unit database", () => { + var _a, _b, _c, _d, _e; + (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getAircraftDatabase().load(() => { }); + (_b = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _b === void 0 ? void 0 : _b.getHelicopterDatabase().load(() => { }); + (_c = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _c === void 0 ? void 0 : _c.getGroundUnitDatabase().load(() => { }); + (_d = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _d === void 0 ? void 0 : _d.getNavyUnitDatabase().load(() => { }); + (_e = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _e === void 0 ? void 0 : _e.getServerManager().reloadDatabases(() => { + var _a, _b; + (_b = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getPopupsManager().get("infoPopup")) === null || _b === void 0 ? void 0 : _b.setText("Olympus core databases reloaded"); + }); + }); + } + }); + } + }); + } + }); + } +}, _DatabaseManagerPlugin_resetToDefaultDatabases = function _DatabaseManagerPlugin_resetToDefaultDatabases() { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_resetToDefaultDatabase).call(this, "aircraftdatabase", "Aircraft database", () => { + var _a; + (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getAircraftDatabase().load(() => { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_resetToDefaultDatabase).call(this, "helicopterdatabase", "Helicopter database", () => { + var _a; + (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getHelicopterDatabase().load(() => { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_resetToDefaultDatabase).call(this, "groundunitdatabase", "Ground Unit database", () => { + var _a; + (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getGroundUnitDatabase().load(() => { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_resetToDefaultDatabase).call(this, "navyunitdatabase", "Navy Unit database", () => { + var _a; + (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getNavyUnitDatabase().load(() => { + var _a; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_loadDatabases).call(this); + (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getServerManager().reloadDatabases(() => { + var _a, _b; + (_b = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getPopupsManager().get("infoPopup")) === null || _b === void 0 ? void 0 : _b.setText("Olympus core databases reloaded"); + }); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_hideAll).call(this); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_aircraftEditor, "f").show(); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button1, "f").classList.add("selected"); + }); + }); + }); + }); + }); + }); + }); + }); +}, _DatabaseManagerPlugin_restoreToPreviousDatabases = function _DatabaseManagerPlugin_restoreToPreviousDatabases() { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_restoreToPreviousDatabase).call(this, "aircraftdatabase", "Aircraft database", () => { + var _a; + (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getAircraftDatabase().load(() => { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_restoreToPreviousDatabase).call(this, "helicopterdatabase", "Helicopter database", () => { + var _a; + (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getHelicopterDatabase().load(() => { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_restoreToPreviousDatabase).call(this, "groundunitdatabase", "Ground Unit database", () => { + var _a; + (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getGroundUnitDatabase().load(() => { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_restoreToPreviousDatabase).call(this, "navyunitdatabase", "Navy Unit database", () => { + var _a; + (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getNavyUnitDatabase().load(() => { + var _a; + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_loadDatabases).call(this); + (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getServerManager().reloadDatabases(() => { + var _a, _b; + (_b = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getPopupsManager().get("infoPopup")) === null || _b === void 0 ? void 0 : _b.setText("Olympus core databases reloaded"); + }); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_hideAll).call(this); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_aircraftEditor, "f").show(); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_button1, "f").classList.add("selected"); + }); + }); + }); + }); + }); + }); + }); + }); +}, _DatabaseManagerPlugin_uploadDatabase = function _DatabaseManagerPlugin_uploadDatabase(database, name, label, callback) { + var xmlHttp = new XMLHttpRequest(); + xmlHttp.open("PUT", "/api/databases/save/units/" + name); + xmlHttp.setRequestHeader("Content-Type", "application/json"); + xmlHttp.onload = (res) => { + var _a, _b, _c, _d; + if (xmlHttp.status == 200) { + (_b = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getPopupsManager().get("infoPopup")) === null || _b === void 0 ? void 0 : _b.setText(label + " saved successfully"); + callback(); + } + else { + (_d = (_c = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _c === void 0 ? void 0 : _c.getPopupsManager().get("infoPopup")) === null || _d === void 0 ? void 0 : _d.setText("An error has occurred while saving the " + label); + } + }; + xmlHttp.onerror = (res) => { + var _a, _b; + (_b = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getPopupsManager().get("infoPopup")) === null || _b === void 0 ? void 0 : _b.setText("An error has occurred while saving the " + label); + }; + xmlHttp.send(JSON.stringify(database)); +}, _DatabaseManagerPlugin_resetToDefaultDatabase = function _DatabaseManagerPlugin_resetToDefaultDatabase(name, label, callback) { + var xmlHttp = new XMLHttpRequest(); + xmlHttp.open("PUT", "/api/databases/reset/units/" + name); + xmlHttp.setRequestHeader("Content-Type", "application/json"); + xmlHttp.onload = (res) => { + var _a, _b, _c, _d; + if (xmlHttp.status == 200) { + (_b = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getPopupsManager().get("infoPopup")) === null || _b === void 0 ? void 0 : _b.setText(label + " reset successfully"); + callback(); + } + else { + (_d = (_c = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _c === void 0 ? void 0 : _c.getPopupsManager().get("infoPopup")) === null || _d === void 0 ? void 0 : _d.setText("An error has occurred while resetting the " + label); + } + }; + xmlHttp.onerror = (res) => { + var _a, _b; + (_b = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getPopupsManager().get("infoPopup")) === null || _b === void 0 ? void 0 : _b.setText("An error has occurred while resetting the " + label); + }; + xmlHttp.send(""); +}, _DatabaseManagerPlugin_restoreToPreviousDatabase = function _DatabaseManagerPlugin_restoreToPreviousDatabase(name, label, callback) { + var xmlHttp = new XMLHttpRequest(); + xmlHttp.open("PUT", "/api/databases/restore/units/" + name); + xmlHttp.setRequestHeader("Content-Type", "application/json"); + xmlHttp.onload = (res) => { + var _a, _b, _c, _d; + if (xmlHttp.status == 200) { + (_b = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getPopupsManager().get("infoPopup")) === null || _b === void 0 ? void 0 : _b.setText(label + " restored successfully"); + callback(); + } + else { + (_d = (_c = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _c === void 0 ? void 0 : _c.getPopupsManager().get("infoPopup")) === null || _d === void 0 ? void 0 : _d.setText("An error has occurred while restoring the " + label); + } + }; + xmlHttp.onerror = (res) => { + var _a, _b; + (_b = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getPopupsManager().get("infoPopup")) === null || _b === void 0 ? void 0 : _b.setText("An error has occurred while restoring the " + label); + }; + xmlHttp.send(""); +}; + +},{"./airuniteditor":1,"./grounduniteditor":3,"./navyuniteditor":6}],3:[function(require,module,exports){ +"use strict"; +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _GroundUnitEditor_blueprint; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GroundUnitEditor = void 0; +const uniteditor_1 = require("./uniteditor"); +const utils_1 = require("./utils"); +/** Database editor for ground units + * + */ +class GroundUnitEditor extends uniteditor_1.UnitEditor { + constructor(contentDiv1, contentDiv2, contentDiv3) { + super(contentDiv1, contentDiv2, contentDiv3); + _GroundUnitEditor_blueprint.set(this, null); + } + /** Sets a unit blueprint as the currently active one + * + * @param blueprint The blueprint to edit + */ + setBlueprint(blueprint) { + var _a, _b, _c, _d, _e, _f, _g, _h; + __classPrivateFieldSet(this, _GroundUnitEditor_blueprint, blueprint, "f"); + if (__classPrivateFieldGet(this, _GroundUnitEditor_blueprint, "f") !== null) { + this.contentDiv2.replaceChildren(); + var title = document.createElement("label"); + title.innerText = "Unit properties"; + this.contentDiv2.appendChild(title); + (0, utils_1.addStringInput)(this.contentDiv2, "Name", blueprint.name, "text", (value) => { blueprint.name = value; }, true); + (0, utils_1.addStringInput)(this.contentDiv2, "Label", blueprint.label, "text", (value) => { blueprint.label = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Short label", blueprint.shortLabel, "text", (value) => { blueprint.shortLabel = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Type", (_a = blueprint.type) !== null && _a !== void 0 ? _a : "", "text", (value) => { blueprint.type = value; }); + (0, utils_1.addDropdownInput)(this.contentDiv2, "Coalition", blueprint.coalition, ["", "blue", "red"]); + (0, utils_1.addDropdownInput)(this.contentDiv2, "Era", blueprint.era, ["WW2", "Early Cold War", "Mid Cold War", "Late Cold War", "Modern"]); + //addStringInput(this.contentDiv2, "Filename", blueprint.filename?? "", "text", (value: string) => {blueprint.filename = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Cost", (_b = String(blueprint.cost)) !== null && _b !== void 0 ? _b : "", "number", (value) => { blueprint.cost = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Acquisition range [NM]", (_c = String(blueprint.acquisitionRange)) !== null && _c !== void 0 ? _c : "", "number", (value) => { blueprint.acquisitionRange = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Engagement range [NM]", (_d = String(blueprint.engagementRange)) !== null && _d !== void 0 ? _d : "", "number", (value) => { blueprint.engagementRange = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Barrel height [m]", (_e = String(blueprint.barrelHeight)) !== null && _e !== void 0 ? _e : "", "number", (value) => { blueprint.barrelHeight = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Muzzle velocity [m/s]", (_f = String(blueprint.muzzleVelocity)) !== null && _f !== void 0 ? _f : "", "number", (value) => { blueprint.muzzleVelocity = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Aim time [s]", (_g = String(blueprint.aimTime)) !== null && _g !== void 0 ? _g : "", "number", (value) => { blueprint.aimTime = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Burst quantity", (_h = String(blueprint.shotsToFire)) !== null && _h !== void 0 ? _h : "", "number", (value) => { blueprint.shotsToFire = Math.round(parseFloat(value)); }); + } + } + /** Add a new empty blueprint + * + * @param key Blueprint key + */ + addBlueprint(key) { + if (this.database != null) { + this.database.blueprints[key] = { + name: key, + coalition: "", + label: "", + shortLabel: "", + era: "" + }; + this.show(); + this.setBlueprint(this.database.blueprints[key]); + } + } +} +exports.GroundUnitEditor = GroundUnitEditor; +_GroundUnitEditor_blueprint = new WeakMap(); + +},{"./uniteditor":7,"./utils":8}],4:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const databasemanagerplugin_1 = require("./databasemanagerplugin"); globalThis.getOlympusPlugin = () => { return new databasemanagerplugin_1.DatabaseManagerPlugin(); }; -},{"./databasemanagerplugin":2}],4:[function(require,module,exports){ + +},{"./databasemanagerplugin":2}],5:[function(require,module,exports){ +"use strict"; +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _LoadoutEditor_contentDiv, _LoadoutEditor_loadout, _LoadoutEditor_visible; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LoadoutEditor = void 0; +const utils_1 = require("./utils"); +/** The LoadoutEditor allows the user to edit a loadout + * + */ +class LoadoutEditor { + constructor(contentDiv) { + _LoadoutEditor_contentDiv.set(this, void 0); + _LoadoutEditor_loadout.set(this, null); + _LoadoutEditor_visible.set(this, false); + __classPrivateFieldSet(this, _LoadoutEditor_contentDiv, contentDiv, "f"); + __classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f").addEventListener("refresh", () => { + if (__classPrivateFieldGet(this, _LoadoutEditor_visible, "f")) + this.show(); + }); + } + /** Set the loadout to edit + * + * @param loadout The loadout to edit + */ + setLoadout(loadout) { + __classPrivateFieldSet(this, _LoadoutEditor_loadout, loadout, "f"); + } + /** Show the editor + * + */ + show() { + __classPrivateFieldSet(this, _LoadoutEditor_visible, true, "f"); + __classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f").replaceChildren(); + var title = document.createElement("label"); + title.innerText = "Loadout properties"; + __classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f").appendChild(title); + if (__classPrivateFieldGet(this, _LoadoutEditor_loadout, "f")) { + var laodout = __classPrivateFieldGet(this, _LoadoutEditor_loadout, "f"); + (0, utils_1.addStringInput)(__classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f"), "Name", laodout.name, "text", (value) => { laodout.name = value; __classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f").dispatchEvent(new Event("refresh")); }); + (0, utils_1.addStringInput)(__classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f"), "Code", laodout.code, "text", (value) => { laodout.code = value; }); + (0, utils_1.addLoadoutItemsEditor)(__classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f"), __classPrivateFieldGet(this, _LoadoutEditor_loadout, "f")); + } + } + /** Hide the editor + * + */ + hide() { + __classPrivateFieldSet(this, _LoadoutEditor_visible, false, "f"); + __classPrivateFieldGet(this, _LoadoutEditor_contentDiv, "f").replaceChildren(); + } +} +exports.LoadoutEditor = LoadoutEditor; +_LoadoutEditor_contentDiv = new WeakMap(), _LoadoutEditor_loadout = new WeakMap(), _LoadoutEditor_visible = new WeakMap(); + +},{"./utils":8}],6:[function(require,module,exports){ +"use strict"; +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _NavyUnitEditor_blueprint; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NavyUnitEditor = void 0; +const uniteditor_1 = require("./uniteditor"); +const utils_1 = require("./utils"); +/** Database editor for navy units + * + */ +class NavyUnitEditor extends uniteditor_1.UnitEditor { + constructor(contentDiv1, contentDiv2, contentDiv3) { + super(contentDiv1, contentDiv2, contentDiv3); + _NavyUnitEditor_blueprint.set(this, null); + } + /** Sets a unit blueprint as the currently active one + * + * @param blueprint The blueprint to edit + */ + setBlueprint(blueprint) { + var _a, _b, _c, _d; + __classPrivateFieldSet(this, _NavyUnitEditor_blueprint, blueprint, "f"); + if (__classPrivateFieldGet(this, _NavyUnitEditor_blueprint, "f") !== null) { + this.contentDiv2.replaceChildren(); + var title = document.createElement("label"); + title.innerText = "Unit properties"; + this.contentDiv2.appendChild(title); + (0, utils_1.addStringInput)(this.contentDiv2, "Name", blueprint.name, "text", (value) => { blueprint.name = value; }, true); + (0, utils_1.addStringInput)(this.contentDiv2, "Label", blueprint.label, "text", (value) => { blueprint.label = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Short label", blueprint.shortLabel, "text", (value) => { blueprint.shortLabel = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Type", (_a = blueprint.type) !== null && _a !== void 0 ? _a : "", "text", (value) => { blueprint.type = value; }); + (0, utils_1.addDropdownInput)(this.contentDiv2, "Coalition", blueprint.coalition, ["", "blue", "red"]); + (0, utils_1.addDropdownInput)(this.contentDiv2, "Era", blueprint.era, ["WW2", "Early Cold War", "Mid Cold War", "Late Cold War", "Modern"]); + //addStringInput(this.contentDiv2, "Filename", blueprint.filename?? "", "text", (value: string) => {blueprint.filename = value; }); + (0, utils_1.addStringInput)(this.contentDiv2, "Cost", (_b = String(blueprint.cost)) !== null && _b !== void 0 ? _b : "", "number", (value) => { blueprint.cost = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Barrel height [m]", (_c = String(blueprint.barrelHeight)) !== null && _c !== void 0 ? _c : "", "number", (value) => { blueprint.barrelHeight = parseFloat(value); }); + (0, utils_1.addStringInput)(this.contentDiv2, "Muzzle velocity [m/s]", (_d = String(blueprint.muzzleVelocity)) !== null && _d !== void 0 ? _d : "", "number", (value) => { blueprint.muzzleVelocity = parseFloat(value); }); + } + } + /** Add a new empty blueprint + * + * @param key Blueprint key + */ + addBlueprint(key) { + if (this.database != null) { + this.database.blueprints[key] = { + name: key, + coalition: "", + label: "", + shortLabel: "", + era: "" + }; + this.show(); + this.setBlueprint(this.database.blueprints[key]); + } + } +} +exports.NavyUnitEditor = NavyUnitEditor; +_NavyUnitEditor_blueprint = new WeakMap(); + +},{"./uniteditor":7,"./utils":8}],7:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UnitEditor = void 0; +const utils_1 = require("./utils"); +/** Base abstract class of Unit database editors + * + */ class UnitEditor { - constructor(scrollDiv, contentDiv) { + constructor(contentDiv1, contentDiv2, contentDiv3) { + this.blueprint = null; this.database = null; - this.scrollDiv = scrollDiv; - this.contentDiv = contentDiv; - } - setDatabase(database) { - this.database = database; - } - show() { - if (this.database !== null) { - var blueprints = this.database.getBlueprints(); - for (let key in blueprints) { - var div = document.createElement("div"); - this.scrollDiv.appendChild(div); - div.textContent = key; - div.onclick = () => this.setContent(blueprints[key]); + this.visible = false; + this.contentDiv1 = contentDiv1; + this.contentDiv2 = contentDiv2; + this.contentDiv3 = contentDiv3; + /* Refresh the list of units if it changes */ + this.contentDiv1.addEventListener("refresh", () => { + if (this.visible) + this.show(); + }); + /* If the unit properties or loadout are edited, reload the editor */ + this.contentDiv2.addEventListener("refresh", () => { + if (this.visible) { + if (this.blueprint !== null) + this.setBlueprint(this.blueprint); } + }); + this.contentDiv3.addEventListener("refresh", () => { + if (this.visible) { + if (this.blueprint !== null) + this.setBlueprint(this.blueprint); + } + }); + } + /** + * + * @param database The database that the editor will operate on + */ + setDatabase(database) { + this.database = JSON.parse(JSON.stringify(database)); + } + /** Show the editor + * + */ + show() { + this.visible = true; + this.contentDiv1.replaceChildren(); + this.contentDiv2.replaceChildren(); + this.contentDiv3.replaceChildren(); + /* Create the list of units. Each unit is clickable to activate the editor on it */ + if (this.database != null) { + var title = document.createElement("label"); + title.innerText = "Units list"; + this.contentDiv1.appendChild(title); + (0, utils_1.addBlueprintsScroll)(this.contentDiv1, this.database, (key) => { + if (this.database != null) + this.setBlueprint(this.database.blueprints[key]); + }); + (0, utils_1.addNewElementInput)(this.contentDiv1, (ev, input) => { + if (input.value != "") + this.addBlueprint((input).value); + }); } } - addStringInput(key, value) { - var dt = document.createElement("dt"); - var dd = document.createElement("dd"); - dt.innerText = key; - var input = document.createElement("input"); - input.value = value; - input.textContent = value; - dd.appendChild(input); - this.contentDiv.appendChild(dt); - this.contentDiv.appendChild(dd); + /** Hid the editor + * + */ + hide() { + this.visible = false; + this.contentDiv1.replaceChildren(); + this.contentDiv2.replaceChildren(); + this.contentDiv3.replaceChildren(); } - addDropdownInput(key, value, options) { - var dt = document.createElement("dt"); - var dd = document.createElement("dd"); - dt.innerText = key; - var input = document.createElement("input"); - input.value = value; - input.textContent = value; - dd.appendChild(input); - this.contentDiv.appendChild(dt); - this.contentDiv.appendChild(dd); + /** + * + * @returns The edited database + */ + getDatabase() { + return this.database; } } exports.UnitEditor = UnitEditor; -},{}]},{},[3]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvYWlydW5pdGVkaXRvci50cyIsInNyYy9kYXRhYmFzZW1hbmFnZXJwbHVnaW4udHMiLCJzcmMvaW5kZXgudHMiLCJzcmMvdW5pdGVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztBQ0NBLDZDQUEwQztBQUUxQyxNQUFhLGFBQWMsU0FBUSx1QkFBVTtJQUN6QyxZQUFZLFNBQXNCLEVBQUUsVUFBdUI7UUFDdkQsS0FBSyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQXdCO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNKO0FBWkQsc0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDZEQsbURBQWdEO0FBR2hELE1BQWEscUJBQXFCO0lBUzlCO1FBUkEscUNBQTBCLElBQUksRUFBQztRQUUvQixpREFBc0I7UUFDdEIsbURBQXdCO1FBQ3hCLG9EQUF5QjtRQUV6Qix3REFBK0I7UUFHM0IsdUJBQUEsSUFBSSxrQ0FBWSxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFBLENBQUM7UUFDOUMsdUJBQUEsSUFBSSxzQ0FBUyxDQUFDLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQztRQUM1Qyx1QkFBQSxJQUFJLHNDQUFTLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRSxHQUFHLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3JELHVCQUFBLElBQUksc0NBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUFBLElBQUksc0NBQVMsQ0FBQyxDQUFDO1FBRXpDLHVCQUFBLElBQUksb0NBQWMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBQSxDQUFDO1FBQ2hELHVCQUFBLElBQUksd0NBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDckQsdUJBQUEsSUFBSSxzQ0FBUyxDQUFDLFdBQVcsQ0FBQyx1QkFBQSxJQUFJLHdDQUFXLENBQUMsQ0FBQztRQUUzQyx1QkFBQSxJQUFJLHFDQUFlLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQUEsQ0FBQztRQUNqRCx1QkFBQSxJQUFJLHlDQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3ZELHVCQUFBLElBQUksc0NBQVMsQ0FBQyxXQUFXLENBQUMsdUJBQUEsSUFBSSx5Q0FBWSxDQUFDLENBQUM7UUFFNUMsdUJBQUEsSUFBSSx5Q0FBbUIsSUFBSSw2QkFBYSxDQUFDLHVCQUFBLElBQUksd0NBQVcsRUFBRSx1QkFBQSxJQUFJLHlDQUFZLENBQUMsTUFBQSxDQUFDO0lBQ2hGLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyx5QkFBeUIsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVE7O1FBQ2YsdUJBQUEsSUFBSSw4QkFBUSxHQUFHLE1BQUEsQ0FBQztRQUVoQixJQUFJLGdCQUFnQixHQUFHLE1BQUEsdUJBQUEsSUFBSSxrQ0FBSywwQ0FBRSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3hELElBQUksZ0JBQWdCLElBQUksSUFBSSxFQUFFO1lBQzFCLHVCQUFBLElBQUksNkNBQWdCLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDbkQsdUJBQUEsSUFBSSw2Q0FBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMvQjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyx1QkFBQSxJQUFJLHNDQUFTLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFjO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0o7QUFsREQsc0RBa0RDOzs7OztBQ3RERCxtRUFBZ0U7QUFFaEUsVUFBVSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsRUFBRTtJQUMvQixPQUFPLElBQUksNkNBQXFCLEVBQUUsQ0FBQztBQUN2QyxDQUFDLENBQUE7Ozs7O0FDREQsTUFBc0IsVUFBVTtJQUs1QixZQUFZLFNBQXNCLEVBQUUsVUFBdUI7UUFKM0QsYUFBUSxHQUF3QixJQUFJLENBQUM7UUFLakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFhO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJO1FBQ0EsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUN4QixJQUFJLFVBQVUsR0FBbUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUUvRSxLQUFLLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRTtnQkFDeEIsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO2dCQUN0QixHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDeEQ7U0FDSjtJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDckMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ25CLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDcEIsS0FBSyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDMUIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxPQUFpQjtRQUMxRCxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsRUFBRSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDbkIsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNwQixLQUFLLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUMxQixFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FJSjtBQXJERCxnQ0FxREMiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCJpbXBvcnQgeyBVbml0Qmx1ZXByaW50IH0gZnJvbSBcImludGVyZmFjZXNcIjtcclxuaW1wb3J0IHsgVW5pdEVkaXRvciB9IGZyb20gXCIuL3VuaXRlZGl0b3JcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBBaXJVbml0RWRpdG9yIGV4dGVuZHMgVW5pdEVkaXRvciB7XHJcbiAgICBjb25zdHJ1Y3RvcihzY3JvbGxEaXY6IEhUTUxFbGVtZW50LCBjb250ZW50RGl2OiBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgIHN1cGVyKHNjcm9sbERpdiwgY29udGVudERpdik7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q29udGVudChibHVlcHJpbnQ6IFVuaXRCbHVlcHJpbnQpIHtcclxuICAgICAgICB0aGlzLmNvbnRlbnREaXYucmVwbGFjZUNoaWxkcmVuKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5hZGRTdHJpbmdJbnB1dChcIk5hbWVcIiwgYmx1ZXByaW50Lm5hbWUpO1xyXG4gICAgICAgIHRoaXMuYWRkU3RyaW5nSW5wdXQoXCJMYWJlbFwiLCBibHVlcHJpbnQubGFiZWwpO1xyXG4gICAgICAgIHRoaXMuYWRkU3RyaW5nSW5wdXQoXCJTaG9ydCBsYWJlbFwiLCBibHVlcHJpbnQuc2hvcnRMYWJlbCk7XHJcbiAgICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgT2x5bXB1c1BsdWdpbiB9IGZyb20gXCJpbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IEFpclVuaXRFZGl0b3IgfSBmcm9tIFwiLi9haXJ1bml0ZWRpdG9yXCI7XHJcbmltcG9ydCB7IE9seW1wdXNBcHAgfSBmcm9tIFwib2x5bXB1c2FwcFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFiYXNlTWFuYWdlclBsdWdpbiBpbXBsZW1lbnRzIE9seW1wdXNQbHVnaW4ge1xyXG4gICAgI2FwcDogT2x5bXB1c0FwcCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICNlbGVtZW50OiBIVE1MRWxlbWVudDtcclxuICAgICNzY3JvbGxEaXY6IEhUTUxFbGVtZW50O1xyXG4gICAgI2NvbnRlbnREaXY6IEhUTUxFbGVtZW50O1xyXG5cclxuICAgICNhaXJjcmFmdEVkaXRvcjogQWlyVW5pdEVkaXRvcjtcclxuICAgICAgICBcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuI2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIHRoaXMuI2VsZW1lbnQuaWQgPSBcImRhdGFiYXNlLWNvbnRyb2wtcGFuZWxcIjtcclxuICAgICAgICB0aGlzLiNlbGVtZW50Lm9uY29udGV4dG1lbnUgPSAoKSA9PiB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgICAgIHRoaXMuI2VsZW1lbnQuY2xhc3NMaXN0LmFkZChcIm9sLWRpYWxvZ1wiKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuI2VsZW1lbnQpO1xyXG5cclxuICAgICAgICB0aGlzLiNzY3JvbGxEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIHRoaXMuI3Njcm9sbERpdi5jbGFzc0xpc3QuYWRkKFwiZGMtc2Nyb2xsLWNvbnRhaW5lclwiKTtcclxuICAgICAgICB0aGlzLiNlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuI3Njcm9sbERpdik7XHJcblxyXG4gICAgICAgIHRoaXMuI2NvbnRlbnREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIHRoaXMuI2NvbnRlbnREaXYuY2xhc3NMaXN0LmFkZChcImRjLWNvbnRlbnQtY29udGFpbmVyXCIpO1xyXG4gICAgICAgIHRoaXMuI2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy4jY29udGVudERpdik7XHJcblxyXG4gICAgICAgIHRoaXMuI2FpcmNyYWZ0RWRpdG9yID0gbmV3IEFpclVuaXRFZGl0b3IodGhpcy4jc2Nyb2xsRGl2LCB0aGlzLiNjb250ZW50RGl2KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXROYW1lKCkge1xyXG4gICAgICAgIHJldHVybiBcIkRhdGFiYXNlIENvbnRyb2wgUGx1Z2luXCJcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKGFwcDogYW55KSB7XHJcbiAgICAgICAgdGhpcy4jYXBwID0gYXBwO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHZhciBhaXJjcmFmdERhdGFiYXNlID0gdGhpcy4jYXBwPy5nZXRBaXJjcmFmdERhdGFiYXNlKCk7XHJcbiAgICAgICAgaWYgKGFpcmNyYWZ0RGF0YWJhc2UgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLiNhaXJjcmFmdEVkaXRvci5zZXREYXRhYmFzZShhaXJjcmFmdERhdGFiYXNlKTtcclxuICAgICAgICAgICAgdGhpcy4jYWlyY3JhZnRFZGl0b3Iuc2hvdygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RWxlbWVudCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jZWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGUoYm9vbD86IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmdldEVsZW1lbnQoKS5jbGFzc0xpc3QudG9nZ2xlKFwiaGlkZVwiLCBib29sKTtcclxuICAgIH1cclxufSIsImltcG9ydCB7IERhdGFiYXNlTWFuYWdlclBsdWdpbiB9IGZyb20gXCIuL2RhdGFiYXNlbWFuYWdlcnBsdWdpblwiO1xyXG5cclxuZ2xvYmFsVGhpcy5nZXRPbHltcHVzUGx1Z2luID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRhYmFzZU1hbmFnZXJQbHVnaW4oKTtcclxufSIsImltcG9ydCB7IFVuaXRCbHVlcHJpbnQgfSBmcm9tIFwiaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBVbml0RGF0YWJhc2UgfSBmcm9tIFwidW5pdC9kYXRhYmFzZXMvdW5pdGRhdGFiYXNlXCI7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVW5pdEVkaXRvciB7XHJcbiAgICBkYXRhYmFzZTogVW5pdERhdGFiYXNlIHwgbnVsbCA9IG51bGw7XHJcbiAgICBzY3JvbGxEaXY6IEhUTUxFbGVtZW50O1xyXG4gICAgY29udGVudERpdjogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3Ioc2Nyb2xsRGl2OiBIVE1MRWxlbWVudCwgY29udGVudERpdjogSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLnNjcm9sbERpdiA9IHNjcm9sbERpdjtcclxuICAgICAgICB0aGlzLmNvbnRlbnREaXYgPSBjb250ZW50RGl2O1xyXG4gICAgfVxyXG5cclxuICAgIHNldERhdGFiYXNlKGRhdGFiYXNlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRhdGFiYXNlID0gZGF0YWJhc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvdygpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhYmFzZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgYmx1ZXByaW50czoge1trZXk6IHN0cmluZ106IFVuaXRCbHVlcHJpbnR9ID0gdGhpcy5kYXRhYmFzZS5nZXRCbHVlcHJpbnRzKCk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gYmx1ZXByaW50cykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbERpdi5hcHBlbmRDaGlsZChkaXYpO1xyXG4gICAgICAgICAgICAgICAgZGl2LnRleHRDb250ZW50ID0ga2V5O1xyXG4gICAgICAgICAgICAgICAgZGl2Lm9uY2xpY2sgPSAoKSA9PiB0aGlzLnNldENvbnRlbnQoYmx1ZXByaW50c1trZXldKTtcclxuICAgICAgICAgICAgfSAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZGRTdHJpbmdJbnB1dChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHZhciBkdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkdFwiKTtcclxuICAgICAgICB2YXIgZGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGRcIik7XHJcbiAgICAgICAgZHQuaW5uZXJUZXh0ID0ga2V5O1xyXG4gICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcclxuICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIGlucHV0LnRleHRDb250ZW50ID0gdmFsdWU7XHJcbiAgICAgICAgZGQuYXBwZW5kQ2hpbGQoaW5wdXQpO1xyXG4gICAgICAgIHRoaXMuY29udGVudERpdi5hcHBlbmRDaGlsZChkdCk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50RGl2LmFwcGVuZENoaWxkKGRkKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGREcm9wZG93bklucHV0KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHZhciBkdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkdFwiKTtcclxuICAgICAgICB2YXIgZGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGRcIik7XHJcbiAgICAgICAgZHQuaW5uZXJUZXh0ID0ga2V5O1xyXG4gICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcclxuICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIGlucHV0LnRleHRDb250ZW50ID0gdmFsdWU7XHJcbiAgICAgICAgZGQuYXBwZW5kQ2hpbGQoaW5wdXQpO1xyXG4gICAgICAgIHRoaXMuY29udGVudERpdi5hcHBlbmRDaGlsZChkdCk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50RGl2LmFwcGVuZENoaWxkKGRkKTtcclxuICAgIH1cclxuXHJcbiAgICBhYnN0cmFjdCBzZXRDb250ZW50KGJsdWVwcmludDogVW5pdEJsdWVwcmludCk6IHZvaWQ7XHJcbiAgICBcclxufSJdfQ== + +},{"./utils":8}],8:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.addLoadoutsScroll = exports.addBlueprintsScroll = exports.addNewElementInput = exports.addLoadoutItemsEditor = exports.addDropdownInput = exports.addStringInput = void 0; +/** This file contains a set of utility functions that are reused in the various editors and allows to declutter the classes + * + */ +/** Add a string input in the form of String: [ value ] + * + * @param div The HTMLElement that will contain the input + * @param key The key of the input, which will be used as label + * @param value The initial value of the input + * @param type The type of the input, e.g. "Text" or "Number" as per html standard + * @param callback Callback called when the user enters a new value + * @param disabled If true, the input will be disabled and read only + */ +function addStringInput(div, key, value, type, callback, disabled) { + var row = document.createElement("div"); + var dt = document.createElement("dt"); + var dd = document.createElement("dd"); + dt.innerText = key; + var input = document.createElement("input"); + input.value = value; + input.textContent = value; + input.type = type !== null && type !== void 0 ? type : "text"; + input.disabled = disabled !== null && disabled !== void 0 ? disabled : false; + input.onchange = () => callback(input.value); + dd.appendChild(input); + row.appendChild(dt); + row.appendChild(dd); + row.classList.add("input-row"); + div.appendChild(row); +} +exports.addStringInput = addStringInput; +/** Add a dropdown (select) input + * + * @param div The HTMLElement that will contain the input + * @param key The key of the input, which will be used as label + * @param value The initial value of the input + * @param options The dropdown options + */ +function addDropdownInput(div, key, value, options) { + var row = document.createElement("div"); + var dt = document.createElement("dt"); + var dd = document.createElement("dd"); + dt.innerText = key; + var select = document.createElement("select"); + options.forEach((option) => { + var el = document.createElement("option"); + el.value = option; + el.innerText = option; + select.appendChild(el); + }); + select.value = value; + dd.appendChild(select); + row.appendChild(dt); + row.appendChild(dd); + row.classList.add("input-row"); + div.appendChild(row); +} +exports.addDropdownInput = addDropdownInput; +/** Create a loadout items editor. This editor allows to add or remove loadout items, as well as changing their name and quantity + * + * @param div The HTMLElement that will contain the editor + * @param loadout The loadout to edit + */ +function addLoadoutItemsEditor(div, loadout) { + var itemsEl = document.createElement("div"); + itemsEl.classList.add("dm-scroll-container", "dm-items-container"); + /* Create a row for each loadout item to allow and change the name and quantity of the item itself */ + loadout.items.forEach((item, index) => { + var rowDiv = document.createElement("div"); + var nameLabel = document.createElement("label"); + nameLabel.innerText = "Name"; + rowDiv.appendChild(nameLabel); + var nameInput = document.createElement("input"); + rowDiv.appendChild(nameInput); + nameInput.textContent = item.name; + nameInput.value = item.name; + nameInput.onchange = () => { loadout.items[index].name = nameInput.value; }; + var quantityLabel = document.createElement("label"); + quantityLabel.innerText = "Quantity"; + rowDiv.appendChild(quantityLabel); + var quantityInput = document.createElement("input"); + rowDiv.appendChild(quantityInput); + quantityInput.textContent = String(item.quantity); + quantityInput.value = String(item.quantity); + quantityInput.type = "number"; + quantityInput.step = "1"; + quantityInput.onchange = () => { loadout.items[index].quantity = parseInt(quantityInput.value); }; + /* This button allows to remove the item */ + var button = document.createElement("button"); + button.innerText = "X"; + button.onclick = () => { + loadout.items.splice(index, 1); + div.dispatchEvent(new Event("refresh")); + }; + rowDiv.appendChild(button); + itemsEl.appendChild(rowDiv); + }); + div.appendChild(itemsEl); + /* Button to add a new item to the loadout */ + var inputDiv = document.createElement("div"); + inputDiv.classList.add("dm-new-item-input"); + var button = document.createElement("button"); + button.innerText = "Add"; + inputDiv.appendChild(button); + div.appendChild(inputDiv); + button.addEventListener("click", (ev) => { + loadout === null || loadout === void 0 ? void 0 : loadout.items.push({ + name: "", + quantity: 1 + }); + div.dispatchEvent(new Event("refresh")); + }); +} +exports.addLoadoutItemsEditor = addLoadoutItemsEditor; +/** Add a input and button to create a new element in a list. It uses a generic callback to actually add the element. + * + * @param div The HTMLElement that will contain the input and button + * @param callback Callback called when the user clicks on "Add" + */ +function addNewElementInput(div, callback) { + var inputDiv = document.createElement("div"); + inputDiv.classList.add("dm-new-element-input"); + var input = document.createElement("input"); + inputDiv.appendChild(input); + var button = document.createElement("button"); + button.innerText = "Add"; + button.addEventListener("click", (ev) => callback(ev, input)); + inputDiv.appendChild(button); + div.appendChild(inputDiv); +} +exports.addNewElementInput = addNewElementInput; +/** Add a scrollable list of blueprints + * + * @param div The HTMLElement that will contain the list + * @param database The database that will be used to fill the list of blueprints + * @param callback Callback called when the user clicks on one of the elements + */ +function addBlueprintsScroll(div, database, callback) { + var scrollDiv = document.createElement("div"); + scrollDiv.classList.add("dm-scroll-container"); + if (database !== null) { + var blueprints = database.blueprints; + for (let key in Object.keys(blueprints).sort()) { + var rowDiv = document.createElement("div"); + scrollDiv.appendChild(rowDiv); + var text = document.createElement("label"); + text.textContent = key; + text.onclick = () => callback(key); + rowDiv.appendChild(text); + /* This button allows to remove an element from the list. It requires a refresh. */ + var button = document.createElement("button"); + button.innerText = "X"; + button.onclick = () => { + delete blueprints[key]; + div.dispatchEvent(new Event("refresh")); + }; + rowDiv.appendChild(button); + } + } + div.appendChild(scrollDiv); +} +exports.addBlueprintsScroll = addBlueprintsScroll; +/** Add a scrollable list of loadouts + * + * @param div The HTMLElement that will contain the list + * @param loadouts The loadouts that will be used to fill the list + * @param callback Callback called when the user clicks on one of the elements + */ +function addLoadoutsScroll(div, loadouts, callback) { + var loadoutsEl = document.createElement("div"); + loadoutsEl.classList.add("dm-scroll-container", "dm-loadout-container"); + loadouts.forEach((loadout, index) => { + var rowDiv = document.createElement("div"); + loadoutsEl.appendChild(rowDiv); + var text = document.createElement("label"); + text.textContent = loadout.name; + text.onclick = () => { callback(loadout); }; + rowDiv.appendChild(text); + /* The "Empty loadout" can not be removed */ + if (loadout.name !== "Empty loadout") { + /* This button allows to remove an element from the list. It requires a refresh. */ + var button = document.createElement("button"); + button.innerText = "X"; + button.onclick = () => { + loadouts.splice(index, 1); + div.dispatchEvent(new Event("refresh")); + }; + rowDiv.appendChild(button); + } + }); + div.appendChild(loadoutsEl); +} +exports.addLoadoutsScroll = addLoadoutsScroll; + +},{}]},{},[4]); diff --git a/client/plugins/databasemanager/src/grounduniteditor.ts b/client/plugins/databasemanager/src/grounduniteditor.ts index 5f6ea6f2..81853957 100644 --- a/client/plugins/databasemanager/src/grounduniteditor.ts +++ b/client/plugins/databasemanager/src/grounduniteditor.ts @@ -34,8 +34,8 @@ export class GroundUnitEditor extends UnitEditor { addDropdownInput(this.contentDiv2, "Era", blueprint.era, ["WW2", "Early Cold War", "Mid Cold War", "Late Cold War", "Modern"]); //addStringInput(this.contentDiv2, "Filename", blueprint.filename?? "", "text", (value: string) => {blueprint.filename = value; }); addStringInput(this.contentDiv2, "Cost", String(blueprint.cost)?? "", "number", (value: string) => {blueprint.cost = parseFloat(value); }); - addStringInput(this.contentDiv2, "Acquisition range [NM]", String(blueprint.acquisitionRange)?? "", "number", (value: string) => {blueprint.acquisitionRange = parseFloat(value); }); - addStringInput(this.contentDiv2, "Engagement range [NM]", String(blueprint.engagementRange)?? "", "number", (value: string) => {blueprint.engagementRange = parseFloat(value); }); + addStringInput(this.contentDiv2, "Acquisition range [m]", String(blueprint.acquisitionRange)?? "", "number", (value: string) => {blueprint.acquisitionRange = parseFloat(value); }); + addStringInput(this.contentDiv2, "Engagement range [m]", String(blueprint.engagementRange)?? "", "number", (value: string) => {blueprint.engagementRange = parseFloat(value); }); addStringInput(this.contentDiv2, "Barrel height [m]", String(blueprint.barrelHeight)?? "", "number", (value: string) => {blueprint.barrelHeight = parseFloat(value); }); addStringInput(this.contentDiv2, "Muzzle velocity [m/s]", String(blueprint.muzzleVelocity)?? "", "number", (value: string) => {blueprint.muzzleVelocity = parseFloat(value); }); addStringInput(this.contentDiv2, "Aim time [s]", String(blueprint.aimTime)?? "", "number", (value: string) => {blueprint.aimTime = parseFloat(value); }); diff --git a/client/plugins/databasemanager/src/utils.ts b/client/plugins/databasemanager/src/utils.ts index 47035467..7a70edf2 100644 --- a/client/plugins/databasemanager/src/utils.ts +++ b/client/plugins/databasemanager/src/utils.ts @@ -68,6 +68,7 @@ export function addLoadoutItemsEditor(div: HTMLElement, loadout: LoadoutBlueprin itemsEl.classList.add("dm-scroll-container", "dm-items-container"); /* Create a row for each loadout item to allow and change the name and quantity of the item itself */ + loadout.items.sort((a: LoadoutItemBlueprint, b: LoadoutItemBlueprint) => a.name.localeCompare(b.name, undefined, {sensitivity: 'base'})); loadout.items.forEach((item: LoadoutItemBlueprint, index: number) => { var rowDiv = document.createElement("div"); @@ -154,7 +155,7 @@ export function addBlueprintsScroll(div: HTMLElement, database: {blueprints: {[k if (database !== null) { var blueprints: {[key: string]: UnitBlueprint} = database.blueprints; - for (let key in blueprints) { + for (let key of Object.keys(blueprints).sort((a, b) => a.localeCompare(b, undefined, {sensitivity: 'base'}))) { var rowDiv = document.createElement("div"); scrollDiv.appendChild(rowDiv); @@ -186,6 +187,7 @@ export function addLoadoutsScroll(div: HTMLElement, loadouts: LoadoutBlueprint[] var loadoutsEl = document.createElement("div"); loadoutsEl.classList.add("dm-scroll-container", "dm-loadout-container") + loadouts.sort((a: LoadoutBlueprint, b: LoadoutBlueprint) => a.name.localeCompare(b.name, undefined, {sensitivity: 'base'})); loadouts.forEach((loadout: LoadoutBlueprint, index: number) => { var rowDiv = document.createElement("div"); loadoutsEl.appendChild(rowDiv); diff --git a/client/plugins/databasemanager/style.css b/client/plugins/databasemanager/style.css index 3c1a6b24..47a50446 100644 --- a/client/plugins/databasemanager/style.css +++ b/client/plugins/databasemanager/style.css @@ -71,7 +71,7 @@ } .dm-content-container:nth-of-type(1) { - width: 200px; + width: 300px; } .dm-content-container:nth-of-type(2) { diff --git a/client/public/databases/units/aircraftdatabase.json b/client/public/databases/units/aircraftdatabase.json index 6258e44f..f9d20a95 100644 --- a/client/public/databases/units/aircraftdatabase.json +++ b/client/public/databases/units/aircraftdatabase.json @@ -3,7 +3,7 @@ "name": "A-10C_2", "coalition": "blue", "era": "Late Cold War", - "label": "A-10C Warthog test", + "label": "A-10C Warthog", "shortLabel": "10", "loadouts": [ { diff --git a/client/public/databases/units/groundunitdatabase.json b/client/public/databases/units/groundunitdatabase.json index c83e7534..139ec43d 100644 --- a/client/public/databases/units/groundunitdatabase.json +++ b/client/public/databases/units/groundunitdatabase.json @@ -1,7327 +1,7847 @@ { - "1L13 EWR": { - "name": "1L13 EWR", - "coalition": "red", - "era": "Late Cold War", - "label": "Box Spring", - "shortLabel": "1L13 EWR", - "filename": "", - "type": "Radar", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "2B11 mortar": { - "name": "2B11 mortar", - "coalition": "red", - "era": "Late Cold War", - "label": "2B11 mortar", - "shortLabel": "2B11 mortar", - "filename": "", - "type": "Gun Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "2S6 Tunguska": { - "name": "2S6 Tunguska", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-19 Tunguska", - "shortLabel": "SA-19", - "range": "Short", - "filename": "", - "type": "AAA/SAM", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "55G6 EWR": { - "name": "55G6 EWR", - "coalition": "red", - "era": "Early Cold War", - "label": "Tall Rack", - "shortLabel": "55G6 EWR", - "filename": "", - "type": "Radar", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "5p73 s-125 ln": { - "name": "5p73 s-125 ln", - "coalition": "red", - "era": "Early Cold War", - "label": "SA-3 Launcher", - "shortLabel": "5p73 s-125 ln", - "range": "Medium", - "filename": "", - "type": "SAM Launcher", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "AAV7": { - "name": "AAV7", - "coalition": "blue", - "era": "Mid Cold War", - "label": "AAV7", - "shortLabel": "AAV7", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "ATMZ-5": { - "name": "ATMZ-5", - "coalition": "red", - "era": "Early Cold War", - "label": "ATMZ-5", - "shortLabel": "ATMZ-5", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "ATZ-10": { - "name": "ATZ-10", - "coalition": "red", - "era": "Early Cold War", - "label": "ATZ-10", - "shortLabel": "ATZ-10", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "BMD-1": { - "name": "BMD-1", - "coalition": "red", - "era": "Mid Cold War", - "label": "BMD-1", - "shortLabel": "BMD-1", - "filename": "", - "type": "IFV", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "iran - camo": { - "name": "IRAN - camo", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "barrelHeight": 1.25, - "muzzleVelocity": 900 - }, - "BMP-1": { - "name": "BMP-1", - "coalition": "red", - "era": "Mid Cold War", - "label": "BMP-1", - "shortLabel": "BMP-1", - "filename": "", - "type": "IFV", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grg_summer": { - "name": "GRG_Summer", - "countries": "All" - }, - "grg_autumn": { - "name": "GRG_Autumn", - "countries": "All" - }, - "grg_winter": { - "name": "GRG_Winter", - "countries": "All" - }, - "grg_spring": { - "name": "GRG_Spring", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - } - } - }, - "BMP-2": { - "name": "BMP-2", - "coalition": "red", - "era": "Mid Cold War", - "label": "BMP-2", - "shortLabel": "BMP-2", - "filename": "", - "type": "IFV", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "grg_summer": { - "name": "GRG_Summer", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grg_autumn": { - "name": "GRG_Autumn", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grg_winter": { - "name": "GRG_Winter", - "countries": "All" - }, - "grg_spring": { - "name": "GRG_Spring", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "barrelHeight": 1.95, - "muzzleVelocity": 970 - }, - "BMP-3": { - "name": "BMP-3", - "coalition": "red", - "era": "Late Cold War", - "label": "BMP-3", - "shortLabel": "BMP-3", - "filename": "", - "type": "IFV", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "BRDM-2": { - "name": "BRDM-2", - "coalition": "red", - "era": "Early Cold War", - "label": "BRDM-2", - "shortLabel": "BRDM-2", - "filename": "", - "type": "Reconnaissance", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "BTR-80": { - "name": "BTR-80", - "coalition": "red", - "era": "Late Cold War", - "label": "BTR-80", - "shortLabel": "BTR-80", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "light green autumn": { - "name": "Light Green Autumn", - "countries": "All" - }, - "military police autumn": { - "name": "Military Police Autumn", - "countries": "All" - }, - "light green winter": { - "name": "Light Green Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "military police winter": { - "name": "Military Police Winter", - "countries": "All" - }, - "military police spring": { - "name": "Military Police Spring", - "countries": "All" - }, - "light green spring": { - "name": "Light Green Spring", - "countries": "All" - }, - "green autumn": { - "name": "Green_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "green winter": { - "name": "Green_Winter", - "countries": "All" - }, - "military police summer": { - "name": "Military Police Summer", - "countries": "All" - }, - "light green summer": { - "name": "Light_Green_Summer", - "countries": "All" - }, - "green spring": { - "name": "Green_Spring", - "countries": "All" - }, - "green summer": { - "name": "Green_Summer", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "BTR_D": { - "name": "BTR_D", - "coalition": "red", - "era": "Mid Cold War", - "label": "BTR_D", - "shortLabel": "BTR_D", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Bunker": { - "name": "Bunker", - "coalition": "", - "era": "", - "label": "Bunker", - "shortLabel": "Bunker", - "filename": "", - "type": "Static", - "enabled": true - }, - "Challenger2": { - "name": "Challenger2", - "coalition": "blue", - "era": "Modern", - "label": "Challenger2", - "shortLabel": "Challenger2", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Cobra": { - "name": "Cobra", - "coalition": "blue", - "era": "Modern", - "label": "Otokar Cobra", - "shortLabel": "Cobra", - "filename": "", - "type": "Reconnaissance", - "enabled": true - }, - "Dog Ear radar": { - "name": "Dog Ear radar", - "coalition": "red", - "era": "Mid Cold War", - "label": "Dog Ear", - "shortLabel": "Dog Ear radar", - "filename": "", - "type": "SAM Search radar", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "GAZ-3307": { - "name": "GAZ-3307", - "coalition": "red", - "era": "Early Cold War", - "label": "GAZ-3307", - "shortLabel": "GAZ-3307", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "GAZ-3308": { - "name": "GAZ-3308", - "coalition": "red", - "era": "Early Cold War", - "label": "GAZ-3308", - "shortLabel": "GAZ-3308", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "GAZ-66": { - "name": "GAZ-66", - "coalition": "red", - "era": "Early Cold War", - "label": "GAZ-66", - "shortLabel": "GAZ-66", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Gepard": { - "name": "Gepard", - "coalition": "blue", - "era": "Late Cold War", - "label": "Gepard", - "shortLabel": "Gepard", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "barrelHeight": 2.35, - "muzzleVelocity": 1440 - }, - "Grad-URAL": { - "name": "Grad-URAL", - "coalition": "red", - "era": "Mid Cold War", - "label": "Grad", - "shortLabel": "Grad", - "filename": "", - "type": "Rocket Artillery", - "enabled": true - }, - "HEMTT TFFT": { - "name": "HEMTT TFFT", - "coalition": "blue", - "era": "Late Cold War", - "label": "HEMTT TFFT", - "shortLabel": "HEMTT TFFT", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Hawk SAM Battery": { - "name": "Hawk SAM Battery", - "coalition": "blue", - "era": "Early Cold War", - "label": "Hawk SAM Battery", - "shortLabel": "Hawk SAM Battery", - "range": "Medium", - "filename": "", - "type": "SAM Site", - "enabled": true - }, - "Hawk cwar": { - "name": "Hawk cwar", - "coalition": "blue", - "era": "Early Cold War", - "label": "Hawk Continous Wave Acquisition Radar", - "shortLabel": "Hawk cwar", - "range": "Long", - "filename": "", - "type": "SAM Track radar", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Hawk ln": { - "name": "Hawk ln", - "coalition": "blue", - "era": "Late Cold War", - "label": "Hawk Launcher", - "shortLabel": "Hawk ln", - "filename": "", - "type": "SAM Launcher", - "enabled": true, - "liveries": { - "xx337 - 92 sqn blue tail": { - "name": "XX337-92Sqn", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-341 grey": { - "name": "HW-341 Grey", - "countries": [ - "FIN" - ] - }, - "xx245 - 2009 raf hawk display": { - "name": "XX245-RAF Hawk Display 2009", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-329 green brown": { - "name": "HW-329 Green Brown", - "countries": [ - "FIN" - ] - }, - "swiss u-1268 - byebyehawk": { - "name": "U-1268 - ByeByeHawk", - "countries": [ - "SUI" - ] - }, - "25th fts, vance afb, oklahoma (vn)": { - "name": "25th FTS, Vance AFB, Oklahoma (VN)", - "countries": [ - "USA" - ] - }, - "xx226 - 74sqn 1992-2000": { - "name": "74Sqn XX226 1992-2000", - "countries": [ - "UK" - ] - }, - "finland hw-373 ex-swiss air force": { - "name": "HW-373 Ex-Swiss Air Force", - "countries": [ - "FIN" - ] - }, - "swiss u-1252 - normal": { - "name": "U-1252 - Normal", - "countries": [ - "SUI" - ] - }, - "swiss u-1270 - wallis": { - "name": "U-1270 - Wallis", - "countries": [ - "SUI" - ] - }, - "1st rs, beale afb, california (bb)": { - "name": "1st RS, Beale AFB, California (BB)", - "countries": [ - "USA" - ] - }, - "xx100 - tfc": { - "name": "The Fighter Collection XX100", - "countries": [ - "UK" - ] - }, - "509th bs, whitman afb, missouri (wm)": { - "name": "509th BS, Whiteman AFB, Missouri (WM)", - "countries": [ - "USA" - ] - }, - "xx218 - 208sqn": { - "name": "208Sqn XX218", - "countries": [ - "UK" - ] - }, - "xx316 - fradu royal navy": { - "name": "Royal Navy XX316", - "countries": [ - "UK" - ] - }, - "usaf aggressor 269": { - "name": "USAF-AGGRESSOR-269", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "swiss u-1251 - white": { - "name": "U-1251 - White", - "countries": [ - "SUI" - ] - }, - "xx201 - 2010 raf hawk display": { - "name": "XX201-4FTS-HawkDisplay2010", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx175 - fradu royal navy": { - "name": "Royal Navy XX175", - "countries": [ - "UK" - ] - }, - "1018 - united arab emirates": { - "name": "United Arab Emirates Air Force", - "countries": [ - "ARE" - ] - }, - "xx179 - red arrows 1979-2007": { - "name": "Red Arrows 1979-2007", - "countries": [ - "UK" - ] - }, - "xx178 - 1994 raf hawk display": { - "name": "XX178-RAF Hawk Display 1994", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx159 - fradu royal navy anniversary": { - "name": "Royal Navy XX159", - "countries": [ - "UK" - ] - }, - "xx189 - 100sqn": { - "name": "100Sqn XX189", - "countries": [ - "TUR", - "RUS", - "USA", - "ISR", - "NETH", - "NOR", - "RSO", - "BEL", - "GER", - "DEN", - "SPN", - "GRG", - "ABH", - "UKR", - "ITA", - "CAN", - "FRA", - "UK" - ] - }, - "xx228 - veao": { - "name": "VEAO, XX228", - "countries": [ - "UK" - ] - }, - "xx316 - 74sqn 1998-2000": { - "name": "74Sqn XX316 1998-2000", - "countries": [ - "UK" - ] - }, - "xx179 - red arrows 2008-2012": { - "name": "Red Arrows 2008-2012", - "countries": [ - "UK" - ] - }, - "12th ftw, randolph afb, texas (ra)": { - "name": "12th FTW, Randolph AFB, Texas (RA)", - "countries": [ - "USA" - ] - }, - "nas meridian, mississippi seven (vt-7)": { - "name": "NAS Meridian, Mississippi Seven (VT-7)", - "countries": [ - "USA" - ] - }, - "88th fts, sheppard afb, texas (en)": { - "name": "88th FTS, Sheppard AFB, Texas (EN)", - "countries": [ - "USA" - ] - }, - "xx159 - 2004 raf hawk display": { - "name": "XX159-RAF Hawk Display 2004", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - } - } - }, - "Hawk pcp": { - "name": "Hawk pcp", - "coalition": "blue", - "era": "Late Cold War", - "label": "Hawk Platoon Command Post", - "shortLabel": "Hawk pcp", - "range": "Medium", - "filename": "", - "type": "SAM Support vehicle", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Hawk sr": { - "name": "Hawk sr", - "coalition": "blue", - "era": "Early Cold War", - "label": "Hawk Search radar", - "shortLabel": "Hawk sr", - "range": "Long", - "filename": "", - "type": "SAM Search radar", - "enabled": true, - "liveries": { - "xx337 - 92 sqn blue tail": { - "name": "XX337-92Sqn", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-341 grey": { - "name": "HW-341 Grey", - "countries": [ - "FIN" - ] - }, - "xx245 - 2009 raf hawk display": { - "name": "XX245-RAF Hawk Display 2009", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-329 green brown": { - "name": "HW-329 Green Brown", - "countries": [ - "FIN" - ] - }, - "swiss u-1268 - byebyehawk": { - "name": "U-1268 - ByeByeHawk", - "countries": [ - "SUI" - ] - }, - "25th fts, vance afb, oklahoma (vn)": { - "name": "25th FTS, Vance AFB, Oklahoma (VN)", - "countries": [ - "USA" - ] - }, - "xx226 - 74sqn 1992-2000": { - "name": "74Sqn XX226 1992-2000", - "countries": [ - "UK" - ] - }, - "finland hw-373 ex-swiss air force": { - "name": "HW-373 Ex-Swiss Air Force", - "countries": [ - "FIN" - ] - }, - "swiss u-1252 - normal": { - "name": "U-1252 - Normal", - "countries": [ - "SUI" - ] - }, - "swiss u-1270 - wallis": { - "name": "U-1270 - Wallis", - "countries": [ - "SUI" - ] - }, - "1st rs, beale afb, california (bb)": { - "name": "1st RS, Beale AFB, California (BB)", - "countries": [ - "USA" - ] - }, - "xx100 - tfc": { - "name": "The Fighter Collection XX100", - "countries": [ - "UK" - ] - }, - "509th bs, whitman afb, missouri (wm)": { - "name": "509th BS, Whiteman AFB, Missouri (WM)", - "countries": [ - "USA" - ] - }, - "xx218 - 208sqn": { - "name": "208Sqn XX218", - "countries": [ - "UK" - ] - }, - "xx316 - fradu royal navy": { - "name": "Royal Navy XX316", - "countries": [ - "UK" - ] - }, - "usaf aggressor 269": { - "name": "USAF-AGGRESSOR-269", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "swiss u-1251 - white": { - "name": "U-1251 - White", - "countries": [ - "SUI" - ] - }, - "xx201 - 2010 raf hawk display": { - "name": "XX201-4FTS-HawkDisplay2010", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx175 - fradu royal navy": { - "name": "Royal Navy XX175", - "countries": [ - "UK" - ] - }, - "1018 - united arab emirates": { - "name": "United Arab Emirates Air Force", - "countries": [ - "ARE" - ] - }, - "xx179 - red arrows 1979-2007": { - "name": "Red Arrows 1979-2007", - "countries": [ - "UK" - ] - }, - "xx178 - 1994 raf hawk display": { - "name": "XX178-RAF Hawk Display 1994", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx159 - fradu royal navy anniversary": { - "name": "Royal Navy XX159", - "countries": [ - "UK" - ] - }, - "xx189 - 100sqn": { - "name": "100Sqn XX189", - "countries": [ - "TUR", - "RUS", - "USA", - "ISR", - "NETH", - "NOR", - "RSO", - "BEL", - "GER", - "DEN", - "SPN", - "GRG", - "ABH", - "UKR", - "ITA", - "CAN", - "FRA", - "UK" - ] - }, - "xx228 - veao": { - "name": "VEAO, XX228", - "countries": [ - "UK" - ] - }, - "xx316 - 74sqn 1998-2000": { - "name": "74Sqn XX316 1998-2000", - "countries": [ - "UK" - ] - }, - "xx179 - red arrows 2008-2012": { - "name": "Red Arrows 2008-2012", - "countries": [ - "UK" - ] - }, - "12th ftw, randolph afb, texas (ra)": { - "name": "12th FTW, Randolph AFB, Texas (RA)", - "countries": [ - "USA" - ] - }, - "nas meridian, mississippi seven (vt-7)": { - "name": "NAS Meridian, Mississippi Seven (VT-7)", - "countries": [ - "USA" - ] - }, - "88th fts, sheppard afb, texas (en)": { - "name": "88th FTS, Sheppard AFB, Texas (EN)", - "countries": [ - "USA" - ] - }, - "xx159 - 2004 raf hawk display": { - "name": "XX159-RAF Hawk Display 2004", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - } - } - }, - "Hawk tr": { - "name": "Hawk tr", - "coalition": "blue", - "era": "Early Cold War", - "label": "Hawk Track radar", - "shortLabel": "Hawk tr", - "range": "Medium", - "filename": "", - "type": "SAM Track radar", - "enabled": true, - "liveries": { - "xx337 - 92 sqn blue tail": { - "name": "XX337-92Sqn", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-341 grey": { - "name": "HW-341 Grey", - "countries": [ - "FIN" - ] - }, - "xx245 - 2009 raf hawk display": { - "name": "XX245-RAF Hawk Display 2009", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-329 green brown": { - "name": "HW-329 Green Brown", - "countries": [ - "FIN" - ] - }, - "swiss u-1268 - byebyehawk": { - "name": "U-1268 - ByeByeHawk", - "countries": [ - "SUI" - ] - }, - "25th fts, vance afb, oklahoma (vn)": { - "name": "25th FTS, Vance AFB, Oklahoma (VN)", - "countries": [ - "USA" - ] - }, - "xx226 - 74sqn 1992-2000": { - "name": "74Sqn XX226 1992-2000", - "countries": [ - "UK" - ] - }, - "finland hw-373 ex-swiss air force": { - "name": "HW-373 Ex-Swiss Air Force", - "countries": [ - "FIN" - ] - }, - "swiss u-1252 - normal": { - "name": "U-1252 - Normal", - "countries": [ - "SUI" - ] - }, - "swiss u-1270 - wallis": { - "name": "U-1270 - Wallis", - "countries": [ - "SUI" - ] - }, - "1st rs, beale afb, california (bb)": { - "name": "1st RS, Beale AFB, California (BB)", - "countries": [ - "USA" - ] - }, - "xx100 - tfc": { - "name": "The Fighter Collection XX100", - "countries": [ - "UK" - ] - }, - "509th bs, whitman afb, missouri (wm)": { - "name": "509th BS, Whiteman AFB, Missouri (WM)", - "countries": [ - "USA" - ] - }, - "xx218 - 208sqn": { - "name": "208Sqn XX218", - "countries": [ - "UK" - ] - }, - "xx316 - fradu royal navy": { - "name": "Royal Navy XX316", - "countries": [ - "UK" - ] - }, - "usaf aggressor 269": { - "name": "USAF-AGGRESSOR-269", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "swiss u-1251 - white": { - "name": "U-1251 - White", - "countries": [ - "SUI" - ] - }, - "xx201 - 2010 raf hawk display": { - "name": "XX201-4FTS-HawkDisplay2010", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx175 - fradu royal navy": { - "name": "Royal Navy XX175", - "countries": [ - "UK" - ] - }, - "1018 - united arab emirates": { - "name": "United Arab Emirates Air Force", - "countries": [ - "ARE" - ] - }, - "xx179 - red arrows 1979-2007": { - "name": "Red Arrows 1979-2007", - "countries": [ - "UK" - ] - }, - "xx178 - 1994 raf hawk display": { - "name": "XX178-RAF Hawk Display 1994", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx159 - fradu royal navy anniversary": { - "name": "Royal Navy XX159", - "countries": [ - "UK" - ] - }, - "xx189 - 100sqn": { - "name": "100Sqn XX189", - "countries": [ - "TUR", - "RUS", - "USA", - "ISR", - "NETH", - "NOR", - "RSO", - "BEL", - "GER", - "DEN", - "SPN", - "GRG", - "ABH", - "UKR", - "ITA", - "CAN", - "FRA", - "UK" - ] - }, - "xx228 - veao": { - "name": "VEAO, XX228", - "countries": [ - "UK" - ] - }, - "xx316 - 74sqn 1998-2000": { - "name": "74Sqn XX316 1998-2000", - "countries": [ - "UK" - ] - }, - "xx179 - red arrows 2008-2012": { - "name": "Red Arrows 2008-2012", - "countries": [ - "UK" - ] - }, - "12th ftw, randolph afb, texas (ra)": { - "name": "12th FTW, Randolph AFB, Texas (RA)", - "countries": [ - "USA" - ] - }, - "nas meridian, mississippi seven (vt-7)": { - "name": "NAS Meridian, Mississippi Seven (VT-7)", - "countries": [ - "USA" - ] - }, - "88th fts, sheppard afb, texas (en)": { - "name": "88th FTS, Sheppard AFB, Texas (EN)", - "countries": [ - "USA" - ] - }, - "xx159 - 2004 raf hawk display": { - "name": "XX159-RAF Hawk Display 2004", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - } - } - }, - "Hummer": { - "name": "Hummer", - "coalition": "blue", - "era": "Mid Cold War", - "label": "Hummer", - "shortLabel": "Hummer", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "IKARUS Bus": { - "name": "IKARUS Bus", - "coalition": "red", - "era": "Mid Cold War", - "label": "IKARUS Bus", - "shortLabel": "IKARUS Bus", - "filename": "", - "type": "Unarmed", - "enabled": true - }, - "Igla manpad INS": { - "name": "Igla manpad INS", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-18 Igla manpad INS", - "shortLabel": "Igla manpad INS", - "range": "Short", - "filename": "", - "type": "MANPADS", - "enabled": true, - "liveries": { - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - } - }, - "Infantry AK": { - "name": "Infantry AK", - "coalition": "red", - "era": "Mid Cold War", - "label": "Infantry AK", - "shortLabel": "Infantry AK", - "filename": "", - "type": "Infantry", - "enabled": true, - "muzzleVelocity": 900, - "barrelHeight": 0.9 - }, - "KAMAZ Truck": { - "name": "KAMAZ Truck", - "coalition": "red", - "era": "Mid Cold War", - "label": "KAMAZ Truck", - "shortLabel": "KAMAZ Truck", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Kub 1S91 str": { - "name": "Kub 1S91 str", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-6 Straight flush", - "shortLabel": "Kub 1S91 str", - "range": "Medium", - "filename": "", - "type": "SAM Search/Track radar", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Kub 2P25 ln": { - "name": "Kub 2P25 ln", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-6 Launcher", - "shortLabel": "Kub 2P25 ln", - "range": "Medium", - "filename": "", - "type": "SAM Launcher", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "LAV-25": { - "name": "LAV-25", - "coalition": "blue", - "era": "Late Cold War", - "label": "LAV-25", - "shortLabel": "LAV-25", - "filename": "", - "type": "IFV", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "aus_winter": { - "name": "AUS_Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "aus_summer": { - "name": "AUS_Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "sand": { - "name": "sand", - "countries": "All" - }, - "green": { - "name": "green", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "LAZ Bus": { - "name": "LAZ Bus", - "coalition": "red", - "era": "Early Cold War", - "label": "LAZ Bus", - "shortLabel": "LAZ Bus", - "filename": "", - "type": "Unarmed", - "enabled": true - }, - "Leclerc": { - "name": "Leclerc", - "coalition": "blue", - "era": "Modern", - "label": "Leclerc", - "shortLabel": "Leclerc", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Leopard-2": { - "name": "Leopard-2", - "coalition": "blue", - "era": "Late Cold War", - "label": "Leopard-2", - "shortLabel": "Leopard-2", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "can_spring": { - "name": "CAN_spring", - "countries": "All" - }, - "winter": { - "name": "winter", - "countries": "All" - }, - "spn_summer": { - "name": "SPN_Summer", - "countries": "All" - }, - "de_desert_winter": { - "name": "winter", - "countries": "All" - }, - "de_desert_spring": { - "name": "spring", - "countries": "All" - }, - "de_summer": { - "name": "summer", - "countries": "All" - }, - "den_autumn": { - "name": "DEN_autumn", - "countries": "All" - }, - "den_spring": { - "name": "DEN_spring", - "countries": "All" - }, - "de_winter": { - "name": "winter", - "countries": "All" - }, - "neth_summer": { - "name": "NETH_summer", - "countries": "All" - }, - "de_autumn": { - "name": "winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_summer", - "countries": "All" - }, - "spring": { - "name": "spring", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_autumn", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "de_desert_summer": { - "name": "DE_Desert_summer", - "countries": "All" - }, - "desert_summer": { - "name": "Desert_summer", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_winter", - "countries": "All" - }, - "den_summer": { - "name": "DEN_summer", - "countries": "All" - }, - "desert_autumn": { - "name": "Desert_autumn", - "countries": "All" - }, - "de_spring": { - "name": "spring", - "countries": "All" - }, - "den_winter": { - "name": "DEN_winter", - "countries": "All" - }, - "fin_winter": { - "name": "FIN_winter", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_spring", - "countries": "All" - }, - "desert_winter": { - "name": "Desert_winter", - "countries": "All" - }, - "can_winter": { - "name": "CAN_winter", - "countries": "All" - }, - "de_desert_autumn": { - "name": "autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - }, - "desert_spring": { - "name": "Desert_spring", - "countries": "All" - }, - "fin_spring": { - "name": "FIN_spring", - "countries": "All" - }, - "fin_summer": { - "name": "FIN_summer", - "countries": "All" - }, - "can_summer": { - "name": "CAN_summer", - "countries": "All" - }, - "can_autumn": { - "name": "CAN_autumn", - "countries": "All" - }, - "neth_winter": { - "name": "NETH_winter", - "countries": "All" - }, - "spn_winter": { - "name": "SPN_Winter", - "countries": "All" - }, - "fin_autumn": { - "name": "FIN_autumn", - "countries": "All" - } - } - }, - "Leopard1A3": { - "name": "Leopard1A3", - "coalition": "blue", - "era": "Mid Cold War", - "label": "Leopard1A3", - "shortLabel": "Leopard1A3", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "M 818": { - "name": "M 818", - "coalition": "blue", - "era": "Early Cold War", - "label": "M 818", - "shortLabel": "M 818", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "spring": { - "name": "spring", - "countries": "All" - }, - "winter": { - "name": "winter", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - } - } - }, - "M-1 Abrams": { - "name": "M-1 Abrams", - "coalition": "blue", - "era": "Late Cold War", - "label": "M-1 Abrams", - "shortLabel": "M-1 Abrams", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "M-109": { - "name": "M-109", - "coalition": "blue", - "era": "Early Cold War", - "label": "M-109 Paladin", - "shortLabel": "M-109", - "filename": "", - "type": "Gun Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "M-113": { - "name": "M-113", - "coalition": "blue", - "era": "Early Cold War", - "label": "M-113", - "shortLabel": "M-113", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "winter", - "countries": "All" - }, - "grc_autumn_med": { - "name": "GRC_autumn", - "countries": "All" - }, - "winter_med": { - "name": "winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_summer", - "countries": "All" - }, - "spring": { - "name": "spring", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - }, - "grc_spring_med": { - "name": "GRC_spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_autumn", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_winter", - "countries": "All" - }, - "green_med": { - "name": "green", - "countries": "All" - }, - "green": { - "name": "green", - "countries": "All" - }, - "spring_med": { - "name": "spring", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_spring", - "countries": "All" - }, - "grc_winter_med": { - "name": "GRC_winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - }, - "grc_summer_med": { - "name": "GRC_summer", - "countries": "All" - }, - "autumn_med": { - "name": "autumn", - "countries": "All" - }, - "desert_med": { - "name": "Desert", - "countries": "All" - }, - "summer_med": { - "name": "summer", - "countries": "All" - } - } - }, - "M-2 Bradley": { - "name": "M-2 Bradley", - "coalition": "blue", - "era": "Late Cold War", - "label": "M-2A2 Bradley", - "shortLabel": "M-2 Bradley", - "filename": "", - "type": "IFV", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "M-60": { - "name": "M-60", - "coalition": "blue", - "era": "Early Cold War", - "label": "M-60", - "shortLabel": "M-60", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "winter", - "countries": "All" - }, - "spring": { - "name": "spring", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "M1043 HMMWV Armament": { - "name": "M1043 HMMWV Armament", - "coalition": "blue", - "era": "Late Cold War", - "label": "HMMWV M2 Browning", - "shortLabel": "HMMWV M2", - "filename": "", - "type": "Reconnaissance", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "M1045 HMMWV TOW": { - "name": "M1045 HMMWV TOW", - "coalition": "red", - "era": "Late Cold War", - "label": "HMMWV TOW", - "shortLabel": "HMMWV TOW", - "filename": "", - "type": "Reconnaissance", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "M1097 Avenger": { - "name": "M1097 Avenger", - "coalition": "blue", - "era": "Modern", - "label": "M1097 Avenger", - "shortLabel": "M1097 Avenger", - "filename": "", - "type": "SAM", - "enabled": true - }, - "M1126 Stryker ICV": { - "name": "M1126 Stryker ICV", - "coalition": "blue", - "era": "Modern", - "label": "Stryker MG", - "shortLabel": "Stryker MG", - "filename": "", - "type": "APC", - "enabled": true - }, - "M1128 Stryker MGS": { - "name": "M1128 Stryker MGS", - "coalition": "blue", - "era": "Modern", - "label": "M1128 Stryker MGS", - "shortLabel": "M1128 Stryker MGS", - "filename": "", - "type": "SPG", - "enabled": true - }, - "M1134 Stryker ATGM": { - "name": "M1134 Stryker ATGM", - "coalition": "blue", - "era": "Modern", - "label": "Stryker ATGM", - "shortLabel": "Stryker ATGM", - "filename": "", - "type": "IFV", - "enabled": true - }, - "M48 Chaparral": { - "name": "M48 Chaparral", - "coalition": "blue", - "era": "Late Cold War", - "label": "M48 Chaparral", - "shortLabel": "M48 Chaparral", - "filename": "", - "type": "SAM", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "usa_winter": { - "name": "USA_Winter", - "countries": "All" - }, - "isr_summer": { - "name": "ISR_Summer", - "countries": "All" - }, - "isr_spring": { - "name": "ISR_Spring", - "countries": "All" - }, - "usa_autumn": { - "name": "USA_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "isr_winter": { - "name": "ISR_Winter", - "countries": "All" - }, - "isr_autumn": { - "name": "ISR_Autumn", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "usa_summer": { - "name": "USA_Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "usa_spring": { - "name": "USA_Spring", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "M6 Linebacker": { - "name": "M6 Linebacker", - "coalition": "blue", - "era": "Late Cold War", - "label": "M6 Linebacker", - "shortLabel": "M6 Linebacker", - "filename": "", - "type": "SAM", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "M978 HEMTT Tanker": { - "name": "M978 HEMTT Tanker", - "coalition": "blue", - "era": "Mid Cold War", - "label": "M978 HEMTT Tanker", - "shortLabel": "M978 HEMTT Tanker", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "MAZ-6303": { - "name": "MAZ-6303", - "coalition": "red", - "era": "Mid Cold War", - "label": "MAZ-6303", - "shortLabel": "MAZ-6303", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "winter", - "countries": "All" - }, - "spring": { - "name": "spring", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "MCV-80": { - "name": "MCV-80", - "coalition": "blue", - "era": "Late Cold War", - "label": "Warrior IFV", - "shortLabel": "Warrior", - "filename": "", - "type": "IFV", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "MLRS": { - "name": "MLRS", - "coalition": "blue", - "era": "Late Cold War", - "label": "M270", - "shortLabel": "M270", - "filename": "", - "type": "Rocket Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "MTLB": { - "name": "MTLB", - "coalition": "red", - "era": "Mid Cold War", - "label": "MT-LB", - "shortLabel": "MT-LB", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Marder": { - "name": "Marder", - "coalition": "blue", - "era": "Late Cold War", - "label": "Marder", - "shortLabel": "Marder", - "filename": "", - "type": "IFV", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Osa 9A33 ln": { - "name": "Osa 9A33 ln", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-8 Launcher", - "shortLabel": "Osa 9A33 ln", - "range": "Short", - "filename": "", - "type": "SAM Launcher", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Paratrooper AKS-74": { - "name": "Paratrooper AKS-74", - "coalition": "red", - "era": "Modern", - "label": "Paratrooper AKS-74", - "shortLabel": "Paratrooper AKS-74", - "filename": "", - "type": "Infantry", - "enabled": true - }, - "Paratrooper RPG-16": { - "name": "Paratrooper RPG-16", - "coalition": "red", - "era": "Modern", - "label": "Paratrooper RPG-16", - "shortLabel": "Paratrooper RPG-16", - "filename": "", - "type": "Infantry", - "enabled": true - }, - "Patriot AMG": { - "name": "Patriot AMG", - "coalition": "blue", - "era": "Modern", - "label": "Patriot Antenna Mast Group", - "shortLabel": "Patriot AMG", - "range": "Long", - "filename": "", - "type": "SAM Support vehicle", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Patriot ECS": { - "name": "Patriot ECS", - "coalition": "blue", - "era": "Modern", - "label": "Patriot Engagement Control Station", - "shortLabel": "Patriot ECS", - "range": "Long", - "filename": "", - "type": "SAM Support vehicle", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Patriot EPP": { - "name": "Patriot EPP", - "coalition": "blue", - "era": "Late Cold War", - "label": "Patriot Electric Power Plant", - "shortLabel": "Patriot EPP", - "range": "Long", - "filename": "", - "type": "SAM Support vehicle", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Patriot cp": { - "name": "Patriot cp", - "coalition": "blue", - "era": "Late Cold War", - "label": "Patriot Command Post", - "shortLabel": "Patriot cp", - "range": "Long", - "filename": "", - "type": "SAM Support vehicle", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Patriot ln": { - "name": "Patriot ln", - "coalition": "blue", - "era": "Late Cold War", - "label": "Patriot Launcher", - "shortLabel": "Patriot ln", - "range": "Long", - "filename": "", - "type": "SAM Launcher", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Patriot site": { - "name": "Patriot site", - "coalition": "blue", - "era": "Late Cold War", - "label": "Patriot site", - "shortLabel": "Patriot site", - "range": "Long", - "filename": "", - "type": "SAM Site", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Patriot str": { - "name": "Patriot str", - "coalition": "blue", - "era": "Late Cold War", - "label": "Patriot Search/Track radar", - "shortLabel": "Patriot str", - "range": "Medium", - "filename": "", - "type": "SAM Search/Track radar", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Predator GCS": { - "name": "Predator GCS", - "coalition": "blue", - "era": "Late Cold War", - "label": "Predator GCS", - "shortLabel": "Predator GCS", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "USAF Standard", - "countries": [ - "USA" - ] - } - } - }, - "Predator TrojanSpirit": { - "name": "Predator TrojanSpirit", - "coalition": "blue", - "era": "Late Cold War", - "label": "Predator TrojanSpirit", - "shortLabel": "Predator TrojanSpirit", - "filename": "", - "type": "Unarmed", - "enabled": true - }, - "RLS_19J6": { - "name": "RLS_19J6", - "coalition": "Red", - "era": "Mid Cold War", - "label": "SA-5 Thin Shield", - "shortLabel": "RLS 19J6", - "range": "Long", - "filename": "", - "type": "SAM Search radar", - "enabled": true, - "liveries": { - "spring": { - "name": "spring", - "countries": "All" - }, - "winter": { - "name": "winter", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - } - } - }, - "RPC_5N62V": { - "name": "RPC_5N62V", - "coalition": "Red", - "era": "Mid Cold War", - "label": "SA-5 Square Pair", - "shortLabel": "RPC 5N62V", - "range": "Long", - "filename": "", - "type": "SAM Track radar", - "enabled": true, - "liveries": { - "desert_spring": { - "name": "S-200_Radar_Desert_Spring", - "countries": "All" - }, - "cam_autumn": { - "name": "S-200_Radar_Cam_Autumn", - "countries": "All" - }, - "cam_spring": { - "name": "S-200_Radar_Cam_Spring", - "countries": "All" - }, - "green_summer": { - "name": "S-200_Radar_Green_Summer", - "countries": "All" - }, - "green_winter": { - "name": "S-200_Radar_Green_Winter", - "countries": "All" - }, - "cam_summer": { - "name": "S-200_Radar_Cam_Summer", - "countries": "All" - }, - "desert_winter": { - "name": "S-200_Radar_Desert_Winter", - "countries": "All" - }, - "syria_autumn": { - "name": "S-200_Radar_Syria_Autumn", - "countries": "All" - }, - "syria_summer": { - "name": "S-200_Radar_Syria_Summer", - "countries": "All" - }, - "syria_winter": { - "name": "S-200_Radar_Syria_Winter", - "countries": "All" - }, - "green_spring": { - "name": "S-200_Radar_Green_Spring", - "countries": "All" - }, - "syria_spring": { - "name": "S-200_Radar_Syria_Spring", - "countries": "All" - }, - "desert_summer": { - "name": "S-200_Radar_Desert_Summer", - "countries": "All" - }, - "green_autumn": { - "name": "S-200_Radar_Green_Autumn", - "countries": "All" - }, - "desert_autumn": { - "name": "S-200_Radar_Desert_Autumn", - "countries": "All" - }, - "cam_winter": { - "name": "S-200_Radar_Cam_Winter", - "countries": "All" - } - } - }, - "Roland ADS": { - "name": "Roland ADS", - "coalition": "blue", - "era": "Late Cold War", - "label": "Roland ADS", - "shortLabel": "Roland ADS", - "filename": "", - "type": "SAM", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Roland Radar": { - "name": "Roland Radar", - "coalition": "blue", - "era": "Mid Cold War", - "label": "Roland Search radar", - "shortLabel": "Roland Radar", - "filename": "", - "type": "SAM Search radar", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "S-200_Launcher": { - "name": "S-200_Launcher", - "coalition": "Red", - "era": "Mid Cold War", - "label": "SA-5 Launcher", - "shortLabel": "S-200 Launcher", - "range": "Long", - "filename": "", - "type": "SAM Launcher", - "enabled": true, - "liveries": { - "desert_spring": { - "name": "S-200_Launcher_Desert_Spring", - "countries": "All" - }, - "cam_autumn": { - "name": "S-200_Cam_Autumn", - "countries": "All" - }, - "cam_spring": { - "name": "S-200_Launcher_Cam_Spring", - "countries": "All" - }, - "green_summer": { - "name": "S-200_Launcher_Green_Summer", - "countries": "All" - }, - "green_winter": { - "name": "S-200_Launcher_Green_Winter", - "countries": "All" - }, - "cam_summer": { - "name": "S-200_Launcher_Cam_Summer", - "countries": "All" - }, - "desert_winter": { - "name": "S-200_Launcher_Desert_Winter", - "countries": "All" - }, - "syria_autumn": { - "name": "S-200_Launcher_Syria_Autumn", - "countries": "All" - }, - "syria_summer": { - "name": "S-200_Launcher_Syria_Summer", - "countries": "All" - }, - "syria_winter": { - "name": "S-200_Launcher_Syria_Winter", - "countries": "All" - }, - "green_spring": { - "name": "S-200_Launcher_Green_Spring", - "countries": "All" - }, - "syria_spring": { - "name": "S-200_Launcher_Syria_Spring", - "countries": "All" - }, - "desert_summer": { - "name": "S-200_Launcher_Desert_Summer", - "countries": "All" - }, - "green_autumn": { - "name": "S-200_Launcher_Green_Autumn", - "countries": "All" - }, - "desert_autumn": { - "name": "S-200_Launcher_Desert_Autumn", - "countries": "All" - }, - "cam_winter": { - "name": "S-200_Launcher_Cam_Winter", - "countries": "All" - } - } - }, - "S-300PS 40B6M tr": { - "name": "S-300PS 40B6M tr", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Tin Shield", - "shortLabel": "S-300PS 40B6M tr", - "range": "Long", - "filename": "", - "type": "SAM Track radar", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "S-300PS 40B6MD sr": { - "name": "S-300PS 40B6MD sr", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Clam Shell", - "shortLabel": "S-300PS 40B6MD sr", - "range": "Long", - "filename": "", - "type": "SAM Search radar", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "S-300PS 54K6 cp": { - "name": "S-300PS 54K6 cp", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Command Post", - "shortLabel": "S-300PS 54K6 cp", - "range": "Long", - "filename": "", - "type": "SAM Support vehicle", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "S-300PS 5P85C ln": { - "name": "S-300PS 5P85C ln", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Launcher (5P85C)", - "shortLabel": "S-300PS 5P85C ln", - "range": "Long", - "filename": "", - "type": "SAM Launcher", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "S-300PS 5P85D ln": { - "name": "S-300PS 5P85D ln", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Launcher (5P85D)", - "shortLabel": "S-300PS 5P85D ln", - "range": "Long", - "filename": "", - "type": "SAM Launcher", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "S-300PS 64H6E sr": { - "name": "S-300PS 64H6E sr", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Big Bird", - "shortLabel": "S-300PS 64H6E sr", - "range": "Long", - "filename": "", - "type": "SAM Search radar", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "SA-10 SAM Battery": { - "name": "SA-10 SAM Battery", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 SAM Battery", - "shortLabel": "SA-10 SAM Battery", - "range": "Long", - "filename": "", - "type": "SAM Site", - "enabled": true - }, - "SA-11 Buk CC 9S470M1": { - "name": "SA-11 Buk CC 9S470M1", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-11 Command Post", - "shortLabel": "SA-11 Buk CC 9S470M1", - "range": "Medium", - "filename": "", - "type": "SAM Support vehicle", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "SA-11 Buk LN 9A310M1": { - "name": "SA-11 Buk LN 9A310M1", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-11 Launcher", - "shortLabel": "SA-11 Buk LN 9A310M1", - "range": "Medium", - "filename": "", - "type": "SAM Launcher", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "SA-11 Buk SR 9S18M1": { - "name": "SA-11 Buk SR 9S18M1", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-11 Snown Drift", - "shortLabel": "SA-11 Buk SR 9S18M1", - "range": "Long", - "filename": "", - "type": "SAM Search radar", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "SA-11 SAM Battery": { - "name": "SA-11 SAM Battery", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-11 SAM Battery", - "shortLabel": "SA-11 SAM Battery", - "range": "Medium", - "filename": "", - "type": "SAM Site", - "enabled": true - }, - "SA-18 Igla manpad": { - "name": "SA-18 Igla manpad", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-18 Igla manpad", - "shortLabel": "SA-18 Igla manpad", - "range": "Short", - "filename": "", - "type": "MANPADS", - "enabled": true - }, - "SA-18 Igla-S manpad": { - "name": "SA-18 Igla-S manpad", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-18 Igla-S manpad", - "shortLabel": "SA-18 Igla-S manpad", - "range": "Short", - "filename": "", - "type": "MANPADS", - "enabled": true - }, - "SA-2 SAM Battery": { - "name": "SA-2 SAM Battery", - "coalition": "red", - "era": "Early Cold War", - "label": "SA-2 SAM Battery", - "shortLabel": "SA-2 SAM Battery", - "range": "Long", - "filename": "", - "type": "SAM Site", - "enabled": true - }, - "SA-3 SAM Battery": { - "name": "SA-3 SAM Battery", - "coalition": "red", - "era": "Early Cold War", - "label": "SA-3 SAM Battery", - "shortLabel": "SA-3 SAM Battery", - "range": "Medium", - "filename": "", - "type": "SAM Site", - "enabled": true - }, - "SA-5 SAM Battery": { - "name": "SA-5 SAM Battery", - "coalition": "Red", - "era": "Mid Cold War", - "label": "SA-5 SAM Battery", - "shortLabel": "SA-5 SAM Battery", - "range": "Long", - "filename": "", - "type": "SAM Site", - "enabled": true - }, - "SA-6 SAM Battery": { - "name": "SA-6 SAM Battery", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-6 SAM Battery", - "shortLabel": "SA-6 SAM Battery", - "range": "Medium", - "filename": "", - "type": "SAM Site", - "enabled": true - }, - "SAU 2-C9": { - "name": "SAU 2-C9", - "coalition": "red", - "era": "Mid Cold War", - "label": "SAU Nona", - "shortLabel": "SAU Nona", - "filename": "", - "type": "Gun Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "SAU Akatsia": { - "name": "SAU Akatsia", - "coalition": "red", - "era": "Mid Cold War", - "label": "SAU Akatsia", - "shortLabel": "SAU Akatsia", - "filename": "", - "type": "Gun Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "SAU Gvozdika": { - "name": "SAU Gvozdika", - "coalition": "red", - "era": "Mid Cold War", - "label": "SAU Gvozdika", - "shortLabel": "SAU Gvozdika", - "filename": "", - "type": "Gun Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "SAU Msta": { - "name": "SAU Msta", - "coalition": "red", - "era": "Late Cold War", - "label": "SAU Msta", - "shortLabel": "SAU Msta", - "filename": "", - "type": "Gun Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "SKP-11": { - "name": "SKP-11", - "coalition": "red", - "era": "Early Cold War", - "label": "SKP-11", - "shortLabel": "SKP-11", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "SNR_75V": { - "name": "SNR_75V", - "coalition": "Red", - "era": "Early Cold War", - "label": "SA-2 Fan Song", - "shortLabel": "SNR 75V", - "filename": "", - "type": "SAM Track radar", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "S_75M_Volhov": { - "name": "S_75M_Volhov", - "coalition": "Red", - "era": "Early Cold War", - "label": "SA-2 Launcher", - "shortLabel": "S75M Volhov", - "filename": "", - "type": "SAM Launcher", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Sandbox": { - "name": "Sandbox", - "coalition": "", - "era": "", - "label": "Sandbox", - "shortLabel": "Sandbox", - "filename": "", - "type": "Static", - "enabled": true - }, - "Smerch": { - "name": "Smerch", - "coalition": "red", - "era": "Late Cold War", - "label": "Smerch", - "shortLabel": "Smerch", - "filename": "", - "type": "Rocket Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Soldier AK": { - "name": "Soldier AK", - "coalition": "red", - "era": "Early Cold War", - "label": "Soldier AK", - "shortLabel": "Soldier AK", - "filename": "", - "type": "Infantry", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - }, - "muzzleVelocity": 900, - "barrelHeight": 0.9 - }, - "Soldier M249": { - "name": "Soldier M249", - "coalition": "blue", - "era": "Late Cold War", - "label": "Soldier M249", - "shortLabel": "Soldier M249", - "filename": "", - "type": "Infantry", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - } - }, - "Soldier M4 GRG": { - "name": "Soldier M4 GRG", - "coalition": "blue", - "era": "Mid Cold War", - "label": "Soldier M4 GRG", - "shortLabel": "Soldier M4 GRG", - "filename": "", - "type": "Infantry", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - } - }, - "Soldier M4": { - "name": "Soldier M4", - "coalition": "blue", - "era": "Mid Cold War", - "label": "Soldier M4", - "shortLabel": "Soldier M4", - "filename": "", - "type": "Infantry", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - } - }, - "Soldier RPG": { - "name": "Soldier RPG", - "coalition": "red", - "era": "Mid Cold War", - "label": "Soldier RPG", - "shortLabel": "Soldier RPG", - "filename": "", - "type": "Infantry", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - } - }, - "Stinger comm dsr": { - "name": "Stinger comm dsr", - "coalition": "red", - "era": "Late Cold War", - "label": "Stinger comm dsr", - "shortLabel": "Stinger comm dsr", - "range": "Short", - "filename": "", - "type": "MANPADS", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "multicam": { - "name": "multicam", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - } - }, - "Stinger comm": { - "name": "Stinger comm", - "coalition": "blue", - "era": "Late Cold War", - "label": "Stinger comm", - "shortLabel": "Stinger comm", - "range": "Short", - "filename": "", - "type": "MANPADS", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "multicam": { - "name": "multicam", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - } - }, - "Strela-1 9P31": { - "name": "Strela-1 9P31", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-9 Strela-1 9P31", - "shortLabel": "Strela-1 9P31", - "range": "Short", - "filename": "", - "type": "SAM", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Strela-10M3": { - "name": "Strela-10M3", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-13 Strela-10M3", - "shortLabel": "Strela-10M3", - "range": "Short", - "filename": "", - "type": "SAM", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Suidae": { - "name": "Suidae", - "coalition": "", - "era": "Modern", - "label": "Suidae", - "shortLabel": "Suidae", - "filename": "", - "type": "Unarmed", - "enabled": true - }, - "T-55": { - "name": "T-55", - "coalition": "red", - "era": "Early Cold War", - "label": "T-55", - "shortLabel": "T-55", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "T-72B": { - "name": "T-72B", - "coalition": "red", - "era": "Mid Cold War", - "label": "T-72B", - "shortLabel": "T-72B", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "T-80UD": { - "name": "T-80UD", - "coalition": "red", - "era": "Mid Cold War", - "label": "T-80UD", - "shortLabel": "T-80UD", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "iran - 01": { - "name": "Iran - 01", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "iran - 02": { - "name": "Iran - 02", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "T-90": { - "name": "T-90", - "coalition": "red", - "era": "Late Cold War", - "label": "T-90", - "shortLabel": "T-90", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "TPZ": { - "name": "TPZ", - "coalition": "blue", - "era": "Late Cold War", - "label": "TPz Fuchs", - "shortLabel": "TPz Fuchs", - "filename": "", - "type": "APC", - "enabled": true - }, - "Tigr_233036": { - "name": "Tigr_233036", - "coalition": "red", - "era": "Late Cold War", - "label": "Tigr_233036", - "shortLabel": "Tigr_233036", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Tor 9A331": { - "name": "Tor 9A331", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-15 Tor 9A331", - "shortLabel": "Tor 9A331", - "range": "Medium", - "filename": "", - "type": "SAM", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Trolley bus": { - "name": "Trolley bus", - "coalition": "blue", - "era": "Late Cold War", - "label": "Trolley bus", - "shortLabel": "Trolley bus", - "filename": "", - "type": "Unarmed", - "enabled": true - }, - "UAZ-469": { - "name": "UAZ-469", - "coalition": "red", - "era": "Mid Cold War", - "label": "UAZ-469", - "shortLabel": "UAZ-469", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "red_spring": { - "name": "RED_Spring", - "countries": "All" - }, - "red_summer": { - "name": "RED_Summer", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "orange_spring": { - "name": "ORANGE_Spring", - "countries": "All" - }, - "orange_autumn": { - "name": "ORANGE_Autumn", - "countries": "All" - }, - "red_autumn": { - "name": "RED_Autumn", - "countries": "All" - }, - "red_winter": { - "name": "RED_Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "orange_summer": { - "name": "ORANGE_Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "orange_winter": { - "name": "ORANGE_Winter", - "countries": "All" - } - } - }, - "Uragan_BM-27": { - "name": "Uragan_BM-27", - "coalition": "red", - "era": "Late Cold War", - "label": "Uragan", - "shortLabel": "Uragan", - "filename": "", - "type": "Rocket Artillery", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Ural ATsP-6": { - "name": "Ural ATsP-6", - "coalition": "red", - "era": "Mid Cold War", - "label": "Ural ATsP-6", - "shortLabel": "Ural ATsP-6", - "filename": "", - "type": "Unarmed", - "enabled": true - }, - "Ural-375 PBU": { - "name": "Ural-375 PBU", - "coalition": "red", - "era": "Mid Cold War", - "label": "Ural-375 PBU", - "shortLabel": "Ural-375 PBU", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "desert", - "countries": "All" - } - } - }, - "Ural-375 ZU-23 Insurgent": { - "name": "Ural-375 ZU-23 Insurgent", - "coalition": "red", - "era": "Early Cold War", - "label": "Ural-375 ZU-23 Insurgent", - "shortLabel": "Ural-375 ZU-23 Insurgent", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Ural-375 ZU-23": { - "name": "Ural-375 ZU-23", - "coalition": "red", - "era": "Early Cold War", - "label": "Ural-375 ZU-23", - "shortLabel": "Ural-375 ZU-23", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Ural-375": { - "name": "Ural-375", - "coalition": "red", - "era": "Mid Cold War", - "label": "Ural-375", - "shortLabel": "Ural-375", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Ural-4320 APA-5D": { - "name": "Ural-4320 APA-5D", - "coalition": "red", - "era": "Early Cold War", - "label": "Ural-4320 APA-5D", - "shortLabel": "Ural-4320 APA-5D", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Ural-4320-31": { - "name": "Ural-4320-31", - "coalition": "red", - "era": "Late Cold War", - "label": "Ural-4320-31", - "shortLabel": "Ural-4320-31", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "Ural-4320T": { - "name": "Ural-4320T", - "coalition": "red", - "era": "Late Cold War", - "label": "Ural-4320T", - "shortLabel": "Ural-4320T", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "VAZ Car": { - "name": "VAZ Car", - "coalition": "red", - "era": "Early Cold War", - "label": "VAZ Car", - "shortLabel": "VAZ Car", - "filename": "", - "type": "Unarmed", - "enabled": true - }, - "Vulcan": { - "name": "Vulcan", - "coalition": "blue", - "era": "Late Cold War", - "label": "Vulcan", - "shortLabel": "Vulcan", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "usa_winter": { - "name": "USA_Winter", - "countries": "All" - }, - "isr_summer": { - "name": "ISR_Summer", - "countries": "All" - }, - "isr_spring": { - "name": "ISR_Spring", - "countries": "All" - }, - "usa_autumn": { - "name": "USA_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "isr_winter": { - "name": "ISR_Winter", - "countries": "All" - }, - "isr_autumn": { - "name": "ISR_Autumn", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "usa_summer": { - "name": "USA_Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "usa_spring": { - "name": "USA_Spring", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "ZIL-131 KUNG": { - "name": "ZIL-131 KUNG", - "coalition": "red", - "era": "Early Cold War", - "label": "ZIL-131 KUNG", - "shortLabel": "ZIL-131 KUNG", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "ZIL-4331": { - "name": "ZIL-4331", - "coalition": "red", - "era": "Early Cold War", - "label": "ZIL-4331", - "shortLabel": "ZIL-4331", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "ZSU-23-4 Shilka": { - "name": "ZSU-23-4 Shilka", - "coalition": "red", - "era": "Late Cold War", - "label": "ZSU-23-4 Shilka", - "shortLabel": "ZSU-23-4 Shilka", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "grg_summer": { - "name": "GRG_Summer", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grg_autumn": { - "name": "GRG_Autumn", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grg_winter": { - "name": "GRG_Winter", - "countries": "All" - }, - "grg_spring": { - "name": "GRG_Spring", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "ZU-23 Closed Insurgent": { - "name": "ZU-23 Closed Insurgent", - "coalition": "red", - "era": "Early Cold War", - "label": "ZU-23 Closed Insurgent", - "shortLabel": "ZU-23 Closed Insurgent", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "ZU-23 Emplacement Closed": { - "name": "ZU-23 Emplacement Closed", - "coalition": "red", - "era": "Early Cold War", - "label": "ZU-23 Emplacement Closed", - "shortLabel": "ZU-23 Emplacement Closed", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "ZU-23 Emplacement": { - "name": "ZU-23 Emplacement", - "coalition": "red", - "era": "Early Cold War", - "label": "ZU-23 Emplacement", - "shortLabel": "ZU-23 Emplacement", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "ZU-23 Insurgent": { - "name": "ZU-23 Insurgent", - "coalition": "red", - "era": "Early Cold War", - "label": "ZU-23 Insurgent", - "shortLabel": "ZU-23 Insurgent", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "ZiL-131 APA-80": { - "name": "ZiL-131 APA-80", - "coalition": "red", - "era": "Early Cold War", - "label": "ZiL-131 APA-80", - "shortLabel": "ZiL-131 APA-80", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "house1arm": { - "name": "house1arm", - "coalition": "", - "era": "", - "label": "house1arm", - "shortLabel": "house1arm", - "filename": "", - "type": "Structure", - "enabled": true - }, - "house2arm": { - "name": "house2arm", - "coalition": "", - "era": "", - "label": "house2arm", - "shortLabel": "house2arm", - "filename": "", - "type": "Structure", - "enabled": true - }, - "houseA_arm": { - "name": "houseA_arm", - "coalition": "", - "era": "", - "label": "houseA_arm", - "shortLabel": "houseA_arm", - "filename": "", - "type": "Structure", - "enabled": true - }, - "outpost": { - "name": "outpost", - "coalition": "", - "era": "", - "label": "outpost", - "shortLabel": "outpost", - "filename": "", - "type": "Structure", - "enabled": true - }, - "outpost_road": { - "name": "outpost_road", - "coalition": "", - "era": "", - "label": "outpost_road", - "shortLabel": "outpost_road", - "filename": "", - "type": "Structure", - "enabled": true - }, - "p-19 s-125 sr": { - "name": "p-19 s-125 sr", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-3 Flat Face B", - "shortLabel": "Flat Face B", - "filename": "", - "type": "SAM Search radar", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "snr s-125 tr": { - "name": "snr s-125 tr", - "coalition": "red", - "era": "Early Cold War", - "label": "SA-3 Low Blow", - "shortLabel": "snr s-125 tr", - "range": "Medium", - "filename": "", - "type": "SAM Track radar", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "SpGH_Dana": { - "name": "SpGH_Dana", - "coalition": "", - "era": "", - "label": "SPH Dana vz77 152mm", - "shortLabel": "SPH Dana vz77 152mm", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "Grad_FDDM": { - "name": "Grad_FDDM", - "coalition": "", - "era": "", - "label": "Grad MRL FDDM (FC)", - "shortLabel": "Grad MRL FDDM (FC)", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "Infantry AK Ins": { - "name": "Infantry AK Ins", - "coalition": "", - "era": "", - "label": "Insurgent AK-74", - "shortLabel": "Insurgent AK-74", - "type": "Infantry", - "enabled": true, - "liveries": {} - }, - "MLRS FDDM": { - "name": "MLRS FDDM", - "coalition": "", - "era": "", - "label": "MRLS FDDM (FC)", - "shortLabel": "MRLS FDDM (FC)", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "Infantry AK ver2": { - "name": "Infantry AK ver2", - "coalition": "", - "era": "", - "label": "Infantry AK-74 Rus ver2", - "shortLabel": "Infantry AK-74 Rus ver2", - "type": "Infantry", - "enabled": true, - "liveries": {} - }, - "Infantry AK ver3": { - "name": "Infantry AK ver3", - "coalition": "", - "era": "", - "label": "Infantry AK-74 Rus ver3", - "shortLabel": "Infantry AK-74 Rus ver3", - "type": "Infantry", - "enabled": true, - "liveries": {} - }, - "Smerch_HE": { - "name": "Smerch_HE", - "coalition": "", - "era": "", - "label": "MLRS 9A52 Smerch HE 300mm", - "shortLabel": "MLRS 9A52 Smerch HE 300mm", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "Soldier stinger": { - "name": "Soldier stinger", - "coalition": "", - "era": "", - "label": "MANPADS Stinger", - "shortLabel": "MANPADS Stinger", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "SA-18 Igla comm": { - "name": "SA-18 Igla comm", - "coalition": "", - "era": "", - "label": "MANPADS SA-18 Igla \"Grouse\" C2", - "shortLabel": "MANPADS SA-18 Igla \"Grouse\" C2", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "SA-18 Igla-S comm": { - "name": "SA-18 Igla-S comm", - "coalition": "", - "era": "", - "label": "MANPADS SA-18 Igla-S \"Grouse\" C2", - "shortLabel": "MANPADS SA-18 Igla-S \"Grouse\" C2", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "TACAN_beacon": { - "name": "TACAN_beacon", - "coalition": "", - "era": "", - "label": "Beacon TACAN Portable TTS 3030", - "shortLabel": "Beacon TACAN Portable TTS 3030", - "type": "Fortification", - "enabled": true, - "liveries": {} - }, - "Merkava_Mk4": { - "name": "Merkava_Mk4", - "coalition": "", - "era": "", - "label": "MBT Merkava IV", - "shortLabel": "MBT Merkava IV", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "LiAZ Bus": { - "name": "LiAZ Bus", - "coalition": "", - "era": "", - "label": "Bus LiAZ-677", - "shortLabel": "Bus LiAZ-677", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "KrAZ6322": { - "name": "KrAZ6322", - "coalition": "", - "era": "", - "label": "Truck KrAZ-6322 6x6", - "shortLabel": "Truck KrAZ-6322 6x6", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "JTAC": { - "name": "JTAC", - "coalition": "", - "era": "", - "label": "JTAC", - "shortLabel": "JTAC", - "type": "Infantry", - "enabled": true, - "liveries": {} - }, - "Infantry Animated": { - "name": "Infantry Animated", - "coalition": "", - "era": "", - "label": "Infantry", - "shortLabel": "Infantry", - "type": "Infantry", - "enabled": true, - "liveries": {} - }, - "Electric locomotive": { - "name": "Electric locomotive", - "coalition": "", - "era": "", - "label": "Loco VL80 Electric", - "shortLabel": "Loco VL80 Electric", - "type": "Locomotive", - "enabled": true, - "liveries": {} - }, - "Locomotive": { - "name": "Locomotive", - "coalition": "", - "era": "", - "label": "Loco CHME3T", - "shortLabel": "Loco CHME3T", - "type": "Locomotive", - "enabled": true, - "liveries": {} - }, - "Coach cargo": { - "name": "Coach cargo", - "coalition": "", - "era": "", - "label": "Freight Van", - "shortLabel": "Freight Van", - "type": "Carriage", - "enabled": true, - "liveries": {} - }, - "Coach cargo open": { - "name": "Coach cargo open", - "coalition": "", - "era": "", - "label": "Open Wagon", - "shortLabel": "Open Wagon", - "type": "Carriage", - "enabled": true, - "liveries": {} - }, - "Coach a tank blue": { - "name": "Coach a tank blue", - "coalition": "", - "era": "", - "label": "Tank Car blue", - "shortLabel": "Tank Car blue", - "type": "Carriage", - "enabled": true, - "liveries": {} - }, - "Coach a tank yellow": { - "name": "Coach a tank yellow", - "coalition": "", - "era": "", - "label": "Tank Car yellow", - "shortLabel": "Tank Car yellow", - "type": "Carriage", - "enabled": true, - "liveries": {} - }, - "Coach a passenger": { - "name": "Coach a passenger", - "coalition": "", - "era": "", - "label": "Passenger Car", - "shortLabel": "Passenger Car", - "type": "Carriage", - "enabled": true, - "liveries": {} - }, - "Coach a platform": { - "name": "Coach a platform", - "coalition": "", - "era": "", - "label": "Coach Platform", - "shortLabel": "Coach Platform", - "type": "Carriage", - "enabled": true, - "liveries": {} - }, - "tacr2a": { - "name": "tacr2a", - "coalition": "", - "era": "", - "label": "RAF Rescue", - "shortLabel": "RAF Rescue", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "LARC-V": { - "name": "LARC-V", - "coalition": "", - "era": "", - "label": "LARC-V", - "shortLabel": "LARC-V", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "KS-19": { - "name": "KS-19", - "coalition": "", - "era": "", - "label": "AAA KS-19 100mm", - "shortLabel": "AAA KS-19 100mm", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "SON_9": { - "name": "SON_9", - "coalition": "", - "era": "", - "label": "AAA Fire Can SON-9", - "shortLabel": "AAA Fire Can SON-9", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "Scud_B": { - "name": "Scud_B", - "coalition": "", - "era": "", - "label": "SSM SS-1C Scud-B", - "shortLabel": "SSM SS-1C Scud-B", - "type": "MissilesSS", - "enabled": true, - "liveries": {} - }, - "HL_DSHK": { - "name": "HL_DSHK", - "coalition": "", - "era": "", - "label": "Scout HL with DSHK 12.7mm", - "shortLabel": "Scout HL with DSHK 12.7mm", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "HL_KORD": { - "name": "HL_KORD", - "coalition": "", - "era": "", - "label": "Scout HL with KORD 12.7mm", - "shortLabel": "Scout HL with KORD 12.7mm", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "tt_DSHK": { - "name": "tt_DSHK", - "coalition": "", - "era": "", - "label": "Scout LC with DSHK 12.7mm", - "shortLabel": "Scout LC with DSHK 12.7mm", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "tt_KORD": { - "name": "tt_KORD", - "coalition": "", - "era": "", - "label": "Scout LC with KORD 12.7mm", - "shortLabel": "Scout LC with KORD 12.7mm", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "HL_ZU-23": { - "name": "HL_ZU-23", - "coalition": "", - "era": "", - "label": "SPAAA HL with ZU-23", - "shortLabel": "SPAAA HL with ZU-23", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "tt_ZU-23": { - "name": "tt_ZU-23", - "coalition": "", - "era": "", - "label": "SPAAA LC with ZU-23", - "shortLabel": "SPAAA LC with ZU-23", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "HL_B8M1": { - "name": "HL_B8M1", - "coalition": "", - "era": "", - "label": "MLRS HL with B8M1 80mm", - "shortLabel": "MLRS HL with B8M1 80mm", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "tt_B8M1": { - "name": "tt_B8M1", - "coalition": "", - "era": "", - "label": "MLRS LC with B8M1 80mm", - "shortLabel": "MLRS LC with B8M1 80mm", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "NASAMS_Radar_MPQ64F1": { - "name": "NASAMS_Radar_MPQ64F1", - "coalition": "", - "era": "", - "label": "SAM NASAMS SR MPQ64F1", - "shortLabel": "SAM NASAMS SR MPQ64F1", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "NASAMS_Command_Post": { - "name": "NASAMS_Command_Post", - "coalition": "", - "era": "", - "label": "SAM NASAMS C2", - "shortLabel": "SAM NASAMS C2", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "NASAMS_LN_B": { - "name": "NASAMS_LN_B", - "coalition": "", - "era": "", - "label": "SAM NASAMS LN AIM-120B", - "shortLabel": "SAM NASAMS LN AIM-120B", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "NASAMS_LN_C": { - "name": "NASAMS_LN_C", - "coalition": "", - "era": "", - "label": "SAM NASAMS LN AIM-120C", - "shortLabel": "SAM NASAMS LN AIM-120C", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "M4_Sherman": { - "name": "M4_Sherman", - "coalition": "", - "era": "", - "label": "Tk M4 Sherman", - "shortLabel": "Tk M4 Sherman", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "M2A1_halftrack": { - "name": "M2A1_halftrack", - "coalition": "", - "era": "", - "label": "APC M2A1 Halftrack", - "shortLabel": "APC M2A1 Halftrack", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "FPS-117 Dome": { - "name": "FPS-117 Dome", - "coalition": "", - "era": "", - "label": "EWR AN/FPS-117 Radar (domed)", - "shortLabel": "EWR AN/FPS-117 Radar (domed)", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "FPS-117 ECS": { - "name": "FPS-117 ECS", - "coalition": "", - "era": "", - "label": "EWR AN/FPS-117 ECS", - "shortLabel": "EWR AN/FPS-117 ECS", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "FPS-117": { - "name": "FPS-117", - "coalition": "", - "era": "", - "label": "EWR AN/FPS-117 Radar", - "shortLabel": "EWR AN/FPS-117 Radar", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "RD_75": { - "name": "RD_75", - "coalition": "", - "era": "", - "label": "SAM SA-2 S-75 RD-75 Amazonka RF", - "shortLabel": "SAM SA-2 S-75 RD-75 Amazonka RF", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "ZSU_57_2": { - "name": "ZSU_57_2", - "coalition": "", - "era": "", - "label": "SPAAA ZSU-57-2", - "shortLabel": "SPAAA ZSU-57-2", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "S-60_Type59_Artillery": { - "name": "S-60_Type59_Artillery", - "coalition": "", - "era": "", - "label": "AAA S-60 57mm", - "shortLabel": "AAA S-60 57mm", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "generator_5i57": { - "name": "generator_5i57", - "coalition": "", - "era": "", - "label": "Diesel Power Station 5I57A", - "shortLabel": "Diesel Power Station 5I57A", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "T-72B3": { - "name": "T-72B3", - "coalition": "", - "era": "", - "label": "MBT T-72B3", - "shortLabel": "MBT T-72B3", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "PT_76": { - "name": "PT_76", - "coalition": "", - "era": "", - "label": "LT PT-76", - "shortLabel": "LT PT-76", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "BTR-82A": { - "name": "BTR-82A", - "coalition": "", - "era": "", - "label": "IFV BTR-82A", - "shortLabel": "IFV BTR-82A", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "ATZ-5": { - "name": "ATZ-5", - "coalition": "", - "era": "", - "label": "Refueler ATZ-5", - "shortLabel": "Refueler ATZ-5", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "AA8": { - "name": "AA8", - "coalition": "", - "era": "", - "label": "Firefighter Vehicle AA-7.2/60", - "shortLabel": "Firefighter Vehicle AA-7.2/60", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "TZ-22_KrAZ": { - "name": "TZ-22_KrAZ", - "coalition": "", - "era": "", - "label": "Refueler TZ-22 Tractor (KrAZ-258B1)", - "shortLabel": "Refueler TZ-22 Tractor (KrAZ-258B1)", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "ATZ-60_Maz": { - "name": "ATZ-60_Maz", - "coalition": "", - "era": "", - "label": "Refueler ATZ-60 Tractor (MAZ-7410)", - "shortLabel": "Refueler ATZ-60 Tractor (MAZ-7410)", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "ZIL-135": { - "name": "ZIL-135", - "coalition": "", - "era": "", - "label": "Truck ZIL-135", - "shortLabel": "Truck ZIL-135", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "S_75_ZIL": { - "name": "S_75_ZIL", - "coalition": "", - "era": "", - "label": "S-75 Tractor (ZIL-131)", - "shortLabel": "S-75 Tractor (ZIL-131)", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "rapier_fsa_launcher": { - "name": "rapier_fsa_launcher", - "coalition": "", - "era": "", - "label": "SAM Rapier LN", - "shortLabel": "SAM Rapier LN", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "rapier_fsa_optical_tracker_unit": { - "name": "rapier_fsa_optical_tracker_unit", - "coalition": "", - "era": "", - "label": "SAM Rapier Tracker", - "shortLabel": "SAM Rapier Tracker", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "rapier_fsa_blindfire_radar": { - "name": "rapier_fsa_blindfire_radar", - "coalition": "", - "era": "", - "label": "SAM Rapier Blindfire TR", - "shortLabel": "SAM Rapier Blindfire TR", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "bofors40": { - "name": "bofors40", - "coalition": "", - "era": "", - "label": "AAA Bofors 40mm", - "shortLabel": "AAA Bofors 40mm", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "Chieftain_mk3": { - "name": "Chieftain_mk3", - "coalition": "", - "era": "", - "label": "MBT Chieftain Mk.3", - "shortLabel": "MBT Chieftain Mk.3", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Bedford_MWD": { - "name": "Bedford_MWD", - "coalition": "", - "era": "", - "label": "Truck Bedford", - "shortLabel": "Truck Bedford", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "Land_Rover_101_FC": { - "name": "Land_Rover_101_FC", - "coalition": "", - "era": "", - "label": "Truck Land Rover 101 FC", - "shortLabel": "Truck Land Rover 101 FC", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "Land_Rover_109_S3": { - "name": "Land_Rover_109_S3", - "coalition": "", - "era": "", - "label": "LUV Land Rover 109", - "shortLabel": "LUV Land Rover 109", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "hy_launcher": { - "name": "hy_launcher", - "coalition": "", - "era": "", - "label": "AShM SS-N-2 Silkworm", - "shortLabel": "AShM SS-N-2 Silkworm", - "type": "MissilesSS", - "enabled": true, - "liveries": {} - }, - "Silkworm_SR": { - "name": "Silkworm_SR", - "coalition": "", - "era": "", - "label": "AShM Silkworm SR", - "shortLabel": "AShM Silkworm SR", - "type": "MissilesSS", - "enabled": true, - "liveries": {} - }, - "ES44AH": { - "name": "ES44AH", - "coalition": "", - "era": "", - "label": "Loco ES44AH", - "shortLabel": "Loco ES44AH", - "type": "Locomotive", - "enabled": true, - "liveries": {} - }, - "Boxcartrinity": { - "name": "Boxcartrinity", - "coalition": "", - "era": "", - "label": "Flatcar", - "shortLabel": "Flatcar", - "type": "Carriage", - "enabled": true, - "liveries": {} - }, - "Tankcartrinity": { - "name": "Tankcartrinity", - "coalition": "", - "era": "", - "label": "Tank Cartrinity", - "shortLabel": "Tank Cartrinity", - "type": "Carriage", - "enabled": true, - "liveries": {} - }, - "Wellcarnsc": { - "name": "Wellcarnsc", - "coalition": "", - "era": "", - "label": "Well Car", - "shortLabel": "Well Car", - "type": "Carriage", - "enabled": true, - "liveries": {} - }, - "flak18": { - "name": "flak18", - "coalition": "", - "era": "", - "label": "AAA 8,8cm Flak 18", - "shortLabel": "AAA 8,8cm Flak 18", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "Pz_IV_H": { - "name": "Pz_IV_H", - "coalition": "", - "era": "", - "label": "Tk PzIV H", - "shortLabel": "Tk PzIV H", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Leopard-2A5": { - "name": "Leopard-2A5", - "coalition": "", - "era": "", - "label": "MBT Leopard-2A5", - "shortLabel": "MBT Leopard-2A5", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "leopard-2A4": { - "name": "leopard-2A4", - "coalition": "", - "era": "", - "label": "MBT Leopard-2A4", - "shortLabel": "MBT Leopard-2A4", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "leopard-2A4_trs": { - "name": "leopard-2A4_trs", - "coalition": "", - "era": "", - "label": "MBT Leopard-2A4 Trs", - "shortLabel": "MBT Leopard-2A4 Trs", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Sd_Kfz_251": { - "name": "Sd_Kfz_251", - "coalition": "", - "era": "", - "label": "APC Sd.Kfz.251 Halftrack", - "shortLabel": "APC Sd.Kfz.251 Halftrack", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Blitz_36-6700A": { - "name": "Blitz_36-6700A", - "coalition": "", - "era": "", - "label": "Truck Opel Blitz", - "shortLabel": "Truck Opel Blitz", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "T155_Firtina": { - "name": "T155_Firtina", - "coalition": "", - "era": "", - "label": "SPH T155 Firtina 155mm", - "shortLabel": "SPH T155 Firtina 155mm", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "VAB_Mephisto": { - "name": "VAB_Mephisto", - "coalition": "", - "era": "", - "label": "ATGM VAB Mephisto", - "shortLabel": "ATGM VAB Mephisto", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "ZTZ96B": { - "name": "ZTZ96B", - "coalition": "", - "era": "", - "label": "ZTZ-96B", - "shortLabel": "ZTZ-96B", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "ZBD04A": { - "name": "ZBD04A", - "coalition": "", - "era": "", - "label": "ZBD-04A", - "shortLabel": "ZBD-04A", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "HQ-7_LN_SP": { - "name": "HQ-7_LN_SP", - "coalition": "", - "era": "", - "label": "HQ-7 Self-Propelled LN", - "shortLabel": "HQ-7 Self-Propelled LN", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "HQ-7_LN_EO": { - "name": "HQ-7_LN_EO", - "coalition": "", - "era": "", - "label": "HQ-7 LN Electro-Optics", - "shortLabel": "HQ-7 LN Electro-Optics", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "HQ-7_STR_SP": { - "name": "HQ-7_STR_SP", - "coalition": "", - "era": "", - "label": "HQ-7 Self-Propelled STR", - "shortLabel": "HQ-7 Self-Propelled STR", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "PLZ05": { - "name": "PLZ05", - "coalition": "", - "era": "", - "label": "PLZ-05", - "shortLabel": "PLZ-05", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "TYPE-59": { - "name": "TYPE-59", - "coalition": "", - "era": "", - "label": "MT Type 59", - "shortLabel": "MT Type 59", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Kubelwagen_82": { - "name": "Kubelwagen_82", - "coalition": "", - "era": "", - "label": "LUV Kubelwagen Jeep", - "shortLabel": "LUV Kubelwagen Jeep", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "Sd_Kfz_2": { - "name": "Sd_Kfz_2", - "coalition": "", - "era": "", - "label": "LUV Kettenrad", - "shortLabel": "LUV Kettenrad", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "Sd_Kfz_7": { - "name": "Sd_Kfz_7", - "coalition": "", - "era": "", - "label": "Tractor Sd.Kfz.7 Art'y Tractor", - "shortLabel": "Tractor Sd.Kfz.7 Art'y Tractor", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "Horch_901_typ_40_kfz_21": { - "name": "Horch_901_typ_40_kfz_21", - "coalition": "", - "era": "", - "label": "LUV Horch 901 Staff Car", - "shortLabel": "LUV Horch 901 Staff Car", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "Tiger_I": { - "name": "Tiger_I", - "coalition": "", - "era": "", - "label": "Tk Tiger 1", - "shortLabel": "Tk Tiger 1", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Tiger_II_H": { - "name": "Tiger_II_H", - "coalition": "", - "era": "", - "label": "Tk Tiger II", - "shortLabel": "Tk Tiger II", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Pz_V_Panther_G": { - "name": "Pz_V_Panther_G", - "coalition": "", - "era": "", - "label": "Tk Panther G (Pz V)", - "shortLabel": "Tk Panther G (Pz V)", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Jagdpanther_G1": { - "name": "Jagdpanther_G1", - "coalition": "", - "era": "", - "label": "SPG Jagdpanther TD", - "shortLabel": "SPG Jagdpanther TD", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "JagdPz_IV": { - "name": "JagdPz_IV", - "coalition": "", - "era": "", - "label": "SPG Jagdpanzer IV TD", - "shortLabel": "SPG Jagdpanzer IV TD", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Stug_IV": { - "name": "Stug_IV", - "coalition": "", - "era": "", - "label": "SPG StuG IV AG", - "shortLabel": "SPG StuG IV AG", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "SturmPzIV": { - "name": "SturmPzIV", - "coalition": "", - "era": "", - "label": "SPG Brummbaer AG", - "shortLabel": "SPG Brummbaer AG", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Wespe124": { - "name": "Wespe124", - "coalition": "", - "era": "", - "label": "SPH Sd.Kfz.124 Wespe 105mm", - "shortLabel": "SPH Sd.Kfz.124 Wespe 105mm", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "Sd_Kfz_234_2_Puma": { - "name": "Sd_Kfz_234_2_Puma", - "coalition": "", - "era": "", - "label": "Scout Puma AC", - "shortLabel": "Scout Puma AC", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "flak30": { - "name": "flak30", - "coalition": "", - "era": "", - "label": "AAA Flak 38 20mm", - "shortLabel": "AAA Flak 38 20mm", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "flak36": { - "name": "flak36", - "coalition": "", - "era": "", - "label": "AAA 8,8cm Flak 36", - "shortLabel": "AAA 8,8cm Flak 36", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "flak37": { - "name": "flak37", - "coalition": "", - "era": "", - "label": "AAA 8,8cm Flak 37", - "shortLabel": "AAA 8,8cm Flak 37", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "flak38": { - "name": "flak38", - "coalition": "", - "era": "", - "label": "AAA Flak-Vierling 38 Quad 20mm", - "shortLabel": "AAA Flak-Vierling 38 Quad 20mm", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "KDO_Mod40": { - "name": "KDO_Mod40", - "coalition": "", - "era": "", - "label": "AAA Kdo.G.40", - "shortLabel": "AAA Kdo.G.40", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "Flakscheinwerfer_37": { - "name": "Flakscheinwerfer_37", - "coalition": "", - "era": "", - "label": "SL Flakscheinwerfer 37", - "shortLabel": "SL Flakscheinwerfer 37", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "Maschinensatz_33": { - "name": "Maschinensatz_33", - "coalition": "", - "era": "", - "label": "Maschinensatz 33 Gen", - "shortLabel": "Maschinensatz 33 Gen", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "soldier_mauser98": { - "name": "soldier_mauser98", - "coalition": "", - "era": "", - "label": "Infantry Mauser 98", - "shortLabel": "Infantry Mauser 98", - "type": "Infantry", - "enabled": true, - "liveries": {} - }, - "SK_C_28_naval_gun": { - "name": "SK_C_28_naval_gun", - "coalition": "", - "era": "", - "label": "Gun 15cm SK C/28 Naval in Bunker", - "shortLabel": "Gun 15cm SK C/28 Naval in Bunker", - "type": "Fortification", - "enabled": true, - "liveries": {} - }, - "fire_control": { - "name": "fire_control", - "coalition": "", - "era": "", - "label": "Bunker with Fire Control Center", - "shortLabel": "Bunker with Fire Control Center", - "type": "Fortification", - "enabled": true, - "liveries": {} - }, - "Stug_III": { - "name": "Stug_III", - "coalition": "", - "era": "", - "label": "SPG StuG III G AG", - "shortLabel": "SPG StuG III G AG", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Elefant_SdKfz_184": { - "name": "Elefant_SdKfz_184", - "coalition": "", - "era": "", - "label": "SPG Elefant TD", - "shortLabel": "SPG Elefant TD", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "flak41": { - "name": "flak41", - "coalition": "", - "era": "", - "label": "AAA 8,8cm Flak 41", - "shortLabel": "AAA 8,8cm Flak 41", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "v1_launcher": { - "name": "v1_launcher", - "coalition": "", - "era": "", - "label": "V-1 Launch Ramp", - "shortLabel": "V-1 Launch Ramp", - "type": "MissilesSS", - "enabled": true, - "liveries": {} - }, - "FuMG-401": { - "name": "FuMG-401", - "coalition": "", - "era": "", - "label": "EWR FuMG-401 Freya LZ", - "shortLabel": "EWR FuMG-401 Freya LZ", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "FuSe-65": { - "name": "FuSe-65", - "coalition": "", - "era": "", - "label": "EWR FuSe-65 Würzburg-Riese", - "shortLabel": "EWR FuSe-65 Würzburg-Riese", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "Pak40": { - "name": "Pak40", - "coalition": "", - "era": "", - "label": "FH Pak 40 75mm", - "shortLabel": "FH Pak 40 75mm", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "LeFH_18-40-105": { - "name": "LeFH_18-40-105", - "coalition": "", - "era": "", - "label": "FH LeFH-18 105mm", - "shortLabel": "FH LeFH-18 105mm", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "Cromwell_IV": { - "name": "Cromwell_IV", - "coalition": "", - "era": "", - "label": "Tk Cromwell IV", - "shortLabel": "Tk Cromwell IV", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "M4A4_Sherman_FF": { - "name": "M4A4_Sherman_FF", - "coalition": "", - "era": "", - "label": "Tk M4A4 Sherman Firefly", - "shortLabel": "Tk M4A4 Sherman Firefly", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "soldier_wwii_br_01": { - "name": "soldier_wwii_br_01", - "coalition": "", - "era": "", - "label": "Infantry SMLE No.4 Mk-1", - "shortLabel": "Infantry SMLE No.4 Mk-1", - "type": "Infantry", - "enabled": true, - "liveries": {} - }, - "Centaur_IV": { - "name": "Centaur_IV", - "coalition": "", - "era": "", - "label": "Tk Centaur IV CS", - "shortLabel": "Tk Centaur IV CS", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Churchill_VII": { - "name": "Churchill_VII", - "coalition": "", - "era": "", - "label": "Tk Churchill VII", - "shortLabel": "Tk Churchill VII", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Daimler_AC": { - "name": "Daimler_AC", - "coalition": "", - "era": "", - "label": "Car Daimler Armored", - "shortLabel": "Car Daimler Armored", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "Tetrarch": { - "name": "Tetrarch", - "coalition": "", - "era": "", - "label": "Tk Tetrach", - "shortLabel": "Tk Tetrach", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "QF_37_AA": { - "name": "QF_37_AA", - "coalition": "", - "era": "", - "label": "AAA QF 3.7\"", - "shortLabel": "AAA QF 3.7\"", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "Allies_Director": { - "name": "Allies_Director", - "coalition": "", - "era": "", - "label": "Allies Rangefinder (DRT)", - "shortLabel": "Allies Rangefinder (DRT)", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "CCKW_353": { - "name": "CCKW_353", - "coalition": "", - "era": "", - "label": "Truck GMC \"Jimmy\" 6x6", - "shortLabel": "Truck GMC \"Jimmy\" 6x6", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "Willys_MB": { - "name": "Willys_MB", - "coalition": "", - "era": "", - "label": "Car Willys Jeep", - "shortLabel": "Car Willys Jeep", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "M12_GMC": { - "name": "M12_GMC", - "coalition": "", - "era": "", - "label": "SPH M12 GMC 155mm", - "shortLabel": "SPH M12 GMC 155mm", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "M30_CC": { - "name": "M30_CC", - "coalition": "", - "era": "", - "label": "Ammo M30 Cargo Carrier", - "shortLabel": "Ammo M30 Cargo Carrier", - "type": "Unarmed", - "enabled": true, - "liveries": {} - }, - "soldier_wwii_us": { - "name": "soldier_wwii_us", - "coalition": "", - "era": "", - "label": "Infantry M1 Garand", - "shortLabel": "Infantry M1 Garand", - "type": "Infantry", - "enabled": true, - "liveries": {} - }, - "M10_GMC": { - "name": "M10_GMC", - "coalition": "", - "era": "", - "label": "SPG M10 GMC TD", - "shortLabel": "SPG M10 GMC TD", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "M8_Greyhound": { - "name": "M8_Greyhound", - "coalition": "", - "era": "", - "label": "Scout M8 Greyhound AC", - "shortLabel": "Scout M8 Greyhound AC", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "M2A1-105": { - "name": "M2A1-105", - "coalition": "", - "era": "", - "label": "FH M2A1 105mm", - "shortLabel": "FH M2A1 105mm", - "type": "Artillery", - "enabled": true, - "liveries": {} - }, - "M4_Tractor": { - "name": "M4_Tractor", - "coalition": "", - "era": "", - "label": "Tractor M4 High Speed", - "shortLabel": "Tractor M4 High Speed", - "type": "Armor", - "enabled": true, - "liveries": {} - }, - "M45_Quadmount": { - "name": "M45_Quadmount", - "coalition": "", - "era": "", - "label": "AAA M45 Quadmount HB 12.7mm", - "shortLabel": "AAA M45 Quadmount HB 12.7mm", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "M1_37mm": { - "name": "M1_37mm", - "coalition": "", - "era": "", - "label": "AAA M1 37mm", - "shortLabel": "AAA M1 37mm", - "type": "AirDefence", - "enabled": true, - "liveries": {} - }, - "DR_50Ton_Flat_Wagon": { - "name": "DR_50Ton_Flat_Wagon", - "coalition": "", - "era": "", - "label": "DR 50-ton flat wagon", - "shortLabel": "DR 50-ton flat wagon", - "type": "Carriage", - "enabled": true, - "liveries": {} - }, - "DRG_Class_86": { - "name": "DRG_Class_86", - "coalition": "", - "era": "", - "label": "Loco DRG Class 86", - "shortLabel": "Loco DRG Class 86", - "type": "Locomotive", - "enabled": true, - "liveries": {} - }, - "German_covered_wagon_G10": { - "name": "German_covered_wagon_G10", - "coalition": "", - "era": "", - "label": "Wagon G10 (Germany)", - "shortLabel": "Wagon G10 (Germany)", - "type": "Carriage", - "enabled": true, - "liveries": {} - }, - "German_tank_wagon": { - "name": "German_tank_wagon", - "coalition": "", - "era": "", - "label": "Tank Car (Germany)", - "shortLabel": "Tank Car (Germany)", - "type": "Carriage", - "enabled": true, - "liveries": {} - } + "1L13 EWR": { + "name": "1L13 EWR", + "coalition": "red", + "era": "Late Cold War", + "label": "Box Spring", + "shortLabel": "1L13 EWR", + "filename": "", + "type": "Radar", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 300000, + "engagementRange": 0 + }, + "2B11 mortar": { + "name": "2B11 mortar", + "coalition": "red", + "era": "Late Cold War", + "label": "2B11 mortar", + "shortLabel": "2B11 mortar", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 7000 + }, + "2S6 Tunguska": { + "name": "2S6 Tunguska", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-19 Tunguska", + "shortLabel": "SA-19", + "range": "Short", + "filename": "", + "type": "AAA/SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 18000, + "engagementRange": 8000 + }, + "55G6 EWR": { + "name": "55G6 EWR", + "coalition": "red", + "era": "Early Cold War", + "label": "Tall Rack", + "shortLabel": "55G6 EWR", + "filename": "", + "type": "Radar", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 400000, + "engagementRange": 0 + }, + "5p73 s-125 ln": { + "name": "5p73 s-125 ln", + "coalition": "red", + "era": "Early Cold War", + "label": "SA-3 Launcher", + "shortLabel": "5p73 s-125 ln", + "range": "Medium", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 18000 + }, + "AAV7": { + "name": "AAV7", + "coalition": "blue", + "era": "Mid Cold War", + "label": "AAV7", + "shortLabel": "AAV7", + "filename": "", + "type": "APC", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 1200 + }, + "ATMZ-5": { + "name": "ATMZ-5", + "coalition": "red", + "era": "Early Cold War", + "label": "ATMZ-5", + "shortLabel": "ATMZ-5", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "ATZ-10": { + "name": "ATZ-10", + "coalition": "red", + "era": "Early Cold War", + "label": "ATZ-10", + "shortLabel": "ATZ-10", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "BMD-1": { + "name": "BMD-1", + "coalition": "red", + "era": "Mid Cold War", + "label": "BMD-1", + "shortLabel": "BMD-1", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "iran - camo": { + "name": "IRAN - camo", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "barrelHeight": 1.25, + "muzzleVelocity": 900, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "BMP-1": { + "name": "BMP-1", + "coalition": "red", + "era": "Mid Cold War", + "label": "BMP-1", + "shortLabel": "BMP-1", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grg_summer": { + "name": "GRG_Summer", + "countries": "All" + }, + "grg_autumn": { + "name": "GRG_Autumn", + "countries": "All" + }, + "grg_winter": { + "name": "GRG_Winter", + "countries": "All" + }, + "grg_spring": { + "name": "GRG_Spring", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "BMP-2": { + "name": "BMP-2", + "coalition": "red", + "era": "Mid Cold War", + "label": "BMP-2", + "shortLabel": "BMP-2", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "grg_summer": { + "name": "GRG_Summer", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grg_autumn": { + "name": "GRG_Autumn", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grg_winter": { + "name": "GRG_Winter", + "countries": "All" + }, + "grg_spring": { + "name": "GRG_Spring", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "barrelHeight": 1.95, + "muzzleVelocity": 970, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "BMP-3": { + "name": "BMP-3", + "coalition": "red", + "era": "Late Cold War", + "label": "BMP-3", + "shortLabel": "BMP-3", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 4000 + }, + "BRDM-2": { + "name": "BRDM-2", + "coalition": "red", + "era": "Early Cold War", + "label": "BRDM-2", + "shortLabel": "BRDM-2", + "filename": "", + "type": "Reconnaissance", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 1600 + }, + "BTR-80": { + "name": "BTR-80", + "coalition": "red", + "era": "Late Cold War", + "label": "BTR-80", + "shortLabel": "BTR-80", + "filename": "", + "type": "APC", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "light green autumn": { + "name": "Light Green Autumn", + "countries": "All" + }, + "military police autumn": { + "name": "Military Police Autumn", + "countries": "All" + }, + "light green winter": { + "name": "Light Green Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "military police winter": { + "name": "Military Police Winter", + "countries": "All" + }, + "military police spring": { + "name": "Military Police Spring", + "countries": "All" + }, + "light green spring": { + "name": "Light Green Spring", + "countries": "All" + }, + "green autumn": { + "name": "Green_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "green winter": { + "name": "Green_Winter", + "countries": "All" + }, + "military police summer": { + "name": "Military Police Summer", + "countries": "All" + }, + "light green summer": { + "name": "Light_Green_Summer", + "countries": "All" + }, + "green spring": { + "name": "Green_Spring", + "countries": "All" + }, + "green summer": { + "name": "Green_Summer", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 1600 + }, + "BTR_D": { + "name": "BTR_D", + "coalition": "red", + "era": "Mid Cold War", + "label": "BTR_D", + "shortLabel": "BTR_D", + "filename": "", + "type": "APC", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "Bunker": { + "name": "Bunker", + "coalition": "", + "era": "", + "label": "Bunker", + "shortLabel": "Bunker", + "filename": "", + "type": "Static", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 800 + }, + "Challenger2": { + "name": "Challenger2", + "coalition": "blue", + "era": "Modern", + "label": "Challenger2", + "shortLabel": "Challenger2", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 3500 + }, + "Cobra": { + "name": "Cobra", + "coalition": "blue", + "era": "Modern", + "label": "Otokar Cobra", + "shortLabel": "Cobra", + "filename": "", + "type": "Reconnaissance", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 1200 + }, + "Dog Ear radar": { + "name": "Dog Ear radar", + "coalition": "red", + "era": "Mid Cold War", + "label": "Dog Ear", + "shortLabel": "Dog Ear radar", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 35000, + "engagementRange": 0 + }, + "GAZ-3307": { + "name": "GAZ-3307", + "coalition": "red", + "era": "Early Cold War", + "label": "GAZ-3307", + "shortLabel": "GAZ-3307", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "GAZ-3308": { + "name": "GAZ-3308", + "coalition": "red", + "era": "Early Cold War", + "label": "GAZ-3308", + "shortLabel": "GAZ-3308", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "GAZ-66": { + "name": "GAZ-66", + "coalition": "red", + "era": "Early Cold War", + "label": "GAZ-66", + "shortLabel": "GAZ-66", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Gepard": { + "name": "Gepard", + "coalition": "blue", + "era": "Late Cold War", + "label": "Gepard", + "shortLabel": "Gepard", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "barrelHeight": 2.35, + "muzzleVelocity": 1440, + "acquisitionRange": 15000, + "engagementRange": 4000 + }, + "Grad-URAL": { + "name": "Grad-URAL", + "coalition": "red", + "era": "Mid Cold War", + "label": "Grad", + "shortLabel": "Grad", + "filename": "", + "type": "Rocket Artillery", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 19000 + }, + "HEMTT TFFT": { + "name": "HEMTT TFFT", + "coalition": "blue", + "era": "Late Cold War", + "label": "HEMTT TFFT", + "shortLabel": "HEMTT TFFT", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Hawk SAM Battery": { + "name": "Hawk SAM Battery", + "coalition": "blue", + "era": "Early Cold War", + "label": "Hawk SAM Battery", + "shortLabel": "Hawk SAM Battery", + "range": "Medium", + "filename": "", + "type": "SAM Site", + "enabled": true, + "acquisitionRange": 90000, + "engagementRange": 0 + }, + "Hawk cwar": { + "name": "Hawk cwar", + "coalition": "blue", + "era": "Early Cold War", + "label": "Hawk Continous Wave Acquisition Radar", + "shortLabel": "Hawk cwar", + "range": "Long", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 70000, + "engagementRange": 0 + }, + "Hawk ln": { + "name": "Hawk ln", + "coalition": "blue", + "era": "Late Cold War", + "label": "Hawk Launcher", + "shortLabel": "Hawk ln", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "xx337 - 92 sqn blue tail": { + "name": "XX337-92Sqn", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-341 grey": { + "name": "HW-341 Grey", + "countries": [ + "FIN" + ] + }, + "xx245 - 2009 raf hawk display": { + "name": "XX245-RAF Hawk Display 2009", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-329 green brown": { + "name": "HW-329 Green Brown", + "countries": [ + "FIN" + ] + }, + "swiss u-1268 - byebyehawk": { + "name": "U-1268 - ByeByeHawk", + "countries": [ + "SUI" + ] + }, + "25th fts, vance afb, oklahoma (vn)": { + "name": "25th FTS, Vance AFB, Oklahoma (VN)", + "countries": [ + "USA" + ] + }, + "xx226 - 74sqn 1992-2000": { + "name": "74Sqn XX226 1992-2000", + "countries": [ + "UK" + ] + }, + "finland hw-373 ex-swiss air force": { + "name": "HW-373 Ex-Swiss Air Force", + "countries": [ + "FIN" + ] + }, + "swiss u-1252 - normal": { + "name": "U-1252 - Normal", + "countries": [ + "SUI" + ] + }, + "swiss u-1270 - wallis": { + "name": "U-1270 - Wallis", + "countries": [ + "SUI" + ] + }, + "1st rs, beale afb, california (bb)": { + "name": "1st RS, Beale AFB, California (BB)", + "countries": [ + "USA" + ] + }, + "xx100 - tfc": { + "name": "The Fighter Collection XX100", + "countries": [ + "UK" + ] + }, + "509th bs, whitman afb, missouri (wm)": { + "name": "509th BS, Whiteman AFB, Missouri (WM)", + "countries": [ + "USA" + ] + }, + "xx218 - 208sqn": { + "name": "208Sqn XX218", + "countries": [ + "UK" + ] + }, + "xx316 - fradu royal navy": { + "name": "Royal Navy XX316", + "countries": [ + "UK" + ] + }, + "usaf aggressor 269": { + "name": "USAF-AGGRESSOR-269", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "swiss u-1251 - white": { + "name": "U-1251 - White", + "countries": [ + "SUI" + ] + }, + "xx201 - 2010 raf hawk display": { + "name": "XX201-4FTS-HawkDisplay2010", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx175 - fradu royal navy": { + "name": "Royal Navy XX175", + "countries": [ + "UK" + ] + }, + "1018 - united arab emirates": { + "name": "United Arab Emirates Air Force", + "countries": [ + "ARE" + ] + }, + "xx179 - red arrows 1979-2007": { + "name": "Red Arrows 1979-2007", + "countries": [ + "UK" + ] + }, + "xx178 - 1994 raf hawk display": { + "name": "XX178-RAF Hawk Display 1994", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx159 - fradu royal navy anniversary": { + "name": "Royal Navy XX159", + "countries": [ + "UK" + ] + }, + "xx189 - 100sqn": { + "name": "100Sqn XX189", + "countries": [ + "TUR", + "RUS", + "USA", + "ISR", + "NETH", + "NOR", + "RSO", + "BEL", + "GER", + "DEN", + "SPN", + "GRG", + "ABH", + "UKR", + "ITA", + "CAN", + "FRA", + "UK" + ] + }, + "xx228 - veao": { + "name": "VEAO, XX228", + "countries": [ + "UK" + ] + }, + "xx316 - 74sqn 1998-2000": { + "name": "74Sqn XX316 1998-2000", + "countries": [ + "UK" + ] + }, + "xx179 - red arrows 2008-2012": { + "name": "Red Arrows 2008-2012", + "countries": [ + "UK" + ] + }, + "12th ftw, randolph afb, texas (ra)": { + "name": "12th FTW, Randolph AFB, Texas (RA)", + "countries": [ + "USA" + ] + }, + "nas meridian, mississippi seven (vt-7)": { + "name": "NAS Meridian, Mississippi Seven (VT-7)", + "countries": [ + "USA" + ] + }, + "88th fts, sheppard afb, texas (en)": { + "name": "88th FTS, Sheppard AFB, Texas (EN)", + "countries": [ + "USA" + ] + }, + "xx159 - 2004 raf hawk display": { + "name": "XX159-RAF Hawk Display 2004", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + } + }, + "acquisitionRange": 0, + "engagementRange": 45000 + }, + "Hawk pcp": { + "name": "Hawk pcp", + "coalition": "blue", + "era": "Late Cold War", + "label": "Hawk Platoon Command Post", + "shortLabel": "Hawk pcp", + "range": "Medium", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Hawk sr": { + "name": "Hawk sr", + "coalition": "blue", + "era": "Early Cold War", + "label": "Hawk Search radar", + "shortLabel": "Hawk sr", + "range": "Long", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "xx337 - 92 sqn blue tail": { + "name": "XX337-92Sqn", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-341 grey": { + "name": "HW-341 Grey", + "countries": [ + "FIN" + ] + }, + "xx245 - 2009 raf hawk display": { + "name": "XX245-RAF Hawk Display 2009", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-329 green brown": { + "name": "HW-329 Green Brown", + "countries": [ + "FIN" + ] + }, + "swiss u-1268 - byebyehawk": { + "name": "U-1268 - ByeByeHawk", + "countries": [ + "SUI" + ] + }, + "25th fts, vance afb, oklahoma (vn)": { + "name": "25th FTS, Vance AFB, Oklahoma (VN)", + "countries": [ + "USA" + ] + }, + "xx226 - 74sqn 1992-2000": { + "name": "74Sqn XX226 1992-2000", + "countries": [ + "UK" + ] + }, + "finland hw-373 ex-swiss air force": { + "name": "HW-373 Ex-Swiss Air Force", + "countries": [ + "FIN" + ] + }, + "swiss u-1252 - normal": { + "name": "U-1252 - Normal", + "countries": [ + "SUI" + ] + }, + "swiss u-1270 - wallis": { + "name": "U-1270 - Wallis", + "countries": [ + "SUI" + ] + }, + "1st rs, beale afb, california (bb)": { + "name": "1st RS, Beale AFB, California (BB)", + "countries": [ + "USA" + ] + }, + "xx100 - tfc": { + "name": "The Fighter Collection XX100", + "countries": [ + "UK" + ] + }, + "509th bs, whitman afb, missouri (wm)": { + "name": "509th BS, Whiteman AFB, Missouri (WM)", + "countries": [ + "USA" + ] + }, + "xx218 - 208sqn": { + "name": "208Sqn XX218", + "countries": [ + "UK" + ] + }, + "xx316 - fradu royal navy": { + "name": "Royal Navy XX316", + "countries": [ + "UK" + ] + }, + "usaf aggressor 269": { + "name": "USAF-AGGRESSOR-269", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "swiss u-1251 - white": { + "name": "U-1251 - White", + "countries": [ + "SUI" + ] + }, + "xx201 - 2010 raf hawk display": { + "name": "XX201-4FTS-HawkDisplay2010", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx175 - fradu royal navy": { + "name": "Royal Navy XX175", + "countries": [ + "UK" + ] + }, + "1018 - united arab emirates": { + "name": "United Arab Emirates Air Force", + "countries": [ + "ARE" + ] + }, + "xx179 - red arrows 1979-2007": { + "name": "Red Arrows 1979-2007", + "countries": [ + "UK" + ] + }, + "xx178 - 1994 raf hawk display": { + "name": "XX178-RAF Hawk Display 1994", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx159 - fradu royal navy anniversary": { + "name": "Royal Navy XX159", + "countries": [ + "UK" + ] + }, + "xx189 - 100sqn": { + "name": "100Sqn XX189", + "countries": [ + "TUR", + "RUS", + "USA", + "ISR", + "NETH", + "NOR", + "RSO", + "BEL", + "GER", + "DEN", + "SPN", + "GRG", + "ABH", + "UKR", + "ITA", + "CAN", + "FRA", + "UK" + ] + }, + "xx228 - veao": { + "name": "VEAO, XX228", + "countries": [ + "UK" + ] + }, + "xx316 - 74sqn 1998-2000": { + "name": "74Sqn XX316 1998-2000", + "countries": [ + "UK" + ] + }, + "xx179 - red arrows 2008-2012": { + "name": "Red Arrows 2008-2012", + "countries": [ + "UK" + ] + }, + "12th ftw, randolph afb, texas (ra)": { + "name": "12th FTW, Randolph AFB, Texas (RA)", + "countries": [ + "USA" + ] + }, + "nas meridian, mississippi seven (vt-7)": { + "name": "NAS Meridian, Mississippi Seven (VT-7)", + "countries": [ + "USA" + ] + }, + "88th fts, sheppard afb, texas (en)": { + "name": "88th FTS, Sheppard AFB, Texas (EN)", + "countries": [ + "USA" + ] + }, + "xx159 - 2004 raf hawk display": { + "name": "XX159-RAF Hawk Display 2004", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + } + }, + "acquisitionRange": 90000, + "engagementRange": 0 + }, + "Hawk tr": { + "name": "Hawk tr", + "coalition": "blue", + "era": "Early Cold War", + "label": "Hawk Track radar", + "shortLabel": "Hawk tr", + "range": "Medium", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "xx337 - 92 sqn blue tail": { + "name": "XX337-92Sqn", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-341 grey": { + "name": "HW-341 Grey", + "countries": [ + "FIN" + ] + }, + "xx245 - 2009 raf hawk display": { + "name": "XX245-RAF Hawk Display 2009", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "finland hw-329 green brown": { + "name": "HW-329 Green Brown", + "countries": [ + "FIN" + ] + }, + "swiss u-1268 - byebyehawk": { + "name": "U-1268 - ByeByeHawk", + "countries": [ + "SUI" + ] + }, + "25th fts, vance afb, oklahoma (vn)": { + "name": "25th FTS, Vance AFB, Oklahoma (VN)", + "countries": [ + "USA" + ] + }, + "xx226 - 74sqn 1992-2000": { + "name": "74Sqn XX226 1992-2000", + "countries": [ + "UK" + ] + }, + "finland hw-373 ex-swiss air force": { + "name": "HW-373 Ex-Swiss Air Force", + "countries": [ + "FIN" + ] + }, + "swiss u-1252 - normal": { + "name": "U-1252 - Normal", + "countries": [ + "SUI" + ] + }, + "swiss u-1270 - wallis": { + "name": "U-1270 - Wallis", + "countries": [ + "SUI" + ] + }, + "1st rs, beale afb, california (bb)": { + "name": "1st RS, Beale AFB, California (BB)", + "countries": [ + "USA" + ] + }, + "xx100 - tfc": { + "name": "The Fighter Collection XX100", + "countries": [ + "UK" + ] + }, + "509th bs, whitman afb, missouri (wm)": { + "name": "509th BS, Whiteman AFB, Missouri (WM)", + "countries": [ + "USA" + ] + }, + "xx218 - 208sqn": { + "name": "208Sqn XX218", + "countries": [ + "UK" + ] + }, + "xx316 - fradu royal navy": { + "name": "Royal Navy XX316", + "countries": [ + "UK" + ] + }, + "usaf aggressor 269": { + "name": "USAF-AGGRESSOR-269", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "swiss u-1251 - white": { + "name": "U-1251 - White", + "countries": [ + "SUI" + ] + }, + "xx201 - 2010 raf hawk display": { + "name": "XX201-4FTS-HawkDisplay2010", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx175 - fradu royal navy": { + "name": "Royal Navy XX175", + "countries": [ + "UK" + ] + }, + "1018 - united arab emirates": { + "name": "United Arab Emirates Air Force", + "countries": [ + "ARE" + ] + }, + "xx179 - red arrows 1979-2007": { + "name": "Red Arrows 1979-2007", + "countries": [ + "UK" + ] + }, + "xx178 - 1994 raf hawk display": { + "name": "XX178-RAF Hawk Display 1994", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + }, + "xx159 - fradu royal navy anniversary": { + "name": "Royal Navy XX159", + "countries": [ + "UK" + ] + }, + "xx189 - 100sqn": { + "name": "100Sqn XX189", + "countries": [ + "TUR", + "RUS", + "USA", + "ISR", + "NETH", + "NOR", + "RSO", + "BEL", + "GER", + "DEN", + "SPN", + "GRG", + "ABH", + "UKR", + "ITA", + "CAN", + "FRA", + "UK" + ] + }, + "xx228 - veao": { + "name": "VEAO, XX228", + "countries": [ + "UK" + ] + }, + "xx316 - 74sqn 1998-2000": { + "name": "74Sqn XX316 1998-2000", + "countries": [ + "UK" + ] + }, + "xx179 - red arrows 2008-2012": { + "name": "Red Arrows 2008-2012", + "countries": [ + "UK" + ] + }, + "12th ftw, randolph afb, texas (ra)": { + "name": "12th FTW, Randolph AFB, Texas (RA)", + "countries": [ + "USA" + ] + }, + "nas meridian, mississippi seven (vt-7)": { + "name": "NAS Meridian, Mississippi Seven (VT-7)", + "countries": [ + "USA" + ] + }, + "88th fts, sheppard afb, texas (en)": { + "name": "88th FTS, Sheppard AFB, Texas (EN)", + "countries": [ + "USA" + ] + }, + "xx159 - 2004 raf hawk display": { + "name": "XX159-RAF Hawk Display 2004", + "countries": [ + "USA", + "NOR", + "BEL", + "DEN", + "SPN", + "UKR", + "TUR", + "NETH", + "ISR", + "ABH", + "FRA", + "RUS", + "INS", + "RSO", + "AUS", + "CAN", + "UK", + "GER", + "GRG", + "ITA" + ] + } + }, + "acquisitionRange": 90000, + "engagementRange": 0 + }, + "Hummer": { + "name": "Hummer", + "coalition": "blue", + "era": "Mid Cold War", + "label": "Hummer", + "shortLabel": "Hummer", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "IKARUS Bus": { + "name": "IKARUS Bus", + "coalition": "red", + "era": "Mid Cold War", + "label": "IKARUS Bus", + "shortLabel": "IKARUS Bus", + "filename": "", + "type": "Unarmed", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Igla manpad INS": { + "name": "Igla manpad INS", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-18 Igla manpad INS", + "shortLabel": "Igla manpad INS", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true, + "liveries": { + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 5200 + }, + "Infantry AK": { + "name": "Infantry AK", + "coalition": "red", + "era": "Mid Cold War", + "label": "Infantry AK", + "shortLabel": "Infantry AK", + "filename": "", + "type": "Infantry", + "enabled": true, + "muzzleVelocity": 900, + "barrelHeight": 0.9, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "KAMAZ Truck": { + "name": "KAMAZ Truck", + "coalition": "red", + "era": "Mid Cold War", + "label": "KAMAZ Truck", + "shortLabel": "KAMAZ Truck", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Kub 1S91 str": { + "name": "Kub 1S91 str", + "coalition": "red", + "era": "Mid Cold War", + "label": "SA-6 Straight flush", + "shortLabel": "Kub 1S91 str", + "range": "Medium", + "filename": "", + "type": "SAM Search/Track radar", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 70000, + "engagementRange": 0 + }, + "Kub 2P25 ln": { + "name": "Kub 2P25 ln", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-6 Launcher", + "shortLabel": "Kub 2P25 ln", + "range": "Medium", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 25000 + }, + "LAV-25": { + "name": "LAV-25", + "coalition": "blue", + "era": "Late Cold War", + "label": "LAV-25", + "shortLabel": "LAV-25", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "aus_winter": { + "name": "AUS_Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "aus_summer": { + "name": "AUS_Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "sand": { + "name": "sand", + "countries": "All" + }, + "green": { + "name": "green", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 2500 + }, + "LAZ Bus": { + "name": "LAZ Bus", + "coalition": "red", + "era": "Early Cold War", + "label": "LAZ Bus", + "shortLabel": "LAZ Bus", + "filename": "", + "type": "Unarmed", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Leclerc": { + "name": "Leclerc", + "coalition": "blue", + "era": "Modern", + "label": "Leclerc", + "shortLabel": "Leclerc", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 3500 + }, + "Leopard-2": { + "name": "Leopard-2", + "coalition": "blue", + "era": "Late Cold War", + "label": "Leopard-2", + "shortLabel": "Leopard-2", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "can_spring": { + "name": "CAN_spring", + "countries": "All" + }, + "winter": { + "name": "winter", + "countries": "All" + }, + "spn_summer": { + "name": "SPN_Summer", + "countries": "All" + }, + "de_desert_winter": { + "name": "winter", + "countries": "All" + }, + "de_desert_spring": { + "name": "spring", + "countries": "All" + }, + "de_summer": { + "name": "summer", + "countries": "All" + }, + "den_autumn": { + "name": "DEN_autumn", + "countries": "All" + }, + "den_spring": { + "name": "DEN_spring", + "countries": "All" + }, + "de_winter": { + "name": "winter", + "countries": "All" + }, + "neth_summer": { + "name": "NETH_summer", + "countries": "All" + }, + "de_autumn": { + "name": "winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_summer", + "countries": "All" + }, + "spring": { + "name": "spring", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_autumn", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "de_desert_summer": { + "name": "DE_Desert_summer", + "countries": "All" + }, + "desert_summer": { + "name": "Desert_summer", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_winter", + "countries": "All" + }, + "den_summer": { + "name": "DEN_summer", + "countries": "All" + }, + "desert_autumn": { + "name": "Desert_autumn", + "countries": "All" + }, + "de_spring": { + "name": "spring", + "countries": "All" + }, + "den_winter": { + "name": "DEN_winter", + "countries": "All" + }, + "fin_winter": { + "name": "FIN_winter", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_spring", + "countries": "All" + }, + "desert_winter": { + "name": "Desert_winter", + "countries": "All" + }, + "can_winter": { + "name": "CAN_winter", + "countries": "All" + }, + "de_desert_autumn": { + "name": "autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + }, + "desert_spring": { + "name": "Desert_spring", + "countries": "All" + }, + "fin_spring": { + "name": "FIN_spring", + "countries": "All" + }, + "fin_summer": { + "name": "FIN_summer", + "countries": "All" + }, + "can_summer": { + "name": "CAN_summer", + "countries": "All" + }, + "can_autumn": { + "name": "CAN_autumn", + "countries": "All" + }, + "neth_winter": { + "name": "NETH_winter", + "countries": "All" + }, + "spn_winter": { + "name": "SPN_Winter", + "countries": "All" + }, + "fin_autumn": { + "name": "FIN_autumn", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 3500 + }, + "Leopard1A3": { + "name": "Leopard1A3", + "coalition": "blue", + "era": "Mid Cold War", + "label": "Leopard1A3", + "shortLabel": "Leopard1A3", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 2500 + }, + "M 818": { + "name": "M 818", + "coalition": "blue", + "era": "Early Cold War", + "label": "M 818", + "shortLabel": "M 818", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "spring": { + "name": "spring", + "countries": "All" + }, + "winter": { + "name": "winter", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "M-1 Abrams": { + "name": "M-1 Abrams", + "coalition": "blue", + "era": "Late Cold War", + "label": "M-1 Abrams", + "shortLabel": "M-1 Abrams", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 3500 + }, + "M-109": { + "name": "M-109", + "coalition": "blue", + "era": "Early Cold War", + "label": "M-109 Paladin", + "shortLabel": "M-109", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 22000 + }, + "M-113": { + "name": "M-113", + "coalition": "blue", + "era": "Early Cold War", + "label": "M-113", + "shortLabel": "M-113", + "filename": "", + "type": "APC", + "enabled": true, + "liveries": { + "winter": { + "name": "winter", + "countries": "All" + }, + "grc_autumn_med": { + "name": "GRC_autumn", + "countries": "All" + }, + "winter_med": { + "name": "winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_summer", + "countries": "All" + }, + "spring": { + "name": "spring", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + }, + "grc_spring_med": { + "name": "GRC_spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_autumn", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_winter", + "countries": "All" + }, + "green_med": { + "name": "green", + "countries": "All" + }, + "green": { + "name": "green", + "countries": "All" + }, + "spring_med": { + "name": "spring", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_spring", + "countries": "All" + }, + "grc_winter_med": { + "name": "GRC_winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + }, + "grc_summer_med": { + "name": "GRC_summer", + "countries": "All" + }, + "autumn_med": { + "name": "autumn", + "countries": "All" + }, + "desert_med": { + "name": "Desert", + "countries": "All" + }, + "summer_med": { + "name": "summer", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 1200 + }, + "M-2 Bradley": { + "name": "M-2 Bradley", + "coalition": "blue", + "era": "Late Cold War", + "label": "M-2A2 Bradley", + "shortLabel": "M-2 Bradley", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 3800 + }, + "M-60": { + "name": "M-60", + "coalition": "blue", + "era": "Early Cold War", + "label": "M-60", + "shortLabel": "M-60", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "winter", + "countries": "All" + }, + "spring": { + "name": "spring", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 8000 + }, + "M1043 HMMWV Armament": { + "name": "M1043 HMMWV Armament", + "coalition": "blue", + "era": "Late Cold War", + "label": "HMMWV M2 Browning", + "shortLabel": "HMMWV M2", + "filename": "", + "type": "Reconnaissance", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 1200 + }, + "M1045 HMMWV TOW": { + "name": "M1045 HMMWV TOW", + "coalition": "red", + "era": "Late Cold War", + "label": "HMMWV TOW", + "shortLabel": "HMMWV TOW", + "filename": "", + "type": "Reconnaissance", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 3800 + }, + "M1097 Avenger": { + "name": "M1097 Avenger", + "coalition": "blue", + "era": "Modern", + "label": "M1097 Avenger", + "shortLabel": "M1097 Avenger", + "filename": "", + "type": "SAM", + "enabled": true, + "acquisitionRange": 5200, + "engagementRange": 4500 + }, + "M1126 Stryker ICV": { + "name": "M1126 Stryker ICV", + "coalition": "blue", + "era": "Modern", + "label": "Stryker MG", + "shortLabel": "Stryker MG", + "filename": "", + "type": "APC", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 1200 + }, + "M1128 Stryker MGS": { + "name": "M1128 Stryker MGS", + "coalition": "blue", + "era": "Modern", + "label": "M1128 Stryker MGS", + "shortLabel": "M1128 Stryker MGS", + "filename": "", + "type": "SPG", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 4000 + }, + "M1134 Stryker ATGM": { + "name": "M1134 Stryker ATGM", + "coalition": "blue", + "era": "Modern", + "label": "Stryker ATGM", + "shortLabel": "Stryker ATGM", + "filename": "", + "type": "IFV", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 3800 + }, + "M48 Chaparral": { + "name": "M48 Chaparral", + "coalition": "blue", + "era": "Late Cold War", + "label": "M48 Chaparral", + "shortLabel": "M48 Chaparral", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "usa_winter": { + "name": "USA_Winter", + "countries": "All" + }, + "isr_summer": { + "name": "ISR_Summer", + "countries": "All" + }, + "isr_spring": { + "name": "ISR_Spring", + "countries": "All" + }, + "usa_autumn": { + "name": "USA_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "isr_winter": { + "name": "ISR_Winter", + "countries": "All" + }, + "isr_autumn": { + "name": "ISR_Autumn", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "usa_summer": { + "name": "USA_Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "usa_spring": { + "name": "USA_Spring", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 10000, + "engagementRange": 8500 + }, + "M6 Linebacker": { + "name": "M6 Linebacker", + "coalition": "blue", + "era": "Late Cold War", + "label": "M6 Linebacker", + "shortLabel": "M6 Linebacker", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 8000, + "engagementRange": 4500 + }, + "M978 HEMTT Tanker": { + "name": "M978 HEMTT Tanker", + "coalition": "blue", + "era": "Mid Cold War", + "label": "M978 HEMTT Tanker", + "shortLabel": "M978 HEMTT Tanker", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "MAZ-6303": { + "name": "MAZ-6303", + "coalition": "red", + "era": "Mid Cold War", + "label": "MAZ-6303", + "shortLabel": "MAZ-6303", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "winter", + "countries": "All" + }, + "spring": { + "name": "spring", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "MCV-80": { + "name": "MCV-80", + "coalition": "blue", + "era": "Late Cold War", + "label": "Warrior IFV", + "shortLabel": "Warrior", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 2500 + }, + "MLRS": { + "name": "MLRS", + "coalition": "blue", + "era": "Late Cold War", + "label": "M270", + "shortLabel": "M270", + "filename": "", + "type": "Rocket Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 32000 + }, + "MTLB": { + "name": "MTLB", + "coalition": "red", + "era": "Mid Cold War", + "label": "MT-LB", + "shortLabel": "MT-LB", + "filename": "", + "type": "APC", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 1000 + }, + "Marder": { + "name": "Marder", + "coalition": "blue", + "era": "Late Cold War", + "label": "Marder", + "shortLabel": "Marder", + "filename": "", + "type": "IFV", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 1500 + }, + "Osa 9A33 ln": { + "name": "Osa 9A33 ln", + "coalition": "red", + "era": "Mid Cold War", + "label": "SA-8 Launcher", + "shortLabel": "Osa 9A33 ln", + "range": "Short", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 30000, + "engagementRange": 10300 + }, + "Paratrooper AKS-74": { + "name": "Paratrooper AKS-74", + "coalition": "red", + "era": "Modern", + "label": "Paratrooper AKS-74", + "shortLabel": "Paratrooper AKS-74", + "filename": "", + "type": "Infantry", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "Paratrooper RPG-16": { + "name": "Paratrooper RPG-16", + "coalition": "red", + "era": "Modern", + "label": "Paratrooper RPG-16", + "shortLabel": "Paratrooper RPG-16", + "filename": "", + "type": "Infantry", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "Patriot AMG": { + "name": "Patriot AMG", + "coalition": "blue", + "era": "Modern", + "label": "Patriot Antenna Mast Group", + "shortLabel": "Patriot AMG", + "range": "Long", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Patriot ECS": { + "name": "Patriot ECS", + "coalition": "blue", + "era": "Modern", + "label": "Patriot Engagement Control Station", + "shortLabel": "Patriot ECS", + "range": "Long", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Patriot EPP": { + "name": "Patriot EPP", + "coalition": "blue", + "era": "Late Cold War", + "label": "Patriot Electric Power Plant", + "shortLabel": "Patriot EPP", + "range": "Long", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Patriot cp": { + "name": "Patriot cp", + "coalition": "blue", + "era": "Late Cold War", + "label": "Patriot Command Post", + "shortLabel": "Patriot cp", + "range": "Long", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Patriot ln": { + "name": "Patriot ln", + "coalition": "blue", + "era": "Late Cold War", + "label": "Patriot Launcher", + "shortLabel": "Patriot ln", + "range": "Long", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 100000 + }, + "Patriot site": { + "name": "Patriot site", + "coalition": "blue", + "era": "Late Cold War", + "label": "Patriot site", + "shortLabel": "Patriot site", + "range": "Long", + "filename": "", + "type": "SAM Site", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 160000, + "engagementRange": 0 + }, + "Patriot str": { + "name": "Patriot str", + "coalition": "blue", + "era": "Late Cold War", + "label": "Patriot Search/Track radar", + "shortLabel": "Patriot str", + "range": "Medium", + "filename": "", + "type": "SAM Search/Track radar", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 160000, + "engagementRange": 0 + }, + "Predator GCS": { + "name": "Predator GCS", + "coalition": "blue", + "era": "Late Cold War", + "label": "Predator GCS", + "shortLabel": "Predator GCS", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "usaf standard": { + "name": "USAF Standard", + "countries": [ + "USA" + ] + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Predator TrojanSpirit": { + "name": "Predator TrojanSpirit", + "coalition": "blue", + "era": "Late Cold War", + "label": "Predator TrojanSpirit", + "shortLabel": "Predator TrojanSpirit", + "filename": "", + "type": "Unarmed", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "RLS_19J6": { + "name": "RLS_19J6", + "coalition": "Red", + "era": "Mid Cold War", + "label": "SA-5 Thin Shield", + "shortLabel": "RLS 19J6", + "range": "Long", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "spring": { + "name": "spring", + "countries": "All" + }, + "winter": { + "name": "winter", + "countries": "All" + }, + "autumn": { + "name": "autumn", + "countries": "All" + }, + "summer": { + "name": "summer", + "countries": "All" + } + }, + "acquisitionRange": 150000, + "engagementRange": 0 + }, + "RPC_5N62V": { + "name": "RPC_5N62V", + "coalition": "Red", + "era": "Mid Cold War", + "label": "SA-5 Square Pair", + "shortLabel": "RPC 5N62V", + "range": "Long", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "desert_spring": { + "name": "S-200_Radar_Desert_Spring", + "countries": "All" + }, + "cam_autumn": { + "name": "S-200_Radar_Cam_Autumn", + "countries": "All" + }, + "cam_spring": { + "name": "S-200_Radar_Cam_Spring", + "countries": "All" + }, + "green_summer": { + "name": "S-200_Radar_Green_Summer", + "countries": "All" + }, + "green_winter": { + "name": "S-200_Radar_Green_Winter", + "countries": "All" + }, + "cam_summer": { + "name": "S-200_Radar_Cam_Summer", + "countries": "All" + }, + "desert_winter": { + "name": "S-200_Radar_Desert_Winter", + "countries": "All" + }, + "syria_autumn": { + "name": "S-200_Radar_Syria_Autumn", + "countries": "All" + }, + "syria_summer": { + "name": "S-200_Radar_Syria_Summer", + "countries": "All" + }, + "syria_winter": { + "name": "S-200_Radar_Syria_Winter", + "countries": "All" + }, + "green_spring": { + "name": "S-200_Radar_Green_Spring", + "countries": "All" + }, + "syria_spring": { + "name": "S-200_Radar_Syria_Spring", + "countries": "All" + }, + "desert_summer": { + "name": "S-200_Radar_Desert_Summer", + "countries": "All" + }, + "green_autumn": { + "name": "S-200_Radar_Green_Autumn", + "countries": "All" + }, + "desert_autumn": { + "name": "S-200_Radar_Desert_Autumn", + "countries": "All" + }, + "cam_winter": { + "name": "S-200_Radar_Cam_Winter", + "countries": "All" + } + }, + "acquisitionRange": 400000, + "engagementRange": 0 + }, + "Roland ADS": { + "name": "Roland ADS", + "coalition": "blue", + "era": "Late Cold War", + "label": "Roland ADS", + "shortLabel": "Roland ADS", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 12000, + "engagementRange": 8000 + }, + "Roland Radar": { + "name": "Roland Radar", + "coalition": "blue", + "era": "Mid Cold War", + "label": "Roland Search radar", + "shortLabel": "Roland Radar", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 35000, + "engagementRange": 0 + }, + "S-200_Launcher": { + "name": "S-200_Launcher", + "coalition": "Red", + "era": "Mid Cold War", + "label": "SA-5 Launcher", + "shortLabel": "S-200 Launcher", + "range": "Long", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "desert_spring": { + "name": "S-200_Launcher_Desert_Spring", + "countries": "All" + }, + "cam_autumn": { + "name": "S-200_Cam_Autumn", + "countries": "All" + }, + "cam_spring": { + "name": "S-200_Launcher_Cam_Spring", + "countries": "All" + }, + "green_summer": { + "name": "S-200_Launcher_Green_Summer", + "countries": "All" + }, + "green_winter": { + "name": "S-200_Launcher_Green_Winter", + "countries": "All" + }, + "cam_summer": { + "name": "S-200_Launcher_Cam_Summer", + "countries": "All" + }, + "desert_winter": { + "name": "S-200_Launcher_Desert_Winter", + "countries": "All" + }, + "syria_autumn": { + "name": "S-200_Launcher_Syria_Autumn", + "countries": "All" + }, + "syria_summer": { + "name": "S-200_Launcher_Syria_Summer", + "countries": "All" + }, + "syria_winter": { + "name": "S-200_Launcher_Syria_Winter", + "countries": "All" + }, + "green_spring": { + "name": "S-200_Launcher_Green_Spring", + "countries": "All" + }, + "syria_spring": { + "name": "S-200_Launcher_Syria_Spring", + "countries": "All" + }, + "desert_summer": { + "name": "S-200_Launcher_Desert_Summer", + "countries": "All" + }, + "green_autumn": { + "name": "S-200_Launcher_Green_Autumn", + "countries": "All" + }, + "desert_autumn": { + "name": "S-200_Launcher_Desert_Autumn", + "countries": "All" + }, + "cam_winter": { + "name": "S-200_Launcher_Cam_Winter", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 255000 + }, + "S-300PS 40B6M tr": { + "name": "S-300PS 40B6M tr", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Tin Shield", + "shortLabel": "S-300PS 40B6M tr", + "range": "Long", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 160000, + "engagementRange": 0 + }, + "S-300PS 40B6MD sr": { + "name": "S-300PS 40B6MD sr", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Clam Shell", + "shortLabel": "S-300PS 40B6MD sr", + "range": "Long", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 60000, + "engagementRange": 0 + }, + "S-300PS 54K6 cp": { + "name": "S-300PS 54K6 cp", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Command Post", + "shortLabel": "S-300PS 54K6 cp", + "range": "Long", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "S-300PS 5P85C ln": { + "name": "S-300PS 5P85C ln", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Launcher (5P85C)", + "shortLabel": "S-300PS 5P85C ln", + "range": "Long", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 120000 + }, + "S-300PS 5P85D ln": { + "name": "S-300PS 5P85D ln", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Launcher (5P85D)", + "shortLabel": "S-300PS 5P85D ln", + "range": "Long", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 120000 + }, + "S-300PS 64H6E sr": { + "name": "S-300PS 64H6E sr", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 Big Bird", + "shortLabel": "S-300PS 64H6E sr", + "range": "Long", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 160000, + "engagementRange": 0 + }, + "SA-10 SAM Battery": { + "name": "SA-10 SAM Battery", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-10 SAM Battery", + "shortLabel": "SA-10 SAM Battery", + "range": "Long", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SA-11 Buk CC 9S470M1": { + "name": "SA-11 Buk CC 9S470M1", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-11 Command Post", + "shortLabel": "SA-11 Buk CC 9S470M1", + "range": "Medium", + "filename": "", + "type": "SAM Support vehicle", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "SA-11 Buk LN 9A310M1": { + "name": "SA-11 Buk LN 9A310M1", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-11 Launcher", + "shortLabel": "SA-11 Buk LN 9A310M1", + "range": "Medium", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 50000, + "engagementRange": 35000 + }, + "SA-11 Buk SR 9S18M1": { + "name": "SA-11 Buk SR 9S18M1", + "coalition": "red", + "era": "Mid Cold War", + "label": "SA-11 Snown Drift", + "shortLabel": "SA-11 Buk SR 9S18M1", + "range": "Long", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 100000, + "engagementRange": 0 + }, + "SA-11 SAM Battery": { + "name": "SA-11 SAM Battery", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-11 SAM Battery", + "shortLabel": "SA-11 SAM Battery", + "range": "Medium", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SA-18 Igla manpad": { + "name": "SA-18 Igla manpad", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-18 Igla manpad", + "shortLabel": "SA-18 Igla manpad", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true, + "acquisitionRange": 5000, + "engagementRange": 5200 + }, + "SA-18 Igla-S manpad": { + "name": "SA-18 Igla-S manpad", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-18 Igla-S manpad", + "shortLabel": "SA-18 Igla-S manpad", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true, + "acquisitionRange": 5000, + "engagementRange": 5200 + }, + "SA-2 SAM Battery": { + "name": "SA-2 SAM Battery", + "coalition": "red", + "era": "Early Cold War", + "label": "SA-2 SAM Battery", + "shortLabel": "SA-2 SAM Battery", + "range": "Long", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SA-3 SAM Battery": { + "name": "SA-3 SAM Battery", + "coalition": "red", + "era": "Early Cold War", + "label": "SA-3 SAM Battery", + "shortLabel": "SA-3 SAM Battery", + "range": "Medium", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SA-5 SAM Battery": { + "name": "SA-5 SAM Battery", + "coalition": "Red", + "era": "Mid Cold War", + "label": "SA-5 SAM Battery", + "shortLabel": "SA-5 SAM Battery", + "range": "Long", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SA-6 SAM Battery": { + "name": "SA-6 SAM Battery", + "coalition": "red", + "era": "Mid Cold War", + "label": "SA-6 SAM Battery", + "shortLabel": "SA-6 SAM Battery", + "range": "Medium", + "filename": "", + "type": "SAM Site", + "enabled": true + }, + "SAU 2-C9": { + "name": "SAU 2-C9", + "coalition": "red", + "era": "Mid Cold War", + "label": "SAU Nona", + "shortLabel": "SAU Nona", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 7000 + }, + "SAU Akatsia": { + "name": "SAU Akatsia", + "coalition": "red", + "era": "Mid Cold War", + "label": "SAU Akatsia", + "shortLabel": "SAU Akatsia", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 17000 + }, + "SAU Gvozdika": { + "name": "SAU Gvozdika", + "coalition": "red", + "era": "Mid Cold War", + "label": "SAU Gvozdika", + "shortLabel": "SAU Gvozdika", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 15000 + }, + "SAU Msta": { + "name": "SAU Msta", + "coalition": "red", + "era": "Late Cold War", + "label": "SAU Msta", + "shortLabel": "SAU Msta", + "filename": "", + "type": "Gun Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 23500 + }, + "SKP-11": { + "name": "SKP-11", + "coalition": "red", + "era": "Early Cold War", + "label": "SKP-11", + "shortLabel": "SKP-11", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "SNR_75V": { + "name": "SNR_75V", + "coalition": "Red", + "era": "Early Cold War", + "label": "SA-2 Fan Song", + "shortLabel": "SNR 75V", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 100000, + "engagementRange": 0 + }, + "S_75M_Volhov": { + "name": "S_75M_Volhov", + "coalition": "Red", + "era": "Early Cold War", + "label": "SA-2 Launcher", + "shortLabel": "S75M Volhov", + "filename": "", + "type": "SAM Launcher", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 43000 + }, + "Sandbox": { + "name": "Sandbox", + "coalition": "", + "era": "", + "label": "Sandbox", + "shortLabel": "Sandbox", + "filename": "", + "type": "Static", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 800 + }, + "Smerch": { + "name": "Smerch", + "coalition": "red", + "era": "Late Cold War", + "label": "Smerch", + "shortLabel": "Smerch", + "filename": "", + "type": "Rocket Artillery", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 70000 + }, + "Soldier AK": { + "name": "Soldier AK", + "coalition": "red", + "era": "Early Cold War", + "label": "Soldier AK", + "shortLabel": "Soldier AK", + "filename": "", + "type": "Infantry", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + }, + "muzzleVelocity": 900, + "barrelHeight": 0.9, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "Soldier M249": { + "name": "Soldier M249", + "coalition": "blue", + "era": "Late Cold War", + "label": "Soldier M249", + "shortLabel": "Soldier M249", + "filename": "", + "type": "Infantry", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 700 + }, + "Soldier M4 GRG": { + "name": "Soldier M4 GRG", + "coalition": "blue", + "era": "Mid Cold War", + "label": "Soldier M4 GRG", + "shortLabel": "Soldier M4 GRG", + "filename": "", + "type": "Infantry", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "Soldier M4": { + "name": "Soldier M4", + "coalition": "blue", + "era": "Mid Cold War", + "label": "Soldier M4", + "shortLabel": "Soldier M4", + "filename": "", + "type": "Infantry", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "Soldier RPG": { + "name": "Soldier RPG", + "coalition": "red", + "era": "Mid Cold War", + "label": "Soldier RPG", + "shortLabel": "Soldier RPG", + "filename": "", + "type": "Infantry", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "Stinger comm dsr": { + "name": "Stinger comm dsr", + "coalition": "red", + "era": "Late Cold War", + "label": "Stinger comm dsr", + "shortLabel": "Stinger comm dsr", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "multicam": { + "name": "multicam", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 0 + }, + "Stinger comm": { + "name": "Stinger comm", + "coalition": "blue", + "era": "Late Cold War", + "label": "Stinger comm", + "shortLabel": "Stinger comm", + "range": "Short", + "filename": "", + "type": "MANPADS", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "multicam": { + "name": "multicam", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 0 + }, + "Strela-1 9P31": { + "name": "Strela-1 9P31", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-9 Strela-1 9P31", + "shortLabel": "Strela-1 9P31", + "range": "Short", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 4200 + }, + "Strela-10M3": { + "name": "Strela-10M3", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-13 Strela-10M3", + "shortLabel": "Strela-10M3", + "range": "Short", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 8000, + "engagementRange": 5000 + }, + "Suidae": { + "name": "Suidae", + "coalition": "", + "era": "Modern", + "label": "Suidae", + "shortLabel": "Suidae", + "filename": "", + "type": "Unarmed", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "T-55": { + "name": "T-55", + "coalition": "red", + "era": "Early Cold War", + "label": "T-55", + "shortLabel": "T-55", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 2500 + }, + "T-72B": { + "name": "T-72B", + "coalition": "red", + "era": "Mid Cold War", + "label": "T-72B", + "shortLabel": "T-72B", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 4000 + }, + "T-80UD": { + "name": "T-80UD", + "coalition": "red", + "era": "Mid Cold War", + "label": "T-80UD", + "shortLabel": "T-80UD", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "iran - 01": { + "name": "Iran - 01", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "iran - 02": { + "name": "Iran - 02", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 5000 + }, + "T-90": { + "name": "T-90", + "coalition": "red", + "era": "Late Cold War", + "label": "T-90", + "shortLabel": "T-90", + "filename": "", + "type": "Tank", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 5000 + }, + "TPZ": { + "name": "TPZ", + "coalition": "blue", + "era": "Late Cold War", + "label": "TPz Fuchs", + "shortLabel": "TPz Fuchs", + "filename": "", + "type": "APC", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 1000 + }, + "Tigr_233036": { + "name": "Tigr_233036", + "coalition": "red", + "era": "Late Cold War", + "label": "Tigr_233036", + "shortLabel": "Tigr_233036", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Tor 9A331": { + "name": "Tor 9A331", + "coalition": "red", + "era": "Late Cold War", + "label": "SA-15 Tor 9A331", + "shortLabel": "Tor 9A331", + "range": "Medium", + "filename": "", + "type": "SAM", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 25000, + "engagementRange": 12000 + }, + "Trolley bus": { + "name": "Trolley bus", + "coalition": "blue", + "era": "Late Cold War", + "label": "Trolley bus", + "shortLabel": "Trolley bus", + "filename": "", + "type": "Unarmed", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "UAZ-469": { + "name": "UAZ-469", + "coalition": "red", + "era": "Mid Cold War", + "label": "UAZ-469", + "shortLabel": "UAZ-469", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "red_spring": { + "name": "RED_Spring", + "countries": "All" + }, + "red_summer": { + "name": "RED_Summer", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "orange_spring": { + "name": "ORANGE_Spring", + "countries": "All" + }, + "orange_autumn": { + "name": "ORANGE_Autumn", + "countries": "All" + }, + "red_autumn": { + "name": "RED_Autumn", + "countries": "All" + }, + "red_winter": { + "name": "RED_Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "orange_summer": { + "name": "ORANGE_Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "orange_winter": { + "name": "ORANGE_Winter", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Uragan_BM-27": { + "name": "Uragan_BM-27", + "coalition": "red", + "era": "Late Cold War", + "label": "Uragan", + "shortLabel": "Uragan", + "filename": "", + "type": "Rocket Artillery", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 35800 + }, + "Ural ATsP-6": { + "name": "Ural ATsP-6", + "coalition": "red", + "era": "Mid Cold War", + "label": "Ural ATsP-6", + "shortLabel": "Ural ATsP-6", + "filename": "", + "type": "Unarmed", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Ural-375 PBU": { + "name": "Ural-375 PBU", + "coalition": "red", + "era": "Mid Cold War", + "label": "Ural-375 PBU", + "shortLabel": "Ural-375 PBU", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Ural-375 ZU-23 Insurgent": { + "name": "Ural-375 ZU-23 Insurgent", + "coalition": "red", + "era": "Early Cold War", + "label": "Ural-375 ZU-23 Insurgent", + "shortLabel": "Ural-375 ZU-23 Insurgent", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 2500 + }, + "Ural-375 ZU-23": { + "name": "Ural-375 ZU-23", + "coalition": "red", + "era": "Early Cold War", + "label": "Ural-375 ZU-23", + "shortLabel": "Ural-375 ZU-23", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 2500 + }, + "Ural-375": { + "name": "Ural-375", + "coalition": "red", + "era": "Mid Cold War", + "label": "Ural-375", + "shortLabel": "Ural-375", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Ural-4320 APA-5D": { + "name": "Ural-4320 APA-5D", + "coalition": "red", + "era": "Early Cold War", + "label": "Ural-4320 APA-5D", + "shortLabel": "Ural-4320 APA-5D", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Ural-4320-31": { + "name": "Ural-4320-31", + "coalition": "red", + "era": "Late Cold War", + "label": "Ural-4320-31", + "shortLabel": "Ural-4320-31", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Ural-4320T": { + "name": "Ural-4320T", + "coalition": "red", + "era": "Late Cold War", + "label": "Ural-4320T", + "shortLabel": "Ural-4320T", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "VAZ Car": { + "name": "VAZ Car", + "coalition": "red", + "era": "Early Cold War", + "label": "VAZ Car", + "shortLabel": "VAZ Car", + "filename": "", + "type": "Unarmed", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Vulcan": { + "name": "Vulcan", + "coalition": "blue", + "era": "Late Cold War", + "label": "Vulcan", + "shortLabel": "Vulcan", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "usa_winter": { + "name": "USA_Winter", + "countries": "All" + }, + "isr_summer": { + "name": "ISR_Summer", + "countries": "All" + }, + "isr_spring": { + "name": "ISR_Spring", + "countries": "All" + }, + "usa_autumn": { + "name": "USA_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "isr_winter": { + "name": "ISR_Winter", + "countries": "All" + }, + "isr_autumn": { + "name": "ISR_Autumn", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "usa_summer": { + "name": "USA_Summer", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "usa_spring": { + "name": "USA_Spring", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 2000 + }, + "ZIL-131 KUNG": { + "name": "ZIL-131 KUNG", + "coalition": "red", + "era": "Early Cold War", + "label": "ZIL-131 KUNG", + "shortLabel": "ZIL-131 KUNG", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "ZIL-4331": { + "name": "ZIL-4331", + "coalition": "red", + "era": "Early Cold War", + "label": "ZIL-4331", + "shortLabel": "ZIL-4331", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "ZSU-23-4 Shilka": { + "name": "ZSU-23-4 Shilka", + "coalition": "red", + "era": "Late Cold War", + "label": "ZSU-23-4 Shilka", + "shortLabel": "ZSU-23-4 Shilka", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "ukr_summer": { + "name": "UKR_Summer", + "countries": "All" + }, + "ukr_spring": { + "name": "UKR_Spring", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "ukr_autumn": { + "name": "UKR_Autumn", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "grg_summer": { + "name": "GRG_Summer", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "grg_autumn": { + "name": "GRG_Autumn", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "ukr_winter": { + "name": "UKR_Winter", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "grg_winter": { + "name": "GRG_Winter", + "countries": "All" + }, + "grg_spring": { + "name": "GRG_Spring", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 2500 + }, + "ZU-23 Closed Insurgent": { + "name": "ZU-23 Closed Insurgent", + "coalition": "red", + "era": "Early Cold War", + "label": "ZU-23 Closed Insurgent", + "shortLabel": "ZU-23 Closed Insurgent", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 2500 + }, + "ZU-23 Emplacement Closed": { + "name": "ZU-23 Emplacement Closed", + "coalition": "red", + "era": "Early Cold War", + "label": "ZU-23 Emplacement Closed", + "shortLabel": "ZU-23 Emplacement Closed", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 2500 + }, + "ZU-23 Emplacement": { + "name": "ZU-23 Emplacement", + "coalition": "red", + "era": "Early Cold War", + "label": "ZU-23 Emplacement", + "shortLabel": "ZU-23 Emplacement", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "grc_summer": { + "name": "GRC_Summer", + "countries": "All" + }, + "grc_spring": { + "name": "GRC_Spring", + "countries": "All" + }, + "grc_autumn": { + "name": "GRC_Autumn", + "countries": "All" + }, + "grc_winter": { + "name": "GRC_Winter", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 2500 + }, + "ZU-23 Insurgent": { + "name": "ZU-23 Insurgent", + "coalition": "red", + "era": "Early Cold War", + "label": "ZU-23 Insurgent", + "shortLabel": "ZU-23 Insurgent", + "filename": "", + "type": "AAA", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 5000, + "engagementRange": 2500 + }, + "ZiL-131 APA-80": { + "name": "ZiL-131 APA-80", + "coalition": "red", + "era": "Early Cold War", + "label": "ZiL-131 APA-80", + "shortLabel": "ZiL-131 APA-80", + "filename": "", + "type": "Unarmed", + "enabled": true, + "liveries": { + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "house1arm": { + "name": "house1arm", + "coalition": "", + "era": "", + "label": "house1arm", + "shortLabel": "house1arm", + "filename": "", + "type": "Structure", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 800 + }, + "house2arm": { + "name": "house2arm", + "coalition": "", + "era": "", + "label": "house2arm", + "shortLabel": "house2arm", + "filename": "", + "type": "Structure", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 800 + }, + "houseA_arm": { + "name": "houseA_arm", + "coalition": "", + "era": "", + "label": "houseA_arm", + "shortLabel": "houseA_arm", + "filename": "", + "type": "Structure", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 800 + }, + "outpost": { + "name": "outpost", + "coalition": "", + "era": "", + "label": "outpost", + "shortLabel": "outpost", + "filename": "", + "type": "Structure", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 800 + }, + "outpost_road": { + "name": "outpost_road", + "coalition": "", + "era": "", + "label": "outpost_road", + "shortLabel": "outpost_road", + "filename": "", + "type": "Structure", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 800 + }, + "p-19 s-125 sr": { + "name": "p-19 s-125 sr", + "coalition": "red", + "era": "Mid Cold War", + "label": "SA-3 Flat Face B", + "shortLabel": "Flat Face B", + "filename": "", + "type": "SAM Search radar", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 160000, + "engagementRange": 0 + }, + "snr s-125 tr": { + "name": "snr s-125 tr", + "coalition": "red", + "era": "Early Cold War", + "label": "SA-3 Low Blow", + "shortLabel": "snr s-125 tr", + "range": "Medium", + "filename": "", + "type": "SAM Track radar", + "enabled": true, + "liveries": { + "winter": { + "name": "Winter", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "rus_summer": { + "name": "RUS_Summer", + "countries": "All" + }, + "rus_winter": { + "name": "RUS_Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "rus_autumn": { + "name": "RUS_Autumn", + "countries": "All" + }, + "rus_spring": { + "name": "RUS_Spring", + "countries": "All" + }, + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 100000, + "engagementRange": 0 + }, + "SpGH_Dana": { + "name": "SpGH_Dana", + "coalition": "", + "era": "", + "label": "SPH Dana vz77 152mm", + "shortLabel": "SPH Dana vz77 152mm", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 18700 + }, + "Grad_FDDM": { + "name": "Grad_FDDM", + "coalition": "", + "era": "", + "label": "Grad MRL FDDM (FC)", + "shortLabel": "Grad MRL FDDM (FC)", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 1000 + }, + "Infantry AK Ins": { + "name": "Infantry AK Ins", + "coalition": "", + "era": "", + "label": "Insurgent AK-74", + "shortLabel": "Insurgent AK-74", + "type": "Infantry", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "MLRS FDDM": { + "name": "MLRS FDDM", + "coalition": "", + "era": "", + "label": "MRLS FDDM (FC)", + "shortLabel": "MRLS FDDM (FC)", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 1200 + }, + "Infantry AK ver2": { + "name": "Infantry AK ver2", + "coalition": "", + "era": "", + "label": "Infantry AK-74 Rus ver2", + "shortLabel": "Infantry AK-74 Rus ver2", + "type": "Infantry", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "Infantry AK ver3": { + "name": "Infantry AK ver3", + "coalition": "", + "era": "", + "label": "Infantry AK-74 Rus ver3", + "shortLabel": "Infantry AK-74 Rus ver3", + "type": "Infantry", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "Smerch_HE": { + "name": "Smerch_HE", + "coalition": "", + "era": "", + "label": "MLRS 9A52 Smerch HE 300mm", + "shortLabel": "MLRS 9A52 Smerch HE 300mm", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 70000 + }, + "Soldier stinger": { + "name": "Soldier stinger", + "coalition": "", + "era": "", + "label": "MANPADS Stinger", + "shortLabel": "MANPADS Stinger", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 4500 + }, + "SA-18 Igla comm": { + "name": "SA-18 Igla comm", + "coalition": "", + "era": "", + "label": "MANPADS SA-18 Igla \"Grouse\" C2", + "shortLabel": "MANPADS SA-18 Igla \"Grouse\" C2", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 0 + }, + "SA-18 Igla-S comm": { + "name": "SA-18 Igla-S comm", + "coalition": "", + "era": "", + "label": "MANPADS SA-18 Igla-S \"Grouse\" C2", + "shortLabel": "MANPADS SA-18 Igla-S \"Grouse\" C2", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 0 + }, + "TACAN_beacon": { + "name": "TACAN_beacon", + "coalition": "", + "era": "", + "label": "Beacon TACAN Portable TTS 3030", + "shortLabel": "Beacon TACAN Portable TTS 3030", + "type": "Fortification", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Merkava_Mk4": { + "name": "Merkava_Mk4", + "coalition": "", + "era": "", + "label": "MBT Merkava IV", + "shortLabel": "MBT Merkava IV", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3500 + }, + "LiAZ Bus": { + "name": "LiAZ Bus", + "coalition": "", + "era": "", + "label": "Bus LiAZ-677", + "shortLabel": "Bus LiAZ-677", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "KrAZ6322": { + "name": "KrAZ6322", + "coalition": "", + "era": "", + "label": "Truck KrAZ-6322 6x6", + "shortLabel": "Truck KrAZ-6322 6x6", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "JTAC": { + "name": "JTAC", + "coalition": "", + "era": "", + "label": "JTAC", + "shortLabel": "JTAC", + "type": "Infantry", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Infantry Animated": { + "name": "Infantry Animated", + "coalition": "", + "era": "", + "label": "Infantry", + "shortLabel": "Infantry", + "type": "Infantry", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "Electric locomotive": { + "name": "Electric locomotive", + "coalition": "", + "era": "", + "label": "Loco VL80 Electric", + "shortLabel": "Loco VL80 Electric", + "type": "Locomotive", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Locomotive": { + "name": "Locomotive", + "coalition": "", + "era": "", + "label": "Loco CHME3T", + "shortLabel": "Loco CHME3T", + "type": "Locomotive", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Coach cargo": { + "name": "Coach cargo", + "coalition": "", + "era": "", + "label": "Freight Van", + "shortLabel": "Freight Van", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Coach cargo open": { + "name": "Coach cargo open", + "coalition": "", + "era": "", + "label": "Open Wagon", + "shortLabel": "Open Wagon", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Coach a tank blue": { + "name": "Coach a tank blue", + "coalition": "", + "era": "", + "label": "Tank Car blue", + "shortLabel": "Tank Car blue", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Coach a tank yellow": { + "name": "Coach a tank yellow", + "coalition": "", + "era": "", + "label": "Tank Car yellow", + "shortLabel": "Tank Car yellow", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Coach a passenger": { + "name": "Coach a passenger", + "coalition": "", + "era": "", + "label": "Passenger Car", + "shortLabel": "Passenger Car", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Coach a platform": { + "name": "Coach a platform", + "coalition": "", + "era": "", + "label": "Coach Platform", + "shortLabel": "Coach Platform", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "tacr2a": { + "name": "tacr2a", + "coalition": "", + "era": "", + "label": "RAF Rescue", + "shortLabel": "RAF Rescue", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "LARC-V": { + "name": "LARC-V", + "coalition": "", + "era": "", + "label": "LARC-V", + "shortLabel": "LARC-V", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 500, + "engagementRange": 0 + }, + "KS-19": { + "name": "KS-19", + "coalition": "", + "era": "", + "label": "AAA KS-19 100mm", + "shortLabel": "AAA KS-19 100mm", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 20000 + }, + "SON_9": { + "name": "SON_9", + "coalition": "", + "era": "", + "label": "AAA Fire Can SON-9", + "shortLabel": "AAA Fire Can SON-9", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 55000, + "engagementRange": 0 + }, + "Scud_B": { + "name": "Scud_B", + "coalition": "", + "era": "", + "label": "SSM SS-1C Scud-B", + "shortLabel": "SSM SS-1C Scud-B", + "type": "MissilesSS", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 320000 + }, + "HL_DSHK": { + "name": "HL_DSHK", + "coalition": "", + "era": "", + "label": "Scout HL with DSHK 12.7mm", + "shortLabel": "Scout HL with DSHK 12.7mm", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 1200 + }, + "HL_KORD": { + "name": "HL_KORD", + "coalition": "", + "era": "", + "label": "Scout HL with KORD 12.7mm", + "shortLabel": "Scout HL with KORD 12.7mm", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 1200 + }, + "tt_DSHK": { + "name": "tt_DSHK", + "coalition": "", + "era": "", + "label": "Scout LC with DSHK 12.7mm", + "shortLabel": "Scout LC with DSHK 12.7mm", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 1200 + }, + "tt_KORD": { + "name": "tt_KORD", + "coalition": "", + "era": "", + "label": "Scout LC with KORD 12.7mm", + "shortLabel": "Scout LC with KORD 12.7mm", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 1200 + }, + "HL_ZU-23": { + "name": "HL_ZU-23", + "coalition": "", + "era": "", + "label": "SPAAA HL with ZU-23", + "shortLabel": "SPAAA HL with ZU-23", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 2500 + }, + "tt_ZU-23": { + "name": "tt_ZU-23", + "coalition": "", + "era": "", + "label": "SPAAA LC with ZU-23", + "shortLabel": "SPAAA LC with ZU-23", + "type": "AAA", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 2500 + }, + "HL_B8M1": { + "name": "HL_B8M1", + "coalition": "", + "era": "", + "label": "MLRS HL with B8M1 80mm", + "shortLabel": "MLRS HL with B8M1 80mm", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 5000 + }, + "tt_B8M1": { + "name": "tt_B8M1", + "coalition": "", + "era": "", + "label": "MLRS LC with B8M1 80mm", + "shortLabel": "MLRS LC with B8M1 80mm", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 5000 + }, + "NASAMS_Radar_MPQ64F1": { + "name": "NASAMS_Radar_MPQ64F1", + "coalition": "", + "era": "", + "label": "SAM NASAMS SR MPQ64F1", + "shortLabel": "SAM NASAMS SR MPQ64F1", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 50000, + "engagementRange": 0 + }, + "NASAMS_Command_Post": { + "name": "NASAMS_Command_Post", + "coalition": "", + "era": "", + "label": "SAM NASAMS C2", + "shortLabel": "SAM NASAMS C2", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "NASAMS_LN_B": { + "name": "NASAMS_LN_B", + "coalition": "", + "era": "", + "label": "SAM NASAMS LN AIM-120B", + "shortLabel": "SAM NASAMS LN AIM-120B", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 15000 + }, + "NASAMS_LN_C": { + "name": "NASAMS_LN_C", + "coalition": "", + "era": "", + "label": "SAM NASAMS LN AIM-120C", + "shortLabel": "SAM NASAMS LN AIM-120C", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 15000 + }, + "M4_Sherman": { + "name": "M4_Sherman", + "coalition": "", + "era": "", + "label": "Tk M4 Sherman", + "shortLabel": "Tk M4 Sherman", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "M2A1_halftrack": { + "name": "M2A1_halftrack", + "coalition": "", + "era": "", + "label": "APC M2A1 Halftrack", + "shortLabel": "APC M2A1 Halftrack", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 1200 + }, + "FPS-117 Dome": { + "name": "FPS-117 Dome", + "coalition": "", + "era": "", + "label": "EWR AN/FPS-117 Radar (domed)", + "shortLabel": "EWR AN/FPS-117 Radar (domed)", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 400000, + "engagementRange": 0 + }, + "FPS-117 ECS": { + "name": "FPS-117 ECS", + "coalition": "", + "era": "", + "label": "EWR AN/FPS-117 ECS", + "shortLabel": "EWR AN/FPS-117 ECS", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "FPS-117": { + "name": "FPS-117", + "coalition": "", + "era": "", + "label": "EWR AN/FPS-117 Radar", + "shortLabel": "EWR AN/FPS-117 Radar", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 463000, + "engagementRange": 0 + }, + "RD_75": { + "name": "RD_75", + "coalition": "", + "era": "", + "label": "SAM SA-2 S-75 RD-75 Amazonka RF", + "shortLabel": "SAM SA-2 S-75 RD-75 Amazonka RF", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 100000, + "engagementRange": 0 + }, + "ZSU_57_2": { + "name": "ZSU_57_2", + "coalition": "", + "era": "", + "label": "SPAAA ZSU-57-2", + "shortLabel": "SPAAA ZSU-57-2", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 7000 + }, + "S-60_Type59_Artillery": { + "name": "S-60_Type59_Artillery", + "coalition": "", + "era": "", + "label": "AAA S-60 57mm", + "shortLabel": "AAA S-60 57mm", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 6000 + }, + "generator_5i57": { + "name": "generator_5i57", + "coalition": "", + "era": "", + "label": "Diesel Power Station 5I57A", + "shortLabel": "Diesel Power Station 5I57A", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "T-72B3": { + "name": "T-72B3", + "coalition": "", + "era": "", + "label": "MBT T-72B3", + "shortLabel": "MBT T-72B3", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 4000 + }, + "PT_76": { + "name": "PT_76", + "coalition": "", + "era": "", + "label": "LT PT-76", + "shortLabel": "LT PT-76", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 2000 + }, + "BTR-82A": { + "name": "BTR-82A", + "coalition": "", + "era": "", + "label": "IFV BTR-82A", + "shortLabel": "IFV BTR-82A", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 2000 + }, + "ATZ-5": { + "name": "ATZ-5", + "coalition": "", + "era": "", + "label": "Refueler ATZ-5", + "shortLabel": "Refueler ATZ-5", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "AA8": { + "name": "AA8", + "coalition": "", + "era": "", + "label": "Firefighter Vehicle AA-7.2/60", + "shortLabel": "Firefighter Vehicle AA-7.2/60", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "TZ-22_KrAZ": { + "name": "TZ-22_KrAZ", + "coalition": "", + "era": "", + "label": "Refueler TZ-22 Tractor (KrAZ-258B1)", + "shortLabel": "Refueler TZ-22 Tractor (KrAZ-258B1)", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "ATZ-60_Maz": { + "name": "ATZ-60_Maz", + "coalition": "", + "era": "", + "label": "Refueler ATZ-60 Tractor (MAZ-7410)", + "shortLabel": "Refueler ATZ-60 Tractor (MAZ-7410)", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "ZIL-135": { + "name": "ZIL-135", + "coalition": "", + "era": "", + "label": "Truck ZIL-135", + "shortLabel": "Truck ZIL-135", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "S_75_ZIL": { + "name": "S_75_ZIL", + "coalition": "", + "era": "", + "label": "S-75 Tractor (ZIL-131)", + "shortLabel": "S-75 Tractor (ZIL-131)", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "rapier_fsa_launcher": { + "name": "rapier_fsa_launcher", + "coalition": "", + "era": "", + "label": "SAM Rapier LN", + "shortLabel": "SAM Rapier LN", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 30000, + "engagementRange": 6800 + }, + "rapier_fsa_optical_tracker_unit": { + "name": "rapier_fsa_optical_tracker_unit", + "coalition": "", + "era": "", + "label": "SAM Rapier Tracker", + "shortLabel": "SAM Rapier Tracker", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 20000, + "engagementRange": 0 + }, + "rapier_fsa_blindfire_radar": { + "name": "rapier_fsa_blindfire_radar", + "coalition": "", + "era": "", + "label": "SAM Rapier Blindfire TR", + "shortLabel": "SAM Rapier Blindfire TR", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 30000, + "engagementRange": 0 + }, + "bofors40": { + "name": "bofors40", + "coalition": "", + "era": "", + "label": "AAA Bofors 40mm", + "shortLabel": "AAA Bofors 40mm", + "type": "AAA", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 4000 + }, + "Chieftain_mk3": { + "name": "Chieftain_mk3", + "coalition": "", + "era": "", + "label": "MBT Chieftain Mk.3", + "shortLabel": "MBT Chieftain Mk.3", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3500 + }, + "Bedford_MWD": { + "name": "Bedford_MWD", + "coalition": "", + "era": "", + "label": "Truck Bedford", + "shortLabel": "Truck Bedford", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Land_Rover_101_FC": { + "name": "Land_Rover_101_FC", + "coalition": "", + "era": "", + "label": "Truck Land Rover 101 FC", + "shortLabel": "Truck Land Rover 101 FC", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Land_Rover_109_S3": { + "name": "Land_Rover_109_S3", + "coalition": "", + "era": "", + "label": "LUV Land Rover 109", + "shortLabel": "LUV Land Rover 109", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "hy_launcher": { + "name": "hy_launcher", + "coalition": "", + "era": "", + "label": "AShM SS-N-2 Silkworm", + "shortLabel": "AShM SS-N-2 Silkworm", + "type": "MissilesSS", + "enabled": true, + "liveries": {}, + "acquisitionRange": 100000, + "engagementRange": 100000 + }, + "Silkworm_SR": { + "name": "Silkworm_SR", + "coalition": "", + "era": "", + "label": "AShM Silkworm SR", + "shortLabel": "AShM Silkworm SR", + "type": "MissilesSS", + "enabled": true, + "liveries": {}, + "acquisitionRange": 200000, + "engagementRange": 0 + }, + "ES44AH": { + "name": "ES44AH", + "coalition": "", + "era": "", + "label": "Loco ES44AH", + "shortLabel": "Loco ES44AH", + "type": "Locomotive", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Boxcartrinity": { + "name": "Boxcartrinity", + "coalition": "", + "era": "", + "label": "Flatcar", + "shortLabel": "Flatcar", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Tankcartrinity": { + "name": "Tankcartrinity", + "coalition": "", + "era": "", + "label": "Tank Cartrinity", + "shortLabel": "Tank Cartrinity", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Wellcarnsc": { + "name": "Wellcarnsc", + "coalition": "", + "era": "", + "label": "Well Car", + "shortLabel": "Well Car", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "flak18": { + "name": "flak18", + "coalition": "", + "era": "", + "label": "AAA 8,8cm Flak 18", + "shortLabel": "AAA 8,8cm Flak 18", + "type": "AAA", + "enabled": true, + "liveries": {}, + "aimTime": 20, + "shotsToFire": 1, + "acquisitionRange": 0, + "engagementRange": 5000 + }, + "Pz_IV_H": { + "name": "Pz_IV_H", + "coalition": "", + "era": "", + "label": "Tk PzIV H", + "shortLabel": "Tk PzIV H", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "Leopard-2A5": { + "name": "Leopard-2A5", + "coalition": "", + "era": "", + "label": "MBT Leopard-2A5", + "shortLabel": "MBT Leopard-2A5", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3500 + }, + "leopard-2A4": { + "name": "leopard-2A4", + "coalition": "", + "era": "", + "label": "MBT Leopard-2A4", + "shortLabel": "MBT Leopard-2A4", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3500 + }, + "leopard-2A4_trs": { + "name": "leopard-2A4_trs", + "coalition": "", + "era": "", + "label": "MBT Leopard-2A4 Trs", + "shortLabel": "MBT Leopard-2A4 Trs", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3500 + }, + "Sd_Kfz_251": { + "name": "Sd_Kfz_251", + "coalition": "", + "era": "", + "label": "APC Sd.Kfz.251 Halftrack", + "shortLabel": "APC Sd.Kfz.251 Halftrack", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 1100 + }, + "Blitz_36-6700A": { + "name": "Blitz_36-6700A", + "coalition": "", + "era": "", + "label": "Truck Opel Blitz", + "shortLabel": "Truck Opel Blitz", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "T155_Firtina": { + "name": "T155_Firtina", + "coalition": "", + "era": "", + "label": "SPH T155 Firtina 155mm", + "shortLabel": "SPH T155 Firtina 155mm", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 41000 + }, + "VAB_Mephisto": { + "name": "VAB_Mephisto", + "coalition": "", + "era": "", + "label": "ATGM VAB Mephisto", + "shortLabel": "ATGM VAB Mephisto", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3800 + }, + "ZTZ96B": { + "name": "ZTZ96B", + "coalition": "", + "era": "", + "label": "ZTZ-96B", + "shortLabel": "ZTZ-96B", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 5000 + }, + "ZBD04A": { + "name": "ZBD04A", + "coalition": "", + "era": "", + "label": "ZBD-04A", + "shortLabel": "ZBD-04A", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 4800 + }, + "HQ-7_LN_SP": { + "name": "HQ-7_LN_SP", + "coalition": "", + "era": "", + "label": "HQ-7 Self-Propelled LN", + "shortLabel": "HQ-7 Self-Propelled LN", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 15000, + "engagementRange": 15000 + }, + "HQ-7_LN_EO": { + "name": "HQ-7_LN_EO", + "coalition": "", + "era": "", + "label": "HQ-7 LN Electro-Optics", + "shortLabel": "HQ-7 LN Electro-Optics", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 8000, + "engagementRange": 12000 + }, + "HQ-7_STR_SP": { + "name": "HQ-7_STR_SP", + "coalition": "", + "era": "", + "label": "HQ-7 Self-Propelled STR", + "shortLabel": "HQ-7 Self-Propelled STR", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 30000, + "engagementRange": 0 + }, + "PLZ05": { + "name": "PLZ05", + "coalition": "", + "era": "", + "label": "PLZ-05", + "shortLabel": "PLZ-05", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 23500 + }, + "TYPE-59": { + "name": "TYPE-59", + "coalition": "", + "era": "", + "label": "MT Type 59", + "shortLabel": "MT Type 59", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 2500 + }, + "Kubelwagen_82": { + "name": "Kubelwagen_82", + "coalition": "", + "era": "", + "label": "LUV Kubelwagen Jeep", + "shortLabel": "LUV Kubelwagen Jeep", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Sd_Kfz_2": { + "name": "Sd_Kfz_2", + "coalition": "", + "era": "", + "label": "LUV Kettenrad", + "shortLabel": "LUV Kettenrad", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Sd_Kfz_7": { + "name": "Sd_Kfz_7", + "coalition": "", + "era": "", + "label": "Tractor Sd.Kfz.7 Art'y Tractor", + "shortLabel": "Tractor Sd.Kfz.7 Art'y Tractor", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Horch_901_typ_40_kfz_21": { + "name": "Horch_901_typ_40_kfz_21", + "coalition": "", + "era": "", + "label": "LUV Horch 901 Staff Car", + "shortLabel": "LUV Horch 901 Staff Car", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Tiger_I": { + "name": "Tiger_I", + "coalition": "", + "era": "", + "label": "Tk Tiger 1", + "shortLabel": "Tk Tiger 1", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "Tiger_II_H": { + "name": "Tiger_II_H", + "coalition": "", + "era": "", + "label": "Tk Tiger II", + "shortLabel": "Tk Tiger II", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 6000 + }, + "Pz_V_Panther_G": { + "name": "Pz_V_Panther_G", + "coalition": "", + "era": "", + "label": "Tk Panther G (Pz V)", + "shortLabel": "Tk Panther G (Pz V)", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "Jagdpanther_G1": { + "name": "Jagdpanther_G1", + "coalition": "", + "era": "", + "label": "SPG Jagdpanther TD", + "shortLabel": "SPG Jagdpanther TD", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 5000 + }, + "JagdPz_IV": { + "name": "JagdPz_IV", + "coalition": "", + "era": "", + "label": "SPG Jagdpanzer IV TD", + "shortLabel": "SPG Jagdpanzer IV TD", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "Stug_IV": { + "name": "Stug_IV", + "coalition": "", + "era": "", + "label": "SPG StuG IV AG", + "shortLabel": "SPG StuG IV AG", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "SturmPzIV": { + "name": "SturmPzIV", + "coalition": "", + "era": "", + "label": "SPG Brummbaer AG", + "shortLabel": "SPG Brummbaer AG", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 4500 + }, + "Wespe124": { + "name": "Wespe124", + "coalition": "", + "era": "", + "label": "SPH Sd.Kfz.124 Wespe 105mm", + "shortLabel": "SPH Sd.Kfz.124 Wespe 105mm", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 10500 + }, + "Sd_Kfz_234_2_Puma": { + "name": "Sd_Kfz_234_2_Puma", + "coalition": "", + "era": "", + "label": "Scout Puma AC", + "shortLabel": "Scout Puma AC", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 2000 + }, + "KDO_Mod40": { + "name": "KDO_Mod40", + "coalition": "", + "era": "", + "label": "AAA Kdo.G.40", + "shortLabel": "AAA Kdo.G.40", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 30000, + "engagementRange": 0 + }, + "Flakscheinwerfer_37": { + "name": "Flakscheinwerfer_37", + "coalition": "", + "era": "", + "label": "SL Flakscheinwerfer 37", + "shortLabel": "SL Flakscheinwerfer 37", + "type": "AAA", + "enabled": true, + "liveries": {}, + "acquisitionRange": 15000, + "engagementRange": 15000 + }, + "Maschinensatz_33": { + "name": "Maschinensatz_33", + "coalition": "", + "era": "", + "label": "Maschinensatz 33 Gen", + "shortLabel": "Maschinensatz 33 Gen", + "type": "AAA", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "soldier_mauser98": { + "name": "soldier_mauser98", + "coalition": "", + "era": "", + "label": "Infantry Mauser 98", + "shortLabel": "Infantry Mauser 98", + "type": "Infantry", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "SK_C_28_naval_gun": { + "name": "SK_C_28_naval_gun", + "coalition": "", + "era": "", + "label": "Gun 15cm SK C/28 Naval in Bunker", + "shortLabel": "Gun 15cm SK C/28 Naval in Bunker", + "type": "Fortification", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 20000 + }, + "fire_control": { + "name": "fire_control", + "coalition": "", + "era": "", + "label": "Bunker with Fire Control Center", + "shortLabel": "Bunker with Fire Control Center", + "type": "Fortification", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 1100 + }, + "Stug_III": { + "name": "Stug_III", + "coalition": "", + "era": "", + "label": "SPG StuG III G AG", + "shortLabel": "SPG StuG III G AG", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "Elefant_SdKfz_184": { + "name": "Elefant_SdKfz_184", + "coalition": "", + "era": "", + "label": "SPG Elefant TD", + "shortLabel": "SPG Elefant TD", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 6000 + }, + "v1_launcher": { + "name": "v1_launcher", + "coalition": "", + "era": "", + "label": "V-1 Launch Ramp", + "shortLabel": "V-1 Launch Ramp", + "type": "MissilesSS", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "FuMG-401": { + "name": "FuMG-401", + "coalition": "", + "era": "", + "label": "EWR FuMG-401 Freya LZ", + "shortLabel": "EWR FuMG-401 Freya LZ", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 160000, + "engagementRange": 0 + }, + "FuSe-65": { + "name": "FuSe-65", + "coalition": "", + "era": "", + "label": "EWR FuSe-65 W\u00c3\u00bcrzburg-Riese", + "shortLabel": "EWR FuSe-65 W\u00c3\u00bcrzburg-Riese", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 60000, + "engagementRange": 0 + }, + "Pak40": { + "name": "Pak40", + "coalition": "", + "era": "", + "label": "FH Pak 40 75mm", + "shortLabel": "FH Pak 40 75mm", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "LeFH_18-40-105": { + "name": "LeFH_18-40-105", + "coalition": "", + "era": "", + "label": "FH LeFH-18 105mm", + "shortLabel": "FH LeFH-18 105mm", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 10500 + }, + "Cromwell_IV": { + "name": "Cromwell_IV", + "coalition": "", + "era": "", + "label": "Tk Cromwell IV", + "shortLabel": "Tk Cromwell IV", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "M4A4_Sherman_FF": { + "name": "M4A4_Sherman_FF", + "coalition": "", + "era": "", + "label": "Tk M4A4 Sherman Firefly", + "shortLabel": "Tk M4A4 Sherman Firefly", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "soldier_wwii_br_01": { + "name": "soldier_wwii_br_01", + "coalition": "", + "era": "", + "label": "Infantry SMLE No.4 Mk-1", + "shortLabel": "Infantry SMLE No.4 Mk-1", + "type": "Infantry", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "Centaur_IV": { + "name": "Centaur_IV", + "coalition": "", + "era": "", + "label": "Tk Centaur IV CS", + "shortLabel": "Tk Centaur IV CS", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 6000 + }, + "Churchill_VII": { + "name": "Churchill_VII", + "coalition": "", + "era": "", + "label": "Tk Churchill VII", + "shortLabel": "Tk Churchill VII", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 3000 + }, + "Daimler_AC": { + "name": "Daimler_AC", + "coalition": "", + "era": "", + "label": "Car Daimler Armored", + "shortLabel": "Car Daimler Armored", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 2000 + }, + "Tetrarch": { + "name": "Tetrarch", + "coalition": "", + "era": "", + "label": "Tk Tetrach", + "shortLabel": "Tk Tetrach", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 2000 + }, + "QF_37_AA": { + "name": "QF_37_AA", + "coalition": "", + "era": "", + "label": "AAA QF 3.7\"", + "shortLabel": "AAA QF 3.7\"", + "type": "AAA", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 9000 + }, + "Allies_Director": { + "name": "Allies_Director", + "coalition": "", + "era": "", + "label": "Allies Rangefinder (DRT)", + "shortLabel": "Allies Rangefinder (DRT)", + "type": "AirDefence", + "enabled": true, + "liveries": {}, + "acquisitionRange": 30000, + "engagementRange": 0 + }, + "CCKW_353": { + "name": "CCKW_353", + "coalition": "", + "era": "", + "label": "Truck GMC \"Jimmy\" 6x6", + "shortLabel": "Truck GMC \"Jimmy\" 6x6", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Willys_MB": { + "name": "Willys_MB", + "coalition": "", + "era": "", + "label": "Car Willys Jeep", + "shortLabel": "Car Willys Jeep", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "M12_GMC": { + "name": "M12_GMC", + "coalition": "", + "era": "", + "label": "SPH M12 GMC 155mm", + "shortLabel": "SPH M12 GMC 155mm", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 18300 + }, + "M30_CC": { + "name": "M30_CC", + "coalition": "", + "era": "", + "label": "Ammo M30 Cargo Carrier", + "shortLabel": "Ammo M30 Cargo Carrier", + "type": "Unarmed", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 1200 + }, + "soldier_wwii_us": { + "name": "soldier_wwii_us", + "coalition": "", + "era": "", + "label": "Infantry M1 Garand", + "shortLabel": "Infantry M1 Garand", + "type": "Infantry", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 500 + }, + "M10_GMC": { + "name": "M10_GMC", + "coalition": "", + "era": "", + "label": "SPG M10 GMC TD", + "shortLabel": "SPG M10 GMC TD", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 6000 + }, + "M8_Greyhound": { + "name": "M8_Greyhound", + "coalition": "", + "era": "", + "label": "Scout M8 Greyhound AC", + "shortLabel": "Scout M8 Greyhound AC", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 2000 + }, + "M2A1-105": { + "name": "M2A1-105", + "coalition": "", + "era": "", + "label": "FH M2A1 105mm", + "shortLabel": "FH M2A1 105mm", + "type": "Artillery", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 11500 + }, + "M4_Tractor": { + "name": "M4_Tractor", + "coalition": "", + "era": "", + "label": "Tractor M4 High Speed", + "shortLabel": "Tractor M4 High Speed", + "type": "Armor", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 1200 + }, + "M45_Quadmount": { + "name": "M45_Quadmount", + "coalition": "", + "era": "", + "label": "AAA M45 Quadmount HB 12.7mm", + "shortLabel": "AAA M45 Quadmount HB 12.7mm", + "type": "AAA", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 1500 + }, + "M1_37mm": { + "name": "M1_37mm", + "coalition": "", + "era": "", + "label": "AAA M1 37mm", + "shortLabel": "AAA M1 37mm", + "type": "AAA", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 5700 + }, + "DR_50Ton_Flat_Wagon": { + "name": "DR_50Ton_Flat_Wagon", + "coalition": "", + "era": "", + "label": "DR 50-ton flat wagon", + "shortLabel": "DR 50-ton flat wagon", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "DRG_Class_86": { + "name": "DRG_Class_86", + "coalition": "", + "era": "", + "label": "Loco DRG Class 86", + "shortLabel": "Loco DRG Class 86", + "type": "Locomotive", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "German_covered_wagon_G10": { + "name": "German_covered_wagon_G10", + "coalition": "", + "era": "", + "label": "Wagon G10 (Germany)", + "shortLabel": "Wagon G10 (Germany)", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "German_tank_wagon": { + "name": "German_tank_wagon", + "coalition": "", + "era": "", + "label": "Tank Car (Germany)", + "shortLabel": "Tank Car (Germany)", + "type": "Carriage", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + } } \ No newline at end of file diff --git a/client/public/databases/units/navyunitdatabase.json b/client/public/databases/units/navyunitdatabase.json index 7c6866c4..58f2a388 100644 --- a/client/public/databases/units/navyunitdatabase.json +++ b/client/public/databases/units/navyunitdatabase.json @@ -1,1401 +1,1505 @@ { - "BDK-775": { - "name": "BDK-775", - "coalition": "blue", - "type": "Landing Craft", - "era": "Mid Cold War", - "label": "LS Ropucha", - "shortLabel": "LS Ropucha", - "range": "", - "filename": "", - "enabled": true - }, - "CVN_71": { - "name": "CVN_71", - "coalition": "blue", - "type": "Super Aircraft Carrier", - "era": "Late Cold War", - "label": "CVN-71 Theodore Roosevelt", - "shortLabel": "CVN-71", - "range": "Short", - "filename": "", - "enabled": true - }, - "CVN_72": { - "name": "CVN_72", - "coalition": "blue", - "type": "Super Aircraft Carrier", - "era": "Late Cold War", - "label": "CVN-72 Abraham Lincoln", - "shortLabel": "CVN-72", - "range": "Short", - "filename": "", - "enabled": true - }, - "CVN_73": { - "name": "CVN_73", - "coalition": "blue", - "type": "Super Aircraft Carrier", - "era": "Late Cold War", - "label": "CVN-73 George Washington", - "shortLabel": "CVN-73", - "range": "Medium", - "filename": "", - "enabled": true - }, - "CVN_75": { - "name": "CVN_75", - "coalition": "blue", - "type": "Aircraft Carrier", - "era": "Late Cold War", - "label": "CVN-75 Harry S. Truman", - "shortLabel": "CVN-75", - "range": "Medium", - "filename": "", - "enabled": true, - "liveries": { - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - } - }, - "CV_1143_5": { - "name": "CV_1143_5", - "coalition": "red", - "type": "Aircraft Carrier", - "era": "Modern", - "label": "CV Admiral Kuznetsov(2017)", - "shortLabel": "Admiral Kuznetsov(2017)", - "range": "Medium", - "filename": "", - "enabled": true - }, - "CastleClass_01": { - "name": "CastleClass_01", - "coalition": "blue", - "type": "Patrol", - "era": "Mid Cold War", - "label": "HMS Leeds Castle (P-258)", - "shortLabel": "HMS Leeds Castle (P-258)", - "range": "", - "filename": "", - "enabled": true, - "liveries": { - "dumbarton": { - "name": "Dumbarton", - "countries": "All" - } - } - }, - "HandyWind": { - "name": "HandyWind", - "coalition": "blue", - "type": "Cargoship", - "era": "Late Cold War", - "label": "Bulker Handy Wind", - "shortLabel": "Bulker Handy Wind", - "range": "", - "filename": "", - "enabled": true, - "liveries": { - "noname": { - "name": "NoName", - "countries": "All" - }, - "handy_wind": { - "name": "Handy Wind", - "countries": "All" - }, - "baltic_cove": { - "name": "Baltic Cove", - "countries": "All" - }, - "baltic_wind": { - "name": "Baltic Wind", - "countries": "All" - } - } - }, - "HarborTug": { - "name": "HarborTug", - "coalition": "", - "type": "Tug", - "era": "Mid Cold War", - "label": "Harbor Tug", - "shortLabel": "Harbor Tug", - "range": "", - "filename": "", - "enabled": true, - "liveries": { - "harbor tug blue": { - "name": "Harbor Tug Blue", - "countries": "All" - }, - "harbor tug red": { - "name": "Harbor Tug Red", - "countries": "All" - }, - "harbor tug black": { - "name": "Harbor Tug Black", - "countries": "All" - }, - "harbor tug green": { - "name": "Harbor Tug Green", - "countries": "All" - } - } - }, - "LHA_Tarawa": { - "name": "LHA_Tarawa", - "coalition": "blue", - "type": "Aircraft Carrier", - "era": "Mid Cold War", - "label": "LHA-1 Tarawa", - "shortLabel": "LHA-1 Tarawa", - "range": "Short", - "filename": "", - "enabled": true - }, - "La_Combattante_II": { - "name": "La_Combattante_II", - "coalition": "blue", - "type": "Fast Attack Craft", - "era": "Mid Cold War", - "label": "FAC La Combattante lla", - "shortLabel": "FAC La Combattante", - "range": "", - "filename": "", - "enabled": true, - "liveries": { - "irn_217": { - "name": "217", - "countries": [ - "IRN" - ] - }, - "syr_35": { - "name": "35", - "countries": [ - "SYR" - ] - }, - "lib_521": { - "name": "521", - "countries": [ - "LIB" - ] - }, - "grg_dioskuria": { - "name": "Dioskuria", - "countries": [ - "GRG" - ] - }, - "grc_p77_plotarchis sakipis": { - "name": "Plotarchis_Sakipis", - "countries": [ - "GRC" - ] - }, - "grc_p72_ypoploiarchos votsis": { - "name": "Ypoploiarchos_Votsis", - "countries": [ - "GRC" - ] - }, - "egp_601": { - "name": "601", - "countries": [ - "EGP" - ] - }, - "irn_215": { - "name": "215", - "countries": [ - "IRN" - ] - }, - "ger_s50_panther": { - "name": "S50_Panther", - "countries": [ - "GER" - ] - }, - "lib_520": { - "name": "520", - "countries": [ - "LIB" - ] - }, - "grc_p73_antiploiarchos pezopoulos": { - "name": "Antiploiarchos_Pezopoulos", - "countries": [ - "GRC" - ] - }, - "ger_s54_elster": { - "name": "S54_Elster", - "countries": [ - "GER" - ] - }, - "ger_s58_pinguin": { - "name": "S58_Pinguin", - "countries": [ - "GER" - ] - }, - "grc_p74_plotarchis vlachavas": { - "name": "Plotarchis_Vlachavas", - "countries": [ - "GRC" - ] - }, - "ger_s52_storch": { - "name": "S52_Storch", - "countries": [ - "GER" - ] - }, - "ger_s57_weihe": { - "name": "S57_Weihe", - "countries": [ - "GER" - ] - }, - "egp_604": { - "name": "604", - "countries": [ - "EGP" - ] - }, - "ger_s53_pelikan": { - "name": "S53_Pelikan", - "countries": [ - "GER" - ] - }, - "lib_522": { - "name": "522", - "countries": [ - "LIB" - ] - }, - "ger_s56_dommel": { - "name": "S56_Dommel", - "countries": [ - "GER" - ] - }, - "irn_216": { - "name": "216", - "countries": [ - "IRN" - ] - }, - "ger_s59_reiher": { - "name": "S59_Reiher", - "countries": [ - "GER" - ] - }, - "lib_519": { - "name": "519", - "countries": [ - "LIB" - ] - }, - "syr_34": { - "name": "34", - "countries": [ - "SYR" - ] - }, - "irn_218": { - "name": "218", - "countries": [ - "IRN" - ] - }, - "grc_p76_ypoploiarchos tournas": { - "name": "Ypoploiarchos_Tournas", - "countries": [ - "GRC" - ] - }, - "grc_p75_plotarchis maridakis": { - "name": "Plotarchis_Maridakis", - "countries": [ - "GRC" - ] - }, - "ger_s55_alk": { - "name": "S55_Alk", - "countries": [ - "GER" - ] - }, - "grg_305": { - "name": "305", - "countries": [ - "GRG" - ] - }, - "egp_602": { - "name": "602", - "countries": [ - "EGP" - ] - }, - "irn_212": { - "name": "212", - "countries": [ - "IRN" - ] - }, - "grg_304": { - "name": "304", - "countries": [ - "GRG" - ] - }, - "irn_214": { - "name": "214", - "countries": [ - "IRN" - ] - }, - "irn_219": { - "name": "219", - "countries": [ - "IRN" - ] - }, - "syr_36": { - "name": "36", - "countries": [ - "SYR" - ] - }, - "lib_518": { - "name": "518", - "countries": [ - "LIB" - ] - }, - "egp_605": { - "name": "605", - "countries": [ - "EGP" - ] - }, - "ger_s51_haher": { - "name": "S51_Haher", - "countries": [ - "GER" - ] - }, - "egp_603": { - "name": "603", - "countries": [ - "EGP" - ] - } - } - }, - "Seawise_Giant": { - "name": "Seawise_Giant", - "coalition": "blue", - "type": "Tanker", - "era": "Late Cold War", - "label": "Tanker Seawise Giant", - "shortLabel": "Seawise Giant", - "range": "", - "filename": "", - "enabled": true - }, - "Ship_Tilde_Supply": { - "name": "Ship_Tilde_Supply", - "coalition": "blue", - "type": "Transport", - "era": "Late Cold War", - "label": "Supply Ship MV Tilde", - "shortLabel": "Supply Ship Tilde", - "range": "", - "filename": "", - "enabled": true - }, - "Stennis": { - "name": "Stennis", - "coalition": "blue", - "type": "Aircraft Carrier", - "era": "Late Cold War", - "label": "CVN-74 John C. Stennis", - "shortLabel": "CVN-74", - "range": "Medium", - "filename": "", - "enabled": true - }, - "TICONDEROG": { - "name": "TICONDEROG", - "coalition": "blue", - "type": "Cruiser", - "era": "Late Cold War", - "label": "Ticonderoga", - "shortLabel": "Ticonderoga", - "range": "Medium", - "filename": "", - "enabled": true, - "liveries": { - "vellagulf": { - "name": "USS Vella Gulf CG-72", - "countries": [ - "USA" - ] - }, - "huecity": { - "name": "USS Hue City CG-66", - "countries": [ - "USA" - ] - }, - "capestgeorge": { - "name": "USS Cape St. George CG-71", - "countries": [ - "USA" - ] - }, - "lakeerie": { - "name": "USS Lake Erie CG-70", - "countries": [ - "USA" - ] - }, - "chosin": { - "name": "USS Chosin CG-65", - "countries": [ - "USA" - ] - }, - "normandy": { - "name": "USS Normandy CG-60", - "countries": [ - "USA" - ] - }, - "portroyal": { - "name": "USS Port Royal CG-73", - "countries": [ - "USA" - ] - }, - "shiloh": { - "name": "USS Shiloh CG-67", - "countries": [ - "USA" - ] - }, - "viksburg": { - "name": "USS Viksburg CG-69", - "countries": [ - "USA" - ] - }, - "anzio": { - "name": "USS Anzio CG-68", - "countries": [ - "USA" - ] - } - } - }, - "Type_052B": { - "name": "Type_052B", - "coalition": "red", - "type": "Destroyer", - "era": "Modern", - "label": "052B DDG-168 Guangzhou", - "shortLabel": "Type 52B", - "range": "Short", - "filename": "", - "enabled": true, - "liveries": { - "general": { - "name": "General", - "countries": "All" - }, - "ddg-169": { - "name": "DDG-169 Wuhan", - "countries": [ - "CHN" - ] - }, - "ddg-168": { - "name": "DDG-168 Guangzhou", - "countries": [ - "CHN" - ] - } - } - }, - "Type_052C": { - "name": "Type_052C", - "coalition": "red", - "type": "Destroyer", - "era": "Modern", - "label": "052C DDG-171 Haikou", - "shortLabel": "Type 52C", - "range": "Short", - "filename": "", - "enabled": true, - "liveries": { - "ddg-171": { - "name": "DDG-171 Haikou", - "countries": [ - "CHN" - ] - }, - "general": { - "name": "General", - "countries": "All" - }, - "ddg-151": { - "name": "DDG-151 Zhengzhou", - "countries": [ - "CHN" - ] - }, - "ddg-170": { - "name": "DDG-170 Lanzhou", - "countries": [ - "CHN" - ] - }, - "default": { - "name": "DDG-150 Changchun", - "countries": [ - "CHN" - ] - }, - "ddg-152": { - "name": "DDG-152 Jinan", - "countries": [ - "CHN" - ] - }, - "ddg-153": { - "name": "DDG-153 Xi'an", - "countries": [ - "CHN" - ] - } - } - }, - "Type_054A": { - "name": "", - "coalition": "red", - "type": "Frigate", - "era": "Modern", - "label": "054A FFG-538 Yantai", - "shortLabel": "Type 54A", - "range": "Medium", - "filename": "", - "enabled": true, - "liveries": { - "ffg-573": { - "name": "FFG-573 Liuzhou", - "countries": [ - "CHN" - ] - }, - "ffg-578": { - "name": "FFG-578 Yangzhou", - "countries": [ - "CHN" - ] - }, - "ffg-531": { - "name": "FFG-531 Xiangtan", - "countries": [ - "CHN" - ] - }, - "ffg-550": { - "name": "FFG-550 Weifang", - "countries": [ - "CHN" - ] - }, - "ffg-536": { - "name": "FFG-536 Xuchang", - "countries": [ - "CHN" - ] - }, - "ffg-549": { - "name": "FFG-549 Changzhou", - "countries": [ - "CHN" - ] - }, - "ffg-574": { - "name": "FFG-574 Sanya", - "countries": [ - "CHN" - ] - }, - "default": { - "name": "FFG-515 Binzhou", - "countries": [ - "CHN" - ] - }, - "ffg-576": { - "name": "FFG-576 Daqing", - "countries": [ - "CHN" - ] - }, - "ffg-599": { - "name": "FFG-599 Anyang", - "countries": [ - "CHN" - ] - }, - "ffg-547": { - "name": "FFG-547 Linyi", - "countries": [ - "CHN" - ] - }, - "ffg-571": { - "name": "FFG-571 Yuncheng", - "countries": [ - "CHN" - ] - }, - "ffg-546": { - "name": "FFG-546 Yancheng", - "countries": [ - "CHN" - ] - }, - "ffg-579": { - "name": "FFG-579 Handan", - "countries": [ - "CHN" - ] - }, - "ffg-532": { - "name": "FFG-532 Jingzhou", - "countries": [ - "CHN" - ] - }, - "ffg-569": { - "name": "FFG-569 Yulin", - "countries": [ - "CHN" - ] - }, - "ffg-538": { - "name": "FFG-538 Yantai", - "countries": [ - "CHN" - ] - }, - "ffg-577": { - "name": "FFG-577 Huanggang", - "countries": [ - "CHN" - ] - }, - "general": { - "name": "General", - "countries": "All" - }, - "ffg-572": { - "name": "FFG-572 Hengshui", - "countries": [ - "CHN" - ] - }, - "ffg-539": { - "name": "FFG-539 Wuhu", - "countries": [ - "CHN" - ] - }, - "ffg-548": { - "name": "FFG-548 Yiyang", - "countries": [ - "CHN" - ] - }, - "ffg-575": { - "name": "FFG-575 Yueyang", - "countries": [ - "CHN" - ] - }, - "ffg-598": { - "name": "FFG-598 Rizhao", - "countries": [ - "CHN" - ] - }, - "ffg-500": { - "name": "FFG-500 Xianning", - "countries": [ - "CHN" - ] - } - } - }, - "Type_071": { - "name": "Type_071", - "coalition": "red", - "type": "Transport", - "era": "Modern", - "label": "Type 071", - "shortLabel": "Type 071", - "range": "", - "filename": "", - "enabled": true, - "liveries": { - "lpd-978": { - "name": "978 Wuzhi Shan", - "countries": [ - "CHN" - ] - }, - "lpd-989": { - "name": "989 Changbai Shan", - "countries": [ - "CHN" - ] - }, - "default": { - "name": "998 Kunlun Shan", - "countries": [ - "CHN" - ] - }, - "lpd-999": { - "name": "999 Jinggang Shan", - "countries": [ - "CHN" - ] - }, - "lpd-988": { - "name": "988 Yimeng Shan", - "countries": [ - "CHN" - ] - }, - "lpd-980": { - "name": "980 Longhu Shan", - "countries": [ - "CHN" - ] - } - } - }, - "Type_093": { - "name": "Type_093", - "coalition": "red", - "type": "Submarine", - "era": "Modern", - "label": "Type 093", - "shortLabel": "Type 093", - "range": "", - "filename": "", - "enabled": true, - "liveries": { - "periscope_state_1": { - "name": "Periscope State 1", - "countries": "All" - } - } - }, - "USS_Arleigh_Burke_IIa": { - "name": "USS_Arleigh_Burke_IIa", - "coalition": "blue", - "type": "Destroyer", - "era": "Late Cold War", - "label": "DDG Arleigh Burke lla", - "shortLabel": "DDG Arleigh Burke", - "range": "Medium", - "filename": "", - "enabled": true, - "liveries": { - "ddg-107_uss_gravely": { - "name": "DDG-107 USS Gravely", - "countries": [ - "USA" - ] - }, - "ddg-112_uss_michael_murphy": { - "name": "DDG-112 USS Michael Murphy", - "countries": [ - "USA" - ] - }, - "ddg-101_uss_gridley": { - "name": "DDG-101 USS Gridley", - "countries": [ - "USA" - ] - }, - "ddg-106_uss_stockdale": { - "name": "DDG-106 USS Stockdale", - "countries": [ - "USA" - ] - }, - "ddg-115_uss_rafael_peralta": { - "name": "DDG-115 USS Rafael Peralta", - "countries": [ - "USA" - ] - }, - "ddg-114_uss_ralph_johnson": { - "name": "DDG-114 USS Ralph Johnson", - "countries": [ - "USA" - ] - }, - "ddg-116_uss_thomas_hudner": { - "name": "DDG-116 USS Thomas Hudner", - "countries": [ - "USA" - ] - }, - "ddg-113_uss_john_finn": { - "name": "DDG-113 USS John Finn", - "countries": [ - "USA" - ] - }, - "ddg-108_uss_wayne_e.meyer": { - "name": "DDG-108 USS Wayne E. Meyer", - "countries": [ - "USA" - ] - }, - "ddg-110_uss_william_p.lawrence": { - "name": "DDG-110 USS William P. Lawrence", - "countries": [ - "USA" - ] - }, - "ddg-103_uss_truxtun": { - "name": "DDG-103 USS Truxtun", - "countries": [ - "USA" - ] - }, - "ddg-109_uss_jason_dunham": { - "name": "DDG-109 USS Jason Dunham", - "countries": [ - "USA" - ] - }, - "ddg-105_uss_dewey": { - "name": "DDG-105 USS Dewey", - "countries": [ - "USA" - ] - }, - "ddg-104_uss_sterett": { - "name": "DDG-104 USS Sterett", - "countries": [ - "USA" - ] - }, - "ddg-102_uss_sampson": { - "name": "DDG-102 USS Sampson", - "countries": [ - "USA" - ] - }, - "ddg-111_uss_spruance": { - "name": "DDG-111 USS Spruance", - "countries": [ - "USA" - ] - } - } - }, - "ara_vdm": { - "name": "ara_vdm", - "coalition": "", - "type": "Aircraft Carrier", - "era": "Mid Cold War", - "label": "ARA Vienticinco de Mayo", - "shortLabel": "ARA Vienticinco de Mayo", - "range": "", - "filename": "", - "enabled": true - }, - "hms_invincible": { - "name": "hms_invincible", - "coalition": "blue", - "type": "Aircraft Carrier", - "era": "Mid Cold War", - "label": "HMS Invincible (R05)", - "shortLabel": "HMS Invincible", - "range": "", - "filename": "", - "enabled": true - }, - "leander-gun-achilles": { - "name": "leander-gun-achilles", - "coalition": "blue", - "type": "Frigate", - "era": "Mid Cold War", - "label": "HMS Achilles (F12)", - "shortLabel": "HMS Achilles", - "range": "", - "filename": "", - "enabled": true - }, - "leander-gun-andromeda": { - "name": "leander-gun-andromeda", - "coalition": "blue", - "type": "Frigate", - "era": "Mid Cold War", - "label": "HMS Andromeda (F57)", - "shortLabel": "HMS Andromeda", - "range": "", - "filename": "", - "enabled": true - }, - "leander-gun-ariadne": { - "name": "leander-gun-ariadne", - "coalition": "blue", - "type": "Frigate", - "era": "Mid Cold War", - "label": "HMS Ariadne (F72)", - "shortLabel": "HMS Ariadne", - "range": "", - "filename": "", - "enabled": true - }, - "leander-gun-condell": { - "name": "leander-gun-condell", - "coalition": "", - "type": "Frigate", - "era": "Mid Cold War", - "label": "Almirante Condell PFG-06", - "shortLabel": "Almirante Condell", - "range": "", - "filename": "", - "enabled": true - }, - "leander-gun-lynch": { - "name": "leander-gun-lynch", - "coalition": "", - "type": "Frigate", - "era": "Mid Cold War", - "label": "CNS Almirante Lynch (PFG-07)", - "shortLabel": "CNS Almirante Lynch", - "range": "", - "filename": "", - "enabled": true - }, - "santafe": { - "name": "santafe", - "coalition": "", - "type": "Submarine", - "era": "Early Cold War", - "label": "ARA Santa Fe S-21", - "shortLabel": "ARA Santa", - "range": "", - "filename": "", - "enabled": true - }, - "speedboat": { - "name": "speedboat", - "coalition": "", - "era": "", - "label": "Boat Armed Hi-speed", - "shortLabel": "Boat Armed Hi-speed", - "type": "Speedboat", - "enabled": true, - "liveries": {} - }, - "VINSON": { - "name": "VINSON", - "coalition": "", - "era": "", - "label": "CVN-70 Carl Vinson", - "shortLabel": "CVN-70 Carl Vinson", - "type": "Aircraft Carrier", - "enabled": true, - "liveries": {} - }, - "PERRY": { - "name": "perry", - "coalition": "blue", - "type": "Frigate", - "era": "Mid Cold War", - "label": "Oliver H. Perry", - "shortLabel": "Oliver H. Perry", - "range": "Medium", - "filename": "", - "enabled": true, - "liveries": { - "gary": { - "name": "USS Gary FFG-51", - "countries": "All" - }, - "carr": { - "name": "USS Carr FFG-52", - "countries": "All" - }, - "reubenjames": { - "name": "USS Reuben James FFG-57", - "countries": "All" - }, - "hawes": { - "name": "USS Hawes FFG-53", - "countries": "All" - }, - "ford": { - "name": "USS Ford FFG-54", - "countries": "All" - }, - "elrod": { - "name": "USS Elrod FFG-55", - "countries": "All" - }, - "vandergrift": { - "name": "USS Vandergrift FFG-48", - "countries": "All" - }, - "rentz": { - "name": "USS Rentz FFG-46", - "countries": "All" - }, - "nicholas": { - "name": "USS Nicholas FFG-47", - "countries": "All" - }, - "kauffman": { - "name": "USS Kauffman FFG-59", - "countries": "All" - } - } - }, - "ALBATROS": { - "name": "albatros", - "coalition": "red", - "type": "Frigade", - "era": "Early Cold War", - "label": "Albatros (Grisha-5)", - "shortLabel": "Albatros", - "range": "", - "filename": "", - "enabled": true, - "liveries": { - "141": { - "name": "141", - "countries": "All" - }, - "142": { - "name": "142", - "countries": "All" - }, - "143": { - "name": "143", - "countries": "All" - }, - "144": { - "name": "144", - "countries": "All" - }, - "145": { - "name": "145", - "countries": "All" - }, - "146": { - "name": "146", - "countries": "All" - }, - "147": { - "name": "147", - "countries": "All" - }, - "148": { - "name": "148", - "countries": "All" - }, - "149": { - "name": "149", - "countries": "All" - } - } - }, - "KUZNECOW": { - "name": "kuznecow", - "coalition": "red", - "type": "Aircraft Carrier", - "era": "Late Cold War", - "label": "Admiral Kuznetsov", - "shortLabel": "Admiral Kuznetsov", - "range": "Medium", - "filename": "", - "enabled": true - }, - "MOLNIYA": { - "name": "molniya", - "coalition": "", - "type": "Corvette", - "era": "Late Cold War", - "label": "Molniya (Tarantul-3)", - "shortLabel": "Molniya", - "range": "Short", - "filename": "", - "enabled": true, - "liveries": { - "952": { - "name": "952", - "countries": "All" - }, - "953": { - "name": "953", - "countries": "All" - }, - "954": { - "name": "954", - "countries": "All" - } - } - }, - "MOSCOW": { - "name": "moscow", - "coalition": "red", - "type": "Cruiser", - "era": "Late Cold War", - "label": "Moscow", - "shortLabel": "Moscow", - "range": "Medium", - "filename": "", - "enabled": true, - "liveries": { - "default": { - "name": "default", - "countries": "All" - }, - "cow1": { - "name": "cow1", - "countries": "All" - }, - "cow3": { - "name": "cow3", - "countries": "All" - }, - "cow2": { - "name": "cow2", - "countries": "All" - } - } - }, - "NEUSTRASH": { - "name": "neustrash", - "coalition": "red", - "type": "Frigate", - "era": "Late Cold War", - "label": "Neustrashimy", - "shortLabel": "Neustrashimy", - "range": "Short", - "filename": "", - "enabled": true - }, - "PIOTR": { - "name": "PIOTR", - "coalition": "", - "era": "", - "label": "Battlecruiser 1144.2 Pyotr Velikiy", - "shortLabel": "Battlecruiser 1144.2 Pyotr Velikiy", - "type": "Cruiser", - "enabled": true, - "liveries": {} - }, - "REZKY": { - "name": "Rezky (Krivak-2)", - "coalition": "red", - "type": "Frigate", - "era": "Early Cold War", - "label": "Rezky (Krivak-2)", - "shortLabel": "Rezky", - "range": "Short", - "filename": "", - "enabled": true - }, - "ELNYA": { - "name": "elnya", - "coalition": "red", - "type": "Tanker", - "era": "Late Cold War", - "label": "Elnya tanker", - "shortLabel": "Elnya tanker", - "range": "", - "filename": "", - "enabled": true, - "liveries": { - "952": { - "name": "952", - "countries": "All" - }, - "953": { - "name": "953", - "countries": "All" - }, - "954": { - "name": "954", - "countries": "All" - } - } - }, - "Dry-cargo ship-2": { - "name": "Dry-cargo ship-2", - "coalition": "", - "era": "", - "label": "Cargo Ivanov", - "shortLabel": "Cargo Ivanov", - "type": "Cargo", - "enabled": true, - "liveries": {} - }, - "Dry-cargo ship-1": { - "name": "Dry-cargo ship-1", - "coalition": "", - "era": "", - "label": "Bulker Yakushev", - "shortLabel": "Bulker Yakushev", - "type": "Cargo", - "enabled": true, - "liveries": {} - }, - "ZWEZDNY": { - "name": "zwezdny", - "coalition": "", - "type": "Civilian Boat", - "era": "Modern", - "label": "Zwezdny", - "shortLabel": "Zwezdny", - "range": "", - "filename": "", - "enabled": true - }, - "KILO": { - "name": "kilo", - "coalition": "red", - "type": "Submarine", - "era": "Late Cold War", - "label": "Project 636 Varshavyanka Basic", - "shortLabel": "Varshavyanka Basic", - "range": "Medium", - "filename": "", - "enabled": true - }, - "IMPROVED_KILO": { - "name": "IMPROVED_KILO", - "coalition": "", - "era": "", - "label": "SSK 636 Improved Kilo", - "shortLabel": "SSK 636 Improved Kilo", - "type": "Submarine", - "enabled": true, - "liveries": {} - }, - "SOM": { - "name": "SOM", - "coalition": "", - "era": "", - "label": "SSK 641B Tango", - "shortLabel": "SSK 641B Tango", - "type": "SOM", - "enabled": true, - "liveries": {} - }, - "Forrestal": { - "name": "Forrestal", - "coalition": "", - "era": "", - "label": "CV-59 Forrestal", - "shortLabel": "CV-59 Forrestal", - "type": "Forrestal", - "enabled": true, - "liveries": {} - }, - "LST_Mk2": { - "name": "LST_Mk2", - "coalition": "", - "era": "", - "label": "LST Mk.II", - "shortLabel": "LST Mk.II", - "type": "LST_Mk2", - "enabled": true, - "liveries": {} - }, - "USS_Samuel_Chase": { - "name": "USS_Samuel_Chase", - "coalition": "", - "era": "", - "label": "LS Samuel Chase", - "shortLabel": "LS Samuel Chase", - "type": "USS_Samuel_Chase", - "enabled": true, - "liveries": {} - }, - "Higgins_boat": { - "name": "Higgins_boat", - "coalition": "", - "era": "", - "label": "Boat LCVP Higgins", - "shortLabel": "Boat LCVP Higgins", - "type": "Higgins_boat", - "enabled": true, - "liveries": {} - }, - "Uboat_VIIC": { - "name": "Uboat_VIIC", - "coalition": "", - "era": "", - "label": "U-boat VIIC U-flak", - "shortLabel": "U-boat VIIC U-flak", - "type": "Uboat_VIIC", - "enabled": true, - "liveries": {} - }, - "Schnellboot_type_S130": { - "name": "Schnellboot_type_S130", - "coalition": "", - "era": "", - "label": "Boat Schnellboot type S130", - "shortLabel": "Boat Schnellboot type S130", - "type": "Schnellboot_type_S130", - "enabled": true, - "liveries": {} - } + "BDK-775": { + "name": "BDK-775", + "coalition": "blue", + "type": "Landing Craft", + "era": "Mid Cold War", + "label": "LS Ropucha", + "shortLabel": "LS Ropucha", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 25000, + "engagementRange": 6000 + }, + "CVN_71": { + "name": "CVN_71", + "coalition": "blue", + "type": "Super Aircraft Carrier", + "era": "Late Cold War", + "label": "CVN-71 Theodore Roosevelt", + "shortLabel": "CVN-71", + "range": "Short", + "filename": "", + "enabled": true, + "acquisitionRange": 50000, + "engagementRange": 25000 + }, + "CVN_72": { + "name": "CVN_72", + "coalition": "blue", + "type": "Super Aircraft Carrier", + "era": "Late Cold War", + "label": "CVN-72 Abraham Lincoln", + "shortLabel": "CVN-72", + "range": "Short", + "filename": "", + "enabled": true, + "acquisitionRange": 50000, + "engagementRange": 25000 + }, + "CVN_73": { + "name": "CVN_73", + "coalition": "blue", + "type": "Super Aircraft Carrier", + "era": "Late Cold War", + "label": "CVN-73 George Washington", + "shortLabel": "CVN-73", + "range": "Medium", + "filename": "", + "enabled": true, + "acquisitionRange": 50000, + "engagementRange": 25000 + }, + "CVN_75": { + "name": "CVN_75", + "coalition": "blue", + "type": "Aircraft Carrier", + "era": "Late Cold War", + "label": "CVN-75 Harry S. Truman", + "shortLabel": "CVN-75", + "range": "Medium", + "filename": "", + "enabled": true, + "liveries": { + "autumn": { + "name": "Autumn", + "countries": "All" + }, + "winter": { + "name": "Winter", + "countries": "All" + }, + "summer": { + "name": "Summer", + "countries": "All" + }, + "spring": { + "name": "Spring", + "countries": "All" + }, + "desert": { + "name": "Desert", + "countries": "All" + } + }, + "acquisitionRange": 50000, + "engagementRange": 25000 + }, + "CV_1143_5": { + "name": "CV_1143_5", + "coalition": "red", + "type": "Aircraft Carrier", + "era": "Modern", + "label": "CV Admiral Kuznetsov(2017)", + "shortLabel": "Admiral Kuznetsov(2017)", + "range": "Medium", + "filename": "", + "enabled": true, + "acquisitionRange": 25000, + "engagementRange": 12000 + }, + "CastleClass_01": { + "name": "CastleClass_01", + "coalition": "blue", + "type": "Patrol", + "era": "Mid Cold War", + "label": "HMS Leeds Castle (P-258)", + "shortLabel": "HMS Leeds Castle (P-258)", + "range": "", + "filename": "", + "enabled": true, + "liveries": { + "dumbarton": { + "name": "Dumbarton", + "countries": "All" + } + }, + "acquisitionRange": 25000, + "engagementRange": 3000 + }, + "HandyWind": { + "name": "HandyWind", + "coalition": "blue", + "type": "Cargoship", + "era": "Late Cold War", + "label": "Bulker Handy Wind", + "shortLabel": "Bulker Handy Wind", + "range": "", + "filename": "", + "enabled": true, + "liveries": { + "noname": { + "name": "NoName", + "countries": "All" + }, + "handy_wind": { + "name": "Handy Wind", + "countries": "All" + }, + "baltic_cove": { + "name": "Baltic Cove", + "countries": "All" + }, + "baltic_wind": { + "name": "Baltic Wind", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "HarborTug": { + "name": "HarborTug", + "coalition": "", + "type": "Tug", + "era": "Mid Cold War", + "label": "Harbor Tug", + "shortLabel": "Harbor Tug", + "range": "", + "filename": "", + "enabled": true, + "liveries": { + "harbor tug blue": { + "name": "Harbor Tug Blue", + "countries": "All" + }, + "harbor tug red": { + "name": "Harbor Tug Red", + "countries": "All" + }, + "harbor tug black": { + "name": "Harbor Tug Black", + "countries": "All" + }, + "harbor tug green": { + "name": "Harbor Tug Green", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "LHA_Tarawa": { + "name": "LHA_Tarawa", + "coalition": "blue", + "type": "Aircraft Carrier", + "era": "Mid Cold War", + "label": "LHA-1 Tarawa", + "shortLabel": "LHA-1 Tarawa", + "range": "Short", + "filename": "", + "enabled": true, + "acquisitionRange": 150000, + "engagementRange": 20000 + }, + "La_Combattante_II": { + "name": "La_Combattante_II", + "coalition": "blue", + "type": "Fast Attack Craft", + "era": "Mid Cold War", + "label": "FAC La Combattante lla", + "shortLabel": "FAC La Combattante", + "range": "", + "filename": "", + "enabled": true, + "liveries": { + "irn_217": { + "name": "217", + "countries": [ + "IRN" + ] + }, + "syr_35": { + "name": "35", + "countries": [ + "SYR" + ] + }, + "lib_521": { + "name": "521", + "countries": [ + "LIB" + ] + }, + "grg_dioskuria": { + "name": "Dioskuria", + "countries": [ + "GRG" + ] + }, + "grc_p77_plotarchis sakipis": { + "name": "Plotarchis_Sakipis", + "countries": [ + "GRC" + ] + }, + "grc_p72_ypoploiarchos votsis": { + "name": "Ypoploiarchos_Votsis", + "countries": [ + "GRC" + ] + }, + "egp_601": { + "name": "601", + "countries": [ + "EGP" + ] + }, + "irn_215": { + "name": "215", + "countries": [ + "IRN" + ] + }, + "ger_s50_panther": { + "name": "S50_Panther", + "countries": [ + "GER" + ] + }, + "lib_520": { + "name": "520", + "countries": [ + "LIB" + ] + }, + "grc_p73_antiploiarchos pezopoulos": { + "name": "Antiploiarchos_Pezopoulos", + "countries": [ + "GRC" + ] + }, + "ger_s54_elster": { + "name": "S54_Elster", + "countries": [ + "GER" + ] + }, + "ger_s58_pinguin": { + "name": "S58_Pinguin", + "countries": [ + "GER" + ] + }, + "grc_p74_plotarchis vlachavas": { + "name": "Plotarchis_Vlachavas", + "countries": [ + "GRC" + ] + }, + "ger_s52_storch": { + "name": "S52_Storch", + "countries": [ + "GER" + ] + }, + "ger_s57_weihe": { + "name": "S57_Weihe", + "countries": [ + "GER" + ] + }, + "egp_604": { + "name": "604", + "countries": [ + "EGP" + ] + }, + "ger_s53_pelikan": { + "name": "S53_Pelikan", + "countries": [ + "GER" + ] + }, + "lib_522": { + "name": "522", + "countries": [ + "LIB" + ] + }, + "ger_s56_dommel": { + "name": "S56_Dommel", + "countries": [ + "GER" + ] + }, + "irn_216": { + "name": "216", + "countries": [ + "IRN" + ] + }, + "ger_s59_reiher": { + "name": "S59_Reiher", + "countries": [ + "GER" + ] + }, + "lib_519": { + "name": "519", + "countries": [ + "LIB" + ] + }, + "syr_34": { + "name": "34", + "countries": [ + "SYR" + ] + }, + "irn_218": { + "name": "218", + "countries": [ + "IRN" + ] + }, + "grc_p76_ypoploiarchos tournas": { + "name": "Ypoploiarchos_Tournas", + "countries": [ + "GRC" + ] + }, + "grc_p75_plotarchis maridakis": { + "name": "Plotarchis_Maridakis", + "countries": [ + "GRC" + ] + }, + "ger_s55_alk": { + "name": "S55_Alk", + "countries": [ + "GER" + ] + }, + "grg_305": { + "name": "305", + "countries": [ + "GRG" + ] + }, + "egp_602": { + "name": "602", + "countries": [ + "EGP" + ] + }, + "irn_212": { + "name": "212", + "countries": [ + "IRN" + ] + }, + "grg_304": { + "name": "304", + "countries": [ + "GRG" + ] + }, + "irn_214": { + "name": "214", + "countries": [ + "IRN" + ] + }, + "irn_219": { + "name": "219", + "countries": [ + "IRN" + ] + }, + "syr_36": { + "name": "36", + "countries": [ + "SYR" + ] + }, + "lib_518": { + "name": "518", + "countries": [ + "LIB" + ] + }, + "egp_605": { + "name": "605", + "countries": [ + "EGP" + ] + }, + "ger_s51_haher": { + "name": "S51_Haher", + "countries": [ + "GER" + ] + }, + "egp_603": { + "name": "603", + "countries": [ + "EGP" + ] + } + }, + "acquisitionRange": 19000, + "engagementRange": 4000 + }, + "Seawise_Giant": { + "name": "Seawise_Giant", + "coalition": "blue", + "type": "Tanker", + "era": "Late Cold War", + "label": "Tanker Seawise Giant", + "shortLabel": "Seawise Giant", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Ship_Tilde_Supply": { + "name": "Ship_Tilde_Supply", + "coalition": "blue", + "type": "Transport", + "era": "Late Cold War", + "label": "Supply Ship MV Tilde", + "shortLabel": "Supply Ship Tilde", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Stennis": { + "name": "Stennis", + "coalition": "blue", + "type": "Aircraft Carrier", + "era": "Late Cold War", + "label": "CVN-74 John C. Stennis", + "shortLabel": "CVN-74", + "range": "Medium", + "filename": "", + "enabled": true, + "acquisitionRange": 50000, + "engagementRange": 25000 + }, + "TICONDEROG": { + "name": "TICONDEROG", + "coalition": "blue", + "type": "Cruiser", + "era": "Late Cold War", + "label": "Ticonderoga", + "shortLabel": "Ticonderoga", + "range": "Medium", + "filename": "", + "enabled": true, + "liveries": { + "vellagulf": { + "name": "USS Vella Gulf CG-72", + "countries": [ + "USA" + ] + }, + "huecity": { + "name": "USS Hue City CG-66", + "countries": [ + "USA" + ] + }, + "capestgeorge": { + "name": "USS Cape St. George CG-71", + "countries": [ + "USA" + ] + }, + "lakeerie": { + "name": "USS Lake Erie CG-70", + "countries": [ + "USA" + ] + }, + "chosin": { + "name": "USS Chosin CG-65", + "countries": [ + "USA" + ] + }, + "normandy": { + "name": "USS Normandy CG-60", + "countries": [ + "USA" + ] + }, + "portroyal": { + "name": "USS Port Royal CG-73", + "countries": [ + "USA" + ] + }, + "shiloh": { + "name": "USS Shiloh CG-67", + "countries": [ + "USA" + ] + }, + "viksburg": { + "name": "USS Viksburg CG-69", + "countries": [ + "USA" + ] + }, + "anzio": { + "name": "USS Anzio CG-68", + "countries": [ + "USA" + ] + } + }, + "acquisitionRange": 150000, + "engagementRange": 100000 + }, + "Type_052B": { + "name": "Type_052B", + "coalition": "red", + "type": "Destroyer", + "era": "Modern", + "label": "052B DDG-168 Guangzhou", + "shortLabel": "Type 52B", + "range": "Short", + "filename": "", + "enabled": true, + "liveries": { + "general": { + "name": "General", + "countries": "All" + }, + "ddg-169": { + "name": "DDG-169 Wuhan", + "countries": [ + "CHN" + ] + }, + "ddg-168": { + "name": "DDG-168 Guangzhou", + "countries": [ + "CHN" + ] + } + }, + "acquisitionRange": 100000, + "engagementRange": 30000 + }, + "Type_052C": { + "name": "Type_052C", + "coalition": "red", + "type": "Destroyer", + "era": "Modern", + "label": "052C DDG-171 Haikou", + "shortLabel": "Type 52C", + "range": "Short", + "filename": "", + "enabled": true, + "liveries": { + "ddg-171": { + "name": "DDG-171 Haikou", + "countries": [ + "CHN" + ] + }, + "general": { + "name": "General", + "countries": "All" + }, + "ddg-151": { + "name": "DDG-151 Zhengzhou", + "countries": [ + "CHN" + ] + }, + "ddg-170": { + "name": "DDG-170 Lanzhou", + "countries": [ + "CHN" + ] + }, + "default": { + "name": "DDG-150 Changchun", + "countries": [ + "CHN" + ] + }, + "ddg-152": { + "name": "DDG-152 Jinan", + "countries": [ + "CHN" + ] + }, + "ddg-153": { + "name": "DDG-153 Xi'an", + "countries": [ + "CHN" + ] + } + }, + "acquisitionRange": 260000, + "engagementRange": 100000 + }, + "Type_054A": { + "name": "", + "coalition": "red", + "type": "Frigate", + "era": "Modern", + "label": "054A FFG-538 Yantai", + "shortLabel": "Type 54A", + "range": "Medium", + "filename": "", + "enabled": true, + "liveries": { + "ffg-573": { + "name": "FFG-573 Liuzhou", + "countries": [ + "CHN" + ] + }, + "ffg-578": { + "name": "FFG-578 Yangzhou", + "countries": [ + "CHN" + ] + }, + "ffg-531": { + "name": "FFG-531 Xiangtan", + "countries": [ + "CHN" + ] + }, + "ffg-550": { + "name": "FFG-550 Weifang", + "countries": [ + "CHN" + ] + }, + "ffg-536": { + "name": "FFG-536 Xuchang", + "countries": [ + "CHN" + ] + }, + "ffg-549": { + "name": "FFG-549 Changzhou", + "countries": [ + "CHN" + ] + }, + "ffg-574": { + "name": "FFG-574 Sanya", + "countries": [ + "CHN" + ] + }, + "default": { + "name": "FFG-515 Binzhou", + "countries": [ + "CHN" + ] + }, + "ffg-576": { + "name": "FFG-576 Daqing", + "countries": [ + "CHN" + ] + }, + "ffg-599": { + "name": "FFG-599 Anyang", + "countries": [ + "CHN" + ] + }, + "ffg-547": { + "name": "FFG-547 Linyi", + "countries": [ + "CHN" + ] + }, + "ffg-571": { + "name": "FFG-571 Yuncheng", + "countries": [ + "CHN" + ] + }, + "ffg-546": { + "name": "FFG-546 Yancheng", + "countries": [ + "CHN" + ] + }, + "ffg-579": { + "name": "FFG-579 Handan", + "countries": [ + "CHN" + ] + }, + "ffg-532": { + "name": "FFG-532 Jingzhou", + "countries": [ + "CHN" + ] + }, + "ffg-569": { + "name": "FFG-569 Yulin", + "countries": [ + "CHN" + ] + }, + "ffg-538": { + "name": "FFG-538 Yantai", + "countries": [ + "CHN" + ] + }, + "ffg-577": { + "name": "FFG-577 Huanggang", + "countries": [ + "CHN" + ] + }, + "general": { + "name": "General", + "countries": "All" + }, + "ffg-572": { + "name": "FFG-572 Hengshui", + "countries": [ + "CHN" + ] + }, + "ffg-539": { + "name": "FFG-539 Wuhu", + "countries": [ + "CHN" + ] + }, + "ffg-548": { + "name": "FFG-548 Yiyang", + "countries": [ + "CHN" + ] + }, + "ffg-575": { + "name": "FFG-575 Yueyang", + "countries": [ + "CHN" + ] + }, + "ffg-598": { + "name": "FFG-598 Rizhao", + "countries": [ + "CHN" + ] + }, + "ffg-500": { + "name": "FFG-500 Xianning", + "countries": [ + "CHN" + ] + } + }, + "acquisitionRange": 160000, + "engagementRange": 45000 + }, + "Type_071": { + "name": "Type_071", + "coalition": "red", + "type": "Transport", + "era": "Modern", + "label": "Type 071", + "shortLabel": "Type 071", + "range": "", + "filename": "", + "enabled": true, + "liveries": { + "lpd-978": { + "name": "978 Wuzhi Shan", + "countries": [ + "CHN" + ] + }, + "lpd-989": { + "name": "989 Changbai Shan", + "countries": [ + "CHN" + ] + }, + "default": { + "name": "998 Kunlun Shan", + "countries": [ + "CHN" + ] + }, + "lpd-999": { + "name": "999 Jinggang Shan", + "countries": [ + "CHN" + ] + }, + "lpd-988": { + "name": "988 Yimeng Shan", + "countries": [ + "CHN" + ] + }, + "lpd-980": { + "name": "980 Longhu Shan", + "countries": [ + "CHN" + ] + } + }, + "acquisitionRange": 300000, + "engagementRange": 150000 + }, + "Type_093": { + "name": "Type_093", + "coalition": "red", + "type": "Submarine", + "era": "Modern", + "label": "Type 093", + "shortLabel": "Type 093", + "range": "", + "filename": "", + "enabled": true, + "liveries": { + "periscope_state_1": { + "name": "Periscope State 1", + "countries": "All" + } + }, + "acquisitionRange": 40000, + "engagementRange": 40000 + }, + "USS_Arleigh_Burke_IIa": { + "name": "USS_Arleigh_Burke_IIa", + "coalition": "blue", + "type": "Destroyer", + "era": "Late Cold War", + "label": "DDG Arleigh Burke lla", + "shortLabel": "DDG Arleigh Burke", + "range": "Medium", + "filename": "", + "enabled": true, + "liveries": { + "ddg-107_uss_gravely": { + "name": "DDG-107 USS Gravely", + "countries": [ + "USA" + ] + }, + "ddg-112_uss_michael_murphy": { + "name": "DDG-112 USS Michael Murphy", + "countries": [ + "USA" + ] + }, + "ddg-101_uss_gridley": { + "name": "DDG-101 USS Gridley", + "countries": [ + "USA" + ] + }, + "ddg-106_uss_stockdale": { + "name": "DDG-106 USS Stockdale", + "countries": [ + "USA" + ] + }, + "ddg-115_uss_rafael_peralta": { + "name": "DDG-115 USS Rafael Peralta", + "countries": [ + "USA" + ] + }, + "ddg-114_uss_ralph_johnson": { + "name": "DDG-114 USS Ralph Johnson", + "countries": [ + "USA" + ] + }, + "ddg-116_uss_thomas_hudner": { + "name": "DDG-116 USS Thomas Hudner", + "countries": [ + "USA" + ] + }, + "ddg-113_uss_john_finn": { + "name": "DDG-113 USS John Finn", + "countries": [ + "USA" + ] + }, + "ddg-108_uss_wayne_e.meyer": { + "name": "DDG-108 USS Wayne E. Meyer", + "countries": [ + "USA" + ] + }, + "ddg-110_uss_william_p.lawrence": { + "name": "DDG-110 USS William P. Lawrence", + "countries": [ + "USA" + ] + }, + "ddg-103_uss_truxtun": { + "name": "DDG-103 USS Truxtun", + "countries": [ + "USA" + ] + }, + "ddg-109_uss_jason_dunham": { + "name": "DDG-109 USS Jason Dunham", + "countries": [ + "USA" + ] + }, + "ddg-105_uss_dewey": { + "name": "DDG-105 USS Dewey", + "countries": [ + "USA" + ] + }, + "ddg-104_uss_sterett": { + "name": "DDG-104 USS Sterett", + "countries": [ + "USA" + ] + }, + "ddg-102_uss_sampson": { + "name": "DDG-102 USS Sampson", + "countries": [ + "USA" + ] + }, + "ddg-111_uss_spruance": { + "name": "DDG-111 USS Spruance", + "countries": [ + "USA" + ] + } + }, + "acquisitionRange": 150000, + "engagementRange": 100000 + }, + "ara_vdm": { + "name": "ara_vdm", + "coalition": "", + "type": "Aircraft Carrier", + "era": "Mid Cold War", + "label": "ARA Vienticinco de Mayo", + "shortLabel": "ARA Vienticinco de Mayo", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 18000, + "engagementRange": 5000 + }, + "hms_invincible": { + "name": "hms_invincible", + "coalition": "blue", + "type": "Aircraft Carrier", + "era": "Mid Cold War", + "label": "HMS Invincible (R05)", + "shortLabel": "HMS Invincible", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 100000, + "engagementRange": 74000 + }, + "leander-gun-achilles": { + "name": "leander-gun-achilles", + "coalition": "blue", + "type": "Frigate", + "era": "Mid Cold War", + "label": "HMS Achilles (F12)", + "shortLabel": "HMS Achilles", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 180000, + "engagementRange": 8000 + }, + "leander-gun-andromeda": { + "name": "leander-gun-andromeda", + "coalition": "blue", + "type": "Frigate", + "era": "Mid Cold War", + "label": "HMS Andromeda (F57)", + "shortLabel": "HMS Andromeda", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 180000, + "engagementRange": 140000 + }, + "leander-gun-ariadne": { + "name": "leander-gun-ariadne", + "coalition": "blue", + "type": "Frigate", + "era": "Mid Cold War", + "label": "HMS Ariadne (F72)", + "shortLabel": "HMS Ariadne", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 150000, + "engagementRange": 100000 + }, + "leander-gun-condell": { + "name": "leander-gun-condell", + "coalition": "", + "type": "Frigate", + "era": "Mid Cold War", + "label": "Almirante Condell PFG-06", + "shortLabel": "Almirante Condell", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 150000, + "engagementRange": 100000 + }, + "leander-gun-lynch": { + "name": "leander-gun-lynch", + "coalition": "", + "type": "Frigate", + "era": "Mid Cold War", + "label": "CNS Almirante Lynch (PFG-07)", + "shortLabel": "CNS Almirante Lynch", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 180000, + "engagementRange": 140000 + }, + "santafe": { + "name": "santafe", + "coalition": "", + "type": "Submarine", + "era": "Early Cold War", + "label": "ARA Santa Fe S-21", + "shortLabel": "ARA Santa", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "speedboat": { + "name": "speedboat", + "coalition": "", + "era": "", + "label": "Boat Armed Hi-speed", + "shortLabel": "Boat Armed Hi-speed", + "type": "Speedboat", + "enabled": true, + "liveries": {}, + "acquisitionRange": 5000, + "engagementRange": 1000 + }, + "VINSON": { + "name": "VINSON", + "coalition": "", + "era": "", + "label": "CVN-70 Carl Vinson", + "shortLabel": "CVN-70 Carl Vinson", + "type": "Aircraft Carrier", + "enabled": true, + "liveries": {}, + "acquisitionRange": 30000, + "engagementRange": 15000 + }, + "PERRY": { + "name": "perry", + "coalition": "blue", + "type": "Frigate", + "era": "Mid Cold War", + "label": "Oliver H. Perry", + "shortLabel": "Oliver H. Perry", + "range": "Medium", + "filename": "", + "enabled": true, + "liveries": { + "gary": { + "name": "USS Gary FFG-51", + "countries": "All" + }, + "carr": { + "name": "USS Carr FFG-52", + "countries": "All" + }, + "reubenjames": { + "name": "USS Reuben James FFG-57", + "countries": "All" + }, + "hawes": { + "name": "USS Hawes FFG-53", + "countries": "All" + }, + "ford": { + "name": "USS Ford FFG-54", + "countries": "All" + }, + "elrod": { + "name": "USS Elrod FFG-55", + "countries": "All" + }, + "vandergrift": { + "name": "USS Vandergrift FFG-48", + "countries": "All" + }, + "rentz": { + "name": "USS Rentz FFG-46", + "countries": "All" + }, + "nicholas": { + "name": "USS Nicholas FFG-47", + "countries": "All" + }, + "kauffman": { + "name": "USS Kauffman FFG-59", + "countries": "All" + } + }, + "acquisitionRange": 150000, + "engagementRange": 100000 + }, + "ALBATROS": { + "name": "albatros", + "coalition": "red", + "type": "Frigade", + "era": "Early Cold War", + "label": "Albatros (Grisha-5)", + "shortLabel": "Albatros", + "range": "", + "filename": "", + "enabled": true, + "liveries": { + "141": { + "name": "141", + "countries": "All" + }, + "142": { + "name": "142", + "countries": "All" + }, + "143": { + "name": "143", + "countries": "All" + }, + "144": { + "name": "144", + "countries": "All" + }, + "145": { + "name": "145", + "countries": "All" + }, + "146": { + "name": "146", + "countries": "All" + }, + "147": { + "name": "147", + "countries": "All" + }, + "148": { + "name": "148", + "countries": "All" + }, + "149": { + "name": "149", + "countries": "All" + } + }, + "acquisitionRange": 30000, + "engagementRange": 16000 + }, + "KUZNECOW": { + "name": "kuznecow", + "coalition": "red", + "type": "Aircraft Carrier", + "era": "Late Cold War", + "label": "Admiral Kuznetsov", + "shortLabel": "Admiral Kuznetsov", + "range": "Medium", + "filename": "", + "enabled": true, + "acquisitionRange": 25000, + "engagementRange": 12000 + }, + "MOLNIYA": { + "name": "molniya", + "coalition": "", + "type": "Corvette", + "era": "Late Cold War", + "label": "Molniya (Tarantul-3)", + "shortLabel": "Molniya", + "range": "Short", + "filename": "", + "enabled": true, + "liveries": { + "952": { + "name": "952", + "countries": "All" + }, + "953": { + "name": "953", + "countries": "All" + }, + "954": { + "name": "954", + "countries": "All" + } + }, + "acquisitionRange": 21000, + "engagementRange": 2000 + }, + "MOSCOW": { + "name": "moscow", + "coalition": "red", + "type": "Cruiser", + "era": "Late Cold War", + "label": "Moscow", + "shortLabel": "Moscow", + "range": "Medium", + "filename": "", + "enabled": true, + "liveries": { + "default": { + "name": "default", + "countries": "All" + }, + "cow1": { + "name": "cow1", + "countries": "All" + }, + "cow3": { + "name": "cow3", + "countries": "All" + }, + "cow2": { + "name": "cow2", + "countries": "All" + } + }, + "acquisitionRange": 160000, + "engagementRange": 75000 + }, + "NEUSTRASH": { + "name": "neustrash", + "coalition": "red", + "type": "Frigate", + "era": "Late Cold War", + "label": "Neustrashimy", + "shortLabel": "Neustrashimy", + "range": "Short", + "filename": "", + "enabled": true, + "acquisitionRange": 27000, + "engagementRange": 12000 + }, + "PIOTR": { + "name": "PIOTR", + "coalition": "", + "era": "", + "label": "Battlecruiser 1144.2 Pyotr Velikiy", + "shortLabel": "Battlecruiser 1144.2 Pyotr Velikiy", + "type": "Cruiser", + "enabled": true, + "liveries": {}, + "acquisitionRange": 250000, + "engagementRange": 190000 + }, + "REZKY": { + "name": "Rezky (Krivak-2)", + "coalition": "red", + "type": "Frigate", + "era": "Early Cold War", + "label": "Rezky (Krivak-2)", + "shortLabel": "Rezky", + "range": "Short", + "filename": "", + "enabled": true, + "acquisitionRange": 30000, + "engagementRange": 16000 + }, + "ELNYA": { + "name": "elnya", + "coalition": "red", + "type": "Tanker", + "era": "Late Cold War", + "label": "Elnya tanker", + "shortLabel": "Elnya tanker", + "range": "", + "filename": "", + "enabled": true, + "liveries": { + "952": { + "name": "952", + "countries": "All" + }, + "953": { + "name": "953", + "countries": "All" + }, + "954": { + "name": "954", + "countries": "All" + } + }, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Dry-cargo ship-2": { + "name": "Dry-cargo ship-2", + "coalition": "", + "era": "", + "label": "Cargo Ivanov", + "shortLabel": "Cargo Ivanov", + "type": "Cargo", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Dry-cargo ship-1": { + "name": "Dry-cargo ship-1", + "coalition": "", + "era": "", + "label": "Bulker Yakushev", + "shortLabel": "Bulker Yakushev", + "type": "Cargo", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "ZWEZDNY": { + "name": "zwezdny", + "coalition": "", + "type": "Civilian Boat", + "era": "Modern", + "label": "Zwezdny", + "shortLabel": "Zwezdny", + "range": "", + "filename": "", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "KILO": { + "name": "kilo", + "coalition": "red", + "type": "Submarine", + "era": "Late Cold War", + "label": "Project 636 Varshavyanka Basic", + "shortLabel": "Varshavyanka Basic", + "range": "Medium", + "filename": "", + "enabled": true, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "IMPROVED_KILO": { + "name": "IMPROVED_KILO", + "coalition": "", + "era": "", + "label": "SSK 636 Improved Kilo", + "shortLabel": "SSK 636 Improved Kilo", + "type": "Submarine", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "SOM": { + "name": "SOM", + "coalition": "", + "era": "", + "label": "SSK 641B Tango", + "shortLabel": "SSK 641B Tango", + "type": "SOM", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 0 + }, + "Forrestal": { + "name": "Forrestal", + "coalition": "", + "era": "", + "label": "CV-59 Forrestal", + "shortLabel": "CV-59 Forrestal", + "type": "Forrestal", + "enabled": true, + "liveries": {}, + "acquisitionRange": 50000, + "engagementRange": 25000 + }, + "LST_Mk2": { + "name": "LST_Mk2", + "coalition": "", + "era": "", + "label": "LST Mk.II", + "shortLabel": "LST Mk.II", + "type": "LST_Mk2", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 4000 + }, + "USS_Samuel_Chase": { + "name": "USS_Samuel_Chase", + "coalition": "", + "era": "", + "label": "LS Samuel Chase", + "shortLabel": "LS Samuel Chase", + "type": "USS_Samuel_Chase", + "enabled": true, + "liveries": {}, + "acquisitionRange": 0, + "engagementRange": 7000 + }, + "Higgins_boat": { + "name": "Higgins_boat", + "coalition": "", + "era": "", + "label": "Boat LCVP Higgins", + "shortLabel": "Boat LCVP Higgins", + "type": "Higgins_boat", + "enabled": true, + "liveries": {}, + "acquisitionRange": 3000, + "engagementRange": 1000 + }, + "Uboat_VIIC": { + "name": "Uboat_VIIC", + "coalition": "", + "era": "", + "label": "U-boat VIIC U-flak", + "shortLabel": "U-boat VIIC U-flak", + "type": "Uboat_VIIC", + "enabled": true, + "liveries": {}, + "acquisitionRange": 20000, + "engagementRange": 4000 + }, + "Schnellboot_type_S130": { + "name": "Schnellboot_type_S130", + "coalition": "", + "era": "", + "label": "Boat Schnellboot type S130", + "shortLabel": "Boat Schnellboot type S130", + "type": "Schnellboot_type_S130", + "enabled": true, + "liveries": {}, + "acquisitionRange": 10000, + "engagementRange": 4000 + } } \ No newline at end of file diff --git a/client/src/constants/constants.ts b/client/src/constants/constants.ts index e952cd0b..62071065 100644 --- a/client/src/constants/constants.ts +++ b/client/src/constants/constants.ts @@ -144,18 +144,21 @@ export const mapLayers = { export const IDLE = "Idle"; export const MOVE_UNIT = "Move unit"; export const COALITIONAREA_DRAW_POLYGON = "Draw Coalition Area"; -export const visibilityControls: string[] = ["human", "dcs", "aircraft", "groundunit-sam", "groundunit-other", "navyunit", "airbase"]; -export const visibilityControlsTypes: string[][] = [["human"], ["dcs"], ["aircraft"], ["groundunit-sam", "groundunit-sam-radar", "groundunit-sam-launcher"], ["groundunit-other", "groundunit-ewr"], ["navyunit"], ["airbase"]]; -export const visibilityControlsTooltips: string[] = ["Toggle human players visibility", "Toggle DCS controlled units visibility", "Toggle aircrafts visibility", "Toggle SAM units visibility", "Toggle ground units (not SAM) visibility", "Toggle navy units visibility", "Toggle airbases visibility"]; +export const visibilityControls: string[] = ["human", "dcs", "aircraft", "helicopter", "groundunit-sam", "groundunit-other", "navyunit", "airbase"]; +export const visibilityControlsTypes: string[][] = [["human"], ["dcs"], ["aircraft"], ["helicopter"], ["groundunit-sam", "groundunit-sam-radar", "groundunit-sam-launcher"], ["groundunit-other", "groundunit-ewr"], ["navyunit"], ["airbase"]]; +export const visibilityControlsTooltips: string[] = ["Toggle human players visibility", "Toggle DCS controlled units visibility", "Toggle aircrafts visibility", "Toggle helicopter visibility", "Toggle SAM units visibility", "Toggle ground units (not SAM) visibility", "Toggle navy units visibility", "Toggle airbases visibility"]; export const IADSTypes = ["AAA", "MANPADS", "SAM Site", "Radar"]; export const IADSDensities: {[key: string]: number}= {"AAA": 0.8, "MANPADS": 0.3, "SAM Site": 0.1, "Radar": 0.05}; -export const SHOW_CONTACT_LINES = "Show unit contact lines"; -export const HIDE_GROUP_MEMBERS = "Hide group members when zoomed out"; -export const SHOW_UNIT_LABELS = "Show unit labels"; -export const SHOW_UNIT_PATHS = "Show unit paths"; -export const SHOW_UNIT_TARGETS = "Show unit targets"; +export const HIDE_GROUP_MEMBERS = "Hide group members when zoomed out"; +export const SHOW_UNIT_LABELS = "Show unit labels (L)"; +export const SHOW_UNITS_ENGAGEMENT_RINGS = "Show units threat range rings (Q)"; +export const HIDE_UNITS_SHORT_RANGE_RINGS = "Hide short range units threat range rings (R)"; +export const SHOW_UNITS_ACQUISITION_RINGS = "Show units detection range rings (E)"; +export const SHOW_UNIT_CONTACTS = "Show selected units contact lines"; +export const SHOW_UNIT_PATHS = "Show selected unit paths"; +export const SHOW_UNIT_TARGETS = "Show selected unit targets"; export enum DataIndexes { startOfData = 0, diff --git a/client/src/contextmenus/contextmenu.ts b/client/src/contextmenus/contextmenu.ts index 39d5bf08..fb923e10 100644 --- a/client/src/contextmenus/contextmenu.ts +++ b/client/src/contextmenus/contextmenu.ts @@ -29,6 +29,7 @@ export class ContextMenu { this.#x = x; this.#y = y; this.clip(); + this.getContainer()?.dispatchEvent(new Event("show")); } /** Hide the contextmenu @@ -36,6 +37,7 @@ export class ContextMenu { */ hide() { this.#container?.classList.toggle("hide", true); + this.getContainer()?.dispatchEvent(new Event("hide")); } /** diff --git a/client/src/contextmenus/mapcontextmenu.ts b/client/src/contextmenus/mapcontextmenu.ts index 2f3c3689..72c73ec9 100644 --- a/client/src/contextmenus/mapcontextmenu.ts +++ b/client/src/contextmenus/mapcontextmenu.ts @@ -79,7 +79,15 @@ export class MapContextMenu extends ContextMenu { this.#groundUnitSpawnMenu.getContainer().addEventListener("hide", () => this.hide()); this.#navyUnitSpawnMenu.getContainer().addEventListener("hide", () => this.hide()); - this.hide(); + this.getContainer()?.addEventListener("show", () => this.#aircraftSpawnMenu.showCirclesPreviews()); + this.getContainer()?.addEventListener("show", () => this.#helicopterSpawnMenu.showCirclesPreviews()); + this.getContainer()?.addEventListener("show", () => this.#groundUnitSpawnMenu.showCirclesPreviews()); + this.getContainer()?.addEventListener("show", () => this.#navyUnitSpawnMenu.showCirclesPreviews()); + + this.getContainer()?.addEventListener("hide", () => this.#aircraftSpawnMenu.clearCirclesPreviews()); + this.getContainer()?.addEventListener("hide", () => this.#helicopterSpawnMenu.clearCirclesPreviews()); + this.getContainer()?.addEventListener("hide", () => this.#groundUnitSpawnMenu.clearCirclesPreviews()); + this.getContainer()?.addEventListener("hide", () => this.#navyUnitSpawnMenu.clearCirclesPreviews()); } /** Show the contextmenu on top of the map, usually at the location where the user has clicked on it. @@ -189,6 +197,11 @@ export class MapContextMenu extends ContextMenu { this.#groundUnitSpawnMenu.reset(); this.#navyUnitSpawnMenu.reset(); + this.#aircraftSpawnMenu.clearCirclesPreviews(); + this.#helicopterSpawnMenu.clearCirclesPreviews(); + this.#groundUnitSpawnMenu.clearCirclesPreviews(); + this.#navyUnitSpawnMenu.clearCirclesPreviews(); + this.setVisibleSubMenu(null); this.clip(); } diff --git a/client/src/controls/unitspawnmenu.ts b/client/src/controls/unitspawnmenu.ts index 26d8df63..4b5d88c8 100644 --- a/client/src/controls/unitspawnmenu.ts +++ b/client/src/controls/unitspawnmenu.ts @@ -1,4 +1,4 @@ -import { LatLng } from "leaflet"; +import { Circle, LatLng } from "leaflet"; import { Dropdown } from "./dropdown"; import { Slider } from "./slider"; import { UnitDatabase } from "../unit/databases/unitdatabase"; @@ -45,6 +45,10 @@ export class UnitSpawnMenu { #unitImageEl: HTMLImageElement; #unitLoadoutListEl: HTMLDivElement; + /* Range circle previews */ + #engagementCircle: Circle; + #acquisitionCircle: Circle; + constructor(ID: string, unitDatabase: UnitDatabase, orderByRole: boolean) { this.#container = document.getElementById(ID) as HTMLElement; this.#unitDatabase = unitDatabase; @@ -154,6 +158,8 @@ export class UnitSpawnMenu { this.#container.dispatchEvent(new Event("resize")); this.#computeSpawnPoints(); + + this.showCirclesPreviews(); }) this.#container.addEventListener("unitLoadoutChanged", () => { @@ -183,6 +189,13 @@ export class UnitSpawnMenu { this.#container.addEventListener("unitLiveryChanged", () => { }) + + document.addEventListener('activeCoalitionChanged', () => { + this.showCirclesPreviews(); + }); + + this.#engagementCircle = new Circle(this.spawnOptions.latlng, { radius: 0, weight: 4, opacity: 0.8, fillOpacity: 0, dashArray: "4 8" }); + this.#acquisitionCircle = new Circle(this.spawnOptions.latlng, { radius: 0, weight: 2, opacity: 0.8, fillOpacity: 0, dashArray: "8 12" }); } getContainer() { @@ -205,6 +218,8 @@ export class UnitSpawnMenu { this.setCountries(); this.#container.dispatchEvent(new Event("resize")); + + this.clearCirclesPreviews(); } setCountries() { @@ -225,12 +240,61 @@ export class UnitSpawnMenu { // this.resetUnitLabel(); } + showCirclesPreviews() { + this.clearCirclesPreviews(); + + var acquisitionRange = this.#unitDatabase.getByName(this.spawnOptions.name)?.acquisitionRange ?? 0; + var engagementRange = this.#unitDatabase.getByName(this.spawnOptions.name)?.engagementRange ?? 0; + + this.#acquisitionCircle.setRadius(acquisitionRange); + this.#engagementCircle.setRadius(engagementRange); + this.#acquisitionCircle.setLatLng(this.spawnOptions.latlng); + this.#engagementCircle.setLatLng(this.spawnOptions.latlng); + + switch (getApp().getActiveCoalition()) { + case "red": + this.#acquisitionCircle.options.color = "#D42121"; + break; + case "blue": + this.#acquisitionCircle.options.color = "#017DC1"; + break; + default: + this.#acquisitionCircle.options.color = "#111111" + break; + } + + switch (getApp().getActiveCoalition()) { + case "red": + this.#engagementCircle.options.color = "#FF5858"; + break; + case "blue": + this.#engagementCircle.options.color = "#3BB9FF"; + break; + default: + this.#engagementCircle.options.color = "#CFD9E8" + break; + } + + if (engagementRange > 0) + this.#engagementCircle.addTo(getApp().getMap()); + + if (acquisitionRange > 0) + this.#acquisitionCircle.addTo(getApp().getMap()); + } + + clearCirclesPreviews() { + this.#engagementCircle.removeFrom(getApp().getMap()); + this.#acquisitionCircle.removeFrom(getApp().getMap()); + } + setAirbase(airbase: Airbase | undefined) { this.spawnOptions.airbase = airbase; } setLatLng(latlng: LatLng) { this.spawnOptions.latlng = latlng; + + this.showCirclesPreviews(); } setMaxUnitCount(maxUnitCount: number) { diff --git a/client/src/dom.d.ts b/client/src/dom.d.ts index 4d8080e9..15e260f5 100644 --- a/client/src/dom.d.ts +++ b/client/src/dom.d.ts @@ -21,6 +21,7 @@ interface CustomEventMap { "mapVisibilityOptionsChanged": CustomEvent<>, "commandModeOptionsChanged": CustomEvent<>, "contactsUpdated": CustomEvent, + "activeCoalitionChanged": CustomEvent<> } declare global { diff --git a/client/src/map/map.ts b/client/src/map/map.ts index c20d95b1..32a6c92d 100644 --- a/client/src/map/map.ts +++ b/client/src/map/map.ts @@ -12,7 +12,7 @@ import { DestinationPreviewMarker } from "./markers/destinationpreviewmarker"; import { TemporaryUnitMarker } from "./markers/temporaryunitmarker"; import { ClickableMiniMap } from "./clickableminimap"; import { SVGInjector } from '@tanem/svg-injector' -import { mapLayers, mapBounds, minimapBoundaries, IDLE, COALITIONAREA_DRAW_POLYGON, visibilityControls, visibilityControlsTooltips, MOVE_UNIT, SHOW_CONTACT_LINES, HIDE_GROUP_MEMBERS, SHOW_UNIT_PATHS, SHOW_UNIT_TARGETS, visibilityControlsTypes, SHOW_UNIT_LABELS } from "../constants/constants"; +import { mapLayers, mapBounds, minimapBoundaries, IDLE, COALITIONAREA_DRAW_POLYGON, visibilityControls, visibilityControlsTooltips, MOVE_UNIT, SHOW_UNIT_CONTACTS, HIDE_GROUP_MEMBERS, SHOW_UNIT_PATHS, SHOW_UNIT_TARGETS, visibilityControlsTypes, SHOW_UNIT_LABELS, SHOW_UNITS_ENGAGEMENT_RINGS, SHOW_UNITS_ACQUISITION_RINGS, HIDE_UNITS_SHORT_RANGE_RINGS } from "../constants/constants"; import { TargetMarker } from "./markers/targetmarker"; import { CoalitionArea } from "./coalitionarea/coalitionarea"; import { CoalitionAreaContextMenu } from "../contextmenus/coalitionareacontextmenu"; @@ -209,11 +209,14 @@ export class Map extends L.Map { document.querySelector("#unit-visibility-control")?.append(...this.#optionButtons["visibility"]); /* Create the checkboxes to select the advanced visibility options */ - this.addVisibilityOption(SHOW_CONTACT_LINES, false); + this.addVisibilityOption(SHOW_UNIT_CONTACTS, false); this.addVisibilityOption(HIDE_GROUP_MEMBERS, true); this.addVisibilityOption(SHOW_UNIT_PATHS, true); this.addVisibilityOption(SHOW_UNIT_TARGETS, true); this.addVisibilityOption(SHOW_UNIT_LABELS, true); + this.addVisibilityOption(SHOW_UNITS_ENGAGEMENT_RINGS, true); + this.addVisibilityOption(SHOW_UNITS_ACQUISITION_RINGS, true); + this.addVisibilityOption(HIDE_UNITS_SHORT_RANGE_RINGS, true); } addVisibilityOption(option: string, defaultValue: boolean) { @@ -528,39 +531,38 @@ export class Map extends L.Map { } this.hideMapContextMenu(); - if (!this.#shiftKey) { - if (this.#state === IDLE) { - if (this.#state == IDLE) { - this.showMapContextMenu(e.originalEvent.x, e.originalEvent.y, e.latlng); - var clickedCoalitionArea = null; + if (this.#state === IDLE) { + if (this.#state == IDLE) { + this.showMapContextMenu(e.originalEvent.x, e.originalEvent.y, e.latlng); + var clickedCoalitionArea = null; - /* Coalition areas are ordered in the #coalitionAreas array according to their zindex. Select the upper one */ - for (let coalitionArea of this.#coalitionAreas) { - if (coalitionArea.getBounds().contains(e.latlng)) { - if (coalitionArea.getSelected()) - clickedCoalitionArea = coalitionArea; - else - this.getMapContextMenu().setCoalitionArea(coalitionArea); - } + /* Coalition areas are ordered in the #coalitionAreas array according to their zindex. Select the upper one */ + for (let coalitionArea of this.#coalitionAreas) { + if (coalitionArea.getBounds().contains(e.latlng)) { + if (coalitionArea.getSelected()) + clickedCoalitionArea = coalitionArea; + else + this.getMapContextMenu().setCoalitionArea(coalitionArea); } - if (clickedCoalitionArea) - this.showCoalitionAreaContextMenu(e.originalEvent.x, e.originalEvent.y, e.latlng, clickedCoalitionArea); } - } - else if (this.#state === MOVE_UNIT) { - if (!e.originalEvent.ctrlKey) { - getApp().getUnitsManager().selectedUnitsClearDestinations(); - } - getApp().getUnitsManager().selectedUnitsAddDestination(this.#computeDestinationRotation && this.#destinationRotationCenter != null ? this.#destinationRotationCenter : e.latlng, this.#shiftKey, this.#destinationGroupRotation) - - this.#destinationGroupRotation = 0; - this.#destinationRotationCenter = null; - this.#computeDestinationRotation = false; - } - else { - this.setState(IDLE); + if (clickedCoalitionArea) + this.showCoalitionAreaContextMenu(e.originalEvent.x, e.originalEvent.y, e.latlng, clickedCoalitionArea); } } + else if (this.#state === MOVE_UNIT) { + if (!e.originalEvent.ctrlKey) { + getApp().getUnitsManager().selectedUnitsClearDestinations(); + } + getApp().getUnitsManager().selectedUnitsAddDestination(this.#computeDestinationRotation && this.#destinationRotationCenter != null ? this.#destinationRotationCenter : e.latlng, this.#shiftKey, this.#destinationGroupRotation) + + this.#destinationGroupRotation = 0; + this.#destinationRotationCenter = null; + this.#computeDestinationRotation = false; + } + else { + this.setState(IDLE); + } + } #onSelectionStart(e: any) { @@ -593,12 +595,12 @@ export class Map extends L.Map { } this.#longPressTimer = window.setTimeout(() => { - if (e.originalEvent.button != 2 || e.originalEvent.ctrlKey || e.originalEvent.shiftKey) - return; - this.hideMapContextMenu(); this.#longPressHandled = true; + if (e.originalEvent.button != 2 || e.originalEvent.ctrlKey || e.originalEvent.shiftKey) + return; + var options: { [key: string]: { text: string, tooltip: string } } = {}; const selectedUnits = getApp().getUnitsManager().getSelectedUnits(); const selectedUnitTypes = getApp().getUnitsManager().getSelectedUnitsCategories(); diff --git a/client/src/olympusapp.ts b/client/src/olympusapp.ts index c073695a..413fc815 100644 --- a/client/src/olympusapp.ts +++ b/client/src/olympusapp.ts @@ -18,7 +18,7 @@ import { Manager } from "./other/manager"; import { SVGInjector } from "@tanem/svg-injector"; import { ServerManager } from "./server/servermanager"; -import { BLUE_COMMANDER, GAME_MASTER, RED_COMMANDER } from "./constants/constants"; +import { BLUE_COMMANDER, GAME_MASTER, HIDE_UNITS_SHORT_RANGE_RINGS, RED_COMMANDER, SHOW_UNITS_ACQUISITION_RINGS, SHOW_UNITS_ENGAGEMENT_RINGS, SHOW_UNIT_LABELS } from "./constants/constants"; import { aircraftDatabase } from "./unit/databases/aircraftdatabase"; import { helicopterDatabase } from "./unit/databases/helicopterdatabase"; import { groundUnitDatabase } from "./unit/databases/groundunitdatabase"; @@ -94,8 +94,10 @@ export class OlympusApp { * @param newActiveCoalition */ setActiveCoalition(newActiveCoalition: string) { - if (this.getMissionManager().getCommandModeOptions().commandMode == GAME_MASTER) + if (this.getMissionManager().getCommandModeOptions().commandMode == GAME_MASTER) { this.#activeCoalition = newActiveCoalition; + document.dispatchEvent(new CustomEvent("activeCoalitionChanged")); + } } /** @@ -257,7 +259,7 @@ export class OlympusApp { }).addKeyboardShortcut("toggleUnitLabels", { "altKey": false, "callback": () => { - const chk = document.querySelector(`label[title="Show unit labels"] input[type="checkbox"]`); + const chk = document.querySelector(`label[title="${SHOW_UNIT_LABELS}"] input[type="checkbox"]`); if (chk instanceof HTMLElement) { chk.click(); } @@ -265,6 +267,39 @@ export class OlympusApp { "code": "KeyL", "ctrlKey": false, "shiftKey": false + }).addKeyboardShortcut("toggleAcquisitionRings", { + "altKey": false, + "callback": () => { + const chk = document.querySelector(`label[title="${SHOW_UNITS_ACQUISITION_RINGS}"] input[type="checkbox"]`); + if (chk instanceof HTMLElement) { + chk.click(); + } + }, + "code": "KeyE", + "ctrlKey": false, + "shiftKey": false + }).addKeyboardShortcut("toggleEngagementRings", { + "altKey": false, + "callback": () => { + const chk = document.querySelector(`label[title="${SHOW_UNITS_ENGAGEMENT_RINGS}"] input[type="checkbox"]`); + if (chk instanceof HTMLElement) { + chk.click(); + } + }, + "code": "KeyQ", + "ctrlKey": false, + "shiftKey": false + }).addKeyboardShortcut("toggleHideShortEngagementRings", { + "altKey": false, + "callback": () => { + const chk = document.querySelector(`label[title="${HIDE_UNITS_SHORT_RANGE_RINGS}"] input[type="checkbox"]`); + if (chk instanceof HTMLElement) { + chk.click(); + } + }, + "code": "KeyR", + "ctrlKey": false, + "shiftKey": false }); ["KeyW", "KeyA", "KeyS", "KeyD", "ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"].forEach(code => { diff --git a/client/src/other/utils.ts b/client/src/other/utils.ts index 655c5374..aeb3b5a3 100644 --- a/client/src/other/utils.ts +++ b/client/src/other/utils.ts @@ -204,6 +204,10 @@ export function mToNm(m: number) { return m * 0.000539957; } +export function nmToM(nm: number) { + return nm / 0.000539957; +} + export function nmToFt(nm: number) { return nm * 6076.12; } diff --git a/client/src/panels/unitcontrolpanel.ts b/client/src/panels/unitcontrolpanel.ts index 1ca60845..65afd984 100644 --- a/client/src/panels/unitcontrolpanel.ts +++ b/client/src/panels/unitcontrolpanel.ts @@ -101,7 +101,7 @@ export class UnitControlPanel extends Panel { this.#advancedSettingsDialog.classList.remove("hide"); }); /* This is for when a ctrl-click happens on the map for deselection and we need to remove the selected unit from the panel */ - document.addEventListener( "unitDeselection", ( ev:CustomEventInit ) => { + document.addEventListener( "unitsDeselection", ( ev:CustomEventInit ) => { this.getElement().querySelector( `button[data-unit-id="${ev.detail.ID}"]` )?.remove(); this.#updateRapidControls(); }); diff --git a/client/src/unit/unit.ts b/client/src/unit/unit.ts index 6cfb1897..9743f64e 100644 --- a/client/src/unit/unit.ts +++ b/client/src/unit/unit.ts @@ -1,11 +1,11 @@ -import { Marker, LatLng, Polyline, Icon, DivIcon, CircleMarker, Map, Point } from 'leaflet'; +import { Marker, LatLng, Polyline, Icon, DivIcon, CircleMarker, Map, Point, Circle } from 'leaflet'; import { getApp } from '..'; -import { enumToCoalition, enumToEmissioNCountermeasure, getMarkerCategoryByName, enumToROE, enumToReactionToThreat, enumToState, getUnitDatabaseByCategory, mToFt, msToKnots, rad2deg, bearing, deg2rad, ftToM, getGroundElevation, coalitionToEnum } from '../other/utils'; +import { enumToCoalition, enumToEmissioNCountermeasure, getMarkerCategoryByName, enumToROE, enumToReactionToThreat, enumToState, getUnitDatabaseByCategory, mToFt, msToKnots, rad2deg, bearing, deg2rad, ftToM, getGroundElevation, coalitionToEnum, nmToFt, nmToM } from '../other/utils'; import { CustomMarker } from '../map/markers/custommarker'; import { SVGInjector } from '@tanem/svg-injector'; import { UnitDatabase } from './databases/unitdatabase'; import { TargetMarker } from '../map/markers/targetmarker'; -import { DLINK, DataIndexes, GAME_MASTER, HIDE_GROUP_MEMBERS, IDLE, IRST, MOVE_UNIT, OPTIC, RADAR, ROEs, RWR, SHOW_CONTACT_LINES, SHOW_UNIT_PATHS, SHOW_UNIT_TARGETS, VISUAL, emissionsCountermeasures, reactionsToThreat, states } from '../constants/constants'; +import { DLINK, DataIndexes, GAME_MASTER, HIDE_GROUP_MEMBERS, IDLE, IRST, MOVE_UNIT, OPTIC, RADAR, ROEs, RWR, SHOW_UNIT_CONTACTS, SHOW_UNITS_ENGAGEMENT_RINGS, SHOW_UNIT_PATHS, SHOW_UNIT_TARGETS, VISUAL, emissionsCountermeasures, reactionsToThreat, states, SHOW_UNITS_ACQUISITION_RINGS, HIDE_UNITS_SHORT_RANGE_RINGS } from '../constants/constants'; import { DataExtractor } from '../server/dataextractor'; import { groundUnitDatabase } from './databases/groundunitdatabase'; import { navyUnitDatabase } from './databases/navyunitdatabase'; @@ -86,7 +86,9 @@ export class Unit extends CustomMarker { #waitingForDoubleClick: boolean = false; #pathMarkers: Marker[] = []; #pathPolyline: Polyline; - #contactsPolylines: Polyline[]; + #contactsPolylines: Polyline[] = []; + #engagementCircle: Circle; + #acquisitionCircle: Circle; #miniMapMarker: CircleMarker | null = null; #targetPositionMarker: TargetMarker; #targetPositionPolyline: Polyline; @@ -148,9 +150,10 @@ export class Unit extends CustomMarker { this.#pathPolyline = new Polyline([], { color: '#2d3e50', weight: 3, opacity: 0.5, smoothFactor: 1 }); this.#pathPolyline.addTo(getApp().getMap()); - this.#contactsPolylines = []; this.#targetPositionMarker = new TargetMarker(new LatLng(0, 0)); this.#targetPositionPolyline = new Polyline([], { color: '#FF0000', weight: 3, opacity: 0.5, smoothFactor: 1 }); + this.#engagementCircle = new Circle(this.getPosition(), { radius: 0, weight: 4, opacity: 1, fillOpacity: 0, dashArray: "4 8" }); + this.#acquisitionCircle = new Circle(this.getPosition(), { radius: 0, weight: 2, opacity: 1, fillOpacity: 0, dashArray: "8 12" }); this.on('click', (e) => this.#onClick(e)); this.on('dblclick', (e) => this.#onDoubleClick(e)); @@ -178,6 +181,8 @@ export class Unit extends CustomMarker { document.addEventListener("mapVisibilityOptionsChanged", (ev: CustomEventInit) => { this.#updateMarker(); + this.#drawRanges(); + if (this.getSelected()) this.drawLines(); }); @@ -204,7 +209,7 @@ export class Unit extends CustomMarker { case DataIndexes.country: this.#country = dataExtractor.extractUInt8(); break; case DataIndexes.name: this.#name = dataExtractor.extractString(); break; case DataIndexes.unitName: this.#unitName = dataExtractor.extractString(); break; - case DataIndexes.groupName: this.#groupName = dataExtractor.extractString(); break; + case DataIndexes.groupName: this.#groupName = dataExtractor.extractString(); updateMarker = true; break; case DataIndexes.state: this.#state = enumToState(dataExtractor.extractUInt8()); updateMarker = true; break; case DataIndexes.task: this.#task = dataExtractor.extractString(); break; case DataIndexes.hasTask: this.#hasTask = dataExtractor.extractBool(); break; @@ -233,7 +238,7 @@ export class Unit extends CustomMarker { case DataIndexes.ammo: this.#ammo = dataExtractor.extractAmmo(); break; case DataIndexes.contacts: this.#contacts = dataExtractor.extractContacts(); document.dispatchEvent(new CustomEvent("contactsUpdated", { detail: this })); break; case DataIndexes.activePath: this.#activePath = dataExtractor.extractActivePath(); break; - case DataIndexes.isLeader: this.#isLeader = dataExtractor.extractBool(); break; + case DataIndexes.isLeader: this.#isLeader = dataExtractor.extractBool(); updateMarker = true; break; case DataIndexes.operateAs: this.#operateAs = enumToCoalition(dataExtractor.extractUInt8()); break; } } @@ -249,9 +254,12 @@ export class Unit extends CustomMarker { } drawLines() { - this.#drawPath(); - this.#drawContacts(); - this.#drawTarget(); + /* Leaflet does not like it when you change coordinates when the map is zooming */ + if (!getApp().getMap().isZooming()) { + this.#drawPath(); + this.#drawContacts(); + this.#drawTarget(); + } } getData(): UnitData { @@ -395,7 +403,7 @@ export class Unit extends CustomMarker { } getGroupMembers() { - return Object.values(getApp().getUnitsManager().getUnits()).filter((unit: Unit) => { return unit != this && unit.#groupName === this.#groupName; }); + return Object.values(getApp().getUnitsManager().getUnits()).filter((unit: Unit) => { return unit != this && unit.getGroupName() === this.getGroupName(); }); } belongsToCommandedCoalition() { @@ -521,6 +529,8 @@ export class Unit extends CustomMarker { } this.getElement()?.appendChild(el); + + this.#drawRanges(); } /********************** Visibility *************************/ @@ -552,6 +562,12 @@ export class Unit extends CustomMarker { if (getApp().getMap().hasLayer(this) && this.getHidden()) { getApp().getMap().removeLayer(this); } + + if (!this.getHidden()) { + this.#drawRanges(); + } else { + this.#clearRanges(); + } } getHidden() { @@ -746,7 +762,6 @@ export class Unit extends CustomMarker { coalition = "blue"; else if (this.getCoalition() == "blue") coalition = "red"; - //TODO getApp().getServerManager().scenicAAA(this.ID, coalition); } @@ -756,7 +771,6 @@ export class Unit extends CustomMarker { coalition = "blue"; else if (this.getCoalition() == "blue") coalition = "red"; - //TODO getApp().getServerManager().missOnPurpose(this.ID, coalition); } @@ -809,11 +823,6 @@ export class Unit extends CustomMarker { getApp().getUnitsManager().deselectAllUnits(); this.setSelected(!this.getSelected()); - const detail = { "detail": { "unit": this } }; - if (this.getSelected()) - document.dispatchEvent(new CustomEvent("unitSelected", detail)); - else - document.dispatchEvent(new CustomEvent("unitDeselection", { "detail": this })); } } @@ -882,14 +891,14 @@ export class Unit extends CustomMarker { var options: { [key: string]: { text: string, tooltip: string } } = {}; options = { - 'trail': { text: "Trail", tooltip: "Follow unit in trail formation" }, - 'echelon-lh': { text: "Echelon (LH)", tooltip: "Follow unit in echelon left formation" }, - 'echelon-rh': { text: "Echelon (RH)", tooltip: "Follow unit in echelon right formation" }, - 'line-abreast-lh': { text: "Line abreast (LH)", tooltip: "Follow unit in line abreast left formation" }, - 'line-abreast-rh': { text: "Line abreast (RH)", tooltip: "Follow unit in line abreast right formation" }, - 'front': { text: "Front", tooltip: "Fly in front of unit" }, - 'diamond': { text: "Diamond", tooltip: "Follow unit in diamond formation" }, - 'custom': { text: "Custom", tooltip: "Set a custom formation position" }, + 'trail': { text: "Trail", tooltip: "Follow unit in trail formation" }, + 'echelon-lh': { text: "Echelon (LH)", tooltip: "Follow unit in echelon left formation" }, + 'echelon-rh': { text: "Echelon (RH)", tooltip: "Follow unit in echelon right formation" }, + 'line-abreast-lh': { text: "Line abreast (LH)", tooltip: "Follow unit in line abreast left formation" }, + 'line-abreast-rh': { text: "Line abreast (RH)", tooltip: "Follow unit in line abreast right formation" }, + 'front': { text: "Front", tooltip: "Fly in front of unit" }, + 'diamond': { text: "Diamond", tooltip: "Follow unit in diamond formation" }, + 'custom': { text: "Custom", tooltip: "Set a custom formation position" }, } getApp().getMap().getUnitContextMenu().setOptions(options, (option: string) => { @@ -984,9 +993,9 @@ export class Unit extends CustomMarker { element.querySelector(".unit")?.toggleAttribute("data-is-dead", !this.#alive); /* Set current unit state */ - if (this.#human) // Unit is human + if (this.#human) // Unit is human element.querySelector(".unit")?.setAttribute("data-state", "human"); - else if (!this.#controlled) // Unit is under DCS control (not Olympus) + else if (!this.#controlled) // Unit is under DCS control (not Olympus) element.querySelector(".unit")?.setAttribute("data-state", "dcs"); else if ((this.getCategory() == "Aircraft" || this.getCategory() == "Helicopter") && !this.#hasTask) element.querySelector(".unit")?.setAttribute("data-state", "no-task"); @@ -1041,12 +1050,16 @@ export class Unit extends CustomMarker { if (hotgroupEl) hotgroupEl.innerText = String(this.#hotgroup); } - } /* Set vertical offset for altitude stacking */ var pos = getApp().getMap().latLngToLayerPoint(this.getLatLng()).round(); this.setZIndexOffset(1000 + Math.floor(this.#position.alt as number) - pos.y + (this.#highlighted || this.#selected ? 5000 : 0)); + + /* Circles don't like to be updated when the map is zooming */ + if (!getApp().getMap().isZooming()) { + this.#drawRanges(); + } } } @@ -1093,7 +1106,7 @@ export class Unit extends CustomMarker { #drawContacts() { this.#clearContacts(); - if (getApp().getMap().getVisibilityOptions()[SHOW_CONTACT_LINES]) { + if (getApp().getMap().getVisibilityOptions()[SHOW_UNIT_CONTACTS]) { for (let index in this.#contacts) { var contactData = this.#contacts[index]; var contact: Unit | Weapon | null; @@ -1139,6 +1152,95 @@ export class Unit extends CustomMarker { } } + #drawRanges() { + var engagementRange = 0; + var acquisitionRange = 0; + + /* Get the acquisition and engagement ranges of the entire group, not for each unit */ + if (this.getIsLeader()) { + var engagementRange = this.getDatabase()?.getByName(this.getName())?.engagementRange?? 0; + var acquisitionRange = this.getDatabase()?.getByName(this.getName())?.acquisitionRange?? 0; + + this.getGroupMembers().forEach((unit: Unit) => { + if (unit.getAlive()) { + let unitEngagementRange = unit.getDatabase()?.getByName(unit.getName())?.engagementRange?? 0; + let unitAcquisitionRange = unit.getDatabase()?.getByName(unit.getName())?.acquisitionRange?? 0; + + if (unitEngagementRange > engagementRange) + engagementRange = unitEngagementRange; + + if (unitAcquisitionRange > acquisitionRange) + acquisitionRange = unitAcquisitionRange; + } + }) + + if (acquisitionRange !== this.#acquisitionCircle.getRadius()) + this.#acquisitionCircle.setRadius(acquisitionRange); + + if (engagementRange !== this.#engagementCircle.getRadius()) + this.#engagementCircle.setRadius(engagementRange); + + this.#engagementCircle.options.fillOpacity = this.getSelected()? 0.3: 0; + + /* Acquisition circles */ + var shortRangeCheck = (engagementRange > nmToM(3) && acquisitionRange > nmToM(3) || !getApp().getMap().getVisibilityOptions()[HIDE_UNITS_SHORT_RANGE_RINGS]); + + if (getApp().getMap().getVisibilityOptions()[SHOW_UNITS_ACQUISITION_RINGS] && shortRangeCheck && (this.belongsToCommandedCoalition() || this.getDetectionMethods().some(value => [VISUAL, OPTIC, IRST, RWR].includes(value)))) { + if (!getApp().getMap().hasLayer(this.#acquisitionCircle)) { + this.#acquisitionCircle.addTo(getApp().getMap()); + switch (this.getCoalition()) { + case "red": + this.#acquisitionCircle.options.color = "#D42121"; + break; + case "blue": + this.#acquisitionCircle.options.color = "#017DC1"; + break; + default: + this.#acquisitionCircle.options.color = "#111111" + break; + } + } + this.#acquisitionCircle.setLatLng(this.getPosition()); + } + else { + if (getApp().getMap().hasLayer(this.#acquisitionCircle)) + this.#acquisitionCircle.removeFrom(getApp().getMap()); + } + + /* Engagement circles */ + if (getApp().getMap().getVisibilityOptions()[SHOW_UNITS_ENGAGEMENT_RINGS] && shortRangeCheck && (this.belongsToCommandedCoalition() || this.getDetectionMethods().some(value => [VISUAL, OPTIC, IRST, RWR].includes(value)))) { + if (!getApp().getMap().hasLayer(this.#engagementCircle)) { + this.#engagementCircle.addTo(getApp().getMap()); + switch (this.getCoalition()) { + case "red": + this.#engagementCircle.options.color = "#FF5858"; + break; + case "blue": + this.#engagementCircle.options.color = "#3BB9FF"; + break; + default: + this.#engagementCircle.options.color = "#CFD9E8" + break; + } + } + this.#engagementCircle.setLatLng(this.getPosition()); + } + else { + if (getApp().getMap().hasLayer(this.#engagementCircle)) + this.#engagementCircle.removeFrom(getApp().getMap()); + } + + } + } + + #clearRanges() { + if (getApp().getMap().hasLayer(this.#acquisitionCircle)) + this.#acquisitionCircle.removeFrom(getApp().getMap()); + + if (getApp().getMap().hasLayer(this.#engagementCircle)) + this.#engagementCircle.removeFrom(getApp().getMap()); + } + #drawTarget() { if (this.#targetPosition.lat != 0 && this.#targetPosition.lng != 0 && getApp().getMap().getVisibilityOptions()[SHOW_UNIT_PATHS]) { this.#drawTargetPosition(this.#targetPosition); diff --git a/client/src/unit/unitsmanager.ts b/client/src/unit/unitsmanager.ts index 0631214e..65696f21 100644 --- a/client/src/unit/unitsmanager.ts +++ b/client/src/unit/unitsmanager.ts @@ -23,6 +23,7 @@ export class UnitsManager { #units: { [ID: number]: Unit }; #copiedUnits: UnitData[]; #selectionEventDisabled: boolean = false; + #deselectionEventDisabled: boolean = false; #requestDetectionUpdate: boolean = false; constructor() { @@ -1048,8 +1049,16 @@ export class UnitsManager { getApp().getMap().setState(IDLE); document.dispatchEvent(new CustomEvent("clearSelection")); } - else - document.dispatchEvent(new CustomEvent("unitsDeselection", { detail: this.getSelectedUnits() })); + else { + /* Disable the firing of the selection event for a certain amount of time. This avoids firing many events if many units are selected */ + if (!this.#deselectionEventDisabled) { + window.setTimeout(() => { + document.dispatchEvent(new CustomEvent("unitsDeselection", { detail: this.getSelectedUnits() })); + this.#deselectionEventDisabled = false; + }, 100); + this.#deselectionEventDisabled = true; + } + } } #showActionMessage(units: Unit[], message: string) { diff --git a/scripts/python/.vscode/launch.json b/scripts/python/.vscode/launch.json index f60a1b52..5f47cb45 100644 --- a/scripts/python/.vscode/launch.json +++ b/scripts/python/.vscode/launch.json @@ -11,7 +11,7 @@ "program": "${file}", "console": "integratedTerminal", "justMyCode": true, - "args": ["groundunit"] + "args": ["navyunit"] } ] } \ No newline at end of file diff --git a/scripts/python/addRanges.py b/scripts/python/addRanges.py new file mode 100644 index 00000000..cc8c3da7 --- /dev/null +++ b/scripts/python/addRanges.py @@ -0,0 +1,65 @@ +import sys +import json +import inspect +import difflib +from slpp import slpp as lua + +SEARCH_FOLDER = "D:\\Eagle Dynamics\\DCS World OpenBeta" + +sys.path.append("..\..\..\dcs-master\dcs-master") + +from dcs.vehicles import * +from dcs.ships import * +from dcs.planes import * +from dcs.helicopters import * + +# The database file on which to operate is the first standard argument of the call +if len(sys.argv) > 1: + if (sys.argv[1] == "aircraft"): + filename = '..\\..\\client\\public\\databases\\units\\aircraftdatabase.json' + elif (sys.argv[1] == "helicopter"): + filename = '..\\..\\client\\public\\databases\\units\\helicopterdatabase.json' + elif (sys.argv[1] == "groundunit"): + filename = '..\\..\\client\\public\\databases\\units\\groundunitdatabase.json' + elif (sys.argv[1] == "navyunit"): + filename = '..\\..\\client\\public\\databases\\units\\navyunitdatabase.json' + + # Loads the database + with open(filename) as f: + database = json.load(f) + + # Loop on all the units in the database + for unit_name in database: + try: + # Get the pydcs Python class for the unit + if (sys.argv[1] == "aircraft"): + unitmap = plane_map + elif (sys.argv[1] == "helicopter"): + unitmap = helicopter_map + elif (sys.argv[1] == "groundunit"): + unitmap = vehicle_map + elif (sys.argv[1] == "navyunit"): + unitmap = ship_map + lowercase_keys = [key.lower() for key in unitmap.keys()] + res = difflib.get_close_matches(unit_name.lower(), lowercase_keys) + if len(res) > 0: + found_name = list(unitmap.keys())[lowercase_keys.index(res[0])] + cls = unitmap[found_name] + else: + print(f"Warning, could not find {unit_name} in classes list. Skipping...") + continue + + database[unit_name]["acquisitionRange"] = unitmap[found_name].detection_range + database[unit_name]["engagementRange"] = unitmap[found_name].threat_range + + except Exception as e: + print(f"Could not find data for aircraft of type {unit_name}: {e}, skipping...") + + # Dump everything in the database + with open(filename, "w") as f: + json.dump(database, f, indent=2) + + # Done! + print("Done!") + + \ No newline at end of file diff --git a/scripts/python/temp.py b/scripts/python/temp.py deleted file mode 100644 index c7303c11..00000000 --- a/scripts/python/temp.py +++ /dev/null @@ -1,15 +0,0 @@ -import json -import difflib - -countries = ['USA', 'GRG', 'GER', 'DZA', 'FRA', 'CAN', 'AUS', 'UKR', 'ITA', 'GRC', 'SPN', 'RUS', 'NETH', 'DEN', 'TUR', 'UK', 'BEL', 'ISR', 'NOR', 'JPN', 'ARE', 'QAT', 'IND', 'SAU', 'EGY', 'KOR', 'HND', 'CHL', 'BLUE', 'AUSAF', 'RED', 'VNM', 'SVK', 'SDN', 'GDR', 'JOR', 'PER', 'CHN', 'IDN', 'PHL', 'BOL', 'MAR', 'YEM', 'KWT', 'SUI', 'GHA', 'CYP', 'BHR', 'YUG', 'CZE', 'KAZ', 'AUT', 'HUN', 'MYS', 'ROU', 'THA', 'LBN', 'FIN', 'PRT', 'OMN', 'MEX', 'IRQ', 'BRA', 'SWE', 'NZG', 'CUB', 'INS', 'RSO', 'RSA', 'HRV', 'ABH', 'ARG', 'LBY', 'PRK', 'VEN', 'TUN', 'IRN', 'ETH', 'BLR', 'SUN', 'BGR', 'PAK', 'NGA', 'POL', 'SVN', 'SYR', 'SRB', 'UN', 'RSI', 'SPA', 'ECU', '', 'USAF', 'hide', 'EGP', 'LIB'] - -with open('C:\\Users\\dpass\\Documents\\DCSOlympus\\client\\public\\images\\nations\\codes.json', "r") as f: - codes = json.load(f) - - for country in countries: - keys = difflib.get_close_matches(country, codes.keys(), cutoff=.35) - if len(keys) > 0: - codes[keys[0]]["liveryCodes"].append(country) - -with open('C:\\Users\\dpass\\Documents\\DCSOlympus\\client\\public\\images\\nations\\codes.json', "w") as f: - json.dump(codes, f) \ No newline at end of file diff --git a/src/core/src/groundunit.cpp b/src/core/src/groundunit.cpp index a84a69c3..4220129a 100644 --- a/src/core/src/groundunit.cpp +++ b/src/core/src/groundunit.cpp @@ -74,9 +74,11 @@ void GroundUnit::setState(unsigned char newState) break; } case State::SCENIC_AAA: { + setTargetPosition(Coords(NULL)); break; } case State::MISS_ON_PURPOSE: { + setTargetPosition(Coords(NULL)); break; } default: